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メディア使った方が良い!ということもあるかも・・?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です