PXEネットワーク環境構築備忘録
ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築ディスクレス・クライアントの構築

3.ディスクレス・クライアントの構築

@ 構築環境

 クライアント
 IPアドレス DHCPから固定IPを割当(192.168.1.71)
 nfsroot先 /tftpboot/192.168.1.71

 サーバ
 IPアドレス 192.168.1.10

A ディスクレス・クライアントの準備(クライアント)

ディスクレス・クライアントの構築今回はRedHat9をディスレス・クライアントとして準備することにするだワン!

@.サーバとして使うマシンが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
 保存する
  $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を変更しリコンパイルが必要です。

ディスクレス・クライアントの構築#define NFS_ROOT "/tftpboot/%s"←ここを変更するだワン!

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.1.71
 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ネットワーク構築備忘録の終了です。


前  戻る   
ディスクレス・クライアントの構築