ぽよメモ

レガシーシステム考古学専攻

SambaとNetatalkの設定

つい先日久しぶりにRaspberryPiをいじったところ、「急にホスト名及びユーザ名がコンソール画面でハイライトされなくなる」、「.vimrcの設定が飛んだのかvimの挙動がおかしくなる」、挙句の果てには「ほとんどのコマンドがNot foundになる」という不具合が発生し、泣く泣くRasPiの再セットアップ(3回め)を行うことになりました。
さすがに3回めにもなるとだいぶ慣れたもので、公開鍵認証でSSH通すまでに1時間強しかかかりませんでした。とりあえずパッケージのアップデート等を済ませ、とりあえずSDカード上でシステムを再構築していきました。

Samba

sudo apt-get install samba

これだけで入ってくれるので非常にありがたいです。
Sambaにはwebブラウザから設定を変更できるSWATというものがあります。今回の設定はこれで行いたいと思います。

sudo apt-get install swat

あとはLAN内にある他のデバイスからhttp://[ホスト名 又は IPアドレス]:901と打ち込むだけです。するとユーザ名とパスワードを尋ねられるのでログインします。
が、
ここでpiユーザでログインするといくら頑張ってもWindowsからアクセスできなくなります(正確に言うとrootしか入れなくなる)。
RasPiには初期ではrootにパスワードが設定されておらず使えません。そこで、

sudo psswd root

を使ってrootユーザにパスワードを設定、それでswatにログインします。
その後パスワードタブからpiユーザを新規ユーザとして追加すると、piでログインできるようになります。細かいディレクトリとかパラメータの設定は適当にググって出してください。
これでとりあえずSambaは終了です。

Netatalk

次は鬼門のNetatalkです。大量のライブラリをインストールし、自分でソースからビルドしなければならない厄介なヤツです。
まず必要なライブラリをインストールしていきます。

sudo apt-get -y install libssl-dev libgcrypt11-dev libpam0g-dev libwrap0-dev libdb-dev libavahi-client-dev libacl1-dev libldap2-dev libevent-dev

また、RasPiに初期から入っていないavahi-daemonを突っ込みます。こいつがないとMac上からタイムマシンサーバを見つけることができなくて苦労します。

sudo apt-get install avahi-daemon

ここまではすんなり簡単に行けます。次からが少々厄介です。
Berkeley DBをインストールします。パッケージも有りますが古いため今回は自分でソースからビルドします。

cd /usr/local/src
sudo wget http://download.oracle.com/berkeley-db/db-6.1.19.tar.gz
sudo tar xvzf db-6.1.19.tar.gz
cd db-6.1.19/build_unix
../dist/configure
sudo make
sudo make install

おそらくこれでうまくいけます。うまくいけば/usr/local/db.6.1.19にインストールされます。
次にNetatalkをインストールしていきます。ここでは本当に最小限のことしかしていないので、例えば共有するディレクトリをSpotlightで検索したいとか、そういったことはもう少し色々イジる必要があります。頑張ってください。

cd /usr/local/src
sudo wget http://prdownloads.sourceforge.net/netatalk/netatalk-3.1.7.tar.bz2
sudo tar jxvf netatalk-3.1.7.tar.bz2
cd netatalk-3.1.7
sudo ./configure --with-init-style=debian-sysv --without-libevent --without-tdb --with-pam-confdir=/etc/pam.d --with-dbus-sysconf-dir=/etc/dbus-1/system.d --with-bdb=/usr/local/db.6.1.19

ここでもしエラーが出れば、その内容をよく読んでください。だいたいこういう場合のエラーはライブラリが足りていない場合に起こります。適宜、sudo aptitude search [検索したいフレーズ]などを用いて調べてみてください。-devのついたパッケージなどをインストールすると解決することが有ります。
最後に結果が一覧になって出てきます。ここで自分の使いたい機能がyesになっているかを確認して下さい。もしすべてOKならば、

sudo make
sudo make install

とし、インストールしてください。
何度も./configuremakeをしていると、まれにバグるのかいくらやってもNo such file or directuryなどの警告が出ることが有ります。ライブラリのインストールでは解決せず、他に心当りがない場合は一度.tar.bz2の展開からやり直してみるといいと思います。
Netatalk3より、設定ファイルは/usr/local/etc/afp.confだけになりました。sambaのsmb.confと同じようなもので、非常に管理しやすいです。一応下に自分のを貼っておきますが、よく理解しないまま使っていることが多く、コピペは推奨しません。

;
;Netatalk 3.x configuration file
;
[Global]
mac charset = MAC_JAPANESE
uam list = uams_cleartxt.so uams_dhx.so uams_dhz2.so uams_guest.so
log file = /var/log/netatalk.log
vol preset = my default values
[my defalt values]
file perm = 0660
directory perm = 0770
[Homes]
basedir regex = /var
[Time Machine]
path = /timemachine
time machine = yes
[NAS]
path = /var/nas
veto files = /Thumbs.db/desktop.ini/
delete veto files = yes

編集し終わったらsudo service netatalk restartとして再起動させるとMacからアクセスできると思います。
TimeMachineからうまくバックアップが開始されると、おそらく途方もなく時間がかかります。僕の環境で130.48GBぶんのバックアップデータがありました。次回以降は差分のみバックアップを取られるのでそれほど時間はかかりませんが初回だけはとにかく遅いです。一晩かかります。
本当はSambaNetatalkで同じディレクトリを指定するのは良くないのですが、それほど頻繁にデータを書き換えるわけではないので別にいいかなぁと()なにか不具合が生じればまた報告します。

追記:
この辺りが参考になります

Samba
http://frogcodeworks.com/raspberrypi-samba-setup/Netatalk
http://www003.upp.so-net.ne.jp/hat/netatalk/andsamba.html http://qiita.com/ikuwow/items/99a62e2102563e4e7419 http://j7lg.tumblr.com/post/9699261925/cent-os-5-6-netatalk-2-1-5 http://d.hatena.ne.jp/paraches/20100926