我正在尝试让 Windows 8 出现在我的 Grub 菜单下。
- 处理器:英特尔 4790k
- MB:华硕 Hero VII UEFI BIOS
- 显卡:EVA 970GTX
- SSD 250G 850 三星 Evo
- SSD 120G 850 三星 Evo
我在 上安装了 Windows /dev/sda
,在 上安装了 Ubuntu 14.0.4.02 /dev/sdb
。
Ubuntu 也设置了 EFI 启动分区。
我运行了启动修复程序,启用了 EFI 启动分区,并将 Ubuntu 作为默认操作系统。
答案1
您有两个磁盘:
/dev/sda
是一个装有 Windows 的 MBR 磁盘,并且在 MBR 中具有 Windows BIOS 引导加载程序。/dev/sdb
是带有 EFI 系统分区 (ESP) 的 GPT 磁盘。ESP 包含 GRUB 和 Windows EFI 引导加载程序,而 MBR 包含第一阶段 GRUB BIOS 引导加载程序。
请注意,您拥有适用于 Windows 和 Linux 的 BIOS 和 EFI 引导加载程序,因此不清楚您的操作系统是如何引导的——是在 BIOS 模式还是在 EFI 模式下。鉴于 Windows 安装在 MBR 磁盘上,我的直觉是它是在 BIOS 模式下安装的(并且应该可以引导);但可以想象它是在 EFI 模式下引导的,因为您的 ESP 中似乎有一个 Windows EFI 引导加载程序,即使它在另一个磁盘上。(另一方面,这些文件可能是由 Boot Repair 放置在那里的,它有时会“劫持”这些名称以获取 GRUB 的副本。)您的 Boot Repair 和 Boot Info Script 输出都包含efibootmgr
运行,这表明它们是从 EFI 模式引导运行的;但它们看起来可能是从实时 CD 运行的,因此这不一定能诊断您的常规安装如何引导。您的grub.cfg
文件有一些 EFI 特定的功能,这也表明 Ubuntu 的安装是 EFI 模式,但这可能会产生误导。
解开这个设置是可能的,但会相当棘手。不过,有一个潜在的捷径:
- 下载我的 USB 闪存驱动器或 CD-R 版本的rEFInd 启动管理器。
- 利用您下载的文件准备启动介质。
- 启动 rEFInd 介质。应出现其菜单,其中显示 Ubuntu 和 Windows 的选项。请注意,到目前为止(以及接下来的几个步骤中)使用 rEFInd 的目的是确保 Ubuntu 在 EFI 模式下启动,而不是在 BIOS/CSM/旧模式下启动。
- 测试启动选项。我预计至少有一个 Ubuntu 选项可以正常启动,但 Windows 尚不确定。(该选项可能会启动,然后挂起或显示错误消息。)
- 如果 rEFInd 可以正常启动 Ubuntu,尤其是它也可以启动 Windows,请在 Ubuntu 中安装 rEFInd PPA 或 Debian 包。
- 移除 rEFInd USB 驱动器或 CD-R 并重新启动。rEFInd 应该会启动,并从您的硬盘启动。
- 从 rEFInd 启动到 Ubuntu。
- 如果 rEFInd 确实不是启动 Windows,编辑
/boot/efi/EFI/refind/refind.conf
文件:取消注释该scanfor
行并确保它hdbios
在选项中。此操作激活 rEFInd 对从 EFI 模式启动切换到 BIOS 模式启动的支持。这个想法是让 rEFInd 向您显示以 BIOS/CSM/传统模式启动 Windows 的选项。 - 重新启动后,您应该会看到一个带有硬盘标志的新灰色菱形选项。运气好的话,这将启动 Windows(在 BIOS/CSM/传统模式下)。
- 如果新的 BIOS/CSM/legacy 选项无法启动 Windows,请取消注释该
uefi_deep_legacy_scan
选项refind.conf
并重试。
请注意,如果您想测试 rEFInd 在 BIOS/CSM/传统模式下启动 Windows 的能力,您可以延迟将 rEFInd 安装到硬盘上并编辑EFI/refind/refind.conf
USB 闪存驱动器上的文件。如果您想在安装 rEFInd 之前确保它可以启动两个操作系统,您可以这样做。
最终结果是,您将以 EFI 模式启动 Ubuntu,并以 EFI 模式或 BIOS 模式启动 Windows(无论使用哪种模式进行安装)。rEFInd 菜单上可能有额外的启动选项,但您可以通过进一步编辑来修剪它们refind.conf
。特别是,您可以使用dont_scan_files
、dont_scan_dirs
或dont_scan_volumes
。您还可以删除无意义的启动文件,例如如果“Windows”启动文件(/boot/efi/EFI/Microsoft/Boot/*.efi
)是 Boot Repair 创建的 GRUB 副本。
答案2
我设法解决了这个问题,但是我必须重新安装 Windows 8.1 和 Ubuntu 14.04。我必须通过禁用 CSM 并从 UEFI 模式启动来确保两个操作系统都安装在 UEFI 上。
我也遵循了以下指南:
非常感谢大家的帮助,尤其是@Rod Smith 帮我解决了引导加载程序的问题。