Ubuntu 16.04内核4.4.0-21不再加载nvidia / vboxdrv模块(必需密钥不可用)

Ubuntu 16.04(4.4.0-21)的最新内核不再加载nvidia(和vboxdrv)模块。

$ sudo modprobe -v nvidia insmod /lib/modules/4.4.0-21-generic/updates/dkms/nvidia_361.ko modprobe: ERROR: could not insert 'nvidia_361': Required key not available 

4.4.0-18它仍然有效。 发生了什么变化? 我该如何解决这个问题?

有一种方法可以启动安全启动并使用NVidia或VirtualBox等专有内核模块。 首先下载xca app:

 sudo apt install xca 

然后创建新数据库并生成新密钥。 接下来从该私钥生成CA证书。 将私钥导出为PEM格式,将CA公共证书导出为DER格式。 将CA证书导入MOK数据库:

 sudo mokutil --import CAcert.cer 

程序会要求您输入MOK数据库的密码。 重启后,MOKManager将在GRUB之前执行。 选择“ Enroll keys ,选择之前添加的证书,然后输入密码进行确认。 之后,您的CA证书将添加到MOK数据库中。 重启。

接下来在内核头文件脚本目录中找到sign-file程序。 对我来说,它是:

 /usr/src/linux-headers-4.4.0-22-lowlatency/scripts/sign-file 

现在在/lib/modules/4.4.0-22-lowlatency/updates/dkms/签署所有内核模块。 例如:

 /usr/src/linux-headers-4.4.0-22-lowlatency/scripts/sign-file sha256 CA.pem CAcert.cer /lib/modules/4.4.0-22-lowlatency/updates/dkms/nvidia_361.ko 

之后,您将能够加载模块而不Required key not available错误。

从dkms目录安装新内核或新版本的模块内核后,您必须重复签名过程。

阅读链接澄清:

https://wiki.ubuntu.com/SecurityTeam/SecureBoot

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-signing-kernel-modules-for-secure-boot.html

内核bug#1571691得到了答案 :

 sudo apt-get install mokutil; sudo mokutil --disable-validation