Hi, I am dual-booting Windows and EndeavourOS and everything has been working fine thus far. However, when I booted up my computer this morning, the only option available in systemd-boot is Windows, as can be seen below. I have no idea why this happened, perhaps Windows updated and ruined the boot partition or something.
When looking at the partitons in Windows, I can see that the partitions still seem to be intact (Disk 1, 512 MB boot partiton, 2 GB Swap, 100 GB root).
Does anyone know a good way to solve this? I feel like this should be pretty easy to solve but I am not well versed in bootloaders and how they work. I don’t know if I can access and look into the bootloader files from Windows either, so right now I am thinking of booting Linux on a usb to try and fix it.
Does anyone have any suggestions? I feel like there is an automated way of detecting bootable partitions and updating the systemd-boot config that I am missing
That is typcially caused by an update not finishing for some reason. To fix it, you need to boot off our live USB, arch-chroot in by following the instructions here:
Hi, I’ve done chroot with the partitions mounted so it acts like I’m root under /mnt with both my data and efi mounted there. However, the reinstall-kernalscommand does not seem to exist.
I noticed this thread and ran the command you supplied: pacman -Q | grep -E "(dracut|mkinitcpio)" and got the output:
Yeah I seem to be able to remount the EFI partition and then it is read/write. I can create files and remove files, but after running reinstall-kernels and getting that previous error it seems the partition switches to a read-only partition (with more messages in dsmeg output):
Something does seem wrong with the “6.4.1-arch1-1” thing. I think it supposed to be a folder, but I cannot cd into it and when running ls -ltrI get this weird output and the partition changes to read-only:
[root@EndeavourOS 3690eb269c5148009b215f3193003ce6]# ls -ltr
ls: cannot access '6.4.1-arch1-1': Input/output error
total 0
d????????? ? ? ? ? ? 6.4.1-arch1-1
[root@EndeavourOS 3690eb269c5148009b215f3193003ce6]# cd ..
[root@EndeavourOS efi]# touch wow
touch: cannot touch 'wow': Read-only file system
I managed to fix it! I copied the files I could access from the EFI partition as a backup and reformatted the partition as FAT32 and readded the flags “boot” and “esp”. I then changed the UUID in /etc/fstab corresponding to the /efi partition to the newly assigned UUID.
I chrooted to /mnt after mounting both partitions as before and ran bootctl --path=/efi install" to reinstall systemd-boot. I finally ran reinstall-kernels and it added back files to the efi partition and a loader configuration. I tried restarting and I got back into my EndeavourOS installation!
However, there was no boot menu. But I fixed this by copying over configuration from my backup (adding timeout etc). I also copied over the old directory in /etc/ETC/Microsoft since Windows 10 had disappeared from the boot partition this time, and now both are there.
For future reference, my current loader.conf file is:
default 3690eb269c5148009b215f3193003ce6*
timeout 5
console-mode auto
reboot-for-bitlocker 1