Reinstalling GRUB after BIOS update kills it

Hi, I’ve been trying to solve this for the past hour, but threads I find on this on forums, etc seem to be either about slightly different scenarios, or mention things I’m not experienced with at all, so I would appreciate an ELI5-level explanation on this.

I dualboot EndeavourOS with Windows 11 on an UEFI system. Today I installed a BIOS update, and it apparently erased the GRUB, because now I’m only getting Windows Boot Manager in boot menu on startup.

I guess what I need to do is use an EndeavourOS live USB to chroot into my system and reinstall GRUB. But I’ve been getting different error messages at different stages of attempting to do this step-to-step. Can anyone list all the steps needed based on my drives and partitions?

Here is the output of lsblk -f :


[liveuser@eos-2024.06.25 ~]$ lsblk -f
NAME FSTYPE FSVER LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
loop0
     squash 4.0                                                          0   100% /run/archiso/airootfs
sda                                                                               
├─sda1
│ │  exfat  1.0   Ventoy      4E21-0000                                           
│ └─ventoy
│    iso966 Jolie EOS_202406  2024-06-25-11-30-26-00                     0   100% /run/archiso/bootmnt
└─sda2
     vfat   FAT16 VTOYEFI     223C-F3F8                                           
nvme1n1
│                                                                                 
├─nvme1n1p1
│    vfat   FAT32             6237-5582                                           
├─nvme1n1p2
│    ext4   1.0   endeavouros a84707c1-01de-4a58-944f-9e4808826c2d                
└─nvme1n1p3
     swap   1     swap        36f0c337-2635-4717-82b2-67a7c4f6219a                
nvme0n1
│                                                                                 
├─nvme0n1p1
│                                                                                 
├─nvme0n1p2
│    ntfs                     9E78E02678DFFACB                                    
└─nvme0n1p3
     ntfs                     B6D23788D2374C3D

And here is the structure of the drive where EndeavourOS is installed:

I would highly appreciate a very basic guide to chrooting into this kind of system, mounting whatever needs to be mounted, and reinstalling the GRUB. Such a guide would also help in future issues - I would just reuse it instead of opening a new thread if this happens again.

It shouldn’t have actually touched the files on disk, but it certainly may have cleared the bootloaders list (easily fixed) by recreating them.

Thank you for the reply. How do I restore/regenerate the bootloader list?

While Arch-chroot’d, run ‘bootctl install’.
That should probably be all, but you might check ‘uefibootmgr’ to verify the boot list now exists and contains ‘Linux Boot Manager’.
Please note, there may be more, I haven’t ran grub in some years now, but use only UEFI boot.

1 Like

I ran the following:

[liveuser@eos-2024.06.25 ~]$ sudo mount /dev/nvme1n1p2 /mnt
[liveuser@eos-2024.06.25 ~]$ sudo cat /mnt/etc/fstab
# /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=6237-5582                            /boot/efi      vfat    fmask=0137,dmask=0027 0 2
UUID=a84707c1-01de-4a58-944f-9e4808826c2d /              ext4    noatime    0 1
UUID=36f0c337-2635-4717-82b2-67a7c4f6219a swap           swap    defaults   0 0
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0
# UUID=508AF7F28AF7D308 /home/svalbardsleeperdistrict/Apps/ ntfs auto nofail
[liveuser@eos-2024.06.25 ~]$ sudo mount /dev/nvme1n1p1 /mnt/boot/efi
[liveuser@eos-2024.06.25 ~]$ sudo arch-chroot /mnt
[root@EndeavourOS /]# bootctl install
Created "/boot/efi/EFI/systemd".
Created "/boot/efi/loader".
Created "/boot/efi/loader/entries".
Created "/boot/efi/EFI/Linux".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/efi/EFI/systemd/systemd-bootx64.efi".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/efi/EFI/BOOT/BOOTX64.EFI".
Random seed file /boot/efi/loader/random-seed successfully written (32 bytes).
Successfully initialized system token in EFI variable with 32 bytes.
Created EFI boot entry "Linux Boot Manager".
[root@EndeavourOS /]# efibootmgr
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0002,0000,0001
Boot0000* Windows Boot Manager  HD(1,GPT,038aa2ef-2d62-4a2c-8a34-c345af3054a0,0x1000,0x1f4000)/\EFI\Microsoft\Boot\bootmgfw.efi57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d00000061000100000010000000040000007fff0400
Boot0001* UEFI: KingstonDataTraveler 3.0PMAP, Partition 2       PciRoot(0x0)/Pci(0x2,0x1)/Pci(0x0,0x0)/Pci(0xc,0x0)/Pci(0x0,0x0)/USB(3,0)/HD(2,MBR,0x1d429328,0x7370000,0x10000)0000424f
Boot0002* Linux Boot Manager    HD(1,GPT,038aa2ef-2d62-4a2c-8a34-c345af3054a0,0x1000,0x1f4000)/\EFI\systemd\systemd-bootx64.efi

And after reboot, now I have Linux Boot Manager in BIOS and F12 boot menu, but if I select it, then it just goes to another menu that only has Windows in it.

Alright, I’ve fixed it. For anyone who may come across the same issue, I ran the above series of commands again, but instead of bootctl install, ran grub-install , and that added a new ‘endeavouros’ entry to the boot menu, using which I can log into EOS.

Makes sense, bootctl install is the command for installing systemd as a bootloader rather than grub :slight_smile:

Haha, no wonder that’s what I remember then, no grub in years.

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