使用 wimboot 在 UEFI 32 位上启动 Windows x64 映像

使用 wimboot 在 UEFI 32 位上启动 Windows x64 映像

我有一台平板电脑使用 GRUB2 在 UEFI 32 位上运行 Windows x86 和 Ubuntu x64(混合模式)安装。我尝试过启动 Windows x64WinPE 映像WinPE image使用 wimboot程序在 GRUB2 上因为它似乎支持 Intel IA。问题是,当它启动时,会出现彩色屏幕,我必须强制关机。我能做些什么让它启动吗?或者它与我的硬件不兼容?

为了使其启动,我使用 iso 安装了一个循环设备。我在 grub2 上的配置:

    menuentry "Windows 10 64 bits" {
     insmod fat
     insmod iso9660
     set root=(hd0,gpt3)
     loopback loop /winpe.iso
     linux16 /wimboot
     initrd16 \
     newc:bcd:(loop)/Boot/BCD \
     newc:boot.sdi:(loop)/Boot/boot.sdi \
     newc:boot.wim:(loop)/sources/boot.wim
     }

并且 GRUB 在加载时没有显示任何错误。

答案1

iPXE 项目中的 wimboot 默认构建为 x64 EFI 和“内核兼容”启动映像的组合,这就像启用了 EFI_STUB 的 Linux 内核。因此,关于 wimboot 是 16 位二进制文​​件的答案是不正确的,任何在 EFI 模式下运行的东西都应该调用 wimboot,因为它是一个 efi 二进制文件。要么是 Grub 缺少此功能,要么是它正确检测 EFI 二进制文件的实现存在错误。还请注意,在 EFI 模式下运行时,支持文件(bcd、boot.sdi、boot.wim 等)不应进行 cpio 打包,而应仅加载到 efifs 内存中。

答案2

GRUB2 UEFI 不支持 linux16 和 initrd16 命令

GRUB2 UEFI 使用 linuxefi 和 initrdefi

wimboot 是 16 位二进制文​​件,GRUB2 无法在 UEFI 模式下加载它

如果你像这样编辑你的配置 linuxefi /wimboot

结果会像这样错误 no efi header

所以到目前为止,在 GRUB2 UEFI 中加载 Winpe ISO 是不可能的

在 GRUB2 UEFI 模式下启动 Winpe 的唯一方法是将 Winpe iso 的内容提取到 fat32 分区,并且该分区不能包含任何 Windows 操作系统。

1- 为 Winpe Fat32 分区添加标签,将其命名为 Winpepartition.tag 之类的任何名称

2- 在 grub2 上配置:menuentry“Windows 10 64 位”{ insmod part_gpt insmod chain search --file --no-floppy --set=root /Winpepartition.tag chainloader /efi/boot/bootx64.efi }

相关内容