我正在尝试建立一个GParted Live PXE 启动并遵循虚拟专用网络Linux设置引导的说明。
vmzlinuz
我已经让它与 TFTP 一起工作,但现在我想将和其他“大”文件的加载切换initrd
到 HTTP,因为它很慢。
但是,当我将pxe 配置中的initrd=/gparted/initrd
(TFTP) 更改为时http://192.168.0.1/gparted/initrd
,加载屏幕会无限期地挂起
Getting cached packet
My IP is 192.168.0.97
Loading vmlinuz... ok <-- that is still loadedvia TFTP)
Loading http://192.168.0.1/gparted/initrd...
通过 wireshark 查看网络流量,我可以看到/gparted/syslinux.efi
、/gparted/ldlinux.e64
、/gparted/pxelinux.cfg/default
、的相关传输/gparted/vmlinuz
。 之后一片沉寂,因此我认为 HTTP 堆栈没有按预期工作。
这PXELINUX 页面说:
自 5.10 版起,特殊的 PXELINUX 二进制文件 lpxelinux.0 原生支持 HTTP 和 FTP 传输
但是,那UEFI 部分说:
“(l)pxelinux.0” 引导程序能够通过网络引导基于 BIOS 的客户端。使用 UEFI 的硬件必须使用适当的“syslinux.efi”(分别用于 EFI IA32 或 EFI X64),而不是使用“(l)pxelinux.0”。
从 TFTP 加载文件列表中可以看到,根据我的经验我之前的 PXE 问题,我已经使用 UEFI 加载程序。
是否还有提供 HTTP 支持的 UEFI 引导加载程序的额外“l”版本?我可以做些什么来进一步诊断?
答案1
根据这条信息,syslinux.efi
应该支持 HTTP。它可能依赖于某些 UEFI 功能/服务来实现这一点。您的主板的特定 UEFI 实现在这方面可能存在问题。
因此,我使用我的 PC 和带有 OVMF 固件的 QEMU 以及我现有的 PXELINUX 配置进行了一些测试。我观察到了以下效果:
- 当我将本地启动作为默认设置并设置超时时,它会立即退出,返回到启动选择菜单(PC)或重新启动(QEMU)。
- 当我启用任何 UI(已测试:
vesamenu.c32
,menu.c32
)时,它都会挂起(PC)或重新启动(QEMU)。 - 当我删除
UI
、DEFAULT
和 时TIMEOUT
,我得到了通常的文本模式提示。但是什么都没启动,它只是抱怨没有UI
设置DEFAULT
。
这个经验,加上 GRUB2 在我的 PC 和 QEMU 上都能完美运行(包括图形模式),让我得出结论:SYSLINUX 6.03 尚不适合 UEFI 网络启动。
不幸的是,GRUB2 不是“手动”设置的。它也很重,需要花几秒钟才能通过 PXE 加载(使用常规模块化版本)。不过,我不知道还有什么更好的选择。