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

相信使用过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 安装显卡驱动程序后无法进入图形化界面
显卡驱动程序安装完毕重启电脑后,可能无法进入图形化登录界面,症状类似如下界面,甚至可能完全黑屏:
解决方法:
按快捷键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 4sectionserverlayout 5identifierlayout 6screen0nvidia00 7inactiveintel 8inputdevicekeyboard0corekeyboard 9inputdevicemouse0corepointer10endsection1112sectioninputdevice13#generatedfromdefault14identifierkeyboard015driverkeyboard16endsection1718sectioninputdevice19#generatedfromdefault20identifiermouse021drivermouse22optionprotocolauto23optiondevice/dev/psaux24optionemulate3buttonsno25optionzaxismapping4526endsection2728sectionmonitor29identifiermonitor030vendornameunknown31modelnameunknown32horizsync28.0-33.033vertrefresh43.0-72.034optiondpms35endsection3637sectiondevice38identifierintel39drivermodesetting40optionaccelmethodnone41busidpci:0@0:2:042endsection4344sectiondevice45identifiernvidia46drivernvidia47busidpci:6@0:0:048endsection4950sectionscreen51identifierintel52deviceintel53monitormonitor054endsection5556sectionscreen57identifiernvidia58devicenvidia59monitormonitor060defaultdepth2461optionallowemptyinitialconfigurationon62optionignoredisplaydevicescrt63optionconstraincursoroff64subsectiondisplay65depth2466modesnvidia-auto-select67endsubsection68endsection
正确的配置文件内容如下所示。
大家一定要在默认文件的基础上,将原文件内容修改为如下正确内容:
1sectionserverlayout 2identifierlayout 3screen0nvidia 4inactiveintel 5endsection 6 7sectiondevice 8identifierintel 9drivermodesetting10busidpci:0@0:2:011optionaccelmethodnone12endsection1314sectionscreen15identifierintel16deviceintel17endsection1819sectiondevice20identifiernvidia21drivernvidia22busidpci:6@0:0:023optionconstraincursoroff24endsection2526sectionscreen27identifiernvidia28devicenvidia29optionallowemptyinitialconfigurationon30optionignoredisplaydevicescrt31endsection
如果重启电脑后还是无法进入图形化登录界面,则进入文本终端后使用如下命令:
1sudorm/etc/x11/xorg.conf2sudotouch/etc/x11/xorg.conf
重新生成一个空白的x11显示配置文件,之后再重启电脑。
这样就可以顺利使用系统自带的集成显卡驱动进行显示。
接下来,自然就是重新安装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时发现出问题了,
docker进不去了,错误截图如下:
解决方法:
在docker外部使用如下命令缷载nvidia_docker:
1sudodpkg-rnvidia-docker
自apollo平台开放已来,我们收到了大量开发者的咨询和反馈,越来越多开发者基于apollo擦出了更多的火花,并愿意将自己的成果贡献出来,这充分体现了apollo『贡献越多,获得越多』的开源精神。为此我们开设了『开发者说』板块,希望开发者们能够踊跃投稿,更好地为广大自动驾驶开发者营造一个共享交流的平台!

南京成为全球地铁5G全覆盖里程最长的城市
富信半导体为扫地机器人产品提供一系列电子元件
GMIF2023 | 佰维存储:深化研发封测一体化布局 筑牢产品力护城河
中国5G专利排名第一
华大半导体国产工控MCU的希望
介绍简单可靠NVIDIA显卡驱动安装及各种意外情况解决方法
车载网关让无人车栩栩如生:一款性价比车载终端案例
新的人工智能系统可以提前六年检测出阿尔茨海默症 其准确率为100%
为汽车应用设计的警告信号发生器电路
倾角传感器的五大应用场景-传感器专题
LED正在改变所有的汽车
大数据分析和机器学习是数字化转型的过程中的两个重要支撑点
多功能界面锌主体的协同设计助力实用锌金属电池
L4无人重卡、重型无人机亮相618 助力物流调拨
2A 高效率升压 DC/DC 电压调整器LN3608AR-G介绍
WVD和STFT的定义及变换原理
大数据风控系统是什么样子的
LVDS接口电路及设计
LT3080是一款1.1A低压差线性稳压器
【成功案例】安全的FG25 SoC助力Nagano JRC开发下一代智能电表