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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章