Diskless マシンの環境構築

サーバの IP アドレスを 192.168.0.1/24 、 クライアントの IP アドレスを 192.168.0.2/24 、MAC アドレスを00:00:aa:bb:cc:dd とする


○/etc/dhcpd.con を編集

subnet 192.168.0.0 netmask 255.255.255.0{
option broadcast-address 192.168.0.255;
host client{
hardware ethernet 192.168.0.2;
fixed-address 00:00:aa:bb:cc:dd;
}
}
○dhcpd を起動

/etc/rc.d/init.d/dhcpd start


inetd.conf または xinetd.d で tftpd の起動を有効にする


mkdir -p /tftpboot/linux
cd / ; cp -a bin usr sbin etc var proc lib /tftpboot/linux
mkdir /tftpboot/linux/tmp ; chmod 777 /tftpboot/linux/tmp
cd /tftpboot/linux/var ; mkdir log run lock spool

これで大抵のソフトウェアはまともに動きます。


○ /etc/exports の編集

/tftpboot/linux 192.168.0.2(rw , no_root_squash)

○デーモンの起動

/etc/rc.d/init.d/portmap start
/etc/rc.d/init.d/nfs start


このディレクトリは、クライアント側の /etc となるので、サーバ側の設定をそのまま適用してしまうと不具合が起きるため、書き換えます。

○fstab の編集

192.168.0.1:/tftpboot/linux / nfs defaults 0 0

のみ記入。これにより、クライアント起動時にNFS で サーバの /tftpboot/linux を / としてマウントします。

○sysconfig/network の編集

NETWORKING=yes
HOSTNAME=client

のみ記入。HOSTNAME をサーバと違うものにしないと不具合が起こる可能性があるので。


必須項目は
Networking Options->IP: kernel level autoconfiguration->IP:dhcp SUPPORT
Filesystem->Network file system->NFS file system support->Root file system on NFS

この二つは必ずカーネル組み込み(モジュールにしない)が必須。モジュールにすると、/lib を読みに行こうとするので、/lib を NFS にしている場合はモジュールを読みにいけなくなってしまう。
この二つさえモジュールにしておけば問題なく動作すると予想できますが、何かあると嫌なので、カーネル組み込みにしておいたほうが無難でしょう。

コンパイルしてできたカーネルイメージを、/tftpboot/linux/vmlinuz としてコピー


○フロッピーを VFAT でフォーマット

#superformat -B /dev/fd0 hd

○GRUB の configure & make

.tar xvzf grub-0.92.tar.gz
cd grub-0.92
./configure --enable-diskless --enable-NIC_NAME (ex ./configure --enable-diskless --enable-sis900)
make;make install

○GRUB の make で作られた stage1 stage2(ブートセクタ) をフロッピーにコピー

mount -t vfat /dev/fd0 /mnt/floppy
mkdir -p /mnt/floppy/boot/grub
cp GRUB_SRC_DIR/stage1/stage1 /mnt/floppy/boot/grub
cp GRUB_SRC_DIR/stage2/stage2 /mnt/floppy/boot/grub

○GRUB の起動メニュー設定 menu.lst を編集、フロッピーへコピー

#menul.lst
default=0
timeout=10
dhcp
kernel /linux/vmlinuz nfsroot=192.168.0.1:/tftpboot/linux ip=dhcp


以上によりディスクレスマシンの構築は終わり。
きちんと起動しない場合は、GRUB が立ち上がったときに 'c' キーを押すことでコマンドラインモードに入れるので、そこでデバッグする。

dhcp
とタイプすれば、DHCP による IP アドレス取得を試みます。これが失敗した場合は、DHCP 周りの設定に問題があることが考えられます。

root (nd)
とタイプすれば、GRUB のルートパーティションをネットワーク上に設定することができます。これが失敗した場合は、tftp の設定に問題があることが考えられます。

kernel /linux/vmlinuz nfsroot=192.168.0.1:/tftpboot/linux ip=dhcp
とタイプすれば、カーネルを読みに行きます。これが失敗した場合は、NFS の設定に問題があると考えられます。

boot
とタイプすれば、今まで設定した項目を利用して GRUB が起動を始めます。これ以降で失敗した場合は、クライアント側の / パーティションとなるディレクトリの構成、設定に問題があると考えられます。