製作著作 © 1996 Jerry Kendall
1996/12/28
FreeBSD は The FreeBSD Foundation の登録商標です。
3Com および HomeConnect は 3Com Corporation の登録商標です。
Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media および Windows NT は アメリカ合衆国および/またはその他の国における Microsoft Corporation の登録商標または商標です。
Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS および Ultra は アメリカ合衆国およびその他の国における Sun Microsystems, Inc. の 商標または登録商標です。
製造者および販売者が製品を区別するのに 用いている表示の多くは、商標とされています。 この文書に登場する表示のうち FreeBSD Project がその商標を確認しているものには、その表示に続いて “™” または “�” 記号がおかれています。
FreeBSD-hackers メーリングリストの友人たちの助けによって、 わたしはディスクの無い X 端末を作ることができました。 X 端末の作成には、NFS によってマウントされた最小のユーティリティを持つ ディスク無しのシステムを作らなくてはなりませんでした。 同じ方法を使って 2 つの別々なディスク無しのシステムを作りました。 一つ目は altair.example.com です。 それは 340M のハードディスクが付いていますが、交換したくありませんでした。 そのため、そのマシンは antares.example.com からイーサネットを通じてブートするようになっています。 2 つ目のシステムは 486DX2-66 です。 わたしは全くローカルディスクのないディスク無しの FreeBSD を (完璧に) セットアップしました。 その場合のサーバは SunOS™ 4.1.3 が動いている Sun 670MP です。 セットアップの設定は両方に同じものが必要でした。
わたしはこの文書に加えなくてはならない内容がまだあると思っています。 どんなことでもご意見がありましたら送ってください。
ネットワークローダは TSR などの MS-DOS® が使うものがあるとうまく働かないことがあるので、 最も良い方法は専用のブートフロッピーを作るか、 もしできれば、MS-DOS のメニューを作ってシステムが起動するときにどの設定を有効にするかを聞いてくるようにすることです。 (config.sys/autoexec.bat ファイルによって) 次に挙げるのはわたしが使っているもので、ちゃんと動作しているものです。 わたしの MS-DOS (6.x) メニューを下に載せます。
/usr/src/sys/i386/boot/netboot にある “net-boot” プログラムをコンパイルしてください。 そのときには Makefile の先頭にあるコメントを読んでおきましょう。 要求されるように調整してください。 念のために、オリジナルのファイルはどこかにバックアップを取っておいてください。 ビルドが終わったら、2 つの MS-DOS の実行ファイル nb8390.com と nb3c509.com ができているはずです。 これらの 2 つのプログラムの 1 つはディスク無しのサーバ上で動かすのに必要になるものです。 それはブートサーバからカーネルをロードするものです。 ここでは両方のプログラムを先程作った MS-DOS のブートフロッピーに入れておきます。
もしあなたのイーサネットアダプタが使っているチップセットを知っているなら、 これは簡単なことです。もしそれが NS8390 チップセットか、 NS8390 をベースとするチップセットであれば、nb8390.com を使ってください。もし 3Com® 509 をベースとするチップセットなら、 nb3C509.com ブートプログラムを使ってください。 もしあなたの持っているものがよくわからなければ、一つ試してみて、そこで “No adapter found” と言われたらまた他のを試してみてください。それでもだめだったら、 あなたのものはとても珍しいということです。
config.sys/autoexec.bat ファイルも使わずにディスク無しのシステムを立ち上げてみてください。 あなたのイーサネットアダプタのためのブートプログラムを実行してみましょう。
わたしのイーサネットアダプタは WD8013 16bit モードで動いているので nb8390.com を実行します。
C:> cd \netboot C:> nb8390 Boot from Network (Y/N) ? Y BOOTP/TFTP/NFS bootstrap loader ESC for menu Searching for adapter.. WD8013EBT base 0x0300, memory 0x000D8000, addr 00:40:01:43:26:66 Searching for server...
ここでは、 わたしのディスク無しのシステムはブートサーバとして振る舞うようなマシンを探しにいこうとします。 上の addr 行を記録しておいてください。 あとからその数が必要になります。ディスク無しのシステムを再起動して、 あなたの config.sys や autoexec.bat ファイルを修正して これらの操作が自動で行われるようにしてください。 おそらくメニューの部分になるでしょう。 もし nb3c509.com を nb8390.com の代わりに使わなくてはいけなかったとしても、出力は上と同じです。 もし Searching for adapter.. というメッセージが出るときに “No adapter found” ということを言われたら、 Makefile で定義されているコンパイル時間が正しくセットされているかどうかを確認してみてください。
/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]> まで電子メールを (英語で)
送ってください。