发生了什么
我昨天升级了我的系统,它将 dkms 更新到了 Ubuntu 22.10 的最新版本: dmks3.0.6-2ubuntu1
。同时,apt 将我升级到了最新的内核版本。
从那时起,我的 nvidia 驱动程序就停止工作了。
原因
经过一番查看,我终于明白了在中找到的 nvidia 驱动程序/lib/modules/5.19.0-35-generic/updates/dkms/nvidia.ko
没有签名,这解释了为什么modprobe nvidia
输出:
modprobe: ERROR: could not insert 'nvidia': Key was rejected by service
根本原因
经过进一步观察后,我得出结论,这dmks3.0.6-2ubuntu1
就是我的游戏之夜被毁掉的唯一原因。
手动调用 dkms
sudo dkms install --force nvidia/525.89.02
Sign command: /usr/lib/linux-kbuild-5.19/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Binary kmod-sign not found, modules won't be signed
...
该漏洞自 2022 年 9 月起被发现
从Bug#1019425:dkms 3.0.6-2 未签署模块,可以读到:
软件包:dkms 版本:3.0.6-2 严重性:重要
亲爱的维护者,
从 dkms 3.0.6-2 开始,模块不再签名。这意味着安全启动不再起作用。
回到 3.0.3-4 并再次签名。
此错误已由 修复dkms3.0.9
。
问题
我该怎么做(不,我无法禁用 SecureBoot)才能将 dkms 降级或升级到可用版本?apt list -a dkms
仅列出 3.0.6 作为 dkms 的可用版本 :(
答案1
dkms 的修复已发布至 Ubuntu 的 PPA kinetic-updates
。
您可以暂时将此存储库添加到您的源并将 dkms 升级到dkms3.0.6-2ubuntu2
:
添加存储库
cat | sudo tee -a /etc/apt/sources.list
# 2023-03-03: Temp fix for dkms 3.0.6 bug
# <https://askubuntu.com/q/1457570/475641>
deb http://fr.archive.ubuntu.com/ubuntu/ kinetic-updates main
^D
(注意:您可能想要选择离您更近的镜子;)
升级 dkms
sudo apt update && sudo apt install dkms
修复你的驱动程序
$ sudo dkms status
nvidia/525.89.02, 5.19.0-35-generic, x86_64: installed
# note that version string
$ sudo dkms remove --force nvidia/525.89.02
[...]
$ sudo dkms install --force nvidia/525.89.02
[...]
$ sudo modprobe nvidia
瞧!