这个答案是否适用于UEFI计算机?

我最受欢迎的答案之一是关于如何修复grub的说明 。 随着时间的推移,其他人已经为答案提供了错误修复。 不过,最近的评论让我想知道它是否适用于较新的UEFI硬件。

Gabor写道:

我在步骤7得到“找不到EFI目录”,无法启动。 有任何想法吗?

我所有的硬件都是较旧的,UEFI之前的硬件。 所以我的问题是: 我的指示,特别是第7步,是否适用于UEFI硬件? 如果没有,需要做出哪些改变?

如果您有EFI,则磁盘上将有一个EFI系统分区(ESP) 。 此分区必须安装在/boot/efi ,以便GRUB可以使用它。 分区:

  • 格式化为FAT32,
  • 通常很小(100MB <尺寸<500MB)
  • 将启用boot标志
  • 包含EFI文件夹
  • 可以由OEM标记为EFI ,但不保证

我手头没有,但你可以看到这样一个分区的样子:

  • 关于使用parted -l输出创建一个的超级用户post :

    在此处输入图像描述

  • Unix和Linux发布,也是关于创建一个 ,带有GParted截图:

    在此处输入图像描述

所以,这里的任务是,在第3步和第4步的某个地方:

  1. 找到ESP
  2. 装载它:

     sudo mount /dev/sdXY /mnt/boot/efi 

然后你可以继续你的通常答案。 我自己做了。 如果您有一个单独的,请考虑它与安装/boot分区类似。

您可以将它安装在任何您喜欢的地方 在这种情况下,只需在安装时指定GRUB的挂载目录:

 grub-install --efi-directory=/foo/bar /dev/sdX 

在您的原始答案中,您写道:

安装Windows时,Windows假定它是计算机上唯一的操作系统(OS),或者至少它不考虑Linux。 因此它用自己的引导加载程序替换GRUB。

在EFI下并非如此。 嗯,Windows仍然很粗鲁,可以说它是唯一的操作系统,但它不能取代GRUB。 在EFI下,多个引导加载程序在EFI系统分区(ESP)上共存, Windows不会删除或替换GRUB。

也就是说,在Ubuntu之后,普通用户可能没有注意到BIOS模式和Windows的EFI模式安装之间的症状有任何差异,因为Windows在EFI模式下执行的操作是将自己的引导加载程序设置为默认值。 因此,计算机最终启动Windows而不是Ubuntu。 这看起来像 BIOS下的问题,但事实并非如此。

类似于您的解决方案的东西可能在EFI下工作,但它太过分了,因此有可能产生比它解决的更多问题。 概括地说,在EFI下安装Windows后获取GRUB的最简单方法是:

  1. 启动到Windows。
  2. 下载并安装EasyUEFI。
  3. 使用EasyUEFI,将ubuntu条目移动到引导顺序列表的顶部。
  4. 重启。 Ubuntu应该启动,但是没有Windows选项。
  5. 在Ubuntu中,在终端窗口中键入sudo update-grub

此时,Windows应在下次重新引导时显示为GRUB菜单中的选项。

另一种方法是使用内置的Windows程序bcdedit而不是EasyUEFI,但EasyUEFI更容易,尽管是必须下载和安装的第三方程序。