ディスクなしパソコンの構築−その3−
(2003.12.05)
他のパソコンはマザーボードからの起動ができないため、
フロッピーからの起動に挑戦しました。
電源ONでフロッピーのプログラムがロード
マザーボードのBIOSをフロッピーから起動にして
IDEのコントローラやドライブを全部無効にしておきます。
GRUBを実行
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の内容はのちほど。
GRUBがdhcpdサーバへ問合せ
サーバの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がTFTPサーバにgrub.confを要求
フロッピーに入れる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サーバからgrub.confを転送
TFTPサーバには次のようにファイルを用意します。
mkdir /tftpboot/diskless
cp server/grub.conf /tftpboot/diskless
ここでTFTPサーバに置くgrub.confの内容はのちほど。
GRUBがTFTPサーバのgrub.confで再実行
/tftpboot/diskless/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がゲートウェイです。
bzImageがTFTPサーバから転送される
カーネルに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