OS: EndeavourOS x86_64
Kernel: Linux 7.2.2-arch1-1
Sorry if any information is missing or unclear, I am new to linux and writing posts in general. I’m not sure which logs would be relevant to debug this problem, nor what else to do to resolve this. Any help would be very appreciated~! ![]()
After updating my system with yay -Syu (specifically when I have a kernel update, not every time I update with yay) and then reboot my machine, I get booted to emergency mode with the Error Failed to Mount /efi When I check the running kernel version uname -r against the installed module /usr/lib/modules it is always mismatched. The running kernel version is the previous version. so uname will show 7.2.1 when I have 7.2.2 installed.
My temporary workaround to get back into my desktop is to manually generate initramfs specifically matching the latest installed module. After checking the newest version in /usr/lib/modules I will run dracut --force /boot/initramfs-linux.img <NEWEST_VERSION> and then regenerate GRUB with grub-mkconfig -o /boot/grub/grub.cfg. Then systemctl reboot to get back into my system. THIS IS ONLY A TEMPORARY FIX. It works until I update kernel again.
As I tried to find a more permanent solution I first checked my fstab file(failing to mount usually means that it’s not listed, right?) However it is correctly labeled in the fstab file. (Mount point is labeled /efi, the spacing matches all other drives, the UUID is accurate).
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=8602-4A5F /efi vfat fmask=0137,dmask=0027 0 0
UUID=ce054187-2773-4e71-8cd4-397f0475c5f3 / ext4 noatime 0 1
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
# Seagate Green Data
# UUID=54B8BCCEB8BCAFBA /mnt/extraSpc ntfs noatime 0 2
# 1TB Drive
UUID=ad88eaeb-d3b0-4fdd-9e84-98e5680c3772 /mnt/mysterio ext4 noatime 0 2
I checked the space on /efi and noticed it was at 100% capacity due to leftover kernel builds stored inside a machine-id folder: /efi/061c772df87947eaa7b630fcc5224297/. My theory is that it failed to properly update because the partition was at max capacity with 1.5GB of old data. So I removed the directory with the stale kernel/initramfs images from /efi to clear out the space for modern dracut builds, thus freeing up 1.6GB of storage. Finally as a last precaution I removed old initramfs-linux*.img files directly under /efi that were timestamped from a month ago just so GRUB wouldn’t default to them. (Mind you I kept anything that was timestamped yesterday, ie the day I was running updates/rebuilding)
After this I went to rebuild kernels and update the bootloader config once again using reinstall-kernels and grub-mkconfig -o /boot/grub/grub.cfg to place fresh vmlinuz-linux and initramfs-linux.img files back into /boot.
All this to say it didn’t work, it failed to mount /efi again and I had to run the same temporary fix (Checked mismatch using uname -r and ls /usr/lib/modules. Ran dracut --force /boot/initramfs-linux.img <NEWEST_VERSION>. Regenerated GRUB: grub-mkconfig -o /boot/grub/grub.cfg. Rebooted.) to get back into my system once again.
While the manual dracut command is a great band-aid fix, it doesn’t solve the problem at the root as it still fails to cleanly mount /efi with the newly installed modules.
I’ve read a few threads on here to try and answer/add as much relevant info:
- The most common cause is dual-booting Windows - I do not have dual-booting with Windows setup
- What is the output of
pacman -Q | grep -E "(dracut|mkinitcpio)"
dracut112_eos-1
kernel-install-for-dracut 1.14.2-1
- What is the output of
findmnt --real
TARGET SOURCE FSTYPE OPTIONS
/ /dev/nvme0n1p2 ext4 rw,noatime
├─/mnt/mysterio
│ /dev/sda1 ext4 rw,noatime
└─/efi /dev/nvme0n1p1 vfat rw,relatime,fmask=0137,dmask=0027,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=r
- What is the output of
bootctl status
Failed to read "/efi/EFI/systemd": Permission denied
Failed to open '/efi/loader/loader.conf': Permission denied
System:
Firmware: n/a (n/a)
Firmware Arch: x64
Secure Boot: disabled
TPM2 Support: no
Measured UKI: no
Measured OS: no
Boot into FW: supported
Platform Lang: en_US.UTF-8
Current Boot Loader:
Product: GRUB 2.14
Features: ✗ Boot counting
✗ Menu timeout control
✗ One-shot menu timeout control
✗ Default entry control
✗ One-shot entry control
✗ Support for XBOOTLDR partition
✗ Support for passing random seed to OS
✗ Load drop-in drivers
✗ Support Type #1 sort-key field
✗ Support@saved@saved pseudo-entry
✗ Support Type #1 devicetree field
✗ Enroll SecureBoot keys
✗ Retain SHIM protocols
✗ Menu can be disabled
✗ Multi-Profile UKIs are supported
✗ Loader reports network boot URL
✗ Support Type #1 uki field
✗ Support Type #1 uki-url field
✗ Loader reports active TPM2 PCR banks
✗ Loader reports firmware keyboard layout
✗ Loader measures SMBIOS information
Partition: /dev/disk/by-partuuid/30e85aa0-114a-4e53-b27b-96b02398d661
Random Seed:
System Token: set
Exists: Can't access /efi/loader/random-seed (Permission denied)
Available Boot Loaders on ESP:
ESP: /efi (/dev/disk/by-partuuid/30e85aa0-114a-4e53-b27b-96b02398d661)
File: (can't access /efi: Permission denied)
Boot Loaders Listed in EFI Variables:
Title: EndeavourOS
ID: 0x0000
Status: active, boot-order
Partition: /dev/disk/by-partuuid/30e85aa0-114a-4e53-b27b-96b02398d661
File: └─/efi//EFI/EndeavourOS/grubx64.efi
Title: UEFI OS
ID: 0x0001
Status: active, boot-order
Partition: /dev/disk/by-partuuid/30e85aa0-114a-4e53-b27b-96b02398d661
File: └─/efi//EFI/BOOT/BOOTX64.EFI
Hope this explains everything clearly and apologies if I missed anything ![]()
EDIT: Fixed formatting (again
)