严正声明:本文系作者davidhopper原创,未经许可,不得转载。

在ThinkPad系列笔记本电脑中使用过Ubuntu 16.04系统的同学都知道,NVIDIA显卡驱动程序特别难安装。以我使用的ThinkPad P50s为例,显卡型号为:GM108GLM [Quadro K620M](可以在命令终端中使用lspci | grep NVIDIA查询),按照网上大多数安装教程所示的下载.run程序安装的方法进行过N次(N>10)失败的尝试,最后几乎达到怀疑人生的地步了,其中的苦楚恐怕只有自己心里清楚。功夫不负有心人,我终于找到一种利用CUDA安装包来安装驱动的方法,操作比较简便,并且效果不错,现将操作过程记录下来,给有需要的同学参考借鉴。
虽然本文仅针对ThinkPad P50s型笔记本电脑进行介绍,但本文方法适用于所有机型,作者已在另外的台式机上进行过成功安装。

一、下载CUDA安装包

到CUDA官网下载最新的CUDA安装包,具体如下图所示:

二、禁用第三方NVIDIA显卡驱动程序nouveau

Ubuntu 16.04系统使用第三方驱动程序nouveau支持NVIDIA显卡,为了安装NVIDIA公司的原版驱动程序,需要将其禁用,具体方法为:使用快捷键Ctrl+Alt+T打开一个终端,使用vi编辑器在/etc/modprobe.d目录中创建文件:blacklist-nvidia.conf(文件名随便起,只要后缀为.conf并且自己觉得有意义就行):

sudo vi /etc/modprobe.d/blacklist-nvidia.conf

文件内容如下:

blacklist nouveau
options nouveau modeset=0

然后使用如下命令更新内核信息:

sudo update-initramfs -u

注意:更改信息后一定要记得重启电脑!
整个操作如下图所示:

重启电脑后,可能无法进入图形化登录界面,症状类似如下界面,甚至可能完全黑屏:

解决方法:按快捷键Ctrl+Alt+F1Ctrl+Alt+F6选择六个文本终端之间的任意一个,登录文本界面,然后执行第三步。

三、安装CUDA程序

在命令终端中进入步骤一下载CUDA安装包的目录,使用如下命令安装CUDA程序。因为CUDA安装包会检测更新NVIDIA显卡驱动程序,于是我们可以利用这个特性来安装显卡驱动。

sudo dpkg -i cuda-repo-ubuntu1604-9-2-local_9.2.148-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-2-local/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

四、重启电脑禁用安全启动

为了顺利应用新安装的NVIDIA显卡驱动,需要重启电脑并禁用安全启动(其实也可以不禁用安全启动,只不过签名比较麻烦,我也懒得费神去弄,如果不怕麻烦,可以参考该网页进行签名)。
禁用方法如下图所示,开机后按Enter再按F1键进入BIOS设置,将Secure Boot禁用:



五、验证驱动是否安装成功

特别注意:如果是台式机,其集成显卡和独立显卡的插孔位置不一样,在重启电脑前,需按下图所示,将显示器连接线从集成显卡接口切换到独立显卡,否则显示器将会因为接收不到显示信号而黑屏:

执行完步骤四,重新进入Ubuntu系统后,在命令终端中使用如下方法验证驱动已安装成功:

# 方法1
nvidia-smi
# 方法2
nvidia-settings

如下图所示:


六、可能存在的问题

6.1 安装显卡驱动程序后无法进入图形化界面

显卡驱动程序安装完毕重启电脑后,可能无法进入图形化登录界面,症状类似如下界面,甚至可能完全黑屏:

解决方法:按快捷键Ctrl+Alt+F1Ctrl+Alt+F6选择六个文本终端之间的任意一个,登录文本界面,然后使用命令:

sudo nvidia-xconfig

