NFSデーモンを追加する

ひとつコンパイルを終えれば、次のコンパイルに進む。次に我々はNFSデーモンそのものに進もう。NFSデーモンのビルド手順には、BUILDというスクリプトを実行する必要がある。このスクリプトにはクロスコンパイルオプションは無かった。だから私はとりあえずスクリプトが走るに任せ、あとで手直しした。このスクリプトには実行の間に山ほど質問が出た。以下の質問以外は、すべてデフォルトを指定した:

Do you want to protect mountd with HOST ACCESS?

必要なライブラリが手元に無いので、ここではNOを入力する。この設定を完了した後、出てくるmakeファイルを今回のクロスコンパイラに合わせて変更する必要がある。makeファイルのはじめあたりに、CC、AR、RANLIBそれぞれの改変物がある。クロスコンパイラにその接頭語を追加しよう。たとえば:

CC = /home/jbuzbee/gpl_code_2.03/usr/local/openrg/armsaeb/bin/armv4b-hardhat-linux-gcc

次にCFLAGS行にincludeのパスを追加する。私の場合はこんな感じ:

CFLAGS = -g -O -D_GNU_SOURCE -I /home/jbuzbee/snapgear/linux-2.4.x/include/

やらなければいけない変更の最後は、nfsd.hファイルの中身だ。最初のあたりに、我々の環境では追加のincludeを加える。

#include

これらが完了したら、単純にmakeすると二つのバイナリがビルドされる。rpc.mountdとrpc.nfsdだ。これらのバイナリをstripしても、サイズは小さくならない。これでNFSを試すところまで準備が済んだ。
今までの三つのバイナリportmap、rpc.mountd、rpc.nfsdをNSLU2に移動する。バイナリとデータと分離しておくため、私はこれら新しく作ったシステムレベルバイナリをconfパーティションに入れることにした。私は/share/hdd/confディレクトリにbin、etc、rc.dという三つのディレクトリを作成し、通常のツリーにこれらのディレクトリをミラーリングした。
バイナリはすべてbinディレクトリに入れ、スタートアップスクリプトはrc.dディレクトリ、設定ファイルはetcディレクトリに入れた。今回の事例では、唯一必要な設定ファイルはexportsファイルだけだ。どのディレクトリをexportするのかをNFSデーモンに指示し、また誰にという情報を指示するために、NFSはexportsファイルを必要とする。私は以下のようにexportsファイルを作成した:

/share/ 192.168.1.100 (rw, insecure)
/share/ 192.168.1.103 (rw )
/share/ 192.168.1.102 (rw )

insecureオプションは、insecureネットワークポートを使用している私のMacOS X用だ。言うまでもなくあなたはあなたのネットワークに応じてexportsファイルを作成しなければならず、これ以外のオプションについては標準のNFSドキュメントを参照すること。