5. システムがネットワーク越しにブートすることを許可する (サーバ上で)

/etc/inetd.conf ファイルが tftp や bootps についてのエントリを持っているかどうかを確認してください。 わたしのは次のようになっています。

tftp	dgram	udp	wait	nobody	/usr/libexec/tftpd	tftpd /tftpboot
#
# Additions by who ever you are
bootps  dgram  udp  wait  root  /usr/libexec/bootpd bootpd /etc/bootptab

もし /etc/inetd.conf ファイルを変更したときには、 inetd(8)HUP シグナルを送ってください。 これをするには、inetd のプロセス ID を ps -ax | grep inetd | grep -v grep して 取得してください。プロセス ID がわかったら、 それに向けて HUP シグナルを送ってください。 これは kill -HUP <pid> として行います。 これによって inetd はその設定ファイルを読み直します。

ディスク無しシステム上でブートローダが出力した addr の出力を覚えているでしょうか? ここでそれが必要となるのです。

/etc/bootptab (おそらくファイルを作成して) に エントリを加えてください。それはこれと同様の書式で書きましょう。

altair:\
        :ht=ether:\
        :ha=004001432666:\
        :sm=255.255.255.0:\
        :hn:\
        :ds=199.246.76.1:\
        :ip=199.246.76.2:\
        :gw=199.246.76.1:\
        :vm=rfc1048:

これらの行は次のような意味です。

altair ドメイン名を除いたディスク無しのシステムの名前
ht=ether “イーサネット”ハードウェアタイプ
ha=004001432666 (先に記録した) ハードウェアのアドレス
sm=255.255.255.0 サブネットマスク
hn クライアントにクライアントのホスト名を送るよう、 サーバに伝えます
ds=199.246.76.1 ドメインサーバがどれなのかをクライアントに伝えます
ip=199.246.76.2 クライアントの IP アドレスが何なのかを クライアントに伝えます
gw=199.246.76.1 デフォルトゲートウェイがどれなのかを クライアントに伝えます
vm=... これはそのままにしておいてください

注意: IP アドレスは正しく設定してください。 上のアドレスはわたしだけのものです。

/tftpboot ディレクトリをサーバに作成して、 サーバがサービスを行うディスク無しのシステムのための設定ファイルをこのディレクトリに入れておきます。 これらのファイルは cfg.ip という名前になっていて、ip はディスク無しシステムの IP アドレスを表しています。 altair の設定ファイルは /tftpboot/cfg.199.246.76.2 となります。この中身は次のようになっています:

rootfs 199.246.76.1:/DiskLess/rootfs/altair
hostname altair.example.com

hostname altair.example.com の行は単にディスク無しのシステムがどのような完全なドメイン名を持っているのかを表しています。

rootfs 199.246.76.1:/DiskLess/rootfs/altair の行はディスク無しのシステムが NFS でマウントできるルートファイルシステムの場所を表しています。

注意: NFS でマウントされたルートファイルシステムは 読み出し許可だけで マウントされます。

ディスク無しのシステムの階層は要求されれば読み書き可能にして、 マウントし直すことができます。

わたしは予備の 386DX-40 を専用の X 端末として使用しています。

altair の階層は次の通りです。

/
/bin
/etc
/tmp
/sbin
/dev
/dev/fd
/usr
/var
/var/run

実際のファイルのリストは次の通りです。

-r-xr-xr-x  1 root  wheel  779984 Dec 11 23:44 ./kernel
-r-xr-xr-x  1 root    bin  299008 Dec 12 00:22 ./bin/sh
-rw-r--r--  1 root  wheel     499 Dec 15 15:54 ./etc/rc
-rw-r--r--  1 root  wheel    1411 Dec 11 23:19 ./etc/ttys
-rw-r--r--  1 root  wheel     157 Dec 15 15:42 ./etc/hosts
-rw-r--r--  1 root    bin    1569 Dec 15 15:26 ./etc/XF86Config.altair
-r-x------  1 bin     bin  151552 Jun 10  1995 ./sbin/init
-r-xr-xr-x  1 bin     bin  176128 Jun 10  1995 ./sbin/ifconfig
-r-xr-xr-x  1 bin     bin  110592 Jun 10  1995 ./sbin/mount_nfs
-r-xr-xr-x  1 bin     bin  135168 Jun 10  1995 ./sbin/reboot
-r-xr-xr-x  1 root    bin   73728 Dec 13 22:38 ./sbin/mount
-r-xr-xr-x  1 root  wheel    1992 Jun 10  1995 ./dev/MAKEDEV.local
-r-xr-xr-x  1 root  wheel   24419 Jun 10  1995 ./dev/MAKEDEV

(FreeBSD�5.X において初期状態で有効になっている) devfs(5) を利用していないのであれば、dev ディレクトリで MAKEDEV all するのを忘れずに。

altair/etc/rc は 次の通りです。

#!/bin/sh
#
PATH=/bin:/
export PATH
#
# localhost の設定
/sbin/ifconfig lo0 127.0.0.1
#
# イーサネットカードの設定
/sbin/ifconfig ed0 199.246.76.2 netmask 0xffffff00
#
# NFS で root ファイルシステムをマウントする
/sbin/mount antares:/DiskLess/rootfs/altair /
#
# NFS で /usr ファイルシステムをマウントする
/sbin/mount antares:/DiskLess/usr /usr
#
/usr/X11R6/bin/XF86_SVGA -query antares -xf86config /etc/XF86Config.altair > /dev/null 2>&1
#
# X を終了すると再起動
/sbin/reboot
#
# うまく行かないときには....
exit 1

コメントや質問はどんなものでも歓迎します。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <[email protected]> まで (英語で) 連絡してください。
本文書に関する質問については、<[email protected]> まで電子メールを (英語で) 送ってください。