Ubuntu to go 配置 Windows PE 系统及引导
诉求
最终诉求是,在 Ubuntu to go 所在的 U 盘,添加 Grub 开机引导项目,可以引导至 Windows PE 系统。走了不少弯路,与 ChatGPT 、DeepSeek 反复周旋 4 天时间,中间以为找到了最终答案,可以通过 rEFInd 实现 UEFI 的引导,然后 BIOS 是通过 memdisk 实现引导,不过很严重一个问题是,通过 rEFInd 无法在不同宿主上默认自动显示 PE 引导项目,需要进命令行通过 refind-install
添加一次引导,很麻烦。其实之所以通过 Grub 没有引导成功,是因为 BCD 文件参数中, SDI 文件和 WIM 文件指向路径需要配置,而且 bootx64.efi 、BCD 所在的路径需要格外注意,否则无法正确识别引导。至于 BIOS 模式,则需要使用 memdisk 实现引导,相当于加载 ISO 文件为虚拟磁盘。目前是达到了满意的效果,可以正确引导至自己喜欢的 Windows PE 系统,而且可以区分 UEFI 和 BIOS 两种模式,分别显示对应的引导菜单。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
### BEGIN /etc/grub.d/40_custom ### if [ "$grub_platform" = "efi" ]; then # UEFI 启动时显示 menuentry "Windows PE - WePE (UEFI) - ERAZER" { search --no-floppy --fs-uuid --set=root 0A3A-D6C2 chainloader /EFI/WePE64/bootx64.efi } menuentry "Windows PE - CMDPE (UEFI) - ERAZER" { search --no-floppy --fs-uuid --set=root 67DB-F5A1 chainloader /CMDPE/bootx64.efi } else # BIOS 启动时显示 menuentry "Windows PE - WePE (BIOS) - Memdisk - ERAZER" { search --no-floppy --fs-uuid --set=root 0A3A-D6C2 set gfxpayload=keep terminal_output console echo "Loading memdisk..." linux16 /EFI/memdisk iso raw verbose echo "Loading Windows PE ISO..." initrd16 /EFI/WePE_64_V2.3.iso } menuentry "Windows PE - CMDPE (BIOS) - Memdisk - ERAZER" { search --no-floppy --fs-uuid --set=root 67DB-F5A1 set gfxpayload=keep terminal_output console echo "Loading memdisk..." linux16 /memdisk iso raw verbose echo "Loading CMDPE ISO..." initrd16 /CMDPE-3.9/File/CMDPE-3.9.ISO } fi # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. ### END /etc/grub.d/40_custom ### |
THE END