0

    介绍简单可靠NVIDIA显卡驱动安装及各种意外情况解决方法

    2023.06.25 | admin | 190次围观

    相信使用过Apollo的同学都知道,如果使用传统推荐的方法,安装NVIDIA显卡驱动,结果一般会令人沮丧。尤其对于ThinkPad系列笔记本电脑,几乎不可能成功。社区荣誉布道师—贺博士的本篇文章为我们阐述了为Apollo项目安装NVIDIA显卡驱动的有效方法。

    阿波君希望这篇文给感兴趣的同学带来更多帮助。

    关于《Apollo 3.5的构建方法》,可参见贺博士的一篇博客。

    关于《Apollo 3.5各功能模块的启动过程解析》,《Apollo项目代码迁移到Cyber RT框架的方法》可参见其另两篇博客。

    到CUDA官网下载所需版本的CUDA安装包,具体如下图所示:

    Ubuntu 16.04系统使用第三方驱动程序nouveau支持NVIDIA显卡,为了安装NVIDIA公司的原版驱动程序,需要将其禁用。

    具体方法为:使用快捷键Ctrl+Alt+T打开一个终端。

    使用vi编辑器在/etc/modprobe.d目录中创建文件:

    blacklist-nvidia.conf

    (文件名随便起,只要后缀为.conf并且自己觉得有意义就行):

    1sudovi/etc/modprobe.d/blacklist-nvidia.conf

    文件内容如下:

    1blacklistnouveau2optionsnouveaumodeset=0

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

    1sudoupdate-initramfs-u

    注意:更改信息后一定要记得重启电脑!

    整个操作如下图所示:

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

    解决方法:

    按快捷键Ctrl+Alt+F1至Ctrl+Alt+F6

    选择六个文本终端之间的任意一个,登录文本界面,然后执行第三步。

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

    1sudodpkg-icuda-repo-ubuntu1604-9-2-local_9.2.148-1_amd64.deb2sudoapt-keyadd/var/cuda-repo-9-2-local/7fa2af80.pub3sudoapt-getupdate4sudoapt-getinstallcuda

    为了顺利应用新安装的NVIDIA显卡驱动,

    需要重启电脑并禁用安全启动(其实也可以不禁用安全启动,只不过签名比较麻烦)。

    禁用方法如下图所示,

    开机后按Enter再按F1键进入BIOS设置,

    将Secure Boot禁用:

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

    1#方法12nvidia-smi3#方法24nvidia-settings

    如下图所示:

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

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

    解决方法:

    介绍简单可靠NVIDIA显卡驱动安装及各种意外情况解决方法

    按快捷键Ctrl+Alt+F1至Ctrl+Alt+F6

    选择六个文本终端之间的任意一个,登录文本界面,然后使用命令:

    1sudonvidia-xconfig

    重新生成NVIDIA显卡的配置文件信息,配置文件路径为:

    /etc/X11/xorg.conf,文件内容如下。

    注意:这个默认生成的文件内容是错误的,如果直接使用,一定不能正常加载NVIDIA显卡驱动程序!

    1#nvidia-xconfig:Xconfigurationfilegeneratedbynvidia-xconfig 2#nvidia-xconfig:version396。37(buildmeister@swio-display-x86-rhel47-05)TueJun1214:50:28PDT2018 3 4Section"ServerLayout" 5Identifier"layout" 6Screen0"nvidia"00 7Inactive"intel" 8InputDevice"Keyboard0""CoreKeyboard" 9InputDevice"Mouse0""CorePointer"10EndSection1112Section"InputDevice"13#generatedfromdefault14Identifier"Keyboard0"15Driver"keyboard"16EndSection1718Section"InputDevice"19#generatedfromdefault20Identifier"Mouse0"21Driver"mouse"22Option"Protocol""auto"23Option"Device""/dev/psaux"24Option"Emulate3Buttons""no"25Option"ZAxisMapping""45"26EndSection2728Section"Monitor"29Identifier"Monitor0"30VendorName"Unknown"31ModelName"Unknown"32HorizSync28。

    0-33。033VertRefresh43。0-72。034Option"DPMS"35EndSection3637Section"Device"38Identifier"intel"39Driver"modesetting"40Option"AccelMethod""None"41BusID"PCI:0@0:2:0"42EndSection4344Section"Device"45Identifier"nvidia"46Driver"nvidia"47BusID"PCI:6@0:0:0"48EndSection4950Section"Screen"51Identifier"intel"52Device"intel"53Monitor"Monitor0"54EndSection5556Section"Screen"57Identifier"nvidia"58Device"nvidia"59Monitor"Monitor0"60DefaultDepth2461Option"AllowEmptyInitialConfiguration""on"62Option"IgnoreDisplayDevices""CRT"63Option"ConstrainCursor""off"64SubSection"Display"65Depth2466Modes"nvidia-auto-select"67EndSubSection68EndSection

    正确的配置文件内容如下所示。

    大家一定要在默认文件的基础上,将原文件内容修改为如下正确内容:

    1Section"ServerLayout" 2Identifier"layout" 3Screen0"nvidia" 4Inactive"intel" 5EndSection 6 7Section"Device" 8Identifier"intel" 9Driver"modesetting"10BusID"PCI:0@0:2:0"11Option"AccelMethod""None"12EndSection1314Section"Screen"15Identifier"intel"16Device"intel"17EndSection1819Section"Device"20Identifier"nvidia"21Driver"nvidia"22BusID"PCI:6@0:0:0"23Option"ConstrainCursor""off"24EndSection2526Section"Screen"27Identifier"nvidia"28Device"nvidia"29Option"AllowEmptyInitialConfiguration""on"30Option"IgnoreDisplayDevices""CRT"31EndSection

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

    1sudorm/etc/X11/xorg.conf2sudotouch/etc/X11/xorg.conf

    重新生成一个空白的X11显示配置文件,之后再重启电脑。

    这样就可以顺利使用系统自带的集成显卡驱动进行显示。

    接下来n卡驱动无法登录,自然就是重新安装CUDA,以便正确安装NVIDIA显卡驱动程序了。

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

    开发的过程中开发者们还会碰到很多意外情况,再举一个小例子。

    有一次突然断电,我重启电脑后,运行tensorflow-gpu程序时,

    居然报错说不是NVIDIA显卡驱动。

    我一查居然是NVIDIA显卡驱动程序损坏,

    操作系统重新启用集成显卡驱动nouveau,

    甚至还把步骤二中创建的黑名单文件

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

    都给删除了,实在是耽误了不少时间。怎么解决呢?

    解决办法:

    重新执行步骤二至步骤五,再次安装NVIDIA显卡驱动。

    Docker内部安装NVIDIA显卡驱动的步骤比较简单,下面阐述之。

    在命令终端内,使用如下命令安装Docker内部的NVIDIA显卡驱动:

    1#启动并进入Docker 2bashdocker/scripts/dev_start.sh-C 3bashdocker/scripts/dev_into.sh 4#更新安装源 5sudoaptupdate 6#查看并安装NVIDIA显卡驱动 7#此处的版本号396要与Docker外部一致! 8aptsearchnvidia-396 9sudoaptinstallnvidia-39610#查看显卡驱动是否安装成功11nvidia-smi

    首先确保当前需要保存的Docker image处于活动状态(未被关闭),使用如下命令保存:

    1#查看当前活动的Dockerimage2dockerps3#保存本地Dockerimage4#-p表示保存时暂停当前Dockerimage的运行5#a45572938fcd表示Dockercontainerid,它与你的机器相关,注意更换为你的id6#registry.docker-cn.com/apolloauto/apollo表示repository(或称image),不需改变7#davidhopper_dev表示tag,可以自己随意命名8dockercommit-pa45572938fcdregistry.docker-cn.com/apolloauto/apollo:davidhopper_dev

    使用如下命令加载步骤一中保存的本地Docker image:

    1#启动修改后的Docker2#-C表示使用国内服务器3#-l-tdavidhopper_dev表示基于本地标签为davidhopper_dev的Dockerimage拉取4bashdocker/scripts/dev_start.sh-C-l-tdavidhopper_dev5#进入Docker6bashdocker/scripts/dev_into.sh7#查看显卡驱动是否已正确保存8nvidia-smi

    2.4.1 不小心使用

    docker/setup_host/install_nvidia_docker.sh

    脚本安装nvidia_docker,导致无法进入Docker

    之前我在Docker内部安装NVIDIA显卡驱动前,

    曾经尝试过在Docker外部使用如下命令安装nvidia_docker:

    1bashdocker/setup_host/install_nvidia_docker.sh

    安装完毕后,重启Docker时发现出问题了n卡驱动无法登录

    Docker进不去了,错误截图如下:

    解决方法:

    在Docker外部使用如下命令缷载nvidia_docker:

    1sudodpkg-rnvidia-docker

    自Apollo平台开放已来,我们收到了大量开发者的咨询和反馈,越来越多开发者基于Apollo擦出了更多的火花,并愿意将自己的成果贡献出来,这充分体现了Apollo『贡献越多,获得越多』的开源精神。为此我们开设了『开发者说』板块,希望开发者们能够踊跃投稿,更好地为广大自动驾驶开发者营造一个共享交流的平台!

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论