On Friday, 3 July 2020 03:05:34 BST Andrew Udvare wrote: > Morning all, > > I'm trying to set the default boot entry via bootctl or efibootmgr. I know I > can set it directly by pressing D at the boot selection screen, and the > system does boot properly; I just want to understand the setup a bit > better. I don't have the rest of systemd: this is an openrc box. > > # tree -L 3 /boot > /boot > ├── config-5.4.48-gentoo > ├── config-5.4.48-gentoo-rescue > ├── config-5.7.6-gentoo > ├── config-5.7.7-gentoo > ├── early_ucode.cpio > ├── EFI > │ ├── Boot > │ │ └── bootx64.efi > │ ├── Linux > │ ├── Microsoft > │ │ ├── Boot > │ │ └── Recovery > │ └── systemd > │ └── systemd-bootx64.efi > ├── intel-uc.img > ├── loader > │ ├── entries > │ │ ├── 08-gentoo-5.4.48-rescue.conf > │ │ ├── 09-gentoo-5.4.48-rescue.nonet.conf > │ │ ├── 30-gentoo-5.7.7.conf > │ │ ├── 32-gentoo-5.7.7.nox.conf > │ │ ├── 34-gentoo-5.7.7.nonet.conf > │ │ ├── 40-gentoo-5.4.48.conf > │ │ ├── 42-gentoo-5.4.48.nox.conf > │ │ └── 44-gentoo-5.4.48.nonet.conf > │ ├── loader.conf > │ └── random-seed > ├── System.map-5.4.48-gentoo > ├── System.map-5.4.48-gentoo-rescue > ├── System.map-5.7.6-gentoo > ├── System.map-5.7.7-gentoo > ├── vmlinuz-5.4.48-gentoo > ├── vmlinuz-5.4.48-gentoo-rescue > ├── vmlinuz-5.7.6-gentoo > └── vmlinuz-5.7.7-gentoo > > # bootctl status > --->8 > Default Boot Loader Entry: > title: Gentoo 5.4.48 (No network) > id: 44-gentoo-5.4.48.nonet.conf > --->8 > > 44-gentoo-5.4.48.nonet.conf is the last entry in /boot/loader/entries. > > Man bootctl says: > set-default ID, set-oneshot ID > Sets the default boot loader entry. Takes a single boot loader entry ID > string as argument... > > But then, > # bootctl set-default 30-gentoo-5.7.7.conf > Failed to update EFI variable: Invalid argument > > ...in spite of this: > # cat /boot/loader/entries/30-gentoo-5.7.7.conf > title Gentoo 5.7.7 > version 5.7.7-gentoo > linux vmlinuz-5.7.7-gentoo > initrd=intel-uc.img > options root=/dev/nvme0n1p4 net.ifnames=0 raid=noautodetect > > ...and this: > # mount | grep efi > efivarfs on /sys/firmware/efi/efivars type efivarfs > (rw,nosuid,nodev,noexec,relatime) > > I've also tried telling efibootmgr to set the default. > > # efibootmgr > BootNext: 0007 > BootCurrent: 0007 > Timeout: 2 seconds > BootOrder: 000B,0007,0006,0000,000C,000D > Boot0000* Windows Boot Manager > Boot0006* UEFI OS > Boot0007* Linux Boot Manager > Boot000B* CD/DVD Drive > Boot000C* Hard Drive > Boot000D* Removable Drive > > Efibootmgr -n 7 seems to make no difference, as expected, but: > # efibootmgr -N 7 > Boot entry 0001 does not exist I can't comment on the systemd's bootctl, because I don't use it, by as I understand it 'efibootmgr --delete-bootnext' will clear the BootNext entry in UEFI settings and does not take a boot entry number as a variable on the CLI. I can't answer why "7" in your entry above returns a comment about "Boot entry 0001" ... which is obviously absent.