Switching from grub to systemd-boot, but I only get the grub bootloader

I have a Thinkpad T460 that has dual-booted Windows 10 and Fedora KDE spin for years.

I followed the Kowalski7cc instructions to switch from GRUB to systemd-boot. I could not merge my fat32 /boot (formerly /boot/efi) partition and my ext4 /boot partition because various Windows partitions are in the way, so I ran out of space on /efi until I configured dracut not to create a 0-rescue image. Eventually bootctl status showed my Linux kernel in /efi/longUUID/fedora_linux_version ready to roll.

But when I reboot, I go into the same old GRUB 2.06 menu which offers me the same boot choices (recent Fedora linux kernels, Windows boot, and “UEFI Firmware Settings”) as before! Where’s my systemd-boot loader? I guess I still have /grub configured and available in EFI somewhere, indeed as I recall bootctl status showed it (and Windows) as an available boot loader.

I think the fix is to tell my hardware to somehow prefer systemd-boot as the default boot loader and de-emphasize grub. But how?

  • There’s an efibootmgr tool in Linux but I can no longer boot into Linux from grub now that stuff is now in the wrong place.
  • The UEFI Firmware Settings grub menu option in grub doesn’t seem to work either (I’ve never used it), eventually dumping me into BIOS setup.
  • I can get into the grub shell but I don’t see an obvious “Show other bootloaders” command in its help listing.
  • Pressing F1 on this old laptop takes me into a very old-school BIOS setup that doesn’t have many EFI boot options (or I can’t access them because Secure Boot is enabled).
  • I do have a Fedora 40 live USB that I can boot, can I fiddle with my hard drive’s EFI boot setup from a live image?
    • If I nuke everything to do with grub and the old /boot partition will EFI give up on using it?
  • I can still boot into Windows from grub, so maybe per help in ubuntu - How to make UEFI bios start GRUB, not Windows? - Super User I can use Windows bcdedit to tinker with boot loaders.

Thanks as always in advance!

1 Like

I figured it out. It turns out I could still boot into Linux from grub even after I uninstalled the grub packages! efibootmgr shows that my BootOrder starts with “Linux Boot Manager HD UUID/\EFI\systemd\systemd-bootx64.efi” and then “Fedora HD UUID/\EFI\fedora\shimx64.efi” that I think is the grub boot loader, so I should get systemd-boot.

However, /EFI/systemd/systemd-bootx64.efi and other parts of systemd-boot aren’t signed according to the sbverify tool. After I disabled secure boot in my BIOS, I get a flash of text instead of the grub menu and then Fedora starts, and now bootctl status says “Current Boot Loader: Product: systemd-boot 255.6-1.fc40”. :tada:

Getting secure boot to work with systemd-boot seems daunting, see Full UEFI secure boot on Fedora using signed initrd and systemd-boot.

1 Like