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)