ディスクなしパソコンの構築~その3~
投稿:2003-12-05
他のパソコンはマザーボードからの起動ができないため、 フロッピーからの起動に挑戦しました。
電源ONでフロッピーのプログラムがロード マザーボードのBIOSをフロッピーから起動にして IDEのコントローラやドライブを全部無効にしておきます。
grub-0.92をダウンロード、Linuxの環境に展開します。 初めにmakeを実行して、環境を用意します。 次に
./configure --enable-diskless --enable-rtl8139
を実行して、設定ファイルを変更します。 --enable-rtl8139はLANカードのドライバです。 ISAのne2000互換の場合は、
./configure --enable-diskless --enalbe-ne --enable-ne-scan=0x220
を実行します。 0x220はIOポートのアドレスです。(ISAだからね。わーなつかしー。) PCIのne2000互換の場合は、
./configure --enable-diskless --enable-nt8390
を実行します。 最初、全部のドライバを指定したら、自動対応するかと思ったら、 そういう訳ではないようなので、 PCに合わせて1個ずつドライバを指定するようにしました。 最後に
make clean make dep make
を実行します。 フロッピーをドライブに差し込んでから、
mkdosfs -v -c /dev/fd0
MS-DOSフォーマットをして
mount /dev/fd0 mkdir /mnt/floppy/boot mkdir /mnt/floppy/boot/grub cp stage1/stage1 /mnt/floppy/boot/grub cp stage1/stage2 /mnt/floppy/boot/grub cp diskless/grub.conf /mnt/floppy/boot/grub umount /dev/fd0
必要なファイルをコピーします。
grub root (fd0) setup (fd0) quit
GRUBが起動されるようにします。 上記のgrub.confはテキストエディタでスクラッチから作成します。 フロッピーに入れるgrub.confの内容はのちほど。
サーバのdhcpdの設定に以下を追加します。 PXEの場合はfilenameエントリでプログラムを指定していましたが、 GRUBはdhcpdに設定ファイルを要求し、 dhcpdはoption option-150というエントリを回答します(/etc/dhcpd.conf)。
host diskless {
hardware ethernet 12:34:56:78:90:ab;
fixed-address diskless;
option subnet-mask 255.255.255.0;
option host-name "diskless";
option option-150 "/diskless/grub.conf";
server-name "diskserve";
}
フロッピーに入れるgrub.confを次のように作成します。 TFTPサーバに置いておくgrub.confでないことに注意してください(/mnt/floppy/boot/grub/grub.conf)。
timeout=3
default=0
title Load grub.conf from TFTP server
dhcp
root (nd)
dhcp --with-configfile
1回目のdhcpでLANボードの認識をして、 rootで(nd)を指定できるようにします。 2回目のdhcpでTFTPサーバにgrub.confを要求します。
TFTPサーバには次のようにファイルを用意します。
mkdir /tftpboot/diskless cp server/grub.conf /tftpboot/diskless
ここでTFTPサーバに置くgrub.confの内容はのちほど。
/tftpboot/diskless/grub.confの内容は次の通りです。
timeout=3
default=0
title Boot from NFS server
dhcp
root (nd)
kernel /diskless/bzImage nfsroot=192.168.123.67:/tftpboot/diskless/root nfsaddrs=192.168.123.45:192.168.123.67:192.168.123.89:255.255.255.0
IPアドレスは末尾45がdiskless、67がサーバ、89がゲートウェイです。
カーネルにLANのドライバ、IP、iptables、iptablesのモジュール各種、 PPP、NFSその他もろもろ入れてみました。 GRUBと違ってLANのドライバはありったけ入れても良さそうです。 下記の設定はconfigs/kernel-2.4.18-i386.configとの差分です。 GRUBではneのケースも試しましたが、kernelでは試していません。 ダイヤルアップサーバやファイヤウオールのために設定が増えました。
項番 | 項目 | 設定 |
---|---|---|
1 | CONFIG_IP_PNP | y |
2 | CONFIG_IP_NF_CONNTRACK | y |
3 | CONFIG_IP_NF_FTP | y |
4 | CONFIG_IP_NF_IPTABLES | y |
5 | CONFIG_IP_NF_MATCH_LIMIT | y |
6 | CONFIG_IP_NF_MATCH_STATE | y |
7 | CONFIG_IP_NF_FILTER | y |
8 | CONFIG_IP_NF_TARGET_REJECT | y |
9 | CONFIG_IP_NF_NAT | y |
10 | CONFIG_IP_NF_TARGET_MASQUERADE | y |
11 | CONFIG_IP_NF_NAT_FTP | y |
12 | CONFIG_IP_NF_TARGET_LOG | y |
13 | CONFIG_NE2K_PCI | y |
14 | CONFIG_8139TOO | y |
15 | CONFIG_PPP | y |
16 | CONFIG_PPP_ASYNC | y |
17 | CONFIG_NFS_FS | y |
18 | CONFIG_ROOT_NFS | y |
19 | CONFIG_SUNRPC | y |
20 | CONFIG_LOCKD | y |
逆に設定から外れているのは次のものです。
- CONFIG_IP_PNP_DHCP
- CONFIG_IP_PNP_BOOTP
- CONFIG_IP_PNP_RARP