Update initrd with sytemd-boot

Hi all. I am using systemd-boot instead of grub on my Tumbleweed install, and it works fine and I prefer it over grub since I don’t need or use any of the additional features of grub.

Anyway, the other day after running updates, I couldn’t get into the GUI anymore due to an “NVRM: API mismatch”. The nvidia driver was updated and now the driver and client were not of the same version number.

So I rolled back and did some searching. Turns out, the initrd was not updated after the driver update. Not a real biggie, just running dracut --regenerate-all --forcewill fix that, except it will fix that in /boot. Not in /boot/efi/opensuse-tumbleweed. Also not a biggie and nothing a bit of cp can’t fix.

Questions though:

  1. is this a bug in the implementation of systemd-boot (I know it is not as well supported as grub / ready for primetime) and should I file this (where?)?
  2. Is there a simple way to regenerate the initrd when using systemd-boot that does not involve having to copy files around and puts it in the right place and updates the loader entries?

I don’t mind doing things manually and working of the console without GUI, but if I don’t have to why would I. :slight_smile:

1 Like

systemd-boot itself does not care about initrd at all. If you mean “integration of systemd-boot into Tumbleweed” - that’s possible. But you need to start with describing what you did to switch to systemd-boot.

Did so per assistence here:
Remove all grub2 entries like
efibootmgr --delete --label opensuse-secureboot

vi /etc/sysconfig/bootloader
change LOADER_TYPE="grub2-efi" to LOADER_TYPE="systemd-boot"

zypper in sdbootutil-snapper sdbootutil-rpm-scriptlets

sdbootutil install
sdbootutil add-all-kernels

Reboot & Done

Now we have systemd-boot and no more grub2.

After this it’s just updating as usual. Kernels get added, snapshots made, all fine. Except when the driver got updated. Everything was done, compiling of the driver, etc, except for the updating of the initrd.

1 Like
lrwxrwxrwx 1 root root   20 Nov  2 22:48 kmp-post -> ../../../../bin/true
andrei@tumbleweed:/usr/lib/module-init-tools/kernel-scriptlets> rpm -qf kmp-post
sdbootutil-rpm-scriptlets-1+git20231026.f43c33c-1.1.x86_64

As you can see nothing happens when drivers (KMP) are added or updated. This is not a bug, but missing feature.

GitHub - openSUSE/sdbootutil would be appropriate.

Define “simple”. There are multiple ways if you are prepared to do some shell scripting and/or RPM maintenance. I am not aware of any way to just set a single parameter somewhere in configuration file.

Simple like dracut --regenerate-all --force but without having to backup the original and copy the newly generated file to the appropiate location. Sure I can script all that, but that is less flexible than a ‘proper’ solution.

Thanks, will do.