NFS-Root Mini-Howto

Andreas Kostyrka, andreas@ag.or.at

V8, 8 August 1997

井伊 亮太, pessi@kmc.kyoto-u.ac.jp
中野 博樹, cas@kaba.or.jp, cas@kuis.kyoto-u.ac.jp
早川 仁, cz8cb01@linux.or.jp

v8j, 1999年 9月15日
この Mini-HOWTO では、ルートファイルシステムを NFS でマウントする ``ディスクレス'' Linux マシンをセットアップする方法について説明します。この Mini-Howto の最新版は常に ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root もしくは最寄りの sunsite ミラーサイトから取得できます。

1. Copyright

2. 概観

3. サーバーの設定

4. ディスクレスマシンを起動

5. 既知の問題

6. その他の話題

7. 翻訳について


1. Copyright

(訳注:読者の利便を考え日本語訳をしますが、原文の Copyright が優先します)

(c) 1996 Andreas Kostyrka (e9207884@student.tuwien.ac.at or andreas@ag.or.at)

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

特に断らない限り、Linux HOWTO ドキュメントはそれぞれの著者の著作物です。Linux HOWTO ドキュメントは、全てのコピーにおいて copyright が保持されている限り、どのような物理的あるいは電子的なメディアによっても、全部あるいはその一部を複製し、配布することができます。商用の再配布についても許可や奨励をされていますが、そのようないかなる配布に関しても、著者は通知されることを望んでいます。

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.

全ての翻訳、派生的な著作物、あるいはいずれかの Linux HOWTO 文書の内容を取り入れて集合的な著作物はこの copyright の下で保護される必要があります。つまり、いずれかの HOWTO をもとにした著作物を作ってもその配布に制限を追加してはいけません。ある条件の下では、これらの規則に対する例外が認められる場合があります。下記のアドレスの Linux HOWTO のコーディネータに連絡を取ってください。

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.

要するに、私たちは可能な限り多くの経路を通じてこの情報の普及を促進することを望んでいます。しかし、私たちは HOWTO の文書の著作権を保持することも強く望んでいますし、 またそれら HOWTO の文書を再配布するどんな計画も私たちに知らせていただければ幸甚に思います。

If you have questions, please contact Andreas Kostyrka <mailto:andreas@ag.or.at>, the author of this mini-HOWTO, or Tim Bynum, the Linux HOWTO coordinator, at <mailto:linux-howto@sunsite.unc.edu> via email.

もしご質問があれば e-mail で、この mini-HOWTO の著者である Andreas Kostyrka <mailto:andreas@ag.or.at>、あるいは Linux HOWTO のコーディネーターの Tim Bynum <mailto:linux-howto@sunsite.unc.edu> までどうぞ。

1.1 この文書に協力してくれた方々


2. 概観

一般に、ディスクレスマシンには以下のような問題があります。

カーネル(1.3.7x 以降)の現在の NFSROOT の実装では、次の ``やりかた'' で上記の問題を解決しています。

ディスクレス環境の設定を始める前に、ブートするために LILOLOADLIN のどちらを使用するかを決めておいた方がよいでしょう。これらを使用すると融通性があるという利点がありますが、速度の点では不利です。LILO が無いほうが Linux カーネルの起動はより早くなります。この点は考慮した方がよいかも知れません。


3. サーバーの設定

3.1 カーネルのコンパイル

サーバーのカーネルには RARP サポートを設定しておいたほうがよいでしょう。カーネルパラメーター無しで起動する時には必要になりますから。ただしクライアントがサーバーと同じサブネット内になければ RARP は役に立たないでしょう。

ディスクレスマシン用のカーネルには最低限、次のような機能をコンパイル時に組み込む必要があるでしょう。

ディスクレスマシンをカーネルパラメーター無しで起動する場合、ルートデバイスを 0:255 にセットする必要もあります。ダミーデバイスを作るには mknod /dev/nfsroot b 0 255 を実行します。デバイスファイルを作成した後、カーネルイメージのルートデバイスを rdev <kernel-image> /dev/nfsroot で設定することができます。

3.2 root ファイルシステムの作成

ファイルシステムのコピー

Warning/警告:これらの指示はうまく動作するかもしれませんが、環境によっては決して適切なものではありません。クライアントのためのルートファイルシステム設定の、よりよい方法については Ofer Maor <ofer@hadar.co.il> の NFS-Root-Client mini howto を参照してください。

クライアントのためのルートツリーをサーバー上のどこに置くのかを決めた後、(例えば)mkdir -p <directory>tar cClf / - | tar xpCf <directory> - を実行して作成してください。

LILO を使わずにカーネルを起動する場合、ルートディレクトリは /tftpboot/<IP-address> の必要があります。それが嫌なら、カーネルソースの一番上(訳注:つまり /usr/src/linux)にある Makefile で変更できます。 NFS_ROOT = -DNFS_ROOT="/tftpboot/%s" のような行を探してください。変更した場合カーネルを再コンパイルする必要があります。

