Linux boot menu gone after UEFI update

Hello everyone.

Yesterday I updated the firmware of my motherboard (MSI B550M Pro).
After that I could not boot EndeavorOS anymore, the PC always booted into windows.

I learned that apparently the EFI entry was nuked by the UEFI update:

I followed the link there and booted the PC via a live system, and rebuild the grub.cfg

Now I have an arch entry in UEFI, but if I boot it the only option is “Start UEFI”.

Strangely, if I boot the PC via my Ventoy stick and select bootx64.efi I get the old boot menu with the four EOS entries, one windows entry and the UEFI entry.
So all relevant information is still there somewhere. Can’t figure out how to get my PC to boot normally again, though.

=

sudo efibootmgr -v

BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0003,0001,0000,0002
Boot0000* Windows Boot Manager  HD(1,GPT,636f80df-39ad-41ab-b212-654f9fbcc92c,0x800,0x32000)/\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d0000004d000100000010000000040000007fff0400
      dp: 04 01 2a 00 01 00 00 00 00 08 00 00 00 00 00 00 00 20 03 00 00 00 00 00 df 80 6f 63 ad 39 ab 41 b2 12 65 4f 9f bc c9 2c 02 02 / 04 04 46 00 5c 00 45 00 46 00 49 00 5c 00 4d 00 49 00 43 00 52 00 4f 00 53 00 4f 00 46 00 54 00 5c 00 42 00 4f 00 4f 00 54 00 5c 00 42 00 4f 00 4f 00 54 00 4d 00 47 00 46 00 57 00 2e 00 45 00 46 00 49 00 00 00 / 7f ff 04 00
    data: 57 49 4e 44 4f 57 53 00 01 00 00 00 88 00 00 00 78 00 00 00 42 00 43 00 44 00 4f 00 42 00 4a 00 45 00 43 00 54 00 3d 00 7b 00 39 00 64 00 65 00 61 00 38 00 36 00 32 00 63 00 2d 00 35 00 63 00 64 00 64 00 2d 00 34 00 65 00 37 00 30 00 2d 00 61 00 63 00 63 00 31 00 2d 00 66 00 33 00 32 00 62 00 33 00 34 00 34 00 64 00 34 00 37 00 39 00 35 00 7d 00 00 00 4d 00 01 00 00 00 10 00 00 00 04 00 00 00 7f ff 04 00
Boot0001* arch  HD(1,GPT,54739f73-f2ea-4fdd-b906-6c92c4e87b4c,0x1000,0x200000)/\EFI\ARCH\GRUBX64.EFI
      dp: 04 01 2a 00 01 00 00 00 00 10 00 00 00 00 00 00 00 00 20 00 00 00 00 00 73 9f 73 54 ea f2 dd 4f b9 06 6c 92 c4 e8 7b 4c 02 02 / 04 04 30 00 5c 00 45 00 46 00 49 00 5c 00 41 00 52 00 43 00 48 00 5c 00 47 00 52 00 55 00 42 00 58 00 36 00 34 00 2e 00 45 00 46 00 49 00 00 00 / 7f ff 04 00
Boot0002* Windows Boot Manager  HD(1,GPT,54739f73-f2ea-4fdd-b906-6c92c4e87b4c,0x1000,0x200000)/\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI0000424f
      dp: 04 01 2a 00 01 00 00 00 00 10 00 00 00 00 00 00 00 00 20 00 00 00 00 00 73 9f 73 54 ea f2 dd 4f b9 06 6c 92 c4 e8 7b 4c 02 02 / 04 04 46 00 5c 00 45 00 46 00 49 00 5c 00 4d 00 49 00 43 00 52 00 4f 00 53 00 4f 00 46 00 54 00 5c 00 42 00 4f 00 4f 00 54 00 5c 00 42 00 4f 00 4f 00 54 00 4d 00 47 00 46 00 57 00 2e 00 45 00 46 00 49 00 00 00 / 7f ff 04 00
    data: 00 00 42 4f
Boot0003* UEFI: KingstonDataTraveler 3.00000, Partition 2       PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/USB(1,0)/HD(2,MBR,0xc26aae51,0x7368000,0x10000)0000424f
      dp: 02 01 0c 00 d0 41 03 0a 00 00 00 00 / 01 01 06 00 02 01 / 01 01 06 00 00 00 / 03 05 06 00 01 00 / 04 01 2a 00 02 00 00 00 00 80 36 07 00 00 00 00 00 00 01 00 00 00 00 00 51 ae 6a c2 00 00 00 00 00 00 00 00 00 00 00 00 01 01 / 7f ff 04 00
    data: 00 00 42 4f

