超全面 | 裸机安装Ubuntu16.04+NVIDIA驱动410.78+CUDA10.0+cuDNN10.0+openCV3.4.2+相机驱动+yolov4+ROS+ORB-SLAM2+VINS


概要: 前段时间电脑又又又又崩了,隐约感觉可能是之前安装的anaconda与系统自带的python编译器、环境等产生了冲突。但是,经过很多努力,尝试了很多网上找的办法却都没有用,思来想去,干脆重装系统吧。这篇博客用来记录装机要点,也为后面可能的再次装机做了备忘录。
关键字: 重装系统; Ubuntu
 

1 准备U盘启动盘

   在装机之前需要将电脑中的重要资料备份,以防误删。U盘启动盘使用Universal USB Installer,这是个免安装软件,可以简单制作多种系统启动盘,包括ubuntu、windows等,不过需要先下载对应的iso文件。具体制作过程不赘述。

2 安装系统Ubuntu16.04

   为了规避比较复杂的分区配置,直接在安装步骤中选择“Erase disk and install Ubuntu”,这样启动盘会自己做分区,省得麻烦。

3 系统汉化+中文输入

   这些可以直接在 系统设置—文本输入/语言支持 中解决,这里也不过多叙述。注意,输入法的安装中不要选iBus,建议选fcitx。

4 安装google浏览器

   网上的很多教程都是在命令行里疯狂操作,搞得很复杂,但实际上只要下载谷歌的deb文件,如 google-chrome-stable_current_amd64.deb 之后,运行如下命令安装即可:

sudo dpkg -i google-chrome-stable_current_amd64.deb

5 安装NVIDIA驱动410.78

   驱动版本的选择与后续安装的CUDA和cudNN等都有关,如果后续要安装CUDA9.0,那么就用 系统设置—软件和更新—附加驱动—使用NVIDIA binary driver-version384.130来自nvidia-384(专有,tested) 即可,但若要安装CUDA10.0或更高的版本,就需要手动下载符合要求的NVIDIA驱动。首先附上CUDA与NVIDIA驱动版本适配对照表如图1所示(参考CUDA Toolkit Document):

图1 CUDA与NVIDIA驱动版本适配对照表

   由上图可知,为安装CUDA10.0,需要410.48以上的NVIDIA驱动。
   首先,检查现有驱动:

cat /proc/driver/nvidia/version
lsmod | grep nouveau
图2 检查现有驱动

   这说明尚未安装nvidia驱动,且nouveau正在运行。接下来需要禁用nouveau,也就是系统自带驱动:

sudo gedit /etc/modprobe.d/blacklist.conf

   在文件末尾添加:

blacklist nouveau
options nouveau modeset=0

   保存并关闭文件后运行:

sudo update-initramfs -u

   此时再度运行:

lsmod | grep nouveau

   没有输入就说明禁用成功。此时做一个总的检查,安装NVIDIA之前电脑中显卡与驱动的状态如图3所示:
   下图中用于查看状态的命令有:

lspci | grep -i nvidia
sudo dpkg --list | grep nvidia-*
cat /proc/driver/nvidia/version
lsmod | grep nouveau
图3 安装NVIDIA之前电脑中显卡与驱动的状态

   下载驱动的.run文件并将其移动到~ 路径( 注意,~路径就是用户路径,等同于/home/chandra)下(一般下载之后都是在 下载 文件夹下,这里之所以移动到~路径下,是因为系统汉化后,在禁用lightdm服务时,tty1的界面中无法显示中文,无法进入下载 文件夹):

NVIDIA-Linux-x86_64-410.78.run

   安装:

cd ~
sudo chmod a+x NVIDIA-Linux-x86_64-410.78.run
sudo service lightdm stop
sudo ./NVIDIA-Linux-x86_64-410.78.run -no-x-check -no-nouveau-check -no-opengl-files
sudo service lightdm start

   注意点一,这里sudo service lightdm stop是禁用桌面服务,之后会黑屏,此时同时按住Ctrl+Alt+F1进入tty1界面就可以运行你想运行的指令了。
   注意点二,安装驱动指令后面的3个-no-一定不要忘记,尤其是-no-opengl-files,可以防止循环登录现象。
   注意点三,如果出现循环登录现象,需要先将之前安装的额驱动删除,推荐使用 sudo apt-get remove nvidia-*,不推荐 sudo nvidia-uninstall

   安装完成后,使用reboot重启即可,用如下命令查看:

nvidia-smi

   得到如图4所示的结果,说明安装成功:

图4 NVIDIA驱动安装成功

6 安装CUDA10.0

   下载CUDA文件:

cuda_10.0.130_410.48_linux.run

   直接运行:

sudo ./cuda_10.0.130_410.48_linux.run

   对安装过程中显示的问题作如下答复:

accept
n
y
y
y
[Enter]
y
y
[Enter]

   也就是除了不安装驱动(因为上一步我们已经安装好了),其他都是yes和默认路径。安装一会儿后然后报错,如图5所示:

图5 安装CUDA报错

   看报错内容应该是少了5个.so文件,于是补装一些环境:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

   再次运行 sudo ./cuda_10.0.130_410.48_linux.run 即可成功。
   接下来是配置环境变量:

sudo gedit ~/.bashrc

   添加3个路径:

export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.0/bin:$PATH

   最后再输入命令:

source ~/.bashrc

   测试CUDA是否安装成功的第一种方法,终端输入nvcc -V,显示如图6所示则说明成功:

