我一直在设置 PXE 服务器来自动化 Linux 部署。一切都很有趣,直到某些东西神奇地破裂(即我一定改变了一些东西,但我一生都无法弄清楚它是什么)。
dhcpd.conf 的片段(出于隐私考虑,删除了一些信息)
subnet 10.0.65.0 netmask 255.255.255.0 {
option routers ///;
option broadcast-address ///;
option subnet-mask 255.255.255.0;
range ///;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 10.160.65.5;
if option architecture-type = 00:07 {
filename "pxe/shim.efi";
} else {
filename "pxe/pxelinux.0";
}
}
}
pxe 服务器(与 DHCP 服务器不同的服务器)正在运行 RedHat 7。我为 xinetd tftp 守护进程打开了详细日志记录。显示客户端请求pxelinux.0(然后客户端显示PXELINUX版本信息),但没有显示客户端请求ldlinux.c32,最终客户端超时。
Oct 26 13:49:47 tinkerbell in.tftpd[599]: tftp: client does not accept options
Oct 26 13:49:47 tinkerbell in.tftpd[600]: RRQ from 141.212.104.234 filename pxe/pxelinux.0
我尝试使用 syslinux 包中的 pxelinux-options 对 pxelinux.0 文件的某些选项进行硬编码,但没有运气。我尝试了许多版本的 pxelinux.0(目前使用 6.03,从 RedHat 7 机器上的源代码编译)。
当前的硬编码选项:
utils/pxelinux-options --list /y/pxe/pxelinux.0
-b domain-name 'foo.bar'
-b domain-name-servers 10.0.65.4
-a next-server 10.0.65.5
-a path-prefix '/pxe/'
-a config-file 'pxelinux.cfg/default'
我已经走到了隐喻的尽头。任何帮助表示赞赏。