I just deployed an updated upgrade script for kernel 5.7 / proprietary NVIDIA driver from repository. This assumes that every major kernel will break the proprietary NVIDIA. For kernel 5.6 I’d it skip all upgrades. I made a change this time, only locking kernel packages from upgrading, keeping others upgrading as usual.
#!/bin/bash
# Repositories
#
# | Alias | Name | Required |
# +-------------+----------------------------+----------+
# | NVIDIA | NVIDIA | Yes |
set -o nounset -o noclobber -o pipefail
sudo zypper refresh >/dev/null
major=$(zypper list-updates | awk -v kernel="kernel-default" '
$5 == kernel {
split($7, old, ".");
split($9, new, ".");
major=new[1] != old[1] || new[2] != old[2] ? $9 : "";
print major;
}
'
)
if ! zypper list-updates --repo NVIDIA | grep "^v " >/dev/null; then
if -n "$major" ]]; then
sudo zypper addlock 'kernel-*' >/dev/null
fi
else
sudo zypper removelock 'kernel-*' >/dev/null
fi
sudo zypper dup
Give it a descriptive name (e.g. upgrade), place it somewhere on your path and use this script whenever you want to upgrade the system.
Credits: first seen this mentioned in https://lists.opensuse.org/opensuse-factory/2020-04/msg00111.html by forum member mrmazda.
PS: it might come a day where a major kernel wouldn’t break NVIDIA. It might not be a worthy install I’m afraid. If you want to install anyway:
sudo zypper removelock 'kernel-*' && sudo zypper dup