I have a dual boot Arch Linux and Windows.
After a Windows update, my GRUB got lost and system was booting to grub recovery
. From there, I managed to point GRUB to Arch Linux and boot it. However, it fails to boot completely with the message:
filed to listen on Load/Save RF Kill Switch Status /dev/rfkill Match
...
failed to mount /boot/efi
# Enter recovery mode
...
I tried to recover my GRUB from the recovery mode (wiki is here):
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
That brought my GRUB back and now I can choose Arch Linux or Windows as before.
However, when I choose Arch Linux, the same error message appears failed to mount /boot/efi
. Windows boots normally.
I checked what I have in /boot/efi
and in fact it is empty. My initramfs-linux.img
, initramfs-linux-fallback.img
, intel-ucode.img
and vmlinux-linux.img
files are in /boot/
.
But, in my/boot/grub/grub.cfg
, initrd
looks for intel-ucode.img
and initramfs-linux-lts.img
exactly in /boot/
and apparently finds it.
Then I found plethora of similar problems as mine on Arch Forums (e.g. this one). But I did not update Linux kernel nor did I touch anything within my Linux installation before the issue appeared. Also, as opposed to the referred post, it looks like I don't have something like vmlinuz-arch.efi
even in /boot/
.
I also spent some time browsing Arch Wiki. As far as I understand, the Wiki pages that refer to GRUB recovery usually propose the same procedure as I already tried but from an arch-iso
with arch-chroot
to my /dev/sda5
.
So I have few questions with the topmost being: How do I recover my Arch Linux boot process?
The other, more specific, is why systemd
even tries to find /boot/efi
once when GRUB phase already passed? Isn't GRUB the one which looks for boot entries? And it looks like GRUB already picked up my Arch Linux initram (at least GRUB executed correct GRUB entry, I checked it by adding echo messages in /boot/grub/grub.cfg
).
To make it even weirder, /boot/efi
fails to mount due to /dev/sda2
which is my Windows recovery environment
and not /dev/sda3
which is 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)