Thanks! I’m glad to be here, and usually really happy with my EndeavorOS, but this one’s a tough one!
Here’s a picture of the outputs. And yes, this is the only OS on the laptop.
Awesome, - so it’s detecting your drives consistently, which is good. The luks-encrypted drive is the bit that’s clearly failing over.
Can you boot from the live USB install of EndeavourOS and run
sudo cryptsetup open /dev/sdXy luks_root
where the sdXy bit is your actual partition, sorry not wearing my glasses, but I think that’s nvme0n1p2
Once you’ve done that, mount the partition
sudo mount /dev/mapper/luks_root /mnt
then mount the boot bit? (Sorry doing this from memory)
sudo mount /dev/sdX1 /mnt/boot or /boot/EFI
Assuming that works, it’s going to have to be an arch chroot and then repair/reinstall boot and update/fix packages. There are hopefully more technical people here who can help add to this, but this seems like a good place to start. Apologies coming off a 13 hour day but wanted to try this first, good luck!
Thanks. I did that, but direct “EndeavourOS” EFI entry still hangs at cryptroot. Only Linux Boot Manager -> GRUB -> EndeavourOS boots and WiFi/audio still missing after reinstall attempt, I should mention that I already rebuilt initramfs multiple times before this (initially via mkinitcpio, because I didn’t realize EOS was using dracut here).
The rebuild process appeared to complete partially, but WiFi/audio modules still remained missing afterwards..So this dracut/kernel-install issue seems persistent.
During rebuild I noticed
dracut --regenerate-all --force fails with:
Can't write to /boot/<machine-id>/<kernel-version>
Current /boot contents look like this:
normal kernel images exist:
vmlinuz-linux
vmlinuz-linux-lts
initramfs-linux.img
initramfs-linux-lts.img
but there is also a strange directory:
/boot/5ed63287e1d646859a084a400b60a834
dracut tries to generate images inside that directory and fails.
So now I’m wondering whether dracut config/kernel-install is broken, the boot layout is inconsistent or if EOS should even still use dracut here..
Sharing what worked in case it helps someone with a similar mess.
My setup got into a state where the running kernel had no module tree on disk, so WiFi, audio, and most drivers were “missing”, but they weren’t really; I was just booting a stale kernel image whose modules had been deleted on the next update. The scary symptom list collapsed into one root problem once I saw that.
The reason it happened: I had mkinitcpio installed alongside dracut, kernel-install-for-dracut was missing, and both GRUB and systemd-boot were on the ESP with stale NVRAM entries. Kernel upgrades were building /boot/initramfs-linux.img via mkinitcpio’s hook, but nothing was writing a proper dracut initramfs or updated loader entry to the ESP. So the bootloader kept pointing at an old kernel image.
What I did, from an EOS live USB chroot with the ESP mounted at /efi:
Fixed /etc/fstab to mount the ESP at /efi (not /boot), added nofail to the options.
Removed GRUB and its leftover directories from the ESP.
pacman -S kernel-install-for-dracut and pacman -Rns mkinitcpio.
Deleted the stale loader entry and ESP kernel directory for the phantom kernel.
pacman -S linux linux-lts linux-firmware sof-firmware intel-ucode — with the dracut glue in place, this regenerated proper initramfs and BLS entries onto the ESP.
Outside the chroot: bootctl --esp-path=/mnt/efi install, then efibootmgr -B on the stale GRUB/duplicate entries. (Heads up: bootctl install may reuse a freed slot, so watch you don’t delete the new one. If you do, just rerun bootctl install.)
The thing I almost missed, which would have set me up to land here again on the next update: efi.mount was masked (my bad from an earlier recovery attempt). With the ESP not auto-mounting, future kernel updates would write modules to root but couldn’t write the kernel image to the ESP. systemctl unmask efi.mount && systemctl daemon-reload fixed that.
Big thanks to everyone on the thread. The early pointer at the dracut/mkinitcpio conflict was the key. I wouldn’t have found it on my own.