Network Users' Group ``wheel''
/
Dai ISHIJIMA's Page
/
ハードディスク消去ツール
/
PXEブート
#はじめに
|
#ネットワークブートとは
|
#「wipe-out」のマウント
|
#DHCPサーバの設定
|
#TFTPサーバの設定
|
#NFSサーバの設定
|
#iPXEによるネットワークブート
初版: 2022-12-24
最終更新日:
2022-12-24
-------------------------------
   Please select boot device:
-------------------------------
 Hard Disk: WDC WD5000AAKX
 Optical:   HL-DT-ST DVDRAM
 USB HDD:   PQI FlashDrive
 Network:   Realtek PXE B02
 Removable: MATSHITA CF-VFDU03
-------------------------------
           BIOS Setup
     Run System Diagnostics
-------------------------------
  ↑ and ↓ to move selection
  ENTER to select boot device
-------------------------------
 | 
ハードディスク消去ツール「wipe-out」は、 このようなさまざまな起動方法に対応しており、 その一つが「PXEブート(ネットワークブート)」です。
「wipe-out」が利用しているFreeBSDでは、 最初のブートストラップコード(pxeboot)をTFTPというプロトコルで ダウンロードし、 それより高次のブートコード(たとえば「loader.lua」)と カーネルなどをNFSでダウンロードします。 「wipe-out」もこの方法に対応しており、 適切にサーバ(DHCP・TFTP・NFSサーバ)を設定しておくと、 ネットワーク経由でサーバから必要なファイルをダウンロードして 起動することが可能となっています。
逆に言えば、ネットワークブートを利用するには、 サーバ(DHCP・TFTP・NFSサーバ)を適切に設定しておく必要があります。
このページでは、「wipe-out」のマウントポイントを 「/cdrom」と仮定します。 マウントするには、たとえば
# mount /cdrom  | 
物理メディアではなくISOイメージ(wpoout.iso)をマウントするには
# mdconfig -a -t vnode -f wpout.iso # mount_cd9660 /dev/md0  | 
※お使いの環境に合わせてアレンジしてください。 マウント後は関連するサーバ(mountdなど)を再起動させてください。
FreeBSDでよく用いられるISC DHCPサーバの設定は、 /usr/local/etc/ に置いてある dhcpd.conf で行います。 たとえば、192.168.1.0/24というネットワークで、 各種のサーバが192.168.1.1という場合は、 dhcpd.confに以下のような設定を行います。
option domain-name		"example.jp";
option domain-name-servers      192.168.1.1;
option ntp-servers		192.168.1.1;
default-lease-time		3600;
max-lease-time			7200;
ddns-update-style		none;
subnet 192.168.1.0 netmask 255.255.255.0 {
	range	192.168.1.2 192.168.1.100;
}
 | 
これらを加えた dhcpd.conf は以下のようになります。
option domain-name		"example.jp";
option domain-name-servers      192.168.1.1;
option ntp-servers		192.168.1.1;
default-lease-time		3600;
max-lease-time			7200;
ddns-update-style		none;
subnet 192.168.1.0 netmask 255.255.255.0 {
	range			192.168.1.2 192.168.1.100;
	filename        	"boot/pxeboot";
        option root-path	"192.168.1.1:/cdrom";
}
 | 
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /cdrom/  | 
/cdrom -network 192.168.1.0 -mask 255.255.255.0  | 
iPXEを利用するためには iPXEのウェブサイトから undionly.kpxeを あらかじめダウンロードしておき、適当な場所に配置する必要があります。 また、DHCPの設定を書き換える必要があります。
DHCPの設定は、例えば以下のようになります。
option domain-name		"example.jp";
option domain-name-servers      192.168.1.1;
option ntp-servers		192.168.1.1;
default-lease-time		3600;
max-lease-time			7200;
ddns-update-style		none;
subnet 192.168.1.0 netmask 255.255.255.0 {
	range			192.168.1.2 192.168.1.100;
        option root-path	"/path/to/undionly";
        if exists user-class and option user-class = "iPXE" {
               filename "http://www.wheel.gr.jp/boot/wpout-current.txt";
        }
        else {
               filename "undionly.kpxe";
        }
}
 | 
また、tftpの設定では、「undionly.kpxe」を置いた場所を指定します。
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /path/to/undionly/  | 
iPXEを用いたブートは2段階になります。
「http://www.wheel.gr.jp/boot/wpout-current.txt」には、
#!ipxe kernel http://www.wheel.gr.jp/pub/syslinux-6.03/bios/memdisk/memdisk iso raw initrd http://www.wheel.gr.jp/~dai/software/wipe-out/wpout-current.iso boot  | 
option domain-name		"example.jp";
option domain-name-servers      192.168.1.1;
option ntp-servers		192.168.1.1;
default-lease-time		3600;
max-lease-time			7200;
ddns-update-style		none;
subnet 192.168.1.0 netmask 255.255.255.0 {
	range			192.168.1.2 192.168.1.100;
	option root-path	"192.168.1.1:/cdrom";
        if exists user-class and option user-class = "iPXE" {
               filename "tftp://192.168.1.1/boot/pxeboot";
        }
        else {
               filename "undionly.kpxe";
        }
}
 | 
inetd.confの設定は以下のようにします。
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /cdrom/  | 
% tftp 192.168.1.1 tftp> get /boot/pxeboot Received 387073 bytes during 0.2 seconds in 760 blocks tftp> ^D  | 
「cannot open /boot/lua/loader.lua: no such file or directory」 などのメッセージが出て 「loader.lua」などをダウンロードできない場合は NFSの設定を確認したり、
# mount_nfs 192.168.1.1:/cdrom /mnt  | 
よくあるミスは、設定ファイルを書き換えた後で 関連するサーバ(dhcpd・inetd・nfsd・mountd・rpcbind, etc)の 再起動を忘れているというパターンです。 設定ファイルを書き換えたら、関連するサーバを忘れずに(再)起動して 設定を反映させましょう。