重新生成NVIDIA显卡的配置文件信息,配置文件路径为:/etc/X11/xorg.conf,文件内容如下,注意:如果是ThinkPad笔记本电脑,这个默认生成的文件内容是错误的,如果直接使用,一定不能正常加载NVIDIA显卡驱动程序!

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 396.37  (buildmeister@swio-display-x86-rhel47-05)  Tue Jun 12 14:50:28 PDT 2018Section "ServerLayout"Identifier     "layout"Screen      0  "nvidia" 0 0Inactive       "intel"InputDevice    "Keyboard0" "CoreKeyboard"InputDevice    "Mouse0" "CorePointer"
EndSectionSection "InputDevice"# generated from defaultIdentifier     "Keyboard0"Driver         "keyboard"
EndSectionSection "InputDevice"# generated from defaultIdentifier     "Mouse0"Driver         "mouse"Option         "Protocol" "auto"Option         "Device" "/dev/psaux"Option         "Emulate3Buttons" "no"Option         "ZAxisMapping" "4 5"
EndSectionSection "Monitor"Identifier     "Monitor0"VendorName     "Unknown"ModelName      "Unknown"HorizSync       28.0 - 33.0VertRefresh     43.0 - 72.0Option         "DPMS"
EndSectionSection "Device"Identifier     "intel"Driver         "modesetting"Option         "AccelMethod" "None"BusID          "PCI:0@0:2:0"
EndSectionSection "Device"Identifier     "nvidia"Driver         "nvidia"BusID          "PCI:6@0:0:0"
EndSectionSection "Screen"Identifier     "intel"Device         "intel"Monitor        "Monitor0"
EndSectionSection "Screen"Identifier     "nvidia"Device         "nvidia"Monitor        "Monitor0"DefaultDepth    24Option         "AllowEmptyInitialConfiguration" "on"Option         "IgnoreDisplayDevices" "CRT"Option         "ConstrainCursor" "off"SubSection     "Display"Depth       24Modes      "nvidia-auto-select"EndSubSection
EndSection

正确的配置文件内容如下所示。大家一定要在默认文件的基础上,将原文件内容修改为如下正确内容。特别注意:以下配置项中的BusID一定要使用NVIDIA默认生成的BusID,不然使用我的硬件ID,怎么可能让NVIDIA驱动你的显卡?这也就是要基于默认配置文件修改的原因。

Section "ServerLayout"Identifier "layout"Screen 0 "nvidia"Inactive "intel"
EndSectionSection "Device"Identifier "intel"Driver "modesetting"BusID "PCI:0@0:2:0"Option "AccelMethod" "None"
EndSectionSection "Screen"Identifier "intel"Device "intel"
EndSectionSection "Device"Identifier "nvidia"Driver "nvidia"BusID "PCI:6@0:0:0"Option "ConstrainCursor" "off"
EndSectionSection "Screen"Identifier "nvidia"Device "nvidia"Option "AllowEmptyInitialConfiguration" "on"Option "IgnoreDisplayDevices" "CRT"
EndSection

如果重启电脑后还是无法进入图形化登录界面,则进入文本终端后使用如下命令

sudo rm /etc/X11/xorg.conf
sudo touch /etc/X11/xorg.conf

重新生成一个空白的X11显示配置文件,之后再重启电脑,这样就可以顺利使用系统自带的集成显卡驱动进行显示。接下来,自然就是重新安装CUDA,以便正确安装NVIDIA显卡驱动程序了。

6.2 突然断电重启电脑后NVIDIA显卡驱动程序损坏

有一次突然断电,重启电脑后,运行一个tensorflow-gpu程序时,居然报错说不是NVIDIA显卡驱动,一查居然是NVIDIA显卡驱动程序损坏,操作系统重新启用集成显卡驱动nouveau,甚至还把步骤二中创建的黑名单文件/etc/modprobe.d/blacklist-nvidia.conf都给删除了,真是让人愤怒。
解决办法:重新执行步骤二至步骤五,再次安装NVIDIA显卡驱动。

七、其他安装方法

最近在网上还看到一种通过添加ppa源的安装方法,也很简单,我在Dell台式机上已顺利安装成功,但没有在笔记本上测试过,感兴趣的同学可以尝试一下。具体操作方法如下:

7.1 查找本机显卡所需的驱动版本号

到NVIDIA驱动下载官网上,搜索你机器上NVIDIA显卡所需的驱动版本号,如下图所示:

7.2 通过添加ppa源的方法安装驱动

打开一个命令终端,使用如下命令安装驱动,安装完毕后,重启电脑即可。

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-390 # 此处的390要根据上面查询到的版本号适当更改

