Linux boot option missing after BIOS update on Dual Boot system

Hi everyone, I know that this topic has been addressed before on the forum but I seem to have hit a snag that is eluding me…

I have a dual-boot system with EOS and Windows. I recently updated my computers BIOS and I lost the Linux bootloader. I used the default bootloader which I believe is systemd-boot.

-I made sure that my bios was set to Secure Boot = Off after the BIOS update and that everything is UEFI.
-I confirmed that my partitions are still in place.
-I booted an EndeavourOS liveusb and mounted my / and /efi to their respective points on /mnt
-I chroot’d into the root mnt and ran bootctl install and it seems to have done its thing. I got a message with something about a file being seeded…
-I rebooted my computer and went into BIOS and the Linux Bootloader wasn’t available but when I manually called up the bootorder (F11 on my machine) I did find a Linux entry.
When I selected the Linux entry I only got the option to Load Windows or Firmware…
So back to square one.

Does anyone have any suggestions, I really don’t want to backup and reinstall.

Thank you for your time.

Cause a kernel rebuild, like adding a new kernel. Possibly by forcing reinstall of your current kernel to populate the EFI.
I had this happen on a BIOS upgrade once too :wink: caused by the update flushing the NVRAM.

Thank you for the tip. Can I do that from the live media without touching / messing with home and etc? Or should I chroot in and do something like pacman -S linux linux-headers ?

You need to chroot in, ensure your EFI partition is mounted and run reinstall-kernels. You don’t need to install anything.

1 Like

Ah, ok, well that’s a piece I’ve been missing…(now if I can remember it when I next need it myself) :slight_smile:

1 Like

Thank you.
I get a dracut. install failed with exit status 1 error preceded by : No space left. I must be doing something wrong I did the following:
-sudo mount /path/to/root /mnt
-sudo mount /path/to/efi /mnt/efi
-arch-chroot /mnt
-reinstall-kernels
error

Your EFI partition is probably full. You may need to clean out the old kernels/initrds and try again.

The efi partition is 100 megs and has 65 megs unused but I’m down for removing the old ones. I’ve never done that before…is it just same procedure of mounting and chrooting then deleteing everything under /efi?

You don’t have to chroot or anything as long as you can delete them (efibootmgr is where I’ve done it before (-B I think?))
Oh and this is deleting from the nvram (not the physical EFI), though if you want to do both, you would probably need to have the /boot/efi mounted somewhere.
It is/was my thought that the nvram may be scrambled up (the bios update) instead of the EFI

Ahh…are you sure you don’t have two? The installer would never install systemd-boot into an EFI partition that small.

Can you share the contents of /etc/fstab

<file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=5566-A36A                            /efi           vfat    fmask=0137,dmask=0027 0 2
UUID=92a7db64-631d-4583-a758-ac84ccf1159e swap           swap    defaults   0 0
UUID=34d9d600-c44a-4838-a4bc-57ef021ffdb8 /              ext4    noatime    0 1
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

**somehow i increased the size of used space on nvme0n1p1

Err I see two ESPs. Which is which?
Do this and post output ‘lsblk -o UUID,name,size’

1 Like

oohh snap I just realized that perhaps the p5 is Linux and ive been messing with the Windows one on p1…

1 Like

Yes. Exactly.

OK that seems to have let reinstall-kernels work… Lets hope I didn’t mess up my windows. Testing time, brb

No luck…Now I have 2 windows entries and efibootmgr doesn’t show anything Linux related…reinstall-kernels executed though.
EDIT: I feel like i’m doing something wrong because I separately mounted both *p1 and *p5 under /mnt/efi and chrooted in and when I cd into efi it looks like the same contents. I think I can use efibootmgr to remove the double windows entry but thats where I am at.

I dunno, I never put 2 EFIs on the same disk, though I suppose you can?

You need to run bootctl --install with the correct EFI mounted in the chroot

just tried that as well…didn’t work.

Resolved my issue. I had to change the BBS priorities (Boot Block Device Service Priorities) in my BIOS which is separate from Boot order. The along with the info both @dbarronoss and @dalto for understanding EFI, reinstall-kernels and bootctl-install helped recover the boot option.

1 Like