Arch-Linux

Arch Linux 在已經啟動時尋找 /boot/efi

  • November 9, 2019

我有雙啟動 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.img,intel-ucode.imgvmlinux-linux.img文件在/boot/.

但是,在我的/boot/grub/grub.cfg,中initrd尋找intel-ucode.imginitramfs-linux-lts.img準確/boot/地找到它。

然後我在 Arch 論壇上發現了大量與我類似的問題(例如這個)。但在問題出現之前,我沒有更新 Linux 核心,也沒有觸及我的 Linux 安裝中的任何內容。此外,與提到的文章相反,看起來我vmlinuz-arch.efi什至在/boot/.

我還花了一些時間瀏覽 Arch Wiki。據我了解,涉及 GRUB 恢復的 Wiki 頁面通常會提出與我已經嘗試過的過程相同的過程,但從arch-isowitharch-chroot到 my /dev/sda5.

所以我對最重要的問題有幾個問題:如何恢復我的 Arch Linux 啟動過程?

另一個,更具體地說,**為什麼在 GRUB 階段已經過去時systemd甚至試圖找到/boot/efi**一次?GRUB 不是尋找引導條目的那個嗎?看起來 GRUB 已經拿起了我的 Arch Linux initram(至少 GRUB 執行了正確的 GRUB 條目,我通過在 中添加回顯消息來檢查它/boot/grub/grub.cfg)。

更奇怪的是,/boot/efi由於/dev/sda2哪個是我的Windows 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)

這看起來像 Windows 更新對您的 EFI 分區做了一些非常頑皮的事情。

我在您的問題中看到的主要問題是 systemd 找不到 /boot/efi

這是使用配置文件安裝的/etc/fstab

無論出於何種原因,/etc/fstab 中的 /boot/efi 條目正在尋找不再存在的文件系統。這與重新格式化 EFI 分區是一致的,並解釋了為什麼需要重新安裝 grub。

您可以使用該命令blkid(以 root 身份執行)來查找 EFI 分區的 UUID。然後您可以將其編輯到 /etc/fstab 中。那應該可以解決您的問題。


EFI 已安裝,以便實用程序可以在執行時讀取和更新您的 EFI。

引用自:https://unix.stackexchange.com/questions/551190