使用 EFI 和 2 个硬盘进行 Windows 双启动时出现问题

使用 EFI 和 2 个硬盘进行 Windows 双启动时出现问题

我到处寻找我遇到的问题的答案,但找不到解决方案。我希望这里有人能帮忙。

我有一台配备两块硬盘的 Thinkpad T420。第一块硬盘是内置的,装有 Windows 10 技术预览版。第二块硬盘在 DVD 托架中,装有 Ubuntu。我多次重新安装了这两个操作系统,试图让其正常工作。有一次我成功启动了 Ubuntu,但 Windows 却不见了。此时我可以启动 Windows,但不能启动 Ubuntu。

我使用的是 EFI,而不是 BIOS。第二个磁盘装有 Ubuntu,分区如下:

(1) BIOS 空间(bios-grub 标志),因为 boot-repair 坚持这样做。但是当我用这个分区重新安装时,boot-repair 删除了其中的所有内容。

(2)EFI分区(约1GB),启动标志。

(3)交换分区,大约 10GB,因为我有 8GB 的​​ RAM。我本来不想包括这个,因为它是一个 SSD 驱动器,但 Ubuntu 安装程序发出的严重警告迫使我将其包括进去。

(4)根,安装在/。

我第一次这样做时,可以启动 Ubuntu,但找不到 Windows。我尝试使用 custom_40 将 Windows 添加到 Grub 菜单(然后运行 ​​update-grub),但它被完全忽略(现在仍然如此)。这是另一个问题 - 也许我应该单独发布它。

我重新安装了 Windows 10,现在 Ubuntu 出现在 Windows 启动菜单上(是启动修复把它放在那里的吗?)。当我选择 Ubuntu 时,Grub 菜单就会出现。但是当我从这个菜单中选择 Ubuntu(第一项)时,它无法启动。我收到消息“以不安全模式启动”,然后它就挂起了。

这款 ThinkPad 最初配备的是 Windows 7,并且没有安全模式可以关闭 - 没有安全模式。

我尝试了所有引导修复选项,但都无法处理此配置。我需要以某种方式手动编辑 Windows 和 Grub 引导加载程序,但我对它们了解不够,不知道哪里出了问题或如何修复。

这是 boot-repair 的输出。我希望知道它的意思。我为此花费了好几个小时。有人能帮助我吗?

忘掉它吧——我无法将其粘贴到这里,因为它太长了。另外,我不知道如何将其放入代码块中——我不会在每行前面手动输入空格!这是链接:

http://paste.ubuntu.com/10842921

答案1

您的两个磁盘都使用 GUID 分区表 (GPT),这意味着 Windows 以 EFI/UEFI 模式启动。这是您进行任何修复的起点,因为这个细节不容易更改。

事实上,Boot Repair 曾经说过你需要创建一个 BIOS 启动分区(你提到的“bios-grub 标志”),这意味着那只靴子系统处于 BIOS/CSM/legacy 模式。以该模式安装 GRUB(或 Ubuntu)不会有任何用处。有证据表明您/dev/sdb有这样的 GRUB 安装。可以想象,此 GRUB 安装的其他残余正在潜伏并造成问题。另一方面,您发布的 Boot Repair 输出来自明显处于 EFI/UEFI 模式的运行,因为它有efibootmgr输出(行 708-738、1115-1145 和 1179-1209),这些输出只能在 EFI 模式启动中生成。因此,您尝试在启动模式下启动 Ubuntu 和相关工具时不一致,这会引入一个变量,极大地影响一切作品。

作为恢复的第一步,我建议您进入固件设置实用程序并查找与支持“BIOS”、“CSM”或“传统”启动相关的选项。如果找到这样的选项,请禁用它,因为任何 BIOS/CSM/传统模式启动都会浪费时间。请注意,可能会有与“传统 USB”支持或其他内容相关的选项。这些选项是不是问题。您只想确保计算机以 EFI/UEFI 模式启动,而不是以 BIOS/CSM/传统模式启动。不幸的是,选项名称或行为没有标准化,因此很难确切地说出您应该调整什么。

完成这项任务后,我建议下载我的 USB 闪存驱动器或 CD-R 版本的rEFInd 启动管理器。准备一个介质并尝试启动它。它的菜单应该会显示 Windows 和 Linux 的选项。尝试一下两者。如果您可以启动这两个操作系统,那么最简单的解决方案就是安装 rEFInd Debian 包或 PPA。完成此操作后重新启动时,rEFInd 应该会出现,您就可以开始了。(您可能需要清理不需要的启动选项或更改 rEFInd 默认值,但至少您可以启动。)

