サーバの 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{○dhcpd を起動
option broadcast-address 192.168.0.255;
host client{
hardware ethernet 192.168.0.2;
fixed-address 00:00:aa:bb:cc:dd;
}
}
/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 が起動を始めます。これ以降で失敗した場合は、クライアント側の
/ パーティションとなるディレクトリの構成、設定に問題があると考えられます。