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