インストール対象のマシンが LAN に接続されている場合、 TFTP を用いると、そのマシンをネットワーク越しに他のマシンから起動できます。 インストールシステムを別のマシンから起動するには、 その「別のマシン」の特定の場所に起動ファイルを置き、 またインストール対象のマシンの起動をサポートするよう 設定しなければなりません。
設定が必要なのは TFTP サーバです。 また多くのマシンでは BOOTP サーバ 、RARP サーバ 、DHCP サーバ のいずれかの設定が必要です。
Reverse Address Resolution Protocol (RARP) は、 どの IP を用いるべきかをクライアントに伝える方法のひとつです。 同種の方法には BOOTP プロトコルがあります。 BOOTP は IP プロトコルのひとつです。 クライアントに対して、使うべき IP アドレスと、 ブートイメージをネットワークのどこから取得するかを伝えます。 VMEbus システムではまた違った選択肢も存在します。 IP アドレスはブート ROM から手動で設定できます。 DHCP (Dynamic Host Configuration Protocol) は、 BOOTP との後方互換性を保ちつつ、より柔軟に拡張させたものです。 システムによっては DHCP でしか設定できないこともあります。
Trivial File Transfer Protocol (TFTP) は、 ブートイメージをクライアントに提供するために用います。 理論的には、どんなサーバでも、どんなプラットフォームでも、 これらのプロトコルを実装してさえいれば利用できます。 この節では、SunOS 4.x, SunOS 5.x (Solaris), GNU/Linux での例を示します。
RARP を設定するには、クライアントコンピュータにインストールしている
イーサネットのアドレス (MAC アドレス) を調べておく必要があります。
この情報が確認できていなければ、
(例えば rescue フロッピーなどで) 「Rescue」 モードを起動して
/sbin/ifconfig eth0
コマンドを使ってください。
Linux 2.2.x カーネルを使っている RARP サーバシステムでは、 カーネルの RARP テーブルへの登録が必要です。 次のコマンドを実行してください。
#/sbin/rarp -s
#client-hostname
client-enet-addr
/usr/sbin/arp -s
client-ip
client-enet-addr
SIOCSRARP: Invalid argument
といったメッセージが出る場合は、RARP カーネルモジュールをロードするか、
これが不可能なら RARP のサポートを組み込むよう
カーネルを再構築する必要があります。
modprobe rarp
を試し、うまくいったらもう一度
rarp コマンドを実行してください。
Linux 2.4.x カーネルのRARP サーバシステムでは、RARP モジュールはありません。 また使うプログラムは rarpd になります。 手順は次の段落で説明する SunOS の場合と同じようになります。
SunOS では、クライアントのイーサネットハードウェアアドレスを
「ethers」 データベースと 「hosts」 データベースに
リストしておかなければなりません
(これらのデータベースは /etc/(ethers,hosts)
ファイルか
NIS/NIS+ のマップにします)。
次に RARP デーモンを起動します。
SunOS 4 では /usr/etc/rarpd -a
を、
SunOS 5 では /usr/sbin/rarpd -a
を
(ルート権限で) 実行してください。
GNU/Linux で使える BOOTP サーバは二つあります。
CMU の bootpd と、もう一つは実際には DHCP サーバなのですが、
ISC の dhcpd です。それぞれ Debian GNU/Linux では
bootp
パッケージと dhcp
パッケージに入っています。
CMU bootpd を使う場合は、まず /etc/inetd.conf
ファイルの
該当行をアンコメント (または追加) する必要があります。
Debian GNU/Linux では update-inetd --enable bootps
を実行し、
続いて /etc/init.d/inetd reload
とすれば OK です。
この行は次のようなものです。
bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
ここで次に /etc/bootptab
を作成します。
このファイルの書式は、
printcap
, termcap
,
disktab
ファイルなどでお馴染みの、
例のわかりにくい形式になっています。
詳細は bootptab
マニュアルページを見てください。
CMU bootpd では、
クライアントのハードウェア (MAC) アドレスを知っておかなければなりません。
/etc/bootptab
の例を示します。
client:\ hd=/tftpboot:\ bf=tftpboot.img:\ ip=192.168.1.90:\ sm=255.255.255.0:\ sa=192.168.1.1:\ ha=0123456789AB:
少なくともクライアントのハードウェアアドレスを指定している 「ha」 オプションは変更する必要があるでしょう。 「bf」 オプションはクライアントが TFTP で取得するファイルを指定しています。 詳細は 項4.5.5. 「TFTP イメージを適切な場所に配置する」 を参照してください。
対照的に、ISC dhcpd を使っての BOOTP の設定は実に簡単です。
dhcpd では、BOOTP クライアントは
やや特殊な DHCP クライアントとして取り扱われます。
アーキテクチャによっては、BOOTP によるクライアントの起動には
複雑な設定が必要になります。
これに該当してしまったら、項4.5.3. 「DHCP サーバの設定」 の節を読んでください。
該当しないアーキテクチャでは、
クライアントの含まれるサブネットの設定ブロックに
allow bootp
というディレクティブを追加し、
/etc/init.d/dhcpd restart
で
dhcpd を再起動するだけです。
フリーソフトウェアの DHCP サーバのひとつは、
ISC の dhcpd です。
Debian GNU/Linux では、これは dhcp
パッケージに入っています。
次に示すのは、dhcp
の設定ファイル
(普通は /etc/dhcpd.conf
) の例です。
option domain-name "example.com"; option domain-name-servers ns1.example.com; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; server-name "servername"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.253; option routers 192.168.1.1; } host clientname { filename "/tftpboot/tftpboot.img"; server-name "servername"; next-server servername; hardware ethernet 01:23:45:67:89:AB; fixed-address 192.168.1.90; }
注: 新しい(そして好ましい) dhcp3
パッケージは
/etc/dhcp3/dhcpd.conf
を使用します。
この例では、servername
というサーバがひとつあり、
DHCP サーバ, TFTP サーバ, ネットワークゲートウェイの仕事をすべて行っています。
domain-name オプション、サーバ名、クライアントのハードウェアアドレスは、
必ず変更する必要があります。
filename
オプションは TFTP 経由で取得するファイルの名前です。
dhcpd の設定ファイルの編集を終えたら、
/etc/init.d/dhcpd restart
によって
dhcpd を再起動してください。
TFTP サーバを立ち上げるには、
まず tftpd が有効になっているか確認します。
/etc/inetd.conf
に次のような行があればおそらく大丈夫です。
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot
Debian パッケージは一般的にインストールする際、 デフォルトで正しくセットアップできます。
/etc/inetd.conf
を見て、in.tftpd
の引数に与えられているディレクトリを覚えてください。
後でこのディレクトリを使います。
in.tftpd のバージョンによっては、
-l
引数をつけると、
すべての要求をシステムログに記録できます。
これは起動エラーの診断に有用です。
/etc/inetd.conf
を変更したら、
変更したことを inetd に伝えなければなりません。
Debian マシンでは /etc/init.d/inetd reload
を実行します。
他のマシンでは、inetd のプロセス ID を見つけて、
kill -HUP
を実行します。
inetd-pid
次に行うことは、
項4.2.1. 「どこで インストールイメージを探すか」 の記述にある、必要な TFTP ブートイメージを、
tftpd のブートイメージディレクトリに置く作業です。
このディレクトリは普通 /tftpboot
です。
tftpd が特定のクライアントの起動に用いるファイルへのリンクを、
ここに作らなければなりません。
残念ながら、ファイルの名前は TFTP クライアントによって決まり、
強制力のある標準は存在しません。
BVM システムや Motorola VMEbus システムでは、
.../images/kernel/vmlinuz-2.4.27-bvme6000,
.../images/netboot/initrd.gz,
.../images/netboot/tftplilo.bvme, and
.../images/netboot/tftplilo.conf
を /tftpboot/
にコピーしてください。
次に boot ROM や BOOTP サーバを設定して、
tftplilo.bvme
または
tftplilo.mvme
といったファイルを
TFTP サーバから最初にロードするようにしてください。
お使いのサブアーキテクチャについてや、
システム特有の設定情報に関しては、
tftplilo.txt
を参照してください。