| 3.How to build the Diskless client @ 構築環境 クライアント IPアドレス DHCPから固定IPを割当(192.168.1.71) nfsroot先 /tftpboot/192.168.1.71 サーバ IPアドレス 192.168.1.10 A ディスクレス・クライアントの準備(クライアント) @.サーバとして使うマシンがRedHat8.0のため一度クライアントにRedHat9を入れます。 今回は以下のパッケージを導入 □ X System □ Gnome □ Application Developer □ Kernel Developer 合計1.5Gくらいのディスク容量になります。 A.カーネルの再構築 $cd /usr/src/linux-2.4 $make mrproper $cp -p configs/kernel-2.4.20-i686.config .config $make oldconfig $make menuconfig −Network Option [*] IP:kernel level autoconfigration [*] DHCP Support (NEW) [*] BOOTP Support (NEW) [*] RARP Support (NEW) −Network filesystem [*] NFS filesystem support [*] root file system on NFS −NICドライバーをモジュールから組込みに変更(M→*) $vi Makefile EXTRAVERSION = -8custom → EXTRAVERSION = -8nfs 変更 $make dep 中略 $make clean 中略 $make bzImage 中略 $make modules 中略 $make modules_install 中略 出来上がったカーネルを/bootへコピーする $cp -p arch/i386/boot/bzImage /boot/vmlinuz-2.4.20-8nfs System.mapをコピーする $cp -p System.map /boot/System.map-2.4.20-8nfs initrdを作成する $cd /boot $mkinitrd initrd-2.4.20-8nfs.img 2.4.20-8nfs B.カーネルをnfsroot対応に変更 $mknod /dev/nfs c 0 255 $cd /boot $rdev vmlinuz-2.4.20-8nfs /dev/nfs 確認 $rdev vmlinuz-2.4.20-8nfs Root Device /dev/nfs これでOK C.initrdの編集 $cd /boot $gunzip -S .img initrd-2.4.20-8nfs.img initrd-2.4.20-8nfsファイルが出来上がる $mount -o loop initrd-2.4.20-8nfs /mnt $cd /mnt $vi linuxrc echo 0x100 > /proc/sys/kernel/real-root-devを下記の様に変更 echo 255 > /proc/sys/kernel/read-root-dev 保存する $cp -a /dev/nfs . $gzip -c -9 initrd-2.4.20-8nfs > initrd-2.4.20-8nfs.img B サーバの準備(サーバ) @.ディスクレス・クライアント・ファイルを置く場所を確保 $mkdir -p /tftpboot/192.168.1.71 tftpbootはディフォルトで決められているようです。 変更する場合は、Kernelソース/usr/src/linux-2.4/fs/nfsのnfsroot.cを変更しリコンパイルが必要です。 A.exportsファイル編集 nfsrootにするためにexportsファイルに追記します $vi /etc/exports /tftpboot/192.168.1.71 192.168.1.71(rw,async,no_root_squash) $exportfs -av exporting 192.168.1.71:/tftpboot/192.168.1.71 reexporting 192.168.1.71:/tftpboot/192.168.1.71 to kernel B.dhcpd.confファイルの編集 $cd /etc $vi dhcpd.conf 下記を追記する(今回の環境の場合) host client01 { hardware ethernet 00:00:00:00:00:00; ← PXEクライアントのMACアドレスを入れる fixed-address 192.168.1.71; option vendor-class-identifier "PXEClient"; option root-path "192.168.1.10:/tftpboot/192.168.1.71"; } 今までの環境にアドオンしたdhcpd.confは補足7.を参照 C クライアント・ファイルのコピー クライアントからサーバへファイルをコピーする $mount 192.168.1.10:/tftpboot/192.168.1.71 /mnt bin boot dev etc home initrd lib misc opt proc root sbin tmp usr var 上記ディレクトリをコピーする $cp -a ディレクトリ /mnt D ファイルの編集(サーバ) サーバへコピーしたファイルをディスクレス起動用に編集します $cd /tftpboot/192.168.1.71 $mkdir -p mnt/cdrom mnt/floppy $cd etc ← スラッシュを付けないこと $vi fstab 下記の様に編集する 192.168.1.10:/tftpboot/192.168.1.71 / nfs rw,rsize=8192,wsize=8192,intr 0 0 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0 ディスクレス環境fstabファイルは補足8.を参照 $cd sysconfig/network-scripts $mv ifcfg-eth0 ifcfg-eth0.bak E クライアントの起動確認(クライアント) A−Aで作成したカーネルとinitrdを使って起動確認 ブートローダーに上記カーネルとinitrdを追加しブートする このときカーネルパラメータとして以下を与える ip=192.168.1.71:192.168.1.10::255.255.255.0:client01:: grubの場合:grub.confファイルは補足9.を参照 例) title Red Hat Linux (2.4.20-8nfs) root (hd0,0) kernel /vmlinuz-2.4.20-8nfs ip=192.168.1.71:192.168.1.10::255.255.255.0:client01:: initrd /initrd-2.4.20-8nfs.img liloの場合:lilo.confファイルは補足10.を参照 例) image=/boot/vmlinuz-2.4.20-8nfs label=diskless initrd=/boot/initrd-2.4.20-8nfs.img read-only append="ip=192.168.1.71:192.168.1.10::255.255.255.0:client01::" いかがですか?うまく起動できましかた? F PXEからDisklessクライアント起動 今までの環境にDisklessクライアントメニューを追加する場合はPXE改造版RPMを使ってください。RedHat標準(RH80)のPXEはメニューが5つまでしか選択できません。 改造版PXEは9つまで選択出来るようになります。 @.ブート環境の設定(サーバ) /tftpboot/192.168.1.71/bootの中のvmlinuz-2.4.20-8nfsとinitrd-2.4.20-8nfs.imgをPXEブート環境ディレクトリへコピーする $cd /tftpboot $mkdir -p X86PC/UNDI/nfsboot $cp -p 192.168.1.71/boot/vmlinuz-2.4.20-8nfs X86PC/UNDI/nfsboot/nfs.1 $cp -p 192.168.1.71/boot/initrd-2.4.20-8nfs.img X86PC/UNDI/nfsboot/nfs.2 /tftpboot/X86PC/UNDI/linux-installのlinux.0をnfsboot以下にコピーするのだが、カーネルパラメーターを起動のたびに渡さなければならないためnfs.0にカーネルパラメータを含んだbootstrapを作るためのプログラムを作りました。 使用される方はこちらをどうぞ! 使用方法: $cd /usr/local/src ここにファイルをコピーし展開する $tar -xzvf nfsbstrap.tar.gz $cd nfsbstrap Configを環境に合わせ変更してください CLIENT=192.168.171 SERVER=192.168.1.10 NETMASK=255.255.255.0 CLIENTNAME=client01 $./bootstrap これで/tftpboot/X86PC/UNDI/nfsboot/にnfs.0が導入される A.pxe.confにDisklessメニューと関連項目を設定 B.dhcp/pxeを再起動 C.クライアントを起動 Disklessメニューを選択しあとは起動を待つだけです 以上でPXEネットワーク構築備忘録の終了です。 |