Unable to update kernel without EFI mount failing

Every time i update the Linux kernel using the EOS auto-updater (which as I understand is just a wrapper for pacman -Syu) and reboot, the OS goes into Emergency mode because the EFI partition, which I have at /dev/nvme0n1p1, fails to mount (It gives an error message saying “unknown file system: vfat”)

I “fix” the issue by downgrading the kernel – running uname -a in emergency mode gives:
Linux relma2-pc 6.7.3-arch1-1 #1 SMP PREEMPT_DYNAMIC Thu, 01 Feb 2024 10:30:35 +0000 x86_64 GNU/Linux

But running pacman -Qi linux gives a kernel version more recent than 6.7.3-arch1-1. So, I downgrade the kernel using my pacman cache with pacman -U file:///var/cache/pacman/pkg/<LAST_WORKING_KERNEL_VERSION> … and then I can boot without issue.

But the problem is I realize I can no longer keep my kernel up-to-date, so this “”“fix”“” is probably a bad idea. How do I fix my system so the auto-updater can upgrade the kernel as normal again?

Install linux-lts and linux-lts-headers. That kernel is 6.6 and still getting updates.

How old is your installation? This is relevant because the help/solutions change if your system uses dracut or mkinitcpio for initramfs.
Also, do you use grub or systemd-boot as bootloader?

According to the solutions that other users with your error message applied, something with your kernel/kernel-modules installation or initramfs is wrong. Is your linux package the same version as your linux-headers package? Are the files in your initramfs partition generated successfully and completely?

  1. How do I check if i use dracut or mkinitcpio? I seem to have both installed, as indicated when i run the commands with --version
  2. How do I check if I use grub or systemd?
  3. I see pacman -Qi linux is 6.7.3.arch1-1, but pacman -Qi linux-headers is 6.7.4.arch1-1 – an inconsistency! What do I do about this?
  4. “Are the files in your initramfs partition generated successfully and completely?” I have no idea what this means :cry:

If you mean both commands run with --version print valid version numbers, that is your issue. They both generate initramfs files and that clashes.
@dalto that is something that needs your assistance.

that is most likely a result of your partial downgrade. When you have solved the initramfs, just do a full system upgrade. If it still differs, refresh your mirror list and do a full update again.

What is the output of pacman -Qs grub ?

Can you share the output of pacman -Q | grep -E "dracut|mkinitcpio|grub"

pacman -Qs grub outputs nothing

pacman -Q | grep -E "dracut|mkinitcpio|grub"
---
dracut 059-5
mkinitcpio 37.3-1
mkinitcpio-busybox 1.36.1-1

Yeah, that is totally broken.

It looks like you installed mkinitcpio and removed some packages critical to your system in the process.

Instead kernel-install-for-dracut and remove mkinitcpio

Should I remove both mkinitcpio and the busybox version or just mkinitcpio?

Also, kernel-install-for-dracut was not found. What package do I have to install for this?

Yes.

The name of the package is kernel-install-for-dracut. Are you not running endeavouros?

Oh I thought it was a command. Should I install this package?

Yes.

Then update your kernel again.

Allright, fingers crossed…

1 Like

Yes! It worked! Thank you!

TL;DR - I had this issue because I had both dracut and mkinitcpio installed, which generated conflicting initramfs files.
The solution was to remove mkinitcpio and mkinitcpio-busybox with pacman -R, then installing sudo pacman -S kernel-install-for-dracut , then updating the kernel with sudo pacman -S linux linux-headers

No. The actual issue was you removed kernel-install-for-dracut

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.