相信使用过Apollo的同学都知道,如果使用传统推荐的方法:
1wgethttp://us.download.nvidia.com/XFree86/Linux-x86_64/375.51/NVIDIA-Linux-x86_64-375.51.run2chmod x./NVIDIA-Linux-x86_64-375.51.run3sudo./NVIDIA-Linux-x86_64-375.51.run–no-opengl-files-a-s
安装NVIDIA显卡驱动,结果一般会令人沮丧。
尤其对于ThinkPad系列笔记本电脑,几乎不可能成功。
社区荣誉布道师—贺博士的本篇文章为我们阐述了为Apollo项目安装NVIDIA显卡驱动的有效方法。
阿波君希望这篇文给感兴趣的同学带来更多帮助。
关于《Apollo 3.5的构建方法》,可参见贺博士的一篇博客。
关于《Apollo 3.5各功能模块的启动过程解析》,《Apollo项目代码迁移到Cyber RT框架的方法》可参见其另两篇博客。
到CUDA官网下载所需版本的CUDA安装包,具体如下图所示:
Ubuntu 16.04系统使用第三方驱动程序nouveau支持NVIDIA显卡,为了安装NVIDIA公司的原版驱动程序,需要将其禁用。
具体方法为:使用快捷键Ctrl Alt T打开一个终端。
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 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显示配置文件,之后再重启电脑。
这样就可以顺利使用系统自带的集成显卡驱动进行显示。
接下来,自然就是重新安装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『贡献越多,获得越多』的开源精神。为此我们开设了『开发者说』板块,希望开发者们能够踊跃投稿,更好地为广大自动驾驶开发者营造一个共享交流的平台!
* 以上内容为开发者原创,不代表百度官方言论。
﹏﹏﹏﹏﹏﹏﹏﹏ END﹏﹏﹏﹏﹏﹏﹏﹏