GRUB menu not showing after BIOS update

if you have a problem with grub installation run these 4 commands ( will fix everything )
yay -S chaotic-aur/grub-silent
yay -S chaotic-aur/grub-theme-garuda-dr460nized
sudo sed -i 's/=hidden/=menu/g' /boot/grub/grub.cfg
sudo chattr +i /boot/grub/grub.cfg

Almost. A verification of proper UUIDs in fstab would add more confidence :wink:

But I think you can do that.
When you apply system configuration which includes drives/partitions, always verify the current names with lsblk -f, before running any commands, because the names may change after each boot or remount .

Before explaining what needs to be explained, let's make the system normally bootable.

  1. Boot to your garuda system on external, using one of these methods:
  • If you are very lucky:. Start your PC and launch UEFI/BIOS Quick Boot menu (read your H/W user manual to find the required shortcut key, i.e. F2, F8, F12 etc.).
    Look for an entry of the external HDD with no special label, which is the Default boot for the drive (it should point to $ESP/boot/bootx64.efi)
  • If you are lucky: Plug Garuda installer USB to a USB post, start your PC and choose the external USB installer entry. Using installer's grub menu "Detect EFI bootloaders", select the one that points to your external HDD default entry (not any Garuda/GRUB option).
  • If you are not lucky: Boot to Garuda installer and use the option "Boot to UEFI Shell" (I think there is one such option. If not, do it another way). Find the (same) $ESP/boot/bootx64.efi file as in previous options on your external HDD and boot. (guessing fs1:BOOT\BOOTX64.EFI )
  1. Verify proper setup for bootloader:
  • Check lsblk -f, cat /etc/fstab and efibootmgr -v.
  • Delete/remove any "Garuda*" and "grub" entries from UEFI with efibootmgr
  • Delete/remove any "Garuda*" and "grub" folders from both $ESPs (internal/external)
  • Confirm your $ESP /boot/efi mount in your /etc/fstab points to the external drive $ESP. If it's not, unmount internal $ESP, mount external $ESP and update fstab with the new UUID.
  1. Install grub:
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=External --removable
  1. Update grub configuration
sudo grub-mkconfig -o /boot/grub/grub.cfg

(or sudo update-grub alias IIRC in Garuda systems)

  1. Confirm there is an UEFI entry labeled "External" and marked as 1st in boot order.
efibootmgr -v

If the order is not correct, fix it (man efibootmgr)

  1. Reboot to check.

Report any failure or strange behavior, posting your terminal input/output.

If things are not that easy, you may need to chroot to your installation to do the above, or alter the commands to suite mounted partitions. In such case, you have to post info as described (partitions, folder structure, etc.)

Good luck!

6 Likes

Thank you for such an in depth post!

I guess I'm lucky!

Output for lsblk -f:

sda                                                                               
├─sda1
│    vfat   FAT32             D067-98F8                             328.7M     /boot/efi

Output for cat /etc/fstab:

UUID=D067-98F8                            /boot/efi      vfat    umask=0077 0 2

So everything seems good here.

My only concern is that at day before yesterday, I did try to install GRUB on the internal drive for the same reason @shototodoroki mentioned here :

I remember GRUB generating a /boot/bootx64.efi as well. Since my system has a Linux based recovery environment provided by Dell, so I'm not sure if I can tell whether the .efi belongs to that or Garuda. I only know for a fact that it is only present in my internal drive:

Internal
├── EFI
│   ├── Boot
│   │   ├── bootx64.efi
│   │   ├── fbx64.efi
│   │   └── mmx64.efi
:   :
:   :

No errors were reported when I ran the grub-install command you provided.

Output of sudo grub-mkconfig -o /boot/grub/grub.cfg:

Found theme: /usr/share/grub/themes/garuda-dr460nized/theme.txt
Found linux image: /boot/vmlinuz-linux-zen
Found initrd image(s) in /boot: intel-ucode.img  intel-ucode.img initramfs-linux-zen.img
Found fallback initrd image(s) in /boot: intel-ucode.img initramfs-linux-zen-fallback.img
Found linux image: /boot/vmlinuz-linux-lts
Found initrd image(s) in /boot: intel-ucode.img  intel-ucode.img initramfs-linux-lts.img
Found fallback initrd image(s) in /boot: intel-ucode.img initramfs-linux-lts-fallback.img
Found linux image: /boot/vmlinuz-linux
Found initrd image(s) in /boot: intel-ucode.img  intel-ucode.img initramfs-linux.img
Found fallback initrd image(s) in /boot: intel-ucode.img initramfs-linux-fallback.img
Found Windows Boot Manager on /dev/[email protected]/EFI/Microsoft/Boot/bootmgfw.efi
Found Debian GNU/Linux 10 (buster) on /dev/sda3
Detecting snapshots ...
Info: Separate boot partition not detected
Found snapshot: 2021-06-09 23:02:55 | timeshift-btrfs/snapshots/2021-06-09_23-02-55/@
Found snapshot: 2021-06-07 09:00:09 | timeshift-btrfs/snapshots/2021-06-07_09-00-09/@
Found snapshot: 2021-06-04 16:31:48 | timeshift-btrfs/snapshots/2021-06-04_16-31-36/@
Found snapshot: 2021-06-02 14:47:35 | timeshift-btrfs/snapshots/2021-06-02_14-47-34/@
Found 4 snapshot(s)
Found memtest86+ image: /boot/memtest86+/memtest.bin
done

