有时,我的 NVIDIA 驱动程序(使用 MOK 签名)无法加载到我的双启动计算机(Ubuntu 22.04 和 Windows 11)上。我通过使用相同的签名密钥重新安装相同的驱动程序来解决该问题。
签名密钥始终位于同一路径上(我不会删除它们或移动到其他地方)。
这种情况每隔 1-2 个月就会发生一次。什么可能导致这种情况?
编辑:我只是重新安装驱动程序(步骤 6:https://askubuntu.com/a/1049479),无需重新注册
答案1
您将获得内核安全更新,其中包括一个新的内核软件包,其中包含一组新的内核模块以每次匹配它。显然,您没有设置任何自动化功能来在发生这种情况时重建您的 NVIDIA 内核模块。
有一个名为的软件包dkms
可以在安装新内核映像时自动重建第三方内核模块。您应该dkms
使用包管理器(例如sudo apt install dkms
或使用您首选的 GUI 工具)安装该包,如果您使用 NVIDIA 提供的驱动程序安装程序,请使用--dkms
安装程序中的选项。
如果您每次都使用相同的 MOK 密钥,则无需执行密钥(重新)安装过程。
如果您使用 Debian/Ubuntu 工具创建 MOK,/var/lib/shim-signed/mok/
目录中应该有两个文件:私钥 asMOK.priv
和公钥 as MOK.der
。但您说您在其他已知路径上有自己的签名密钥,因此您可以使用它们。
因此,如果您使用 NVIDIA 的安装程序,您可以这样运行:
sudo ./NVIDIA-Linux-x86_64-<version number>.run --dkms \
--module-signing-secret-key=/var/lib/shim-signed/mok/MOK.priv \
--module-signing-public-key=/var/lib/shim-signed/mok/MOK.der
使用 DKMS 成功安装后,该命令sudo dkms status
应输出一个或多个内核版本的列表,这些版本具有为其构建的 NVIDIA 驱动程序模块:
nvidia, <driver version>, <kernel version>, x86_64: installed