图6 nvcc -V测试CUDA安装成功

   测试CUDA是否安装成功的第二种方法,运行CUDA的samples:

cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

   结果如图7所示,表示CUDA安装成功:

图7 samples测试CUDA安装成功

7 安装cuDNN10.0

   下载与CUDA对应的cuDNN文件:

cudnn-10.0-linux-x64-v7.6.5.32.tgz

   接下来是安装cuDNN10.0。cuDNN的安装很简单,就是解压、换路径和改权限:

tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

   这就安装好了,现在检查安装结果,在终端输入:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

   如果出现版本号,就说明安装成功。整个过程如图8所示:

图8 cuDNN安装成功过程

8 安装openCV3.4.2

   首先下载opencv3.4.2的压缩包,并解压:

unzip opencv-3.4.2.zip

   进入解压之后的文件夹,输入cmake --verson查看是否安装cmake,如果不显示版本号,说明没有安装,输入命令安装cmake:

sudo apt-get install cmake  

   然后安装依赖库:

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

   接着就可以编译了,老套路:

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j

   平时安装时,cmake和make往往是出错最多的地方,不过这一次由于是纯净系统,所以安装过程十分顺利,一次成功。注意,如果电脑卡住,可能是算力不足导致,可将sudo make后的-j删去;同理,如果电脑算力充沛,可改为-j4或者-j8等。

   编译通过后不要忘了安装:

sudo make install

   至此编译安装完毕,接下来配置路径,将openCV的库添加到路径,从而可以让系统找到:

sudo gedit /etc/ld.so.conf.d/opencv.conf 

   打开的是一个空文件,在文件末尾添加路径:

/usr/local/lib

   保存并关闭文件,执行如下命令使得刚才的配置路径生效:

sudo ldconfig

   接下来修改bash.bashrc文件:

sudo gedit /etc/bash.bashrc

   在文件末尾添加两句:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

   保存并关闭文件,执行如下命令使得配置生效:

source /etc/bash.bashrc  

   并更新数据库文件:

sudo updatedb

   到这里所有的配置都已经结束。下面检查安装是否成功。方法一是运行我之前的博客SLAM学习 | 判断所安装的openCV版本中给出的例程,得到图9所示的结果:

图9 检查openCV安装成功方法一

   方法二是到如下路径中:

opencv/samples/cpp/example_cmake

   编译该例程,出现图10琐事结果并打开摄像头、左上角显示hello opencv:

图10 检查openCV安装成功方法二

   至此可确定openCV3.4.2安装成功。

9 安装相机驱动MYNT-EYE-S

   这一部分参考我之前的博客SLAM学习 | 使用小觅相机MYNTEYE-S1030收集数据集即可。由于openCV安装成功,且各版本皆适配,所以也是没有报错,一次成功。

10 安装yolov4

   在CUDA、cuDNN、openCV都成功安装的前提下,yolov4的安装配置非常简单,也不会报什么错(所以说前面的安装很重要)具体流程如下。
   首先当然是下载源码:

git clone https://github.com/AlexeyAB/darknet

   然后修改Makefile文件,若干行改为:

GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1

   然后直接在命令行中输入:

make

   编译结束后,会生成一个ubuntu系统下的可执行文件darknet,运行:

./darknet

   如果编译成功,会出现:

usage: ./darknet<function>

   下面就是测试。首先是图片:

./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg

   然后是视频:

./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights YOUR_VIDEO_PATH -thresh 0.6

   视频检测的某一帧结果如图11所示:

图11 视频检测的某一帧结果

   命令行中会显示物体的类别、帧率等相关信息,如图12所示:

图12 yolov4命令行信息

   至此,yolov4安装成功。

11 安装ROS

   这里的安装主要参考了这篇博客 Ubuntu16.04系统运行vins mono(完整版环境配置及编译)的内容,这里把主要的命令记录下来,防止忘记:

$sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
$sudo apt-get update
$sudo apt-get update
$sudo apt-get install ros-kinetic-desktop-full
$sudo rosdep init
$rosdep update

   这里需要注意的是,原博客说“这一步通常会失败,因为网站的原因,直接跳过即可”,我在操作过程中确实遇到了这样的报错,开始也是跳过,但是后来这个错又会跳出来,参考了另一篇博客得以解决。继续:

$echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$source ~/.bashrc
$sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

   到这里ros已经安装并配置完成,开始测试:

roscore

   如果安装成功,会显示如图13所示界面:

图13 roscore界面

   接下来是小乌龟测试,再开启两个终端,并分别输入两条命令:

$rosrun turtlesim turtlesim_node
$rosrun turtlesim turtle_teleop_key

   这样就可以用方向键控制小乌龟的移动了,效果如图14所示:

图14 ros小乌龟测试界面

   上文我提到的 $sudo rosdep init $rosdep update 的报错就是在乌龟测试这里出现的,解决措施摘抄如下:

输入
sudo rosdep init
出现报错
ERROR: default sources list file already exists:
    /etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize
接着输入
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
出现
Wrote /etc/ros/rosdep/sources.list.d/20-default.list
Recommended: please run
    rosdep update
接着输入
rosdep update 此处不可以加sudo 
即可解决

12 安装ORB-SLAM2

   ORB-SLAM2的安装有两种,既可以直接安装,也可以在ROS中安装。相关内容参考我之前写的博客:

   SLAM学习 | Ubuntu16.04 下从零开始配置环境并运行ORB-SLAM2(TUM, ROS+USB, 自制数据集)

13 安装VINS-Mono

(以后再更)

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值