2

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)

1 Answer 1

1

This looks like Windows Update did something very naughty to your EFI partition.

The main problem I see in your question is that systemd can't find /boot/efi

This is mounted using the config file /etc/fstab.

For whatever reason, The /boot/efi entry in /etc/fstab is looking for a file system that no longer exists. This would be consistent with having reformatted the EFI partition and explain why you needed to reinstall grub.

You can use the command blkid (run as root) to find the UUID for your EFI partition. You can then edit that into /etc/fstab. That should fix your problem.


EFI is mounted so that utilities have access to read and update your EFI at runtime.

1
  • Thanks! I had my paths in /etc/fstab hardcoded instead of corresponding UUIDs. I found the UUIDs using blkid and manually replaced them for the hardcoded paths in /etc/fstab (<file system> column).
    – yujaiyu
    Nov 9, 2019 at 17:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .