Netatalk

SambaでWindowsマシンからFreeBSDマシンをマウントして、ネットワークマシンのひとつしてファイルを自由に読み書きすることができました。MACからもこれを可能にするのがこのnetatalkです。Netatalkの他にCAPというのもありますが、Netatalkの方がパフォーマンスがいいと言われています。また、最近ではApple Share IP対応のnetatalk+asunというバージョンがあり、今回これを導入してみます。

1.NETATALK+ASUNのダウンロード
netatalk+asunのportsはバージョンが古いため、ソースからコンパイルします。まず最新のバージョンをここからダウンロードして、適当なディレクトリ(例:/usr/src)に置きます。3月18日現在、netatalk-1.4b2+asun2.1.3.tar.gzが最新のようです。そしてインストールの前にkernelの再構築を行います。

2.Kernelの再構築
netatalkはkernelの再構築が必要です。次の要領でKernelを再構築します。

2-1.GENERICをコピー
以後の作業はスーパーユーザーになって行います。GENERICファイルを適当な名前にコピーします。

# su
-----
# cd /usr/src/sys/i386/conf
# cp GENERIC MyKernel

さらに、このMyKernelの、名前を識別するための行を書き換えます。適当なエディタ(ee,vi)で以下の部分を書き換えて下さい。

# ee MyKernel
-----
ident      GENERIC    ----->
ident      MyKernel

さらに、このMyKernelに次の1行を追加します。

options    NETATALK

これでひとまず準備完了です。ただし、FreeBSDインストール時に、NIC(Network Interface Card)のIo-port addressやIRQを変更していたり、PS/2 Mouseを使用可能に変更している場合は、その部分の記載もここで変更しなくてはなりません。 また不要なISAバス用のdeviceも削除(あるいは行頭に#を付けてコメントアウトする)しておいたほうがよいでしょう。

例:
device          psm0    at isa? disable port.....
-----> disable を削除
device ed0 at isa? port 0x280 net irq 9 iomem 0xd8000 vector edintr
-----> port addressとirqを実際の数字に変更する(PCI NICなら不要)

2-2.コンパイルとインストール
次のようにconfigコマンドを実行します。

# config MyKernel
Kernel build directory is ../../compile/MyKernel

この表示されたディレクトリに移り、以下のコマンドを入力します。

# cd ../../compile/MyKernel
# make depend; make

これでコンパイルが始まります。マシンの性能によってコンパイルに要する時間は違いますが、数分から数時間で終了します。正常にコンパイルが終了すると、次のようなメッセージが最後に表示されます(数字はMyKernelによって異なります)。

loading kernel
rearranging symbols
text    data    bss     dec     hex
1187840 73728   92620   1354188 14a9cc

次にmake installを実行します。

# make install
-----
kern.bootfile: /kernel -> /kernel.old
install -c -m 555 -o root -g wheel -fschg kernel /

今まで使っていた/kernelは/kernel.oldという名前で残されるというメッセージが現れます。

2-3.リブートしてKernelの確認
システムをリブートします。

# shutdown -r now

次のコマンドでkernel変更が反映されているかどうかを確認して下さい。もしここで起動不可能になった場合は、boot: の時に、 /kernel.old と入力すれば以前のkernelで起動できます。

# /sbin/dmesg

これでkernelの再構築は終わりです。因みにkernelを元に戻したいときは次のように入力します。

# chflags noschg /kernel
# mv /kernel /kernel.new
# cp -p /kernel.old /kernel
#chflags schg /kernel

3.netatalk+asunのインストール
まず、先のソースを展開してMakefileの一部を書き換えます。

# cd /usr/src/
# tar zxvf netatalk-1.4b2+asun2.1.3.tar.gz
-----
# cd netatalk-1.4b2+asun2.1.3
# ee Makefile
-----
僕の場合(FreeBSD3.1RELEASE)、次のように書き換えました。
-----
TCPWRAPDIR=/usr/local
#DESDIR=/usr/local
#PAMDIR=/usr

そして、makeとmake install

# make
# make install

もし、TCP wrapperがインストールされていなければ、先にこのtcp_wrapperをインストールする必要があります。

# cd /usr/ports/security/tcp_wrapper
# make install

4.設定
次に、設定ファイル等をコピーして書き換えます。

AppleVolumes
configファイルをコピーします。

# cd /usr/src/netatalk-1.4b2+asun2.1.3/config
# cp *.* /usr/local/atalk/etc

そしてAppleVolumes.defaultファイルの最後の行に次のように追加します。

# ee Applevolumes.default
-----
# This file looks empty when viewed with "vi".  In fact, there is one
# '~', so users with no AppleVolumes file in their home directory get
# their home directory by default.
~    FreeBSD(/home)
/usr FreeBSD(/usr)
/var FreeBSD(/var)

これはホームディレクトリをFreeBSD(/home)という名前で、同じく/userディレクトリをFreeBSD(/usr)という名前で、/varディレクトリをFreeBSD(/var)という名前でマウントするという意味です。マウントしたいディレクトリを適宜記載してください。

さらに、パスワードなしでマウントするには、同じような記述を、AppleVolumes.systemに記述します。

afpd.conf
ここにはサーバー名などを記述します。僕の場合次のようにしました。

Ns2     -tcp    -noddp

これはサーバー名をNs2として、appletalkは使用せず、tcp/ipを使用するという意味です。この方が速いようです。

rc.atalk
自動起動できるように、rc.atalkをatalk.shと名前を変えて、/usr/local/etc/rc.d/ディレクトリに置きます。

# cd /usr/local/atalk/etc/
# cp rc.atalk atalk.sh
# cp atalk.sh /usr/local/etc/rc.d/
# cd /usr/local/etc/rc.d/
# chmod 755 atalk.sh

これで自動起動できるはずです。

TOP PAGE