错误:无法打开 \EFI\BOOT\grubx64.efi-未找到

错误:无法打开 \EFI\BOOT\grubx64.efi-未找到

我有一台 Sony Vaio 和双启动 Windows 10 和 Ubuntu 16.04。突然间,主 Windows 分区停止工作。它会无限加载。我尝试使用启动修复来修复它。我不知道这是否能修复它。无论如何,它没有用。所以我正在使用 Ubuntu。然后,我重新启动了计算机,现在突然之间,在我甚至还没有选择要启动的操作系统之前,我就收到了这个错误。这让我想起了 Vaio Care。如果我选​​择开始故障排除,我就会收到同样的错误。我现在几乎没有用过我的电脑,也不知道它为什么突然停止工作。请帮助我至少能够再次使用我的一个操作系统。我不想丢失任何一个分区上的数据。更新:当我使用启动修复时,它告诉我关闭 BIOS 设置中的安全启动。现在,我发现当安全启动被禁用时,Ubuntu 分区仍然有效,但当它被启用时则无效。当安全启动被启用时,我收到上述错误,并且只能访问 BIOS 设置。如果我尝试在 Ubuntu 中访问我的 Windows 内存,我会收到此错误:

"Unable to Access 932 GB Volume" Error mounting /dev/sda5 at /media/millar/4484E74A84E73D54: Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000" "/dev/sda5" "/media/millar/4484E74A84E73D54"' exited with non-zero exit status 14: The disk contains an unclean file system (0, 1).
Metadata kept in Windows cache, refused to mount.
Failed to mount '/dev/sda5': Operation not permitted
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the 'ro' mount option.

fstab 文件的内容:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda10 during installation
UUID=3c429404-bec5-4f99-8d13-6f01585040cb /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda3 during installation
#UUID=12E6-1CD7  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/sda9 during installation
UUID=7e7a010e-81fc-4de0-93c9-14cd77f4260f none            swap    sw              0       0
UUID=12E6-1CD7  /boot/efi   vfat    defaults    0   1

答案1

您提到的另一个问题涉及不同的磁盘,因此我将忽略它来回答这个问题。

您有一个 gpt 分区的磁盘,没有 MBR(因此没有旧式引导,很好),有 10 个分区,其中两个(sda1 和 sda3,不好)似乎是(不完整的)EFI 分区。我看起来 sda3 是最完整的,也是最常用的,所以您可以将 sda1 视为备份。

要修复 sda3,请将 /EFI/ubuntu/grubx64.efi 复制到 /EFI/Boot/grubx64.efi。
修复 fstab 后(见下文),sda3 将挂载在 /boot/efi。
如果愿意,您也可以将 sda3 挂载到实时媒体上的任何位置,例如 /mnt。挂载后(下面假设为 /boot/efi),使用 cp 命令复制文件。

cp /boot/efi/EFI/ubuntu/grubx64.efi  /boot/efi/EFI/Boot/grubx64.efi 

cp 然后检查 /boot/efi/EFI/Boot/bootx64.efi 的大小是否与 /boot/efi/EFI/ubuntu/shimx64.efi 相同 - 如果不同,请将 /boot/efi/EFI/ubuntu/shimx64.efi 复制到 /boot/efi/EFI/Boot/bootx64.efi(注意名称更改)。这可能会修复有关缺少 /EFI/Boot/grubx64.efi 的错误消息。/EFI/Boot 文件是后备引导加载程序,此设置将在启用或禁用安全启动的情况下启动。

修复 /etc/fstab 文件 - 取消注释(删除 EFI 分区的 /boot/efi 上的 #)。

#UUID=12E6-1CD7  /boot/efi       vfat    umask=0077      0       1  

应该

UUID=12E6-1CD7  /boot/efi       vfat    umask=0077      0       1  

Windows 似乎处于休眠状态而不是关机状态。此外,文件系统被标记为“脏”(来自您的另一个问题),因此请进入 Windows 电源选项并确保“关机”未设置为“休眠”。您应该能够直接从 EFI 菜单启动 Windows(开机时使用某个功能键来选择启动设备/操作系统)——只需选择 Windows。在 sda5(可能是 Windows C:,检查大小,或者只对所有 Windows“磁盘”执行 chkdsk 操作)。

清理 Windows 磁盘并正确关闭 Windows 后,运行

 sudo update-grub  

来自 Ubuntu,这应该会更新 grub 菜单以包含 Windows。有些机器可能无法在启用安全启动的情况下从 Grub 启动 Windows,因此如果您不想使用 EFI 菜单启动 Windows,请禁用安全启动。

请参阅 oldfred 的链接以了解索尼的调整。

在某些时候,您可能会将 sda3 备份到 sda1。最好保留一份 EFI 启动文件的副本,以防工作集出现问题。

稍后,您可以通过清除软件包来清理 /boot 中的旧内核。

相关内容