Kernel-install 92-tuned.install is conflicted with systemd-boot

There is a new /usr/lib/kernel/install.d/92-tuned.install file, which appends $tuned_param and $tuned_initrd to the /boot/loader/entries/*.conf boot entry. $variables only work with GRUB, and systemd-boot does not recognize them. And $tuned_initrd causes systemd-boot to be unable to find the initrd path, thus preventing the system from booting. I think 92-tuned.install might need a way to detect systemd-boot and avoid adding any of $variables to it.

The following lines should make the script exit early when using sd-boot

# with grub2 always /boot
BOOT_ROOT="/boot"
LOADER_ENTRIES="$BOOT_ROOT/loader/entries"

[ -d "$LOADER_ENTRIES" ] || exit 0

A check for the variable KERNEL_INSTALL_LAYOUT would have been a better test. That is the test sd-boot is using to check if sd-boot is used instead of something else.

But it seems not working. Even the entry conf files insideFedora-Workstation-Live-x86_64-41-1.4.iso itself are wrong.

Explain. Which conf files?

/boot/loader/entires/*blahblah*-6.11.4-301.fc41.x86_64.conf has $tuned_initrd and $tuned_params.

Fedora Workstation installs the system with the grub as the boot loader. So sd-boot would not be an issue.

Yeah, I understand. But somehow this file didn’t generate correctly. And unless I block 92-tuned.install, any new kernel-install call would append $tuned_initrd and $tuned_params to my sdboot entry.

Even more dangerous, if a user use sdboot on fedora 40, and do a system upgrade, then the system wouldn’t boot, since every entry now has $tuned_initrd. (and, I’m that unlucky guy…)

In a normal sd-boot setup your BLS files will be in /boot/efi/loader/entries and there won’t be any /boot/loader/entries. Or if you do it the systemd way, mount the ESP at /efi, in which case you would have /efi/loader/entries.

It would be a good idea to mask 92-tuned.install by creating /etc/kernel/install.d/92-tuned.install as a symbolic link to /dev/null.

And file a bug report.

1 Like

Thanks! I have already mask 92-tuned.install with /dev/null to make my system work.

For the BLS file path, I might need to read the document again. I might make wrong directory path as your point out.

There are different ways to do this. The Fedora way is ESP on /boot/efi, and the systemd way is ESP on /efi. And some people want ESP on /boot.

Dang, got hit by this.

UEFI is sooo much easier to fix than Grub.

Hmm, okay, I think I understand the problem because I fixed it in a jiffy, got my system booted.

Okay, so just so I understand. The scripts in /usr/lib/kernel/install.d/ are the “default” ones, but if the same script exists in /etc/kernel/install.d/ that one will get run instead, right? It’s like a local system override, right?

(I think we did this in F40 for dracut? Does that ring a bell? I’m certain there was a bug for it and I just forgot to remove it. I’m going to delete that one in /etc/ and let the default one take over in F41.)

In my case, I think I may have tripped it because I just mounted /efi over the old /boot. I should really just get rid of /boot, huh?