如何通过GRUB在UEFI模式下从传统MBR分区启动Windows 8?
这个问题类似于Windows 8上UEFI上双启动Ubuntu 12.10的答案 (GRUB – 错误:无法找到命令 驱动器 映射) ,但Windows 8安装在传统分区驱动器上 。
在不转换为GPT或使用DISM的情况下,需要执行哪些步骤才能使安装在UEFI模式下启动?
我知道通常不建议混合UEFI和传统启动,但在某些设置中它可以很方便。
是的,即使您将其安装在旧版分区磁盘(MS-DOS / MBR)上,也可以在UEFI模式下启动Windows 8。 当然,您需要在另一个GPT分区磁盘上安装UEFI兼容GRUB。
-
在Windows中,通过运行以下命令将新的引导配置安装到卷C :
bcdboot C:\Windows /s C: /f uefi
在UEFI模式下启动时,这不仅会在
C:\EFI\
创建新的启动配置,还会在NVRAM中注册新的UEFI引导加载程序。 您可以稍后在Ubuntu中使用efibootmgr
删除该条目(有关说明,请参阅: 如何在BIOS启动菜单中删除“Ubuntu”?(UEFI) )。当然你也可以选择其他位置,但这种方法应该是最简单的。 有关
bcdboot
更多详细信息,请参阅相应的Microsoft Technet文章 。 -
在Ubuntu中,通过
/etc/grub.d/40_custom
添加到/etc/grub.d/40_custom
来添加自定义GRUB菜单项 :menuentry "Windows 8 (BCD-UEFI configuration on system drive /dev/sda2)" --class windows --class os { insmod part_msdos insmod ntfs insmod search_fs_uuid insmod chain set root='hd0,msdos2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 2ACC7043CC700B79 else search --no-floppy --fs-uuid --set=root 2ACC7043CC700B79 fi chainloader /EFI/Microsoft/Boot/bootmgfw.efi }
请注意, 如果配置不同 ,则需要编辑以下参数:
- 此条目配置为从第一个硬盘驱动器的第二个分区(
msdos2
)启动(hd0
或ahci0
)。 - 您还需要将文件系统UUID(
2ACC7043CC700B79
)替换为您的文件系统。 在此示例中,您可以运行sudo blkid /dev/sda2
来获取UUID或启动GParted。 - 提醒:此示例处理具有旧分区表的驱动器。 如果你的是GPT,那么用
gpt
替换msdos
。
- 此条目配置为从第一个硬盘驱动器的第二个分区(
-
最后运行
sudo update-grub
来生成新配置。
答案来自https://askubuntu.com/q/377807/40581,因为它看起来不合适。