Arch Linux 在启动时查找 /boot/efi

Arch Linux 在启动时查找 /boot/efi

我有一个双启动 Arch Linux 和 Windows。

Windows 更新后,我的 GRUB 丢失了,系统正在启动到grub recovery.从那里,我设法将 GRUB 指向 Arch Linux 并启动它。但是,它无法完全启动并显示以下消息:

filed to listen on Load/Save RF Kill Switch Status /dev/rfkill Match
...    
failed to mount /boot/efi
# Enter recovery mode
...

我尝试从恢复模式恢复我的 GRUB(wiki 是这里):

mount /dev/sda5 /mnt # my Linux system
mount /dev/sda3 /efi # my EFI System partition
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
grub-config -o /boot/grub/grub.cfg

这让我的 GRUB 又回来了,现在我可以像以前一样选择 Arch Linux 或 Windows。

然而,当我选择Arch Linux时,出现了同样的错误消息failed to mount /boot/efi。 Windows 正常启动。

我检查了里面的内容/boot/efi,实际上它是空的。我的initramfs-linux.imginitramfs-linux-fallback.imgintel-ucode.imgvmlinux-linux.img文件位于/boot/.

但是,在我的中/boot/grub/grub.cfginitrd寻找intel-ucode.imginitramfs-linux-lts.img准确地/boot/找到它。

然后我在 Arch 论坛上发现了很多和我类似的问题(例如这个)。但在问题出现之前,我没有更新 Linux 内核,也没有接触 Linux 安装中的任何内容。另外,与提到的帖子相反,看起来我vmlinuz-arch.efi甚至没有类似的东西/boot/

我还花了一些时间浏览 Arch Wiki。据我了解,涉及 GRUB 恢复的 Wiki 页面通常提出与我已经尝试过的相同的过程,但从arch-isowitharch-chroot到我的/dev/sda5.

所以我有几个问题,最重要的是:如何恢复我的 Arch Linux 启动过程?

另一个更具体一点的是当 GRUB 阶段已经过去时,为什么systemd还要尝试查找一次/boot/efi? GRUB 不是寻找启动项的吗?看起来 GRUB 已经获取了我的 Arch Linux initram(至少 GRUB 执行了正确的 GRUB 条目,我通过在 中添加回显消息来检查它/boot/grub/grub.cfg)。

更奇怪的是,/boot/efi由于/dev/sda2Windows recovery environment不是 /dev/sda3这是EFI System

$systemctl status boot-efi.mount
boot-efi.mount --- /boot/efi
Loaded: loaded (/etc/fstab; generated)
Active: Failed (Result: exit-code) ...
Where: /boot/efi
What: /dev/sda2
Docs: man:fstab(5)
      man:systemd-fstab-generator(8)

答案1

看起来 Windows Update 对您的 EFI 分区做了一些非常顽皮的事情。

我在你的问题中看到的主要问题是 systemd 找不到 /boot/efi

这是使用配置文件安装的/etc/fstab

无论出于何种原因,/etc/fstab 中的 /boot/efi 条目正在寻找不再存在的文件系统。这与重新格式化 EFI 分区一致,并解释了为什么需要重新安装 grub。

您可以使用该命令blkid(以 root 身份运行)查找 EFI 分区的 UUID。然后您可以将其编辑到 /etc/fstab 中。这应该可以解决你的问题。


EFI 已安装,以便实用程序可以在运行时读取和更新您的 EFI。

相关内容