如何通过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。

  1. 在Windows中,通过运行以下命令将新的引导配置安装到卷C

    bcdboot C:\Windows /s C: /f uefi 

    在UEFI模式下启动时,这不仅会在C:\EFI\创建新的启动配置,还会在NVRAM中注册新的UEFI引导加载程序。 您可以稍后在Ubuntu中使用efibootmgr删除该条目(有关说明,请参阅: 如何在BIOS启动菜单中删除“Ubuntu”?(UEFI) )。

    当然你也可以选择其他位置,但这种方法应该是最简单的。 有关bcdboot更多详细信息,请参阅相应的Microsoft Technet文章 。

  2. 在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 )启动( hd0ahci0 )。
    • 您还需要将文件系统UUID( 2ACC7043CC700B79 )替换为您的文件系统。 在此示例中,您可以运行sudo blkid /dev/sda2来获取UUID或启动GParted。
    • 提醒:此示例处理具有旧分​​区表的驱动器。 如果你的是GPT,那么用gpt替换msdos
  3. 最后运行sudo update-grub来生成新配置。

答案来自https://askubuntu.com/q/377807/40581,因为它看起来不合适。