このページは「24環境」の情報です

第11回 nfsルートで大規模UNIX環境

海老原祐太郎
2003/6/16

Apache Webサーバ等の大規模なソフトウェアをコンパイルするときにはフル機能のDebian for SH がインストールされた環境があると便利です。
今回はnfsルート機能を使用してSHボードに大容量のストレージを与えてみます。

今回のターゲット機はCAT709を想定します。

準 備 

開発機をnfsマシンとしますので、開発機にnfsサーバをインストールしておいてください。

開発機で
# apt-get install nfs-user-server portmap

CAT709のカーネル

CAT709のカーネルにネットワークのデバイスドライバと
NFS Client機能とNFS-ROOT機能を静的に組み込んでおきます。

開発機にて
$ cd CAT709-LINUX-KERNEL-DIRECTORY
$ make menuconfig


Network device support  --->
  Ethernet (10 or 100Mbit)  --->
    [*]   Other ISA cards
    <*>     NE2000/NE1000 support 

  
File systems  --->
  Network File Systems  --->
     <*> NFS file system support
     [*]   Provide NFSv3 client support
     [*]   Root file system on NFS


$ make dep zImage

これでmake すると arch/sh/boot/zImage ファイルが出来上がりますので XMODEM プロトコルで
CAT709のFLASHメモリーにダウンロードします。(CAT709取扱説明書参考)

サーバー上に CAT709用のルートディレクトリを準備する

debian-for-sh のベースアーカイブを取得します。CDROMあるいは以下のURLから取得してください。

CDROM debian-for-sh/2002-07-21/disks-sh3/base-sh3-020721.tar.gz
http://debian.dodes.org/debian/base/base-sh3-020721.tar.gz

開発機上にディレクトリを作り、ベースアーカイブを展開します。

$ mkdir cat709-root-dir
$ cd cat709-root-dir
$ su -
Passwd:
# tar xzfv /SOMEWHERE-DOWNLOAD/base-sh3-020721.tar.gz

debian-for-sh3 のベースアーカイブが展開されましたら、このTIPSの第1回の『設定ファイルを書く』
を参考にして /etc  ディレクトリ以下の基本的な設定ファイルを設定してください。

nfs exports の設定

サーバでnfs exprots の設定をします。以下のようにサーバの/etc/exports を編集します。
意味は、/どこかの/cat709-root-dir を 192.168.7.0/255.255.255.0 LAN上のマシンに
リードライトで共有を許可するということになります。LAN環境に応じて書き換えてください。

# vi /etc/ exports

------------ ファイルの中身 ----------
/SOMEWHERE/cat709-root-dir 192.168.7.0/255.255.255.0(sync,rw,no_root_squash)
------------  ここまで   -------------

# /etc/init.d/nfs-user-server restart

実 行 

Linux機から端末プログラムを動かし、CAT701の電源を入れます。
ROMモニターから c をタイプしてカーネルコマンドラインを以下のように入力します。

>c
console=ttySC0,115200 root=/dev/nfs nfsroot=192.168.7.123:/SOMEWHERE/cat709-root-dir (実際には改行入れずに1行)
ip=192.168.7.100:192.168.7.123:192.168.7.1:255.255.255.0:supercat

各設定の引数の詳細は以下のとおり(カーネルソースのDocumentation/nfsroot.txtより)
IPアドレス値などはLAN環境に応じて書き直してください。

root=/dev/nfs

  This is necessary to enable the pseudo-NFS-device. Note that it's not a
  real device but just a synonym to tell the kernel to use NFS instead of
  a real device.

nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>

続いて s キーをタイプしてカーネルを起動するとNFS-ROOTによりサーバ上に展開したファイルをマウントして起動します。
うまく起動しなかった場合は以下の点を見直してください。

トラブルシュート

  1. CAT709のカーネルに、ネットワークデバイスドライバとNFS-ROOT機能がYで組み込まれているか
  2. NFSのパスは正しいか
  3. login: が出ない場合は /etc/inittab を確認して、ttySC0 にボーレート115200でgettyが走っているか?
    (「第1回 Debian SH sid をインストールしてみよう」に説明あり)
  4. rootでログインできないときは /etc/securetty を確認する
    (「第1回 Debian SH sid をインストールしてみよう」 に説明あり)

初期状態であれば root ユーザーパスワードなしでログインできるはずです。
ログインできましたらさらに以下を確認ください。

  1. /proc がマウントされていないと何も動きませんので proc をマウントします(書式 mount -t proc proc /proc) /etc/fstab に proc を追加してください(開発機の/etc と同じ書式でokです)~
  2. /lib/modules/カーネルバージョン ディレクトリを作成し、depmod -a を1度実行してください。 ワーニングメッセージが止まると思います。
  3. /etc/resolv.conf 等のネットワーク関係の設定ファイルを正しく書きます
    (「第1回 Debian SH sid をインストールしてみよう」参考)~
  4. /etc/apt/sources.list ファイルに以下のaptラインを記述すると、apt-get コマンドが使えるようになります。
deb http://debian.dodes.org/debian sid main non-free contrib
deb-src http://ftp.jp.debian.org/debian/ sid main non-free contrib
deb-src http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free