UEFI syslinux 在 PXE 启动中不通过 HTTP 加载 initrd

UEFI syslinux 在 PXE 启动中不通过 HTTP 加载 initrd

我正在尝试建立一个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.c32menu.c32)时,它都会挂起(PC)或重新启动(QEMU)。
  • 当我删除UIDEFAULT和 时TIMEOUT,我得到了通常的文本模式提示。但是什么都没启动,它只是抱怨没有UI设置DEFAULT

这个经验,加上 GRUB2 在我的 PC 和 QEMU 上都能完美运行(包括图形模式),让我得出结论:SYSLINUX 6.03 尚不适合 UEFI 网络启动。

不幸的是,GRUB2 不是“手动”设置的。它也很重,需要花几秒钟才能通过 PXE 加载(使用常规模块化版本)。不过,我不知道还有什么更好的选择。

相关内容