无法打开 \EFI\BOOT\grubx64.efi - 未找到(Ubuntu 与 Windows 10 双启动)

无法打开 \EFI\BOOT\grubx64.efi - 未找到(Ubuntu 与 Windows 10 双启动)

背景

我有一台装有 SSD 的 Windows 10 机器,上面安装了 Ubuntu LTS 20.04。这个设置运行了好几个月,效果非常好。当我打开机器时,我可以选择使用哪个操作系统。

问题

直到昨天。昨天我登录了 Windows 启动,没有做任何特别的事情,然后关闭了机器。我离开后,Windows 可能安装了一些更新。

今天我打开机器后发现无法登录到我的 Ubuntu 分区,我的所有工作都在那里:

Failed to open \EFI\BOOT\grubx64.efi - Not Found  
Failed to load image \EFI\BOOT\grubx64.efi: Not Found    
start_image() returned Not Found  

研究

我进行了一些搜索,但看起来这个问题针对每种情况都有特定的解决方案。

因此我安装了 Boot-repair,并得到了以下诊断链接:

https://paste.ubuntu.com/p/TdbRzdmQsZ/

我还没有运行“推荐修复”选项,因为在类似的问题中不鼓励这样做,而建议先向社区寻求建议:

错误:“无法打开 \EFI\BOOT\grubx64.efi...”(双启动)

问题

我的 Ubuntu 分区是我所有工作的地方。我无法强调这种双启动正常工作的重要性。考虑到这一点,我有以下问题:

  • 我现在该如何修复这个问题?
  • 我怎样才能防止它再次发生?

答案1

错误信息表明,UEFI 目录 EFI/ubuntu 中缺少 grubx64.efi。至于为什么会这样,谁也说不准,因为安装不当几个月后就无法正常工作。

要修复此问题,只需将 grubx64.efi 复制到 EFI/ubuntu 目录。您的安装介质应该有一份副本。从安装介质中,您可以挂载 UEFI 分区,例如在 /mnt,因此复制目标将看起来像 /mnt/EFI/ubuntu/grub.x64.efi(大小写很重要,使目标与实际存在的内容相匹配)。

您的 UEFI 分区(ESP)位于 nme0n1p1 上,从正在运行的安装媒体,将其挂载到 /mnt:

sudo mount -tvfat /dev/nvme0n1p1 /mnt

现在您应该看到需要将 grubx64.efi 文件放置在 /mnt/efi/ubuntu 中。使用 ls 查看,根据您的启动修复报告,您应该已经在那里有了 shimx64.efi 和 grub.cfg。

将 grubx64.efi 复制到该位置。安装介质应该在 /EFI/boot/grubx64.efi 中有一份 grubx64.efi 的副本,因此命令如下:

sudo cp /EFI/boot/grubx64.efi /mnt/efi/ubuntu 

卸载 /mnt,移除安装介质,然后重新启动。如果 grubx64.efi 与 shimx64.efi 位于同一目录中,则 grub UEFI 启动应该可以正常工作。

答案2

盗墓者评论:我的非常旧的笔记本电脑从 23.04 升级到 23.10 时出现同样的错误,来这里吧。

Windows 仍然启动,所以这显然是 ubuntu 错误......

对我来说,问题是“grub-efi”包未安装。

从实时 USB 启动,执行 chroot 操作,包括 mount --bind 操作,安装缺失的包,撤消之前的所有(或大多数……)更改,然后它就起作用了。

有趣的是,efibootmgr 在 chroot 环境中无法工作,因此需要额外重启。

相关内容