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 --force
will 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:
- 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?)?
- 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. 
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.