配置一个环境是十分重要的事情。再次记录环境配置流程以便自己下次再使用。坑是真的多,每次都要翻个好几遍。先说在前,很有可能你会出错,毕竟这东西本来就是写给我自己的,酌情阅读,成了刷6,备份系统
搭配环境内容有Ros melodic(机器人操作系统18.04对应版本),Cuda=10.0(Nvidia显卡驱动,cuda toolkit) , Cudnn=7. 4.2(深度学习库), RoboWare (ROS IDE), aria2c 和 BaiduExport, 更换deb国内软件源,Anaconda3,联想笔记本关闭无线驱动冲突。
我笔记本型号为 联想Y7000K 2019 , Nvida 1660ti 和 Intel集显(万恶之源!!)
实验室要用zed做目标检测和orb-SLAM。最近先整整软件,之后可能会先几篇有关凸优化和非线性规划的一些理解。ICA,PCA算法讲解,cartographer讲解也有想法。想写的有点多,我看时间吧
!!!看好我的是ubuntu18.04.1。为什么选这个,主要是CUDA有对应版本要求,具体看CUDA版本对应关系。
1.安装没啥特别多可讲的,直奔Ubuntu官网下载系统镜像。导入到UltraISO制作启动盘。在Windows下预留好空间后直接重启,根据主板型号选择某种方式进入BIOS界面。将u盘拉到首选项后退出BIOS。进入启动盘安装。
2.分区选择,如果无脑装软件,建议根目录多放一点空间。一般deb默认安装到根目录下。/boot单独拿出来放内核备份,/home主要是个人空间。交换空间相当于虚拟内存一般等同于内存大小。
3.选择自定义分区安装ubuntu
挂载点 | 说明 | 空间类型 | 日志类型 | 空间 |
---|---|---|---|---|
/ | 根目录 | 主分区 | ext4 | 30G以上(我天天装一堆垃圾的所以就多分一点) |
/boot | 引导目录 | 逻辑分区 | ext4 | 500M以上(如果天天更新Ubuntu这个分区可能会溢出,清理没用的内核) |
/swap | 交换空间 | 逻辑分区 | ext4 | 16G以上(虚拟内存做数据交换用,犹豫可等同于物理内存大小) |
/home | 主目录 | 逻辑分区 | ext4 | 剩下的空间(自己的文件,软件,下载,书啥的) |
4.等着完事就好了。
我安装完上来就不能上网,联想驱动与ubuntu默认无线网卡驱动是有冲突的。
看一下驱动状况
rfkill list all
打卡本地启动项,开机直接闭掉联想驱动
sudo gedit /etc/rc.local
echo "你的密码" | sudo modprobe -r ideapad_laptop
reboot后可以正常联网
国外的有点慢,下点什么都要等,不过等下载可以看手机和摸鱼。喜欢摸鱼的筒子们就不要看了。
1.备份现有deb源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
2.打开deb源文件
gedit /etc/apt/sources.list
3.注释原文件内的源并添加国内源
#阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
#中科大源(学校还是比较顶)
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
#清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
4.更新源
sudo apt-get update
5.不要使用
下面指令会更新所有源,你的内核版本,系统版本会被更新,这个指令只是摆在这里,不要使用。这介绍一些概念
sudo apt-get dist-upgrade
sudo apt-get upgrade
由于包与包之间存在各种依赖关系。upgrade只是简单的更新包,不管这些依赖,它不和添加包,或是删除包。而dist-upgrade可以根据依赖关系的变化,添加或删除包。
upgrade:系统将现有的Package升级,如果有相依性的问题,而此相依性需要安装其它新的Package或影响到其它Package的相依性时,此Package就不会被升级,会保留下来。
dist-upgrade:可以聪明的解决相依性的问题,如果有相依性问题,需要安装/移除新的Package,就会试着去安装或者移除包。 (有点风险的升级)
6.常用解决包的依赖问题指令
用之前记得安装一下apt-get一下这个包,这个包会通过数据库尝试提供解决依赖方案问题,不是万能的。大量的依赖冲突问题无法解决。
sudo aptitude install <deb>
7.常见修复指令
sudo apt-get -f install
在ubuntu系统终端下,用apt-get install 安装软件的时候,如果在未完成下载的情况下将终端中断,此时 apt-get进程可能没有结束。结果,如果再次运行apt-get install 命令安装,可能会发生下面的提示:
无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
解决办法如下:
终端输入 ps aux ,列出进程。找到含有apt-get的进程,直接sudo kill PID。
强制解锁,命令
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
ubuntu 18.04不再有rc.local。开机自启这个还是比较好用的,反正我是装了。
建立软链接 /lib/systemd/system/rc-local.service
链接到 /etc/systemd/system/
ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
cat输出一下,可以明白启动顺序和依赖关系
cd /etc/systemd/system/
cat rc-local.service
ConditionFileIsExecutable=/etc/rc.local
After=network.target
ConditionFileIsExecutable指定了执行的文件,
After 表示在 network.target 这个target后面进行执行。也就是网络启动完成之后,执行 /etc/rc.local 文件。
[Service] 区块:启动行为,如何启动,启动类型。
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
创建/etc/rc.local文件,赋可执行权限
touch /etc/rc.local
sudo touch /etc/rc.local
sudo chmod a+r /etc/rc.local
编辑rc.local,添加需要开机启动的任务,加一下启动时依赖的环境。这里是制定通过bash来执行文件,zsh自己改一下。
#!/bin/bash
## 你的code
sudo apt-get install aria2 #aria2下载
sudo mkdir ~/.aria2 #新建文件夹
sudo touch ~/.aria2/aria2.session #新建session文件
sudo chmod 777 ~/.aria2/aria2.session #设置aria2.session可写
sudo vim ~/.aria2/aria2.conf #创建配置文件
dir="你的路径"
disable-ipv6=true
#打开rpc的目的是为了给web管理端用
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
#rpc-listen-port=6800
#断点续传
continue=true
input-file=~/.aria2/aria2.session
save-session=~/.aria2/aria2.session
#最大同时下载任务数
max-concurrent-downloads=20
save-session-interval=120
# Http/FTP 相关
connect-timeout=120
#lowest-speed-limit=10K
#同服务器连接数
max-connection-per-server=10
#max-file-not-found=2
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
check-certificate=false
#http-no-cache=true
不多说,网上教程一堆
开启命令加-D 可打开后台下载。懒得记这条指令,在rc.local里面加入可开机自启。
sudo aria2c --conf-path=~/.aria2/aria2.conf
可视化使用Aria2GUI 或者 web yaaw,可以可视化进度并设置最大连接数,流量控制,没太多好讲,只需要注意检测口设置本地回环,端口号为6800。
添加入ROS源。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
或者添加中科大国内ROS镜像源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
设置密钥
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
有可能你在用这条指令时有授权过期问题,注意报错信息会提供No publication xxxxx。记住新密钥后,更新上条指令密钥。
更新源,安装ROS
sudo apt-get update
sudo apt-get install ros-melodic-desktop-full
安装完成后,可以用下面的命令来查看可使用的包:
apt-cache search ros-melodic
初始化ROS
sudo rosdep init
rosdep update
将ROS主路径加入环境中,直接在~/.bashrc里改也可以。我用的是bash,zsh或者其他shell不同。
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
一些插件
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
roscore测试就好了
当从网上git什么东西时,缺一堆依赖项,使用下面命令,指定workspace和ROS版本号,安装相关依赖项。
rosdep install --from-paths WORKSPACE --ignore-src --rosdistro=ROSDISTRO
rosdep install --from-paths src --ignore-src --rosdistro meldoic -y
一个是你的显卡需要装驱动,另一个是你第一次打开直接卡住。默认第一次打开从国外下载model模型。
ROS gazebo model ORSF
开源机器人组织放的模型
解压放到~/.gazebo/models路径下
搞深度学习都希望用GPU加速计算自己的算法。尤其是做视觉方向的。异构并行GPU多核处理远远快于传统cpu串行处理速度。只要你的网络结构设计到大规模矩阵运算,卷积运算。差别就更大了。cpu版本的框架3层for循环计算卷积层权重,GPU可以利用多核的力量并行计算。GPU不多说,i7版本6核,训练直接满载,就不要想还有功夫给你超线程。GPU上千核,单核能力不如i7单核,但我人多啊。不要问,问就是Nvidia。
不要认为越高越好,选择路线如下
Nvidia驱动版本>CUDA版本=cuDnn版本>你要的学习框架(TensorFlow,pytorch,MXnet,etc)
你可能尝试上来就装你的CUDA,要不就是Geforce的驱动。然后你的电脑要不是循环登陆,要不就是图形分辨率出错,或者更多奇怪的bug。比如我,我在BIOS关闭集显后,屏幕背光没有办法调整。我很无奈。Intel集显在Ubuntu是绝对的王者,完美搭配Linux环境。Nvidia嘛,就有点坑。
不多说,更详细的信息在Nvidia CUDA toolkit 官网
每个CUDA文档给了各个版本关系,自己需要做调整。CUDA自带驱动,但是Cuda toolkit并不带驱动 ,分开还是合着装看你的咯。
tensorflow版本信息
bb一句,学习框架的选择似乎每个人都有不同的见解主流框架Mxnet,Pytorch,CNTK,Caffe,Theano。选择很多,如果你只是一个刚入门的萌新,那么你所要关注并不是这些框架哪个性能好,速度快,灵活,文档丰富,等等。这基本不是你要考虑的内容。你最需要关注的就是哪个框架生态好,社区好。这样你可以利用这些资源快速入门和学习。
显示Nvida系列驱动模块,如果什么都没显示而且你的确装了这类东西。你的主板驱动需要更新一下。
lspci | grep -i nvidia
显示ubuntu release和分版本号,看看你的内核ok不ok
uname -m && cat /etc/*release
安装内核不同可能导致失败。
当前内核版本查看
uname -r
假设我安装kernel = 4.4.0-98-generic
sudo apt-get install linux-image-extra-4.4.0-98-generic
查看安装成功
dpkg -l | grep 4.4.0-98-generic
更新引导
sudo update-grub
升级内核同理
但你可能需要更改默认内核启动位置
查看当前C/C++编译版本
gcc --version
有些版本不能在apt上下载,系统装机默认的是7.4.0。我就写一下如何改到其他版本gcc
gcc 网站
下载自己想要的版本。
根据压缩格式解包
tar zxvf gcc-7.3.0.tar.gz
新生成的gcc-这个目录被称为源目录。
目标目录(用objdir表示)是用来存放编译结果的地方。gcc建议编译后的文件不要放在源目录
建立新的目录存放构建文件,名字无所谓,路径写好就行
mkdir //
cd gcc-bulild-
在目标目录 构建文件下配置下,配置的目的是决定将GCC编译器安装到什么地方,支持什么语言以及指定其它一些选项等。其中,源文件不能与构建文件或者目的路径相同。
配置是通过执行源文件下的configure来完成的。其命令格式为
将gcc安装到/usr/local/gcc-目录下。
在构建目录下
../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
将gcc安装在/usr/local/gcc-7.3.0目录下,支持C/C++
在构建文件下编译,解释一下-j表示你编译时想用的核心数量,自己看看cpu在写。生成makefile。
make -j12
执行makefile将编译好的库文件等拷贝到目的目录中
sudo make install
至此,gcc 7.3.0安装过程就完成了。
我加一句,假设你的确成功安装了指定版本gcc(比如你用apt),/usr/local/下也有你的gcc版本,但你终端显示版本仍然是原来版本,即你没有新定义软链接。bash默认调用/usr/local/gcc而你的叫/usr/local/gcc-。ln做软链接即可成功改过来
假设,我说的是假设 你的kernel版本满足要求,下面指令解决kernel header问题。
sudo apt-get install linux-headers-$(uname -r)
CUDA冲突,下面指令卸载cuda,XY为你的Cuda 版本
sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
要安装驱动,必须首先禁用Nouveau驱动程序。 Nouveau是linux默认第三方驱动,Linux的每个发行版都有一个禁用Nouveau的不同方法。
如果以下命令打印任何内容,则会加载Nouveau驱动程序:
lsmod | grep nouveau
在/etc/modprobe.d/blacklist-nouveau.conf
中创建一个文件,其中包含以下内容:
blacklist nouveau
options nouveau modeset=0
更新内核,reboot后lsmod无法搜到Nouveau
sudo update-initramfs -u
我是被坑了,我一开始使用cuda默认的驱动,反正安完显示驱动出问题。它自带的驱动不一定适合你的显卡,在官网找你的驱动支持的型号,分开安装。安装驱动时要关闭图形界面。18版本不再支持使用lightdm
关闭界面。只安装CUDAtoolkit不需要关闭图形界面。
安装驱动时,安装程序还会询问是否应安装openGL库。如果你的显卡不是NVIDIA GPU,那就不要安装NVIDIA openGL库。否则你的非Nvidia的显卡下的openGL库会被覆盖掉(对就是你那该死的intel集显)。然后你得到图形界面无法工作。 如果执行单行安装,则应使用–no-opengl-libs选项来阻止安装openGL库。
/etc/X11/xorg.conf可能需要修改。在某些情况下,nvidia-xconfig可用于自动生成适用于系统的xorg.conf文件。对于非标准系统,具有多个GPU的系统(比如你有个集显),建议手动编辑xorg.conf文件。我就不多bb了
新的关闭图形界面方法,记得reboot
sudo systemctl set-default multi-user.target
开启图形界面
sudo systemctl set-default graphical.target
CuDnn 下载位置
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64
sudo chmod a+r /usr/local/cuda-1.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn*
卸载Cuda
sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
驱动卸载
sudo /usr/bin/nvidia-uninstall
或者apt-get强制卸载
sudo apt-get autoremove --purge nvidia*
做为最好用的环境docker,我觉得应该要装上。建立了一个docker来存放不同的环境。如果你十分喜欢往自己/lib
下堆一堆东西,最后导致依赖问题。那我也不阻拦。
介绍一下常用指令
环境创建
conda -V #显示版本
conda list #显示当前环境下的包
conda create -n env-name #新建环境
conda create -f environment.yaml #根据yaml配置文件创建环境
conda env-name export > enviornment.yaml #导出yaml配置文件到当前路径
conda info --envs #显示所有环境名字
conda update #更新conda版本
conda search package-name #查询conda下包的信息
conda install package-name= #安装指定版本或者最新的包
conda remove package-name #删除包
conda remove --all #清空环境
source activate env-name #激活一个环境
sourve deactivate #退出当前环境,进入base下
pip也可以安装,不多讲。
加入你init了conda,安装下有一个选项。恭喜你,你的roboware IDE可能不好使了。在bash下查看python显示链接到anaconda下的。ROS目前只支持python2,未来将支持python3.记得创建一个ros环境使用python2
github Roboware
没太多可讲,ros专用IDE,挺好用的。
这次就到这吧,忒累了。