我不知道这里出了什么问题。我有几十台可以正常工作的机器,也有几十台不能正常工作的机器,而且它们都因硬件和平台的不同而不同。
我有一台 CentOS 7.3 PXE 服务器,运行 cobbler,上面有许多基于 CentOS 的 LiveCD 选项。它们一直运行良好,直到今天早上,现在我们尝试从 PXE 加载原始 CentOS LiveCD 时突然看到以下行为:
- 按 Enter 键
- 内核下载
- Initrd 正在下载,但是没有任何提示(只出现了 3 个“.”,但是我可以通过查看服务器上的 tcpdump 知道它正在下载)
- 下载完成,屏幕闪烁,PXE 菜单重新出现
- 随后的重试导致菜单闪烁并再次出现“无效内核参数”错误,错误时间非常短,我不得不用截屏软件录下来才能看到它。此外,实际上只有 1 个数据包被发送到客户端;就好像它在第二次尝试时甚至没有尝试下载它。
原始 CentOS LiveCD 的 pxe 菜单项如下所示:
/images/centos_livecd/centos_vmlinuz initrd=/images/centos_livecd/centos_livecd_initrd.img ksdevice=bootif lang= root=live:/centos_livecd.iso kssendmac text ks=http://10.101.24.21/cblr/svc/op/ks/profile/centos_livecd BOOTIF=<MAC>
再说一遍 - 我有大约 20 个不同主板和平台的单元无法工作,大约 40 个不同主板和平台的单元使用完全相同的菜单项可以工作。
常规安装程序菜单项效果很好 - CentOS、Ubuntu 等。
到目前为止我已经尝试过:
- 使用 CentOS 安装 ISO 中的 vmlinuz
- 使用“watch -n 1 systemctl status xinetd”监控 xinetd 并查看传入的请求
- 使用“tcpdump -vvi |grep”监控 tcpdump
我很迷茫,也很绝望。有人有什么想法吗?
如果我可以在从 PXE 加载的系统上使用不同的实用程序收集更多信息,我很想知道如何操作。
更多信息:
在跟踪 /var/log/messages 时,我注意到,根据网络情况,第一次尝试加载 LiveCD 似乎进展顺利,但是一旦下载了 initrd.img,客户端上就不会发生任何事情:
Jul 28 15:10:30 jarvis in.tftpd[12496]: RRQ from 10.101.26.176 filename /images/centos_livecd/centos_vmlinuz
Jul 28 15:10:30 jarvis in.tftpd[12496]: Client 10.101.26.176 finished /images/centos_livecd/centos_vmlinuz
Jul 28 15:10:30 jarvis in.tftpd[12501]: RRQ from 10.101.26.176 filename /images/centos_livecd/centos_livecd_initrd.img
Jul 28 15:11:39 jarvis in.tftpd[12501]: Client 10.101.26.176 finished /images/centos_livecd/centos_livecd_initrd.img
答案1
我们使用的是 Syslinux 版本 4.07 中的 /var/lib/tftpboot 文件,该版本比 CentOS 7.3 附带的版本高出 0.02。我们使用这些文件是因为 4.05 不支持 PXE 菜单链,但 4.07 支持。
使用 /usr/share/syslinux 中的 Syslinux 版本 4.05 的文件覆盖 /var/lib/tftpboot 中的文件解决了该问题并删除了 PXE 链接。
4.07 版文件运行了 2 周,没有出现问题;我仍然不确定为什么它们在某些单元上突然停止工作,而在另一些单元上却没有。