Grub2 无法检测到 Windows 8

Grub2 无法检测到 Windows 8

安装时未检测到 Windows。我安装了 Windows 分区并运行了 os-prober,但没有返回任何结果。

我可以通过在 UEFI 启动顺序中指定分区来启动 Windows 或 Ubuntu。BIOS 似乎不允许使用旧版启动。SecureBoot 已打开。

这是 Inspiron 15 上的 Ubuntu 12.04 LTS。

这是 gdisk:

   1            2048         1026047   500.0 MiB   EF00  EFI system partition
   2         1026048         1107967   40.0 MiB    FFFF  Basic data partition
   3         1107968         1370111   128.0 MiB   0C01  Microsoft reserved part
   4         1370112         2394111   500.0 MiB   2700  Basic data partition
   5         2394112       544743423   258.6 GiB   0700  Basic data partition
   6       606183424       625140399   9.0 GiB     2700  Microsoft recovery part
   7       544743424       545230847   238.0 MiB   0700  (/boot)
   8       545230848       556949503   5.6 GiB     8200  (swap)
   9       556949504       606181375   23.5 GiB    0700  (/)

当安装 ubuntu 时,我相信我指定将引导加载程序安装在 /dev/sda 上。

我向 /etc/grub.d/40_custom 添加了以下内容,但启动 ubuntu 并没有提供 grub 菜单:

menuentry "Windows 8" {
set root = "(hd0,4)"

  chainloader +1

  }

在启动时,我认为在 Ubuntu 开始启动之前我看到“EFI 磁盘错误”快速闪烁。

答案1

第一次尝试禁用安全启动。尽管 Ubuntu 理论上支持安全启动,但仍有很多关于安全启动的问题报告,特别是在双启动配置中。我认为禁用安全启动不太可能立即解决您的问题,但它将使您尝试解决问题的任何方法更有可能成功。

其次,您可以尝试多种方法来解决启动问题,包括:

  • 安装我的rEFInd 启动管理器。请注意,在尝试整个操作之前,您可以尝试使用 USB 闪存驱动器和 CD-R 映像;但是,除非您按 F2 或两次插入并添加,否则它们不会直接启动您的 Linux 内核ro root=/dev/sda9。如果您安装了 Debian 软件包,则不再需要这样做。USB/CD-R 映像也应该能够通过 GRUB 成功启动 Windows 和 Linux。
  • 跑过引导修复工具。该程序可以修复许多启动问题,尽管有时它会失败,而且在极少数情况下,它实际上可能会使问题变得更糟,导致 Ubuntu 无法启动。
  • 为 Windows创建一个合适的/etc/grub.d/40_custom条目。你最初问题中的条目可能在基于 BIOS 的系统上有效,但在 EFI 下会失败。你需要更像这样的东西:

menuentry "Windows" {
    insmod part_gpt
    insmod chain
    set root='(hd0,gpt1)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

请注意,此确切40_custom条目并不总是有效;您可能需要针对您的系统进行调整。(在一台计算机上有效的方法在另一台计算机上可能完全失效。)

答案2

您可能完全取消 /etc/grub.d/30_os-prober 的执行权限,因为即使它没有找到任何东西,它也会将超时设置为 0,因此看不到 grub 屏幕。接下来,修复 chainloader 命令,+1 适用于 msdos 分区磁盘,并且您有一个 gpt 分区磁盘,因此它应该看起来像:

chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi

update-grub 将创建一个新的 grub.cfg 文件,但它会将其放入 /boot/grub 中。您需要将其复制到 /boot/efi/EFI/ubuntu,或者确保 ...ubuntu 中的 grub.cfg 文件只是一个存根,它会提取 /boot/grub 中的文件(我认为更高版本默认会这样做,但 12.04 可能不会。)

即使修复了链式加载程序,Windows 仍可能无法成功启动(错误 1091464),因此您可能仍必须像现在一样将 Windows 作为默认启动或通过 UEFI 启动菜单启动。

确保在 EFI 分区上设置了启动标志。即使只有磁盘选择,引导加载程序位置实际上是 efi 分区中的 /EFI/ubuntu。那里的文件应该是 shim.efi、grubx64.efi(签名版本)、grub.cfg(可能还有 gcdx64.efi)。它们必须正确,您才能从 UEFI 菜单成功启动并启用安全启动。

相关内容