Systemd-kernel-maintenance stopped producing initrd after 2023-06-04 update

The issue

I have systemd-boot and I’m using systemd-kernel-maintenance package to automatically set it up. After the stable Manjaro update from 2023-06-04, the initrd files stopped appearing on kernel updates and installs. Also, the line loading initrd (e.g. initrd /<machine-id>/6.1.41-1-MANJARO/initrd) is missing from the loader entry (e.g. /efi/loader/entries/<machine-id>-6.1.41-1-MANJARO.conf.

I’m 70% sure the update that caused it was the one from 2023-06-04 and not a later one.

The fix

I’ve switched out systemd-kernel-maintenance for kernel-install-mkinitcpio from AUR.

Workaround for systemd-kernel-maintenance

  • Run sudo mkinitcpio -P to generate the initrd files for the kernels
  • add the line with initrd to the loader entry manually

Questions to the community

So how do people with systemd-boot handle it? Does everybody use kernel-install-mkinitcpio? It is recommended by the systemd-boot conversion guide

When I was doing the switch I chose to trust systemd-kernel-maintenance because it’s in the extra Manjaro repository. kernel-install-mkinitcpio seemed more risky being a generic Arch thing from AUR.

BTW I also tried systemd-boot-manager (again from extra) - that was producing initrds, but wasn’t creating loader entries.

There was an issue some weeks ago with mkinitcpio and systemd - I don’t recall the details - the guide were offline for some weeks until the issue was worked out.

You can Use the package systemd-boot-manager from the repo.

(Remove request (#1) · Issues · Packages / Community / systemd-kernel-maintenance · GitLab).

The package systemd-boot-manager is not the same as kernel-install-mkinitcpio although they achieve the same result.

Personally I use the kernel-install-mkinitcpio jpackages for my systemd boot as it is a generic approach working with any Arch based system.

Should systemd-boot-manager produce loader entry files (/efi/loader/entries) without any config? It wasn’t doing that for me.

As I recall, it used to.

For me it just wipes all the entries from /efi/loader/entries and then produces an error “Error: There are no boot loader entries after entry generation” :confused:

I have a BTRFS system inside a LUKS container. A brief look at the code tells me that this might matter.

That could be … my experience with btrfs has not been good so I always use ext - yet my thought is - kernel and loader is on a separate FAT32 partition - mounted at /boot - so why would the entry generation fail? The system places kernel images in $esp - the script reads the kernel images in $esp and generates entries from those combined with the settings registered in the system configuration file in /etc.

The reason I am using the AUR package is that is uses the kernel-install whereas systemd-boot-manager is Manjaro specific.

The kernel-install and bootctl which is utilized using the AUR custom build is the native method og setting up and maintaining systemd-boot.