After I ran into systemd-boot as boot-loader I've never looked back at GRUB.
systemd-boot, is in my view, way more stable and has a much better way of configuration.
And by "stable" I mean it's not as vulnerable as GRUB. GRUB is so easy to break.
Just adding a new disk to your box can give you big trouble (because of maybe identical boot-loader ID's that you cannot change etc.)
Only downside of systemd-boot is the lack of secure-boot support, but that's not an issue for me, and that your kernel must be located in the EFI partition, instead of root partition, as it is the case with GRUP.
With systemd-boot I got back full control of the boot-process...YES
It should be the default boot-loader instead of GRUB.
UPDATE, How to do (Debian/Ubuntu):
(This is a rather superficially guide, but I hope it will get you started. Other sources: Arhlinux.., freedesktop.. and readme..)
1: First copy the kernel files from you root partition, e.g.
/boot/initrd.img-4.9.0-8-amd64, to your EFI partition. You can place them in a subfolder of your choice or even in root-folder if you like.
2: Many guides says you need access to the EFI variables, but I'm not sure if this is needed. But to test if you have, run
To Install if missing:
apt install efivar
3: Install systemd-boot loader to the EFI partition:
bootctl --path=/mnt/efi install (use you own path to your mounted EFI partition)
4: Edit the file
/mnt/efi/loader/loader.conf to something like:
# default 6a9857a393724b7a981ebb5b8495b9e-*
(haven't figured out how to use the auto-added UUID in the file, so I just marked it out)
5: Each file in
/mnt/efi/loader/entries/*.conf correspond to at boot-entry in the systemd-boot menu. So to add your current OS make a file looking something like:
title Debian 9 :-)
(Modify the path to the kernel files you copied in step 1. Modify the UUID to the filesystem-UUID of you root partition (use Linux command
lsblk -o name,uuid)
bootctl will install two bootloader-files in your EFI partition:
These files are identical. Your EFI bios on your motherboard moust boot/point to one of them. Either do it in the BIOS directly or use the Linux command
To add a new boot entries just create a new
/mnt/efi/loader/entries/*.conf files which point to the right kernel files and root partition.
The kernel files MUST be located on the EFI partition (FAT32).
The EFI partition must be sized accordingly. I think the kernel files for e.g. Debian/Ubuntu is about 50-60MB. So if you have two installations you need 120MB.