I recently upgraded my system from Leap 15.2 to 15.3. After the upgrade the proprietary nvidia driver no longer worked. After some investigation it turned out that nvidia compiles the kernel modules only for the default kernel and not for the preempt kernel. This worked fine under Leap 15.2 as the “default” kernel was also the default selected one. However, after the upgrade the “preempt” kernel became the default selected one and the nvidia kernel modules could no longer be found. A simple solution would be to delete the preempt kernel from my machine and grub would have no other choice than to make the “default” kernel the default selected one again. However, before I do that, I would like to understand better what happened. So these are my questions:
1 - What is the difference between the default and preempt kernels?
2 - Why did openSUSE switch from the default kernel to the preempt kernel after upgrading to 15.3? Preempt kernels were already around before that…
3 - Is deleting the preempt kernel indeed the best solution? What I want to avoid is manual intervention every time I reboot or upgrade the kernel.
It’s what I would do. First I’d ensure bootable kernel-default and kernel-default-extra are installed. Then I’d zypper rm kernel-preempt, then I’d sudo zypper al kernel-pr*, which would prevent it from ever being installed again while the lock remains. Locks with incorporated wildcards never get deleted except by an admin, regardless what a running zypper command might profess it will do.
Preempt kernels are not installed by themselves. There was bug in 15.2 that caused kernel-preempt to be installed under some conditions, but it is fixed long ago. If something started pulling kernel-preempt in 15.3 this should be investigated and reported. But OP sounded like kernel-preempt existed in 15.2 already before upgrade to 15.3.
% zypper se -si kernel
Loading repository data...
Reading installed packages...
S | Name | Type | Version | Arch | Repository
---+-----------------------------+---------+------------------------+--------+-------------------------------------------------------------
i+ | kernel-default | package | 5.3.18-lp152.92.2 | x86_64 | (System Packages)
i+ | kernel-default | package | 5.3.18-59.24.1 | x86_64 | Update repository with updates from SUSE Linux Enterprise 15
i+ | kernel-default-devel | package | 5.3.18-lp152.92.2 | x86_64 | (System Packages)
i+ | kernel-default-devel | package | 5.3.18-59.24.1 | x86_64 | Update repository with updates from SUSE Linux Enterprise 15
i | kernel-default-extra | package | 5.3.18-59.24.1 | x86_64 | Update repository with updates from SUSE Linux Enterprise 15
i | kernel-default-optional | package | 5.3.18-59.24.1 | x86_64 | Update repository with updates from SUSE Linux Enterprise 15
i+ | kernel-devel | package | 5.3.18-lp152.92.2 | noarch | (System Packages)
i+ | kernel-devel | package | 5.3.18-59.24.1 | noarch | Update repository with updates from SUSE Linux Enterprise 15
i+ | kernel-firmware-all | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i+ | kernel-firmware-all | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-amdgpu | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-amdgpu | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-ath10k | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-ath10k | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-ath11k | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-ath11k | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-atheros | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-atheros | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-bluetooth | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-bluetooth | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-bnx2 | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-bnx2 | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-brcm | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-brcm | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-chelsio | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-chelsio | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-dpaa2 | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-dpaa2 | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-i915 | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-i915 | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-intel | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-intel | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-iwlwifi | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-iwlwifi | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-liquidio | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-liquidio | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-marvell | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-marvell | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-media | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-media | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-mediatek | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-mediatek | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-mellanox | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-mellanox | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-mwifiex | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-mwifiex | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-network | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-network | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-nfp | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-nfp | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-nvidia | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-nvidia | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-platform | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-platform | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-prestera | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-prestera | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-qlogic | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-qlogic | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-radeon | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-radeon | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-realtek | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-realtek | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-serial | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-serial | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-sound | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-sound | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-ti | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-ti | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-ueagle | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-ueagle | package | 20210208-2.4 | noarch | Main Repository
i | kernel-firmware-usb-network | package | 20210208-2.4 | noarch | openSUSE-Leap-15.3-1
i | kernel-firmware-usb-network | package | 20210208-2.4 | noarch | Main Repository
i+ | kernel-macros | package | 5.3.18-59.24.1 | noarch | Update repository with updates from SUSE Linux Enterprise 15
i | kernel-preempt | package | 5.3.18-lp152.92.2 | x86_64 | (System Packages)
i | kernel-preempt | package | 5.3.18-59.24.1 | x86_64 | Update repository with updates from SUSE Linux Enterprise 15
i | kernel-preempt-devel | package | 5.3.18-lp152.92.2 | x86_64 | (System Packages)
i | kernel-preempt-devel | package | 5.3.18-59.24.1 | x86_64 | Update repository with updates from SUSE Linux Enterprise 15
i | kernel-preempt-extra | package | 5.3.18-59.24.1 | x86_64 | Update repository with updates from SUSE Linux Enterprise 15
i | kernel-preempt-optional | package | 5.3.18-59.24.1 | x86_64 | Update repository with updates from SUSE Linux Enterprise 15
i | kernel-syms | package | 5.3.18-lp152.92.1 | x86_64 | (System Packages)
i | kernel-syms | package | 5.3.18-59.24.1 | x86_64 | Update repository with updates from SUSE Linux Enterprise 15
i | purge-kernels-service | package | 0-8.3.1 | noarch | Update repository with updates from SUSE Linux Enterprise 15
i+ | texlive-l3kernel | package | 2017.133.svn44483-5.18 | noarch | openSUSE-Leap-15.3-1
i+ | texlive-l3kernel | package | 2017.133.svn44483-5.18 | noarch | Main Repository
i+ | texlive-l3kernel-doc | package | 2017.133.svn44483-5.18 | noarch | openSUSE-Leap-15.3-1
i+ | texlive-l3kernel-doc | package | 2017.133.svn44483-5.18 | noarch | Main Repository
So if I read you correctly, the fact that I have the preempt kernel installed should be considered a bug and deleting would be the correct course of action. And yes, the preempt kernels were already there under 15.2. As far as I can see, they appeared first with version 5.3.18-lp152.72 of the kernel and have been there ever since.
If you did not install it intentionally, you likely have this kernel due to a bug in 15.2.
and deleting would be the correct course of action.
It is still unclear what is causing the issue. Could provide output of “grib2-editenv - list” (it is single and spaces around “-”) as well as /boot/grub2/grub.cfg (upload to https://susepaste.org).
I indeed did not install the preempt kernels myself and have now removed them from my system. For what it is worth, the output of “grub2-editenv - list” is:
saved_entry=openSUSE Leap 15.1
I still have the grub.cfg file from before I deleted the preempt kernels. That has been pasted here: https://susepaste.org/49366098
Well, the version 5.3.18-59.24-preempt is “higher” than the version 5.3.18-59.24-default, because “d” sorts before “p”. So preempt kernel is added as the first (and hence default) choice. Version comparison is done for all components, and even if numerical versions are the same, it has to break tie somehow.