启动错误:无法打开 \EFI\ubuntu\grubx64.efi

启动错误:无法打开 \EFI\ubuntu\grubx64.efi

我有一台运行 Ubuntu 22.04 的联想 Thinkpad X220,最近它无法成功启动。(FWIW,这是我送给儿子的旧笔记本电脑,昨天他把它摔了。所以这可能是问题的一部分。)启动时,它给了我以下错误消息:

无法打开 \EFI\ubuntu\grubx64.efi - 设备错误
无法加载映像 \EFI\ubuntu\grubx64.efi:设备错误
start_image() 返回设备错误

我能够成功地从启动修复 USB 启动,并在以下 pastebin 中得到输出:https://paste.ubuntu.com/p/qpQnmZsz8k/

唯一看起来像是明显危险信号的东西(在我这个非专家的眼里)是“/dev/sda 的 MBR 中没有安装引导加载程序”。我尝试使用引导修复来修复文件系统,但最终还是得到了相同的结果。

当我运行时sudo fdisk -l,sda(我的 Linux 文件系统)的输出包括“备份 GPT 表已损坏,但主表似乎正常,因此将使用它。”

我尝试按照说明重新安装 GRUB 来解决缺少引导加载程序的问题这里但是当我进入关键步骤(运行grub-install)时,我收到了一堆错误消息:

错误:无法读取“/dev/sda”:输入/输出错误。

它只是不停地重复出现该错误消息。几分钟后,我得到了以下信息:

grub-install:警告:文件系统“fat”不支持嵌入。grub
-install:警告:无法嵌入。GRUB 只能通过使用阻止列表在此设置中安装。但是,阻止列表不可靠,不鼓励使用。grub
-install:错误:不会继续使用阻止列表。

我现在已经力不从心了。有什么想法可以继续吗?

更新:
按照 ubfan1 的建议,我以 UEFI 而不是 Legacy BIOS 启动,然后boot-repair再次运行。它似乎没有起到什么作用,但我确实得到了一个粘贴箱显示了一些奇怪的东西(从第 186 行开始的未知的引导加载程序;从第 221 行开始的一堆 I/O 错误)。

我运行了dosfsck(从启动修复实时 USB 上的终端),它在一堆看起来很重要的文件(grubx64.efi、shinx64.efi、mmx64.efi)中发现了无法读取的簇,并声称已经修复了 308 个文件和 2808/130811 个簇。

现在,当我启动(没有实时 USB)时,不会出现错误消息,而只会看到黑屏。我将boot-repair再次尝试查看是否有任何变化。

更新2:

我开始想我应该重新格式化硬盘并重新安装 Ubuntu。在此之前,最好能够备份 中的一些文件/dev/sda2。但是我不知道如何安装它——当我在 中打开它时Disks,没有小“播放”按钮可以像安装硬盘的第一个分区(仅包含 EFI 和 BOOT)那样安装。是否可以安装此分区并挽救其中的数据?

答案1

您的 MBR 中“缺少”旧式引导加载程序,这没有问题,您的安装处于 UEFI 模式。

在您的 UEFI 设置(以前称为 BIOS)中,将 UEFI 启动设置为优先于传统启动。您的机器是 UEFI,但启动修复在传统启动中启动(因为传统启动和 UEFI 启动都存在)。然后重新进行启动修复,看看是否提供修复。我看到的唯一可能导致问题的是 EFI/Boot/grubx64.efi 不存在。新的 shim 将使用 EFI/ubuntu/grubx64.efi 中的 grubx64.efi,但旧的 shim 不会,它们只从自己的目录中读取。

尝试在 EFI 分区上使用 dosfsck。它可能会发现任何明显的问题。

相关内容