=

sudo parted -l

Model: ATA CT2000BX500SSD1 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name         Flags
 1      2097kB  1076MB  1074MB  fat32           EFI          boot, esp
 2      1076MB  1926GB  1925GB  ext4            endeavouros
 3      1926GB  2000GB  74,1GB  linux-swap(v1)               swap


Model: ATA WDC WD30EZRZ-00Z (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                          Flags
 1      17,4kB  134MB   134MB                Microsoft reserved partition  msftres
 2      135MB   537GB   537GB   ntfs         Basic data partition          msftdata
 3      537GB   537GB   105MB   ntfs         Basic data partition          msftdata
 4      537GB   3001GB  2463GB  ntfs         Basic data partition          msftdata


Model: Micron CT2000X9SSD9 (scsi)
Disk /dev/sdc: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2000GB  2000GB  ext4


Model: Micron CT2000X9SSD9 (scsi)
Disk /dev/sdd: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2000GB  2000GB  ext4


Model: Kingston DataTraveler 3.0 (scsi)
Disk /dev/sde: 62,0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  62,0GB  62,0GB  primary               boot
 2      62,0GB  62,0GB  33,6MB  primary  fat16        esp


Model: CT1000P3SSD8 (nvme)
Disk /dev/nvme0n1: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                          Flags
 1      1049kB  106MB   105MB   fat32        EFI system partition          boot, esp, no_automount
 2      106MB   123MB   16,8MB               Microsoft reserved partition  msftres, no_automount
 3      123MB   322GB   322GB   ntfs         Basic data partition          msftdata
 4      322GB   1000GB  677GB   ntfs         Basic data partition          msftdata
 5      1000GB  1000GB  548MB   ntfs                                       hidden, diag, no_automount

Looks like you have more than 1 Bootloader present there?

Just make sure your UEFI settings for booting are pointing at the right bootloader. Mine does that sometimes after an update, and it boots straight to Windows, as rather than looking for my systemd bootloader on my E drive, it defaults back to the Windows Bootloader on my C drive.

Edit: I’m using systemd, which is the default for EndeavourOS now. Grub is terrible at sticking around after even a Win11 monthly cumulative update, whereas systemd in my experience has been absolutely rock solid.

Oh yeah, that’s what I forgot to mention.

How do I figure out if I have grub or systemd?

I have installed EOS around October last year, so I might already have systemd?

edit:
Yeah, I can select different boot option in UEFI.

Prior to rebuilding grub.cfg I only had my Windows 10 options there. After rebuilding it I can see an arch option, but selecting it only gives me a boot menu where i can select “Go UEFI options” or something along those lines.

Welcome to the forum :enos_flag: :enos:

Not sure this will work, but you might give it a try :
Boot with the live Iso and go to the partition EOS is on from the file manager and go to /etc/default , and look for a file called grub. Open the file and set the osprober option to

GRUB_DISABLE_OS_PROBER=false

Now save the file and do this:

sudo grub-install
sudo grub-mkconfig -o /boot/grub/grub.cfg

Reboot and see if you have a proper grub menu again.

The strange thing is, that is already set as “false”, but when I run the command it states grub has not searched for other OS

Generating grub configuration file ...
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
# GRUB boot loader configuration

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
GRUB_CMDLINE_LINUX=""

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `videoinfo'
GRUB_GFXMODE=auto

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"

# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"

# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT=true

# Uncomment to disable submenus in boot menu
#GRUB_DISABLE_SUBMENU=y

# Probing for other operating systems is disabled for security reasons. Read
# documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this
# functionality install os-prober and uncomment to detect and include other
# operating systems.
#GRUB_DISABLE_OS_PROBER=false

Oh, I just realized it’s commented out. Let me try again… -.-

In the file shown, it’s commented out…remove the #

Yes I forgot it was changed some time ago and you only have to uncomment (remove the #) the option right now, sorry for that.

Now the prompt tells me the config file has been created, but when I reboot the PC I still see the only option is “UEFI options”.

Is “arch” supposed to be the option you select in UEFI? Cause right it’s the only Linux option I see.