如何通过 GRUB 以 UEFI 模式从旧式 MBR 分区启动 Windows 8?

如何通过 GRUB 以 UEFI 模式从旧式 MBR 分区启动 Windows 8?

这个问题类似于回答在 UEFI 上与 Windows 8 双启动 Ubuntu 12.10(GRUB - 错误:找不到命令驱动器映射),但 Windows 8 安装在旧式分区驱动器

无需转换为 GPT 或使用 DISM,需要执行哪些步骤才能使安装在 UEFI 模式下启动?

我知道一般来说不建议混合 UEFI 和传统启动,但在某些设置中它会很方便。

答案1

是的,即使您将 Windows 8 安装在旧式分区磁盘 (MS-DOS/MBR) 上,也可以以 UEFI 模式启动它。当然,您需要在另一个 GPT 分区磁盘上安装兼容 UEFI 的 GRUB。

  1. 在 Windows 中,安装新的启动配置到卷 C:通过运行以下命令:

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

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

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

  2. 在 Ubuntu 中,添加自定义 GRUB 菜单项添加以下几行到/etc/grub.d/40_custom

    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) 替换为您的 UUID。在此示例中,您可以运行sudo blkid /dev/sda2以获取 UUID 或启动 GParted。
    • 提醒:此示例涉及具有旧分区表的驱动器。如果您的驱动器是 GPT,则将其替换msdosgpt
  3. 最后运行sudo update-grub生成新的配置。

答案已从https://askubuntu.com/q/377807/40581因为它看上去不合适。

相关内容