如果 rEFInd 无法启动 Windows 和 Linux,请在问题中添加尝试时发生的情况的详细信息。


编辑:

rEFInd 是我的程序。它是 rEFIt 的一个分支,已被废弃。rEFIt 页面上的许多信息专门适用于 Mac 和/或已过时,因此我不会信任您使用的 rEFIt 文档。rEFInd 文档更为最新且更通用,因为它是为基于 EFI 的 Mac 和基于 UEFI 的 PC 编写的。

在使用 BIOS 或 EFI 启动时,GRUB 2 同时支持 MBR 和 GPT。但是,对于每种启动模式(BIOS 与 EFI),GRUB 都不同 - BIOS 模式 GRUB 与 EFI 模式 GRUB 并不相同,尽管两者非常相似。Windows 将分区表类型(MBR 与 GPT)与启动模式(BIOS 与 EFI)联系起来。如果 Windows 坚持安装到 MBR,则意味着您以 BIOS 模式启动了安装程序;如果它坚持安装到 GPT,则意味着您以 EFI 模式启动了安装程序。一般来说,最好坚持这种联系,即使在 Ubuntu 中也是如此,因为它可以避免以后出现问题。(但是,在某些情况下,即使在 BIOS 模式下,您也必须使用 GPT。最值得注意的是,在未使用 EFI 的旧计算机上使用超过 2TiB 的磁盘时就是这种情况。)

在 Windows 中创建分区后,GParted 或 Ubuntu 安装程序中出现空分区表的症状是由 Windows 分区工具对分区表的“损坏”引起的。我将“损坏”放在引号中,因为其中一些问题在技术上不算损坏。就您而言,“损坏”很可能是在从 GPT 转换为 MBR 的磁盘上存在剩余的 GPT 数据。我写过关于该主题的网页。最简单的解决方法是运行修复零件fixpartsUbuntugdisk包中的命令)在磁盘上。

请注意,如果 Windows 安装在 MBR 磁盘上,则意味着您的 Windows 安装至少现在处于 BIOS 模式,而不是开始时的 EFI 模式。您可以继续以这种方式启动,但如果您希望 GRUB 管理启动过程,GRUB 也必须是 BIOS 版本;EFI 模式 GRUB 无法重定向到 BIOS 模式操作系统。(BIOS 模式 GRUB 也无法重定向到 EFI 模式操作系统。)

答案2

我终于解决了这个问题 - 没有使用第三个引导程序,也没有运行引导修复程序,因为后者只会引发问题而不是解决问题。也许我的设置是错误的,但我最终并不需要它。

我为 Ubuntu 使用了 3 个分区:

(1)1GB 用于 /boot/efi (2)8GB 交换(我有 8GB 内存)(3)根目录,挂载在 /

Ubuntu 菜单项神奇地出现在 Windows 引导加载程序中,Windows 菜单项神奇地出现在 Grub 中(嗯,在我修复 Windows 安装并运行“sudo update-grub”之后)。

从 Windows 引导程序中选择 Ubuntu 会链接到 Grub2,我可以从中启动 Ubuntu。从 Grub2 中选择 Windows 最初也会链接到第二个菜单 - Windows 启动选择菜单 - 但第二个菜单仅包含一项(Windows 10 技术预览版)。由​​于没有必要,我使用以下 Windows 命令绕过它,以管理员身份输入:

bcdedit /set {bootmgr} displaybootmenu no

由于 Grub2 引导加载程序效率更高,我更改了计算机上的启动顺序,让 Ubuntu 在 Windows 引导加载程序之前启动。现在计算机直接在 Grub2 菜单中启动,我只需单击一下即可选择 Ubuntu 或 Windows。

我反复安装磁盘 0(Windows),导致磁盘 0 出现很多问题 - 有时使用 BIOS/MBR,有时使用 UEFI/GPT。MBR 出现问题,启动配置数据也出现问题。首先,我在 Windows 10 安装盘(DVD 或 USB 闪存驱动器)上启动到命令提示符并运行 diskpart。我运行了“clean”命令,删除了所有分区,将磁盘设置为 GPT 分区,然后重新安装 Windows。这解决了我的 Windows 启动问题。

由于某种原因,删除所有分区并不能清除损坏的 BCD,因此我手动执行了此操作。我使用了 Windows 10(及更早版本)附带的 BCDEDIT 命令行实用程序。

现在一切都运行正常。非常感谢 Rod 的建议和帮助!

相关内容