NVIDIA驱动安装问题解决 nvidia.ko 加载错误 Required key not available


为了测试opencl程序在nvdia显卡下的表现,需要装驱动,但后面


主要问题:

  NVIDIA驱动装到最后,nvidia.ko文件已经编译成功,却提示无法加载,查询具体信息 发现加载nvidia模块时报错,Required key not available

  

分析:   

网上说的答案关闭Nouveau是错误的,不能解决这个问题。发现是因为ubuntu 强制要求 UEFI 安全启动导致的。 (CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE=Y

nvidia的模块是要进行签名才能使用的。


解决方法:

1. 首先要装 mokutil管理证书启动,  apt-get install mokutil

2. 然后创建一个生成证书的参数配置文件
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts

[ req_distinguished_name ]
O = YOUR_USERNAME
CN = YOUR_USERNAME
emailAddress = YOUR_EMAIL_ADDRESS

[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid

x509-configuration.ini

3.调用openssl命令

openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config x509-configuration.ini -outform DER -out public_key.der -keyout private_key.priv

生成public_key.der 和 private_key.priv.  public_key.der是证书


4. 我们用mokutil 把证书 放进数据库mokdb里。

mokutil --import  public_key.der 

输入密码,然后重启 reboot

注意!密码不要忘了。 另外,mokutil有保护机制,如果密码连续输错两次以上,后面怎么输都没用了,要重启才行。


5. 给模块签名

重启后,进入证书所在的目录,打以下命令

 /usr/src/linux-headers-4.2.0-42/scripts/sign-file sha256 private_key.priv public_key.der  /lib/modules/4.2.0-42-generic/updates/dkms/nvidia.ko 


这里有个奇怪的地方,我用xca生成的证书,最后签名是不成功的, 用openssl的就没问题,希望有人告知为啥。


其他小细节:

 1.  提示X server 未关闭

     service  lightdm stop  Nouveau 关闭(驱动会自动帮你做这个事)

 2.  双显卡的pc,请注意将显示输出从intel 换到 NVIDIA 显卡上去。 

 3. 再提醒下,mokdb的密码不要忘了,如果连续输错,就重启。不然始终会出现enrolled 错误


目前我在中文文章里没看到过解决这问题的文章,所以写下这个方便后面的人。

参考文档:

http://askubuntu.com/questions/761886/ubuntu-16-04-kernel-4-4-0-21-not-loading-nvidia-vboxdrv-modules-anymore-require

http://www.pellegrino.link/2015/11/29/signing-nvidia-proprietary-driver-on-fedora.html

你可能感兴趣的:(NVIDIA驱动安装问题解决 nvidia.ko 加载错误 Required key not available)