PXEBOOT配置

有关PXE启动的备忘录。
項目値開発機VMware Workstation v16.2.5サーバーのOSDebian 12サーバーのIPアドレス192.168.1.1DHCP払出IPアドレス192.168.1.16~31ルーターのIPアドレス192.168.1.254
请根据各自的环境调整各个设定值。

引入工作

引入软件包

sudo apt-get install isc-dhcp-server tftpd-hpa apache2

编辑设置文件 de

ISC DHCP服务器的配置文件 /etc/default/isc-dhcp-server

sudo sed -i.org /etc/default/isc-dhcp-server      \
    -e '/DHCPDv4_CONF/ s/^#//'                    \
    -e '/DHCPDv4_PID/  s/^#//'                    \
    -e '/INTERFACESv4/ s/".*"/"ens160"/'

/tftpd-hpa的配置设置在/etc/default/目录下。

sudo sed -i.org /etc/default/tftpd-hpa            \
    -e '/TFTP_DIRECTORY/ s%".*"%"/var/lib/tftp"%'

/etc/dhcp/dhcpd.conf的配置

sudo cp -p /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.org
cat <<- '_EOT_' | sed 's/^ *//g' | sudo tee "/etc/dhcp/dhcpd.conf"
	option arch code 93 = unsigned integer 16;
	
	subnet 192.168.1.0 netmask 255.255.255.0 {
	 	range 192.168.1.16 192.168.1.31;
	 	option domain-name-servers 192.168.1.1;
	 	option domain-name "workgroup";
	 	option routers 192.168.1.254 ;
	 	option broadcast-address 192.168.1.255;
	 	default-lease-time 3600;
	 	max-lease-time 86400;
	
	#	option time-servers ntp.nict.jp;
	#	option subnet-mask 255.255.255.0;
	#	option netbios-dd-server 192.168.1.1;
	
	 	group {
	 		next-server 192.168.1.1;
	 		if option arch = 00:07 or option arch = 00:09 {
	 			filename "bootnetx64.efi";
	 		} else {
	 			filename "pxelinux.0";
	 		}
	
	#		MAC address: xx:xx:xx:xx:xx:xx
	 		host Client01 { hardware ethernet xx:xx:xx:xx:xx:xx; }
	 		host Client02 { hardware ethernet xx:xx:xx:xx:xx:xx; }
	 		host Client03 { hardware ethernet xx:xx:xx:xx:xx:xx; }
	 	}
	}
_EOT_

创建目录

sudo mkdir -p /var/lib/tftp

在中文中,PXEBOOT的维护。

cd /var/lib/tftp/
sudo curl -L -# -R -S -o "debian_stable_netboot.tar.gz" "https://deb.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/netboot.tar.gz"
sudo tar -xzf debian_stable_netboot.tar.gz
sudo rm debian_stable_netboot.tar.gz
sudo ln -s debian-installer/amd64/bootnetx64.efi .
sudo ln -s debian-installer/amd64/grubx64.efi    .
sudo ln -s debian-installer/amd64/grub           .

重新启动服务

sudo systemctl restart tftpd-hpa.service isc-dhcp-server.service apache2.service
sudo systemctl status  tftpd-hpa.service isc-dhcp-server.service apache2.service

执行示例

从以下链接中下载自动配置文件,并将Debian12安装在/dev/nvme0n1上。
https://github.com/office-itou/Linux/tree/master/pxeboot

编辑设置文件

编辑syslinux.cfg文件

OLD_IFS="${IFS}"
IFS= INS_STR=$(
cat <<- '_EOT_' | sed -e 's/^ //g' | sed -z -e 's/\n/\\n/g' | sed -e 's/\\n$//'
label auto
        menu label ^Automated install
        kernel debian-installer/amd64/linux
        append auto=true url=https://raw.githubusercontent.com/office-itou/Linux/master/pxeboot/preseed/debian/preseed_server.cfg priority=critical vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet
_EOT_
)
IFS="${OLD_IFS}"
sudo sed -i.org debian-installer/amd64/boot-screens/syslinux.cfg\
         -e "/^timeout /a \\${INS_STR}"

编辑 grub.cfg

OLD_IFS="${IFS}"
IFS= INS_STR=$(
cat <<- '_EOT_' | sed -e 's/^ //g' | sed -z -e 's/\n/\\n/g' | sed -e 's/\\n$//'
menuentry 'Automated install' {
    set background_color=black
    linux    /debian-installer/amd64/linux auto=true url=https://raw.githubusercontent.com/office-itou/Linux/master/pxeboot/preseed/debian/preseed_server.cfg priority=critical vga=788 --- quiet
    initrd   /debian-installer/amd64/initrd.gz
}
_EOT_
)
IFS="${OLD_IFS}"
sudo sed -i.org debian-installer/amd64/grub/grub.cfg\
         -e "/^play /a \\${INS_STR}"
bannerAds