![虚拟机上的 PXE 启动 dracut 命令 (PXELINUX DEFAULT) 卡住了](https://linux22.com/image/766603/%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%B8%8A%E7%9A%84%20PXE%20%E5%90%AF%E5%8A%A8%20dracut%20%E5%91%BD%E4%BB%A4%20(PXELINUX%20DEFAULT)%20%E5%8D%A1%E4%BD%8F%E4%BA%86.png)
我的设置:
虚拟盒版本 6.1.22 r144080(Qt5.6.2)
Windows 版本:10
运行两台虚拟机:
1 VM:Centos 7 托管 DNS、TFTP、DHCP、HTTPD,配有两张网卡 --> 1 张卡式主机专用适配器(无 DHCP)/2 张卡式桥接适配器
2 VM:使用网卡启动 --> 仅主机适配器
我正在尝试从 PXE 启动安装来安装 CoreOS(始终需要相同的 IP,因此使用 1 VM DHCP 服务器)。
第一个问题:能够从 DHCP 获取 IP 但是 tftp 不起作用 --> 将适配器类型从 Intel 更改为 PCnet 后,PXE 启动安装开始工作。
当前问题:
一旦它从 PXE 菜单中选择了选项并开始加载图像......在初始启动期间,PXELINUX 默认的 kickstart 命令出现......它卡住了,无法继续移动。我已附上相同的屏幕截图。
我的观察结果:
我已开始对 2 个 VM 执行 ping 操作,它们将在 DHCP 和 PXE 启动期间开始执行 ping 操作...但一旦从 PXE 启动菜单选项移出,它将停止 ping 操作。因此,如果网络无法访问,则意味着 KS 将无法工作。
我在具有不同 MAC 的两个 VM 上应用了相同的仅主机适配器。我不确定我做错了什么。请帮我解决。
谢谢 Rana
答案1
当您通过 PXE 启动客户端时,其 PXE ROM/固件会执行 DHCP 事务以获取 IP 和 PXE 信息。
接下来,它传输并执行 TFTP 检索到的 NBP(网络启动程序),它通常是显示启动菜单的启动管理器。
接下来选择一个菜单选项,PXE 引擎 TFTP 传输内核和 Initrd。
接下来启动内核并执行新的 DHCP 事务,这次仅获取 IP 而没有 PXE 参数。
在您的情况下,似乎最后的 DHCP 事务失败或者没有执行,那么您只能看到内核命令行的打印输出,但看不到任何 NIC 启动并获取其 IP。
Wireshark 可以帮助您在网络数据包级别查看这一点。
第二次 DHCP 事务通常会失败,因为:
- 内核命令行中的错误参数
- kernel/initrd 设置不包含所需的 NIC 驱动程序
- DHCP 事务尝试在多宿主 PC/VM 中使用错误的 NIC
- init 脚本和相关脚本引擎(即 dracut)提供了一个有缺陷的 PXE 实现
- ETC。