ルートファイルシステムに対する変更

さて、不必要なファイルを取り除いて、/etc/rc.d スクリプトをチェックしましょう。いくつかの重要な点があります。

ファイルシステムの export

ルートディレクトリをディスクレスマシン用に export します。方法が不明の場合、exports(5) を参照してください。大抵の場合、変更後に nfsd/mountd の再起動が必要となります。RedHat の場合、/etc/rc.d/init.d/nfs stop ; /etc/rc.d/init.d/nfs start を実行することで簡単にできます。

RARP の設定

RARP をネットワーク上のどこかでセットアップします。クライアントを nfsroot パラメーターなしで起動する場合、RARP サーバーは NFS サーバーの必要がありますが、普通は NFS サーバーでしょう。このためには、RARP サポート付きのカーネルを走らせる必要があります。

設定をするために、次のスクリプトを実行してください(また、サーバーの /etc/rc.d のどこかにそのスクリプトをインストールしておきましょう)

/sbin/rarp -s <IP アドレス> <ハードウェアアドレス>

IP アドレス

はディスクレスマシンの IP アドレス

ハードウェアアドレス

はディスクレスマシンのネットワークカードの Ethernet アドレスです。

例: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12

IP アドレスの代わりにホスト名を使うこともできます。ただし、サーバーが IP アドレスを(/etc/hosts や DNS を検索して)見つけることができれば、ですが。

BOOTP の設定

BOOTP を設定するためには /etc/bootptab を編集する必要があります。bootpd(8)bootptab(5) の man page を参照してください。

ハードウェアアドレスを見つける

ハードウェアアドレスなんて知りません。どうすれば見つけられるんでしょうか?


4. ディスクレスマシンを起動

4.1 boot rom を使用

私はまだそういう力業な物を使ったことがありませんから、次の tips を挙げることしかできません(Christian Leutloff <leutloff@sundancer.tng.oche.de> のお作法)。

4.2 raw カーネルディスクを使う

デフォルトのネーミングに従った正しい名前でルートファイルシステムを export していて、NFS サーバーが RARP サーバーである場合(つまり両者のマシンは同一のサブネット内に存在)、カーネルをディスクに cat するだけで起動することができます。(カーネルのルートデバイスを 0:255 にする必要があります) これはつまり、サーバーのルートディレクトリが /tftpboot/IP アドレス にあると仮定します(この値はカーネルコンパイル時に変更できます)。

4.3 ブートローダーと RARP を使う

カーネル起動時に必要なパラメーター全てと、nfsroot=<サーバーの IP アドレス>:</path/to/mount> を渡してください。ここで サーバーの IP アドレス は NFS サーバーの IP アドレスを、/path/to/mount はルートディレクトリのパスを表します。

Tips:

4.4 RARP なしでブートローダーを使う

カーネルに、nfsroot に加えて nfsaddrs=<client-IP>:<srv-IP>:<gw-IP>:<netm-IP>:<hostname> 引数を渡してください。カーネルは eth0 を渡された引数で設定します。

client-IP

ディスクレスマシンの IP アドレス

srv-IP

NFS サーバーの IP アドレス

gw-IP

ゲートウェイ

netm-IP

ネットマスク

hostname

マシンの名前(ホスト名)


5. 既知の問題

5.1 /sbin/init が起動しない。

/sbin/init でよくある問題は、いくつかの(少なくとも)現行のディストリビューションの /sbin/init は動的リンクになっていることです。ですからクライアントに対して正しい /lib の設定をする必要があります。簡単な方法としては、(クライアント用の)/sbin/init を、静的リンクされた ``Hello World'' プログラムと置き換えてみることです。これにより、もっと根本的な問題か``単なる'' 動的リンクの問題かを見極めることができます。

5.2 /dev トラブル

起動時に tty に関するよくわからないメッセージが表示された場合、クライアントの /dev ディレクトリで MAKEDEV スクリプトを実行する必要があるでしょう。これは dev 番号に 64 bit を使用している、いくつかのサーバー OS では動作しないと言う噂がありますが、実行すべきでしょう。この問題が発生した場合、どの os で起きたかを私にメールしてください。可能性のある解決方法は起動プロセスの初期で、ram ディスクに小さな /dev を作成して、毎回デバイスのノードを再インストールすることです。


6. その他の話題


7. 翻訳について

当文書は井伊 亮太さん、中野 博樹さんの翻訳した 1996/08/06 版を、早川が最新版(1997/08/08)の LDP で更新したものです。

日本語訳:井伊 亮太 <pessi@kmc.kyoto-u.ac.jp>
     中野 博樹 <cas@kaba.or.jp>, <cas@kuis.kyoto-u.ac.jp> (1996/08/06)
日本語訳:早川 仁  <cz8cb01@linux.or.jp> (1999/09/15)


sgml21html conversion date: Mon Jan 17 11:51:49 JST 2011