I'm trying to setup an easy way to reboot my system into a specified boot-loader, whether that's Windows or another version of Linux. On my test system, I've installed systemd-boot and created entries for each kernel that's currently installed. Here is what systemctl recognizes as boot-loader entries:
$ sudo systemctl reboot --boot-loader-entry=help
Linuxmint-20.1-5.4.0-58-generic.conf
Linuxmint-20.1-5.4.0-66-generic.conf
Linuxmint-20.1.conf <--- this is the default entry
auto-reboot-to-firmware-setup
All of these entries work when selected manually from the systemd-boot menu. However, when called from sudo systemctl reboot --boot-loader-entry=, the only ones that work are the default and firmware entries. If there's an error on the reboot, it's not being shown. As soon as the boot menu pops up, it's back to the default entry.
Here are a couple of the boot-loader conf files:
# cat Linuxmint-20.1-5.4.0-58-generic.conf
title Linux Mint 20.1 ulyssa (5.4.0-58-generic)
linux /Linuxmint-20.1/vmlinuz-5.4.0-58-generic
initrd /Linuxmint-20.1/initrd.img-5.4.0-58-generic
options root=UUID=a67973ca-bd17-4f40-aba6-160fef33086a rw rootflags=subvol=@ iommu=pt
# cat Linuxmint-20.1.conf
title Linux Mint 20.1 ulyssa (5.4.0-67-generic)
linux /Linuxmint-20.1/vmlinuz-5.4.0-67-generic
initrd /Linuxmint-20.1/initrd.img-5.4.0-67-generic
options root=UUID=a67973ca-bd17-4f40-aba6-160fef33086a rw rootflags=subvol=@ iommu=pt
Could it be related to my loader.conf settings?
# cat loader.conf
timeout 10
console-mode auto
editor yes
random-seed-mode always
default Linuxmint-20.1.conf
UPDATE #1: using systemctl reboot --boot-loader-entry=auto-windows on my main system also works.