Need some systemd-boot help

I’m writing a kickstart file for Fedora. The bootloader is disabled, and a empty efi partition is created that I’m running bootctl and kernel-install to in %post for the bootloader .

My issue is that kernel-install reads /proc/cmdline which is full of the installer iso’s kernel options rather than the installed system.

What would be the proper way to fill this out? How does the installer/systemd know the proper uuids for root disks or luks? I feel like theres a command the anaconda installer runs since grub2 can figure it out.

I don’t use a kickstart file, but that line for the efi partition seems like it may be an error since /boot is NOT normally an efi partition. The efi partition in fedora is located at /boot/efi.
The standard fstab for my btrfs system looks like this so I wonder if that compress option for the btrfs line is incorrect as well.

UUID=d50e8840-4c90-4145-9018-46cc09536df2 /                       btrfs   subvol=root,compress=zstd:1 0 0
UUID=7fc89b78-a66e-4271-97ff-25d3e48c8436 /boot                   ext4    defaults        1 2
UUID=7B14-1D95          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
UUID=d50e8840-4c90-4145-9018-46cc09536df2 /home                   btrfs   subvol=home,compress=zstd:1 0 0

Put the options you want in /etc/kernel/cmdline. That will override /proc/cmdline when using kernel-install

1 Like

Arch and the systemd github deprecated /boot/efi 2016 apparently. Check /efi is the new /boot/efi since they didn’t like it being under /boot.
The mkfs and fs options are just my preferences.

It’s a while ago I tried systemd-boot, so I checked again in a VM. The only thing I can conclude is that a chroot install transfers incorrect options, unless overruled by /etc/kernel/cmdline. “/etc/grub.d/10_linux” states that anaconda can provide this file, but I do not see it, so I am afraid you have to provide it yourself, otherwise the system refuses to boot.
A “grub2-mkconfig -o /dev/null” fixes the problem
by creating /etc/kernel/cmdline from “root=rootdevice ro $GRUB_CMDLINE_LINUX”,
but lacking grub you have to do it yourself, I’m afraid.
Something missing in the systemd-resolved process???

@kenryo you might be interested in pull request Provide a command line option to install systemd-boot rather than grub2 on x86_64 and arm64 . I disagreed with some of the design decisions in that pull request, but it was merged and work is progressing to make this all work.