我最受欢迎的答案之一是关于如何修复 grub 的说明。随着时间的推移,其他人为该答案贡献了错误修复。不过,最近的一条评论让我怀疑它是否适用于较新的 UEFI 硬件。
加博写道:
我在第 7 步收到“找不到 EFI 目录”的提示,无法启动。有什么想法吗?
我的所有硬件都是较旧的,UEFI 之前的硬件。所以我的问题是:我的说明(特别是第 7 步)是否适用于 UEFI 硬件?如果不是,需要做哪些改变?
答案1
如果你有 EFI,那么将会有一个EFI 系统分区 (ESP)在磁盘上。此分区必须安装在 上/boot/efi
,以便 GRUB 可以使用它。分区:
- 格式为 FAT32,
- 通常较小 (100MB < size < 500MB)
- 将启用
boot
标志 - 包含一个
EFI
文件夹 EFI
可以由 OEM贴上标签,但没有保证
我手头没有,但是您可以看到这种分区的示例:
关于创建一个的超级用户帖子,
parted -l
输出:Unix 和 Linux 帖子,也关于创建一个,附上一张 GParted 截图:
因此,这里的任务大约在步骤 3 和步骤 4 之间:
- 找到 ESP
安装它:
sudo mount /dev/sdXY /mnt/boot/efi
然后,您可以继续使用您通常的答案。我自己也做过。/boot
如果您有一个单独的分区,请将其视为安装分区。
你可以将它挂载到任何你喜欢的地方。在这种情况下,只需在安装时指定 GRUB 的挂载目录即可:
grub-install --efi-directory=/foo/bar /dev/sdX
答案2
在您最初的回答中,您写道:
当你安装 Windows 时,Windows 会假设它是机器上唯一的操作系统 (OS),或者至少它不考虑 Linux。因此它用自己的引导加载程序替换了 GRUB。
在 EFI 下情况并非如此。好吧,Windows 仍然很粗鲁,可以说它认为自己是唯一的操作系统,但它并没有取代 GRUB。在 EFI 下,多个引导加载程序共存于EFI 系统分区 (ESP),Windows 确实如此不是删除或者替换 GRUB。
尽管如此,普通用户在安装 Ubuntu 后可能不会注意到 BIOS 模式和 EFI 模式 Windows 安装之间的任何差异,因为 Windows 在 EFI 模式下所做的是将其自己的引导加载程序设置为默认引导加载程序。因此,计算机最终会启动 Windows 而不是 Ubuntu。这好像与 BIOS 下的问题相同,但事实并非如此。
与您的解决方案类似的解决方案可能在 EFI 下有效,但这是过度的,因此可能会产生比解决的问题更多的问题。概括地说,在 EFI 下安装 Windows 后恢复 GRUB 的最简单方法是:
- 启动到 Windows。
- 下载并安装简易UEFI。
- 使用 EasyUEFI,将
ubuntu
条目移动到启动顺序列表的顶部。 - 重新启动。Ubuntu 应该可以启动,但没有 Windows 选项。
- 在 Ubuntu 中,
sudo update-grub
在终端窗口中输入。
此时,Windows 应该会在下次重启时作为 GRUB 菜单中的一个选项出现。
另一种方法是使用内置的 Windows 程序bcdedit
而不是 EasyUEFI,但 EasyUEFI 更简单,尽管它是一个必须下载和安装的第三方程序。