Ubuntu 16.04下NVIDIA GTX 960M显卡驱动的安装

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显卡驱动就此安装完毕。

posted @ 2017-11-27 11:01 Dom1nic 阅读(...) 评论(...) 编辑 收藏