A couple of things that stand out to me here is that the output states Found Debian GNU/Linux 10 (buster) on /dev/sda3, where /dev/sda3 is my rootfs. It also states Info: Separate boot partition not detected.

Output of efibootmgr -v:

BootCurrent: 0005
Timeout: 2 seconds
BootOrder: 0000,0005,0006
Boot0000* Windows Boot Manager  HD(1,GPT,f80bf604-4ec1-4a27-b7b8-b06e939966da,0x800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot0005* UEFI: SanDisk Cruzer Blade 1.26       PciRoot(0x0)/Pci(0x14,0x0)/USB(1,0)/CDROM(1,0x471278,0x8000)..BO
Boot0006* UEFI: SanDisk Cruzer Blade 1.26, Partition 2  PciRoot(0x0)/Pci(0x14,0x0)/USB(1,0)/HD(2,MBR,0x88f89123,0x471278,0x2000)..BO

No entry called External is created :frowning: .

Folder structure of external drive $ESP:

sda1
└── EFI
├── BOOT
│   └── BOOTX64.EFI
└── Dell
└── logs
├── diags_current.xml
└── diags_previous.xml

No change to internal drive $ESP.

Seems like it isn't even creating the Garuda folder. I made sure that the packages @shototodoroki mentioned in his post were present as well before doing this.

Please let me know if you need any other outputs. I'm petrified to shut down my system rn xD.

Garuda sould be present in efibootmgr -v
Can you boot with the external drive you have ( maybe you did the formatting wrong ) ?
did you install the system after boot ?
If no solution is found and you have 20Gb storage left on your internal install garuda normally along side windows following this for example and you're good to go How To Dual Boot Garuda Linux Alongside With Windows 10 - YouTube
As an ssd owner I see no reason of installing an operating system on hdd, 50% of the benefits of ssd is that spicy boot time

It seems I was right. I see you are probably not native English and use a translator, which translates in a very odd way what I post.
Or if you think you know how grub should behave very well.
Don't you think that if your assumptions were correct (and you could understand Archwiki articles properly) you would have solved your issue until now?

"You can't serve two masters", says the Bible.
Go for only one. There is a reason this is said.


Anyway, your issue is solved by now. You just don't realize it yet.
Boot to your external system using UEFI boot loader (quick boot menu), choosing the default entry of the external drive (that's grub) ALWAYS.
You may also set a wait timer for the UEFI menu, to show up by default, although I have not used/tested it myself.

efibootmgr -t 5
1 Like

I mean, I like to think that I can speak in English fluently :sweat_smile: . But I am still learning forum etiquette. (please excuse me if I do mess up)

But I provided all the information you had previous asked for, along with a step-by-step output of every command I executed.
At the time I wasn't quite sure what else I could've provided. Did I post too much unnecessary information?

I think you may have missed this in the barrage of text in my previous post, but I mentioned that there was no UEFI boot option created when I ran grub-install, and I confirmed this when I rebooted my system:

$ sudo efibootmgr -v (after reboot)

BootCurrent: 0001
Timeout: 5 seconds
BootOrder: 0000,0001,0002
Boot0000* Windows Boot Manager  HD(1,GPT,f80bf604-4ec1-4a27-b7b8-b06e939966da,0x800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot0001* UEFI: SanDisk Cruzer Blade 1.26       PciRoot(0x0)/Pci(0x14,0x0)/USB(1,0)/CDROM(1,0x471278,0x8000)..BO
Boot0002* UEFI: SanDisk Cruzer Blade 1.26, Partition 2  PciRoot(0x0)/Pci(0x14,0x0)/USB(1,0)/HD(2,MBR,0x88f89123,0x471278,0x2000)..BO

I'm still able to boot through the live USB, but the grub menu doesn't show up anymore(should be an easy fix by editing /etc/default/grub).

I'm going to try to add a boot entry manually by running sudo efibootmgr -c -d /dev/sda -p 1 -L "Garuda Boot" -l /EFI/BOOT/BOOTX64.EFI and hopefully it works this time :crossed_fingers: . I'll keep you posted @petsam!

1 Like

Don't please.
People who don't care about my instructions are considered trolls.
Use your confidence. :+1:

3 Likes

Running this added the entry to the quick boot menu, and I was finally able to boot successfully! @petsam your advice was genuinely invaluable, and I'm truly grateful to you. I don't know if you'll believe me, but I did try my best.

5 Likes

The next time there is a support request for booting problems from the same user, it will be closed, no questions asked.
Not following the suggested method for configuring your system, means you have enough knowledge to solve it on your own.