MOK 签名的 NVIDIA 驱动程序在一段时间后无法加载

MOK 签名的 NVIDIA 驱动程序在一段时间后无法加载

有时,我的 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

相关内容