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

Nob*_* SE 4 http pxe tftp uefi syslinux

我正在尝试设置GParted Live PXE 启动并按照PXELINUX说明设置启动。

我已经让它与 TFTP 一起工作,但现在我想将 和其他“大”文件的加载切换到 HTTP vmzlinuzinitrd因为它很慢。

但是,当我更改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...
Run Code Online (Sandbox Code Playgroud)

通过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 加载程序。

是否还有额外的“l”版本的 UEFI 引导加载程序提供 HTTP 支持?我可以做什么来进一步诊断?

Dan*_*l B 5

根据这个消息syslinux.efi应该支持HTTP。它可能依赖于某些 UEFI 功能/服务来执行此操作。您的板\xe2\x80\x99s 特定 UEFI 实现可能在这方面被破坏。

\n\n

因此,我使用我的 PC 和带有 OVMF 固件的 QEMU,以及我现有的 PXELINUX 配置进行了一些测试。我观察到以下效果:

\n\n
    \n
  • 当我将本地启动设置为默认值并设置超时时,它会立即退出,使我返回到启动选择菜单(PC)或重新启动(QEMU)。
  • \n
  • 当我启用任何 UI(已测试:vesamenu.c32menu.c32)时,它会挂起(PC)或重新启动(QEMU)。
  • \n
  • 当我删除UIDEFAULT和 时TIMEOUT,我到达了通常的文本模式提示符。但是,什么都无法启动,它只是抱怨既没有设置UI也没有DEFAULT设置。
  • \n
\n\n

这次经历,再加上 GRUB2 在我的 PC 和 QEMU 上完美运行(包括图形模式)这一事实,让我得出这样的结论:SYSLINUX 6.03(尚)不适合 UEFI 网络引导。

\n\n

不幸的是,GRUB2 并不是由\xe2\x80\x99 手工设置的\xe2\x80\x9c\xe2\x80\xb3。它也非常重,需要几秒钟才能通过 PXE 加载(使用常规模块化版本)。不过,我不知道\xe2\x80\x99有什么更好的选择。

\n