CaptainChen

Ubuntu下GTX1080显卡驱动折腾小记

2017-03-02 2146 words (about 8 min read) Views
Ubuntu Nvidia

最近开始入深度学习的坑,给实验室电脑装 Ubuntu 系统和 GTX1080 显卡驱动,遇到不少坑,其中最大的问题是装完显卡驱动后开机登录输入密码显示不正确,然后陷入无限循环登录的无解状态。网上教程无数,然而通过本人近两天的逐个测试,其实一个靠谱的解决方案都没有,只能靠自己控制变量法 + Google + 大胆猜想折腾出解决方案,一路下来真的是十分曲折,无比艰辛。

硬件平台:i7-6700K CPU, GTX1080 GPU, 华硕 Z170 主板
软件平台: Ubuntu 16.04

先看看网上最流行的3个不靠谱解决方案:

  • 更改 /etc/profile 环境变量,更改 Xauthority 文件权限等 链接
  • 显卡驱动 .run 文件添加 --no-opengl-files 参数 链接
  • .run 文件有 bug,改用 .deb 文件安装 链接

基于我自己和我身边朋友的经历,以上三个方法根本无法解决开机无限登录的问题。

其实当我走完了所有流程后发现,其实出现安装失败,无限重启的根由是:安装独显驱动的时候不要让独显处于被占用状态,否则出错。什么叫被占用状态呢?当你把显示器的线( 通过HDMI 或者 DP口)接在独显上,一旦开机图形系统被自动后台启用后,独显就被占用了。

那么解决的方案其实很简单:

  • 对于 Intel 系列如 i7-6700K 这样自带集显的 CPU,可以通过拔线法配合后面的系统设置附加驱动安装法解决,这样最简单。也就是说,在装 N 卡驱动前,把显示器连接线一直插在 CPU 集显口上,驱动装完后再把线接回到独显上。
  • 对于 AMD 系列 CPU,很多都不带集显,显示器的线就只能插在独显口上。这种情况下得用后文的 ppa法 或者 .run文件 法安装驱动,也就是安装驱动时保持关闭系统图形界面,使独显自始至终不被占用。ppa法或者.run文件法是通用方法,适用于所有CPU。

以下是稍详细的方案说明:

1. 安装Ubuntu系统

这里我安装的是 Ubuntu 16.04 系统。若在安装过程中遇到开机黑屏,或者显示器提示频率超出范围,在开机时修改 grub 设置即可:开机时狂按键盘上的e键,进入 grub 编辑界面,在 quiet splash 后面加上 nomodeset。添加该参数的目的是让内核在加载 X11 Window 系统前不要加载视频驱动程序,转而采用基本的 BIOS 模式,避免前面的黑屏等不兼容情况出现。

2. 屏蔽开源驱动 nouveau

Nouveau 是 Linux 诸多发行版为 Nvidia 显卡提供的默认开源驱动程序,在显示效能上当然比不上 Nvidia 官方提供的默认驱动。因此,首先我们要卸载这个开源驱动,为安装官方闭源驱动做准备。

打开终端执行 (下面以 gedit 文本编辑器为例):

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

在新增的文件中写入以下内容保存:

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

然后在终端中执行:

echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u

检查 nouveau 开源驱动是否屏蔽成功:

lsmod | grep nouveau

若无内容输出,则说明 nouveau 已经屏蔽成功,可以进行下一步操作了,否则仔细检查以上操作有无操作上的失误。

3. 安装N卡驱动

安装驱动的方式有好几种,比如系统设置附加驱动安装法,官方 .run 驱动文件安装法,ppa 法和自行编译法。这里将前三种都大概讲一下,根据情况任选其一即可。

3.1 系统设置附加驱动安装法

注意:这种方法仅适用于拔线法,不适用于没有集显的CPU使用。因为这种方法是在图形界面里执行的,而没有集显口可用的情况下,独显是一直被占用的。

在系统设置里面更新软件源缓存列表后,在附加驱动里面勾选类似于 Nvidia-387 字样的私有驱动进行安装,装完重启电脑即可。

