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)の 再起動を忘れているというパターンです。 設定ファイルを書き換えたら、関連するサーバを忘れずに(再)起動して 設定を反映させましょう。