我使用 EFI 安装了 Windows 8,后来也使用 EFI 安装了 Ubuntu。和往常一样,我在引导加载程序方面遇到了麻烦。Ubuntu 取代了 EFI 上的引导加载程序,我很清楚这一点。不过,引导它只有一半的时间有效,我宁愿使用 BCD 而不是 GRUB,因为 Windows 8 BCD 会启动 Windows,而您需要决定是要启动 Windows 还是 Linux,而我主要使用 Windows。
不管怎样。就像我说的,它只有一半的时间有效。我的意思是,有时当我从 EFI 启动时,它会显示“选择正确的启动设备”,然后我必须使用 MBR 启动。反之亦然。将 MBR 设置为默认启动设备时不时会报告相同的错误,然后我必须从另一个硬盘上的 MBR 启动(不,不是 EFI)。
基本上我的问题是这样的:如何删除 GRUB2 提示并让 BCD 出现?
bootrec
我尝试使用并bcdboot
按照以下步骤将引导加载程序安装到 EFI 分区:
首先,我使用 diskpart 安装 EFI 分区(B:为 EFI 卷,J:为 Windows 卷)
cd /d B:\EFI\
del ubuntu
bootrec /fixboot
bcdboot J:\Windows /l en-gb /s B: /f ALL
然后我重启了。结果 EFI 分区坏了,什么都启动不了,但我还是能从另一个硬盘上的 MBR 启动。
答案1
首先,在 EFI 模式安装中(您的 Windows 几乎肯定会使用这种模式,Ubuntu 可能也会使用这种模式),MBR 与启动过程无关。在 EFI 下,固件会读取 EFI 系统分区 (ESP) 中的引导加载程序文件。MBR 不包含引导代码,只有一个保护分区,可帮助识别磁盘是否使用 GUID 分区表 (GPT) 分区系统。但令人困惑的是,大多数基于 UEFI 的计算机还支持 BIOS/传统启动模式,因此可以从紧急磁盘等专为基于 BIOS 的计算机设计的磁盘启动。这些磁盘确实使用基于 MBR 的代码。您提到的第二个磁盘可能以这种方式启动,但您的描述在这一点上不清楚。
如果您的 ESP 有一个EFI\ubuntu
目录,那么 Ubuntu 就是以 EFI 模式安装的,删除该目录会导致 Ubuntu 无法启动,至少在您修复它之前是这样。我对 Windowsbootrec
和bcdboot
工具并不完全熟悉,所以我不完全确定这些命令的作用。作为恢复的第一步,我建议您找到 Windows 8 恢复光盘并使用它来修复您的安装。这可能会让 Windows 重新启动并运行,但 Ubuntu 可能仍然无法启动。
此时,您需要将 Ubuntu 恢复到可启动状态。有多种方法可以做到这一点。首先想到的两种方法包括:
- 运行 Ubuntu 的启动修复工具。这是一个相当自动化的工具,可能能够启动并运行 Ubuntu,但您可能会遇到最初的可靠性问题。它还可能以奇怪的方式重命名 Windows 引导加载程序,这可能会导致后续问题。
- 使用 Windows,安装我的rEFInd 启动管理器以及适用于您的 Ubuntu 文件系统(可能是 ext4)的驱动程序。这将使 rEFInd 能够直接加载 Linux 内核,而无需 GRUB 的帮助;但是,第一次启动 Ubuntu 时,您需要突出显示 Linux 选项,并且不要按 Enter,而是按 F2 或 Insert 两次。然后,您将能够编辑启动选项以添加 Linux 根设备,如下所示
root=/dev/sda5
。(不过,您需要知道设备名称;它可能不适合/dev/sda5
您。)启动 Ubuntu 后,运行mkrlconf.sh
rEFInd 附带的脚本,在后续启动中,您无需编辑启动选项。这种方法开始时比使用 Boot Repair 稍微繁琐一些,但它不太可能在以后引起问题。
答案2
由于我换了硬盘,我无法再验证答案,所以我不得不关闭这个问题。