双启动 UEFI Windows 7 和 Ubuntu 12.04(均为 64 位)。GRUB 中未显示 W7 条目

双启动 UEFI Windows 7 和 Ubuntu 12.04(均为 64 位)。GRUB 中未显示 W7 条目

在尝试安装两个操作系统两天后,我感到困惑和生气……我有 128 GB 的 SSD 和 500 GB 的 HDD,都是空的。我的笔记本电脑是华硕 K55VM。BIOS 支持 UEFI。

我做了什么:

  1. 安装新的 SSD(三星 830 128GB)

  2. 使用 liveCD 上的 GParted 创建新的分区表 (GPT),并创建 3 个分区(在 SSD 中)用于不同目的:

    • 分区 1:80 GB(w7);
    • 分区 2:30 GB(Ubuntu 12.04 -Just/-);
    • 分区 3:10 GB 未使用(用于将来扩展其他分区)
  3. 在分区 1 中安装 Windows 7(带有 UEFI)。这将创建:

    • /dev/sda1 -> 100 MB 用于系统(我猜是 UEFI 启动) - FAT32
    • /dev/sda2 -> MSR 约 100 MB
    • /dev/sda3 -> Windows7 数据约 79.800 MB

此时一切正常。我有 W7。现在我安装 Ubuntu 12.04 amd64(带 UEFI),如下所示:

  1. 在分区 2 -> /dev/sda4 30 GB ext4 中安装 /,并在 hdd 中安装 /home 和 swap。

  2. 我选择 /dev/sda1 中的引导加载程序(它应该是 UEFI 引导)。

  3. 我安装更新并重新启动。

问题:现在只出现带有 Ubuntu 条目的 grub 菜单,而不是 Windows 7。

找到替代解决方案:当我打开笔记本电脑时,在加载 GRUB 之前,我按下 ESC 键并出现 BIOS 启动,因此我可以选择启动 Windows 分区、Ubuntu 分区、DVD、USB 等……但我认为这不是启动不同操作系统的最佳方式。

我已尝试:sudo update-grub2,但没有成功。

我能做些什么??

答案1

通过挂载 efi 分区来查找 Windows 引导加载程序所在的位置:

sudo mount -t vfat /dev/sdx1 /mnt/efi/

并搜索bootmgfw.efi。然后,找到驱动器的 UUID:

sudo grub-probe --target=fs_uuid /mnt/efi/EFI/Microsoft/Boot/bootmgfw.efi

将此 UUID 添加到/etc/grub.d/40_custom

menuentry "Windows x86_64 UEFI-GPT" {
    search --fs-uuid --no-floppy --set=root UUID
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

最后跑了update-grub

答案2

jarondl 的解决方案非常好,但另一个方法是使用单独的启动管理器程序在 GRUB 和 Windows 启动加载程序之间进行选择。我知道您可以安装三个 EFI 启动管理器:

  • 改装,可在 Ubuntu 的存储库中找到。请注意,rEFIt 网站上的版本不适用于基于 UEFI 的 PC,因为它使用 Mac 特定的文件格式。即使是 Ubuntu 版本在基于 UEFI 的 PC 上也存在一些小故障。理想情况下,rEFIt 提供了一个漂亮的 GUI 启动菜单(尽管它也有文本模式)。
  • 重新索引,这是 rEFIt 的更新版本,修复了各种 UEFI 故障并进行了扩展,以便与 3.3.0 内核的内置 EFI 引导加载程序配合使用。请注意,我分叉/维护了 rEFInd。
  • gummiboot,这是一个纯文本的启动管理器。(这个网站总是忘记我是谁,结果就是不允许我发布超过两个超链接,否则我会提供一个。)

rEFIt 和 rEFInd 都会自动检测其他引导加载程序,因此一旦您配置了它们,它们就会检测任何操作系统的引导加载程序并为您提供菜单。我还没有尝试过 gummiboot,所以我不知道设置起来有多简单,但它在概念上与 rEFIt/rEFInd 类似。使用任何这些程序都会增加引导过程的复杂性,因此如果 GRUB 可以工作并且您对此感到满意,则使用这些程序就没有什么意义了。如果 GRUB 不稳定或根本不起作用,它们最有用,根据我的经验,UEFI 系统上的 GRUB 2 经常出现这种情况。在这种情况下,您可以放弃 GRUB 2,转而使用 ELILO 或 3.3.0 或更高版本的内核的 EFI 存根加载程序。这些引导加载程序无法将引导过程重定向到 Windows,因此单独的引导管理器非常有用。对于使用 3.3.0 或更高版本内核的发行版,rEFInd 可以非常容易维护,具体取决于配置细节。

答案3

注意:仅适用于 x64

grub-probe --target=fs_uuid /boot/efi/efi/Microsoft/Boot/bootmgfw.efi

将其添加到/etc/grub.d/40_custom

menuentry "Boot bootx64.efi, generated by Boot-Repair" {
search --fs-uuid --no-floppy --set=root UUID

**chainloader (${root})/EFI/Boot/bootx64.efi**
}

其它代码无效。

在华硕 N56V 上测试

相关内容