这一步若遇到安装 N 卡驱动时进度条一直卡在最后走不满的情况,可进终端用 top 指令查看是什么进程在占用 CPU。若是 aptd 进程长时间占用 100% CPU,在系统设置里面关闭所有系统更新相关的设置即可解决。

3.2 ppa 安装法

首先大致介绍一下 Ubuntu 的桌面图形系统的运作方式和相关概念。第一个概念是 DE (desktop environment), 即桌面环境,可以理解为整个图形界面的 GUI 显示模式,不同的 Ubuntu 定制版和同一定制版的不同版本采用的 DE 可能都不一样,常见的 DE 有界面简洁但是资源占用少的 Xfce,Ubuntu 14 和16 都采用的 Unity,以及 Ubuntu 17 后开始采用的 gnome 等等。第二个概念是 DM (Display Manager), 前面提到了 DE,用于管理 DE 的软件就是 DM 了,比如可以同时安装多个 DE,用 DM 去手动切换。Ubuntu 16 采用的 DM 叫 lightdm。

因此,这里安装显卡驱动时,我们直接把整个 DM 关闭掉就不会让 DE 占用独显了。DM 的存放位置在 /etc/init.d/ 文件夹下,里面一般带 dm 后缀的就是系统默认 DM 了。

ctrl+alt+F1进入文本模式:

关闭图形界面:

sudo /etc/init.d/lightdm stop

添加 ppa 源并更新缓存:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

安装驱动:

sudo apt-get install nvidia-xxx  # xxx是版本号,这里按tab选择版本即可

重启电脑或重新打开图形界面(sudo /etc/init.d/lightdm start, 然后 ctrl alt F6进入图形界面)

3.3 run文件安装法

Nvidia 提供的驱动文件格式是 .run 后缀的,去官网下载对应的驱动文件,然后按照 ppa 法关闭图形环境,在文本模式输入:

chmod a+x a.run  # a.run为驱动文件
sudo sh ./a.run

装完重启或者重新打开图形界面。

3.4 出错重来

如果操作过程中发现安装出错了要重新装驱动,首先得卸载驱动残余,再重新安装驱动:

sudo apt-get remove --purge nvidia*
sudo apt-get autoremove
sudo reboot

注: .run文件安装的驱动最好上面卸载可能不干净,最好先执行: sudo /usr/bin/nvidia-uninstall

3.5 装完检查

上述几种方法安装完驱动后,开机进入系统,屏幕右上角点击关于此计算机,图形一栏应该会显示这是NVIDIA 的显卡,说明独显驱动已安装成功。若仍然显示为 Intel 集显,可尝试手动切换到独显:

sudo prime-select nvidia

这时再输入指令:

prime-select query

若显示 nvidia 说明已切换到独显,但是要重启才能生效。

如果这一步仍然失败,一定是前面哪一步出错了。

4. 对于华硕主板配合拔线法安装的说明

在拔线法的情况下,安装 N 卡独显驱动前,需要把显示器线接在集显口上。然而某些华硕主板设置是默认关闭集显的,因此要先在主板设置中将其打开并暂时将优先级设为最高,再插线到集显接口,否则该接口无法使用。

更改方法:

开机时进入BIOS设置,依次进入 Advanced—>System Agent Configuration—>Graphics Configuration中,将 iGPU 设为开启,然后 Primary Display 设为 IGFX,保存重启。再把视频线接到主板上 CPU 那儿的集显接口上,开机进入 Ubuntu 系统。

根据第 3 部分教程安装完独显驱动后,再把显示器线接到独显口上,这时再去主板中启用独显:

上一步的步骤中把 Primary Display 设置为 PCIE 或者 Auto

5. 总结

总结起来一句话:给独显装驱动的时候,不要占用独显。凡是线插在独显口,又进入 GUI 图形界面操作的,一定失败!

如果你这里看到有广告,不妨点击一下,就是对本站最大的支持~



本文由 CaptainChen 创作
该文章采用 知识共享署名-非商业性使用 4.0 国际许可协议进行许可。转载请注明出处!
CopyRight © 2017 - 2020
本站已稳定运行 天 总访问量