使用EFI和2个硬盘双启动Windows的问题

我到处寻找我遇到的问题的答案,但找不到解决方案。 我希望这里有人可以提供帮助。

我有一个带两个硬盘的Thinkpad T420。 第一个硬盘是内置的,包含Windows 10 Technical Preview。 第二个硬盘位于DVD托架中,包含Ubuntu。 我已多次重新安装两个操作系统,试图让它工作。 有一次我设法启动Ubuntu,但后来Windows无形。 此时我可以启动Windows,但不能启动Ubuntu。

我使用的是EFI,而不是BIOS。 带有Ubuntu的第二个磁盘按如下方式进行分区:

(1)BIOS空间(bios-grub标志),因为启动修复仍然存在。 但是当我重新安装这个分区时,boot-repair删除了其中的所有内容。

(2)EFI分区(约1GB),开机标志。

(3)交换分区,大约10GB,因为我有8GB的RAM。 我不想包括这个,因为它是一个SSD驱动器,但Ubuntu安装程序的可怕警告导致我包含它。

(4)Root,安装在/。

我第一次这样做,我可以启动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

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

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

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

完成该任务后,我的建议是下载我的rEFInd启动管理器的USB闪存驱动器或CD-R版本。 准备一个媒体并尝试启动它。 其菜单应显示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。 GRUB对于每种引导模式(BIOS与EFI)是不同的,但是 – BIOS模式GRUB与EFI模式GRUB不同,尽管两者非常相似。 Windows将分区表类型(MBR与GPT)绑定到引导模式(BIOS与EFI)。 如果Windows坚持安装到MBR,那么这意味着您以BIOS模式启动了安装程序; 如果它坚持安装到GPT,那么这意味着您在EFI模式下启动了安装程序。 作为一般规则,最好坚持这种联系,即使在Ubuntu中也是如此,因为它可以避免出现问题。 (在某些情况下,即使在BIOS模式下也必须使用GPT。最值得注意的是,在不使用EFI的旧计算机上使用over-2TiB磁盘时会出现这种情况。)

在Windows中创建分区时,GParted或Ubuntu安装程序中的空分区表的症状是由Windows分区工具“损坏”分区表引起的。 我把“损坏”放在引号中,因为其中一些问题在技术上并没有损坏。 在您的情况下,“损坏”很可能是在已从GPT转换为MBR的磁盘上存在剩余的GPT数据。 我写了一个关于这个主题的网页。 最简单的解决方法是在磁盘上运行FixParts (在Ubuntu gdisk包中的fixparts命令)。

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

我终于解决了这个问题 – 没有使用第三个引导程序,也没有运行引导修复,这导致问题而不是修复它们。 也许我的设置是错误的,但我最终并不需要它。

我为Ubuntu使用了3个分区:

(1)1GB用于/ boot / efi(2)8GB交换(我有8GB内存)(3)root,安装在/

一个Ubuntu菜单项神奇地出现在Windows引导程序中,并且一个Windows菜单项神奇地出现在Grub中(好吧,在我修复了我的Windows安装并运行了“sudo update-grub”之后)。

从Windows引导程序链中选择Ubuntu到Grub2,我可以从中启动Ubuntu。 从Grub2中选择Windows也首先链接到第二个菜单 – Windows启动选择菜单 – 但第二个菜单只包含一个项目(Windows 10 Technical Preview)。 由于没必要,我用这个Windows命令绕过它,以管理员身份输入:

bcdedit / set {bootmgr} displaybootmenu no

由于Grub2引导程序更有效,我更改了计算机上的引导顺序,因此Ubuntu在Windows Boot Loader之前启动。 现在,计算机直接在Grub2菜单中启动,只需单击一下即可从中选择Ubuntu或Windows。

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

出于某种原因,删除所有分区并没有清除损坏的BCD,所以我手动完成了。 我使用了Windows 10(及更早版本)附带的BCDEDIT命令行实用程序。

现在一切都很完美。 非常感谢Rod的建议和帮助!