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

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

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

一、下载CUDA安装包

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

二、禁用第三方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

注意:更改信息后一定要记得重启电脑!
整个操作如下图所示:
1
重启电脑后,可能无法进入图形化登录界面,症状类似如下界面,甚至可能完全黑屏:
11
解决方法:按快捷键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禁用:
4
5
6
7

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

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

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

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

如下图所示:
8
9
10

六、可能存在的问题

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

显卡驱动程序安装完毕重启电脑后,可能无法进入图形化登录界面,症状类似如下界面,甚至可能完全黑屏:
11
解决方法:按快捷键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 2018

Section "ServerLayout"
    Identifier     "layout"
    Screen      0  "nvidia" 0 0
    Inactive       "intel"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "keyboard"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "modesetting"
    Option         "AccelMethod" "None"
    BusID          "PCI:0@0:2:0"
EndSection

Section "Device"
    Identifier     "nvidia"
    Driver         "nvidia"
    BusID          "PCI:6@0:0:0"
EndSection

Section "Screen"
    Identifier     "intel"
    Device         "intel"
    Monitor        "Monitor0"
EndSection

Section "Screen"
    Identifier     "nvidia"
    Device         "nvidia"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "AllowEmptyInitialConfiguration" "on"
    Option         "IgnoreDisplayDevices" "CRT"
    Option         "ConstrainCursor" "off"
    SubSection     "Display"
        Depth       24
        Modes      "nvidia-auto-select"
    EndSubSection
EndSection

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

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nvidia"
    Inactive "intel"
EndSection

Section "Device"
    Identifier "intel"
    Driver "modesetting"
    BusID "PCI:0@0:2:0"
    Option "AccelMethod" "None"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:6@0:0:0"
    Option "ConstrainCursor" "off"
EndSection

Section "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显卡所需的驱动版本号,如下图所示:
12

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

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

sudo add-apt-repository ppa:graphics-drivers/ppa  
sudo apt-get update  
sudo apt-get install nvidia-390 # 此处的390要根据上面查询到的版本号适当更改
  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以按照以下步骤在 Ubuntu 16.04安装 CUDA 11.3: 1. 首先,确保你的 Ubuntu 16.04 系统已经安装了合适的 NVIDIA 显卡驱动。可以通过运行以下命令来检查: ``` ubuntu-drivers devices ``` 如果未安装驱动,请使用以下命令安装最新的稳定版本: ``` sudo apt-get update sudo apt-get install nvidia-driver-<version> ``` 其 `<version>` 是适用于你的显卡的驱动版本号。 2. 接下来,下载 CUDA 11.3 的安装包。你可以在 NVIDIA 的官方网站上找到适用于 Ubuntu 16.04CUDA Toolkit 下载链接。 3. 下载完成后,打开终端并进入下载目录。运行以下命令给安装包添加可执行权限: ``` chmod +x cuda_<version>_linux.run ``` 其 `<version>` 是 CUDA 11.3 的版本号。 4. 运行安装程序以开始安装。可以使用以下命令: ``` sudo ./cuda_<version>_linux.run ``` 安装过程会询问一些配置选项,可以根据需要进行选择。建议选择默认选项,除非你有特定的需求。 5. 安装完成后,编辑你的 `.bashrc` 文件以配置环境变量。运行以下命令打开文件: ``` nano ~/.bashrc ``` 6. 在文件末尾添加以下几行: ``` export PATH=/usr/local/cuda-<version>/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-<version>/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} ``` 确保替换 `<version>` 为你安装CUDA 版本号。 7. 保存并关闭文件后,运行以下命令使配置生效: ``` source ~/.bashrc ``` 8. 完成以上步骤后,你应该已经成功安装CUDA 11.3。可以通过运行以下命令验证安装: ``` nvcc --version ``` 如果输出显示了正确的 CUDA 版本号,则安装成功。 请注意,Ubuntu 16.04 可能不是 CUDA 11.3 的官方支持版本,因此在安装过程可能会遇到一些问题。如果遇到任何错误或问题,请参考 NVIDIA 官方文档或支持社区以获取更多帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值