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

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值