Ubuntu 16.04下NVIDIA GTX 960M顯卡驅動的安裝#
擴寫於2017-12-6
記於2017-11-27
該方案親測可行
准備工作###
在進行本方案前請首先屏蔽nouveau驅動,具體方法可自行百度。同時在啟動系統時應按e修改引導參數,在quiet splash后加入nouveau.modeset=0,其余(諸如nomodeset等)選項可以去掉。
若之前曾未成功地安裝過NVIDIA驅動,應首先卸載之(sudo apt-get remove --purge nvidia*
,若使用官方安裝包安裝,則參照官方說明進行卸載),若安裝過bumblebee,也應卸載之(sudo apt-get remove --purge bumblebee
)。
此外,檢查電腦是否擁有mokutil(即輸入命令mokutil
查看是否能夠找到命令),若不具有mokutil,本文中的方法雖能夠安裝驅動,但將無法正常恢復安全啟動。檢查是否安裝有keyctl,若沒有安裝,使用sudo apt-get install keyutils
進行安裝即可。
安裝驅動###
從NVIDIA官網下載安裝推薦驅動的方案似乎並不能完美安裝驅動,會出現很多問題。建議直接使用apt安裝官網推薦的驅動。筆者的NVIDIA GTX 960M推薦驅動為nvidia-384。即在終端運行
sudo apt-get install nvidia-384
即可。安裝過程中可能提示需要關閉Secure Boot,否則可能無法正常加載驅動,此時選擇同意關閉並設置密碼。無須擔心,事后可以恢復為安全啟動。待安裝完成后,重啟電腦,若電腦帶有mokutil,將進入shim界面驗證密碼關閉安全啟動。之后應成功加載驅動並進入系統。
恢復安全啟動###
使用openssl為新安裝模組生成密鑰####
首先創建configuration_file.config文件,內容如下:
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
O = KEYNAME
emailAddress = EMAIL
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
其中KEYNAME處隨意填寫一個名稱即可,EMAIL處填入自己的郵箱地址(其實並無大礙)。
使用密鑰進行簽名####
保存后在當前目錄下運行如下命令:
sudo openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config configuration_file.config -outform DER -out public_key.der -keyout private_key.priv #生成密鑰
sudo mokutil --import public_key.der #導入密鑰
這時密鑰導入完畢。可以使用sudo keyctl list %:.system_keyring
命令查看密鑰列表。下面對剛剛安裝的模組進行簽名。
通常,模組的ko文件應位於/lib/modules/4.10.0-38-generic/updates/dkms/
中。ls之並記錄下所有nvidia開頭的ko文件,以及bbswitch.ko文件,這些文件是應進行簽名的文件。使用以下命令進行簽名:
sudo /usr/src/linux-headers-4.10.0-38-generic/scripts/sign-file sha256 private_key.priv public_key.der /lib/modules/4.10.0-38-generic/updates/dkms/***.ko
其中***替換為你要簽名的文件名。對於以上找到的所有文件均運行該命令。
重新打開安全啟動####
運行以下命令:
sudo mokutil --enable-validation
設置密碼並重啟電腦,進入shim界面,輸入密碼,打開安全啟動即可。
NVIDIA顯卡驅動就此安裝完畢。