Ubuntu 16.04系统中利用CUDA安装更新NVIDIA显卡驱动程序的方法相关推荐

  1. Linux用命令安装音乐软件,在Ubuntu 18.04系统中使用命令安装Qmmp音乐播放器的方法...

    在Ubuntu 18.04操作系统中安装Qmmp音乐播放器非常简单,只需要两段命令就可以搞定.下面介绍其方法. Qmmp音乐播放器介绍 Qmmp是一款开源基于Qt的多媒体播放器,提供Qt4及Qt5支持 ...

  2. 在Ubuntu 16.04系统中,将Logitech G920方向盘连接到Carla服务器

    注: 电脑是win10 + Ubuntu 16.04双系统 我们用Logitech g29方向盘的程序来模拟G920方向盘,所以接下来运行出现g29等字样,是没有问题的 1.jstest-gtk 1) ...

  3. linux下如何安装自带编译器的codeblocks,在Ubuntu 16.04系统中使用PPA源安装Code Blocks的方法...

    本文介绍在Ubuntu 16.04操作系统中使用PPA源安装Code Blocks的方法,可以先参考在Ubuntu系统中安装Code::Blocks的方法一文. 使用PPA源安装Code Blocks ...

  4. linux升级安装失败,更新Ubuntu 16.04系统中安装Adobe Flash更新失败的解决

    最近在更新 Ubuntu 16.04系统的时候,发现总是在安装 Adobe Flash更新的时候失败,提示如下信息: 正在处理用于 update-notifier-common (3.168.5) 的 ...

  5. Ubuntu 16.04下通过系统软件商店安装flameshot后无法启动问题解决方法

    前言 日常工作中经常用到截图软件进行信息采集和工作记录,以用作工作备忘或者是写博客的素材资料.在Windows和macOS平台下有一款集截图和贴图于一体的神器Snipaste*能够极大的提高工作效率和 ...

  6. ubuntu 16.04系统中nvidai、cuda、cudnn安装及注意事项

    一.NVIDAI driver显卡驱动安装 首先看一下笔记本显卡型号 lspci |grep VGA 在命令行敲过这个命令后,有些台式机或笔记本会显示nvidia显卡,如下所示: 但是我的笔记本电脑 ...

  7. Ubuntu 16.04系统中编译安装FFmpeg 4.2.1(Android NDK r20)

    1.下载FFmpeg 4.2.1的源码,下载Android NDK r20,安装yasm sudo apt-get install yasm 2.解压缩源码包和Android NDK 3.修改ffmp ...

  8. xmpp安装到Linux服务器,在Ubuntu 18.04/16.04系统中安装Ejabberd XMPP Server的方法

    本文介绍在Ubuntu 18.04.Ubuntu 16.04系统中安装Ejabberd XMPP Server的方法,我们将从二进制安装程序安装ejabberd,它提供了一个功能齐全的ejabberd ...

  9. linux终端装什么系统下载软件,在Ubuntu 18.04系统中下载安装Termite终端的方法

    以下介绍在Ubuntu 18.04系统或是Ubuntu 16.04系统中安装Termite终端的方法,目前Termite在默认存储库中不可用,必须从源代码安装.Termite是一个以键盘为中心的基于V ...

最新文章

  1. 在VMware Workstation中安装Ubuntu设置网络连接
  2. eclipse 将javaWeb项目转化成maven项目
  3. 30分钟?不需要,轻松读懂IL
  4. 数字图像处理特效中彩色墨水效果的设计与实现
  5. 【枭·音频】声随意动——浅谈《暗影火炬城》声音设计
  6. 【动态规划】城市交通
  7. 打印机用word打文档时在背面打印
  8. lisp成套电气设计_关于成套设计转电气设计问题?
  9. 【考试】2019.3计算机等级考试所有科目
  10. oracle付款汇兑损益怎么产生,汇兑损益如何进行账务处理?
  11. Android手机怎样投屏到win10(无需联网)
  12. 计算起始时间与结束时间之间有哪些月份和周数
  13. centos的linux内核源码下载方法
  14. 分布式数据库稳定性资料整理
  15. 网页偶尔出现 No input file specified 提示
  16. 余弦相似度 高维数据_从勾股定理到余弦相似度-程序员的数学基础
  17. 华为面向5G的室内覆盖数字化灵活容量升级
  18. 已有项目依赖cordovaLib打包后调用插件崩溃问题
  19. 网址保存到桌面快捷方式
  20. matlab/6-sps并联机构运动学位置反解

热门文章

  1. 不愿意和别人打交道_聪明人如何与不喜欢的人打交道
  2. 经典的 X-ray 冠脉造影图像的重建
  3. linux安装错误代码1,gdal安装错误“错误:命令'x86-linux-gnu-gcc'失败,退出状态为1”...
  4. 51 个基本的机器学习面试问题和答案
  5. dropzone多文件上传
  6. fabric 智能合约开发详解
  7. 搭建Nginx图片服务器
  8. AxTools CodeSMART 2013 for VB6 完整版
  9. 农村电商倒逼农业物联网加速 养殖户日常维护实现手机操控
  10. python获取pydoc