我正在尝试使用 pxelinux 启动 WinPE。
这是我在pxelinux.cfg/default
文件中的条目:
LABEL Windows Preinstallation Environment
COM32 linux.c32
APPEND wimboot initrdfile=http://pxe/winpe/bcd,http://pxe/winpe/boot.sdi,http://pxe/winpe/boot.wim
我正在使用 wimboot(来自 iPXE 项目),它与传统 BIOS 计算机配合得很好(我可以毫无问题地使用我的 WinPE)。我遵循了这个iPXE wimboot 文档并将其适配到pxelinux。
当涉及到 UEFI 计算机时,它不再起作用。它加载了所有内容,但在最后一步似乎崩溃了:
Loading wimboot... ok
Encapsulating http://pxe/winpe/bcd... ok
Encapsulating http://pxe/winpe/boot.sdi... ok
Encapsulating http://pxe/winpe/boot.wim... ok
Failed to exit boot services: 0x8000000000000002
syslinux_boot_linux() failed: Error 0
linux.c32: Boot aborted!
我的所有其他条目pxelinux.cfg/default
均有效。
当我在 UEFI 计算机上时,我该怎么做才能使 WinPE 启动?
答案1
今天,您将无法使用 Syslinux/winboot 在 UEFI 模式下启动。Syslinux 6.03 支持 BIOS 和 UEFI 模式,但目前并非所有 Syslinux 生态系统的工具都已迁移到 UEFI。
也就是说,如果您以前启动 pxelinux.0 (BIOS),现在您应该启动 syslinux.efi (UEFI)。linux.c32 是一个仅适用于 BIOS 的工具,尚未迁移到 UEFI(我的意思是无法加载 efi 映像)。chainload、pxechn、wimboot 等也是如此。iPXE 项目有类似的问题,它没有完全迁移到 UEFI,那么您拥有的功能仅适用于 BIOS。
今天,要启动 UEFI winPE,最好的选择是将 bootmgrfw.efi 定义为您的 NBP(网络启动程序),即使这会迫使您在预定路径中分配 BCD 或使用相应的 DHCP 选项。