PXE Network Bootの記録

PXEを使ってSystemRescueを起動させる目的で構築しました。
VirtualBoxでPXEserverとPXEbootuserを設定して確認。
クライアントはメモリ3GB以上が必要でした。

確認環境
$ sudo cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" $ uname -a Linux PXEserver 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64 GNU/Linux
想定環境は下記の通りです
ネットワーク:192.168.56.0
DHCP Proxy Server:192.168.56.103
VMはホストオンリーアダプタとNATのアダプタ2つを設定。NATがパッケージ取得用。
では具体的な手順です。
$ sudo apt update $ sudo apt install curl tftp用のディレクトリ作成 $ sudo mkdir -p /tftpboot/pxelinux.cfg 新しい物が良いそうです。20120224時点では6.03でした。 $ curl -L -O https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz $ tar zxvf syslinux-6.03.tar.gz 下記2ファイルをコピー $ sudo cp ./syslinux-6.03/bios/core/pxelinux.0 /tftpboot/ $ sudo cp ./syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 /tftpboot/ SystemRescueCDイメージをもらってきます。 $ curl -L -O https://osdn.net/projects/systemrescuecd/storage/releases/7.01/systemrescue-7.01-amd64.iso $ sudo mkdir -p /mnt/cd $ sudo mount -o loop ./systemrescue-7.01-amd64.iso /mnt/cd tftpbootフォルダにコピーします。 $ sudo cp /mnt/cd/sysresccd/ /tftpboot/ $ sudo umount /mnt/cd DHCP Proxyとtftpdにdnsmasqを使います。 $ sudo apt install dnsmasq 設定ファイルの作成 $ sudo vim /etc/dnsmasq.d/pxeboot.conf -*-*-*ここから中身*-*-*- # DHCP service dhcp-range=192.168.56.0,proxy log-dhcp dhcp-boot=pxelinux.0,192.168.56.103 pxe-service=x86PC,"Network Boot",pxelinux,192.168.56.103 # TFTP service enable-tftp tftp-root=/tftpboot -*-*-*ここまで*-*-*- $ sudo systemctl restart dnsmasq.service $ sudo systemctl enable dnsmasq 大きなファイルはtftpで送れないのでhttpを使うそうです。 $ sudo apt install apache2 osの自動インストールなども出来るそうですが、今回は systemrescueだけあれば良いので同じものを使うようにシンボリックリンクにしました。 $ sudo ln -s /tftpboot/ /pxeboot apache2の設定ファイル作成 $ sudo vim /etc/apache2/sites-available/pxeboot.conf -*-*-*ここから中身*-*-*- Alias /pxeboot/ "/pxeboot/" <Directory "/pxeboot"> Options Indexes MultiViews FollowSymlinks AllowOverride None Require all granted </Directory> -*-*-*ここまで*-*-*- $ sudo a2ensite pxeboot $ sudo systemctl reload apache2 http://192.168.56.103/pxeboot/sysresccd/x86_64/airootfs.sfs で ダウンロード出来るかテスト。 pxelinuxの設定ファイル作成 $ sudo vim /tftpboot/pxelinux.cfg/default DEFAULT sysresccd LABEL sysresccd LINUX sysresccd/boot/x86_64/vmlinuz INITRD sysresccd/boot/intel_ucode.img,sysresccd/boot/amd_ucode.img,sysresccd/boot/x86_64/sysresccd.img APPEND archisobasedir=sysresccd ip=dhcp archiso_http_srv=http://192.168.56.103/pxeboot/ checksum SYSAPPEND 3
以上で、SystemRescueをPXE Bootすることが出来ました。
次のサイトコンテンツのおかげで思ったより簡単に実現できました。
ありがとうございます。
https://www.system-rescue.org/manual/PXE_network_booting/
https://qiita.com/sakai00kou/items/bc6ae4d6b4cacc4b8af9
USBのブートメディアを作る必要が無く、必要なときにこのマシンを起動させれば良いので悪くない。
と思いますが、こんなのを構築するならUSBメディア使った方が良い!ということもあるかも・・?