1 前期知识
1.1 what is docker
知乎 | 什么是docker?
1.2 install docker
| Docker 安装
1.3 image and container
image比作程序或者曲子,container比作进程或者演奏,run一个container,无论如何折腾,都会影响image,补充,如果要保存对container的修改,参考docker的commit命令。
知乎 | image 和 container 比较
1.4 what is x86
x86 is the generic name for Intel processors released after the original 8086 processor.
维基百科 | x86
1.5 Linux x86_64 with kernel version
uname -r
or
cat /proc/version
itsfoss | Check Linux Kernel version
1.6 docker version
apt-cache madison docker-ce
| Docker安装 - 4.安装docker
1.7 GPU Architecture
lspci -nn | grep '\[03'
or
lspci | grep VGA
askubuntu | NVIDIA GPU
1.8 NVIDIA drivers and CUDA
显卡:GPU of NVIDIA,其并行计算能力满足深度学习本身对大量计算的需要;
驱动:没有显卡驱动,就不能识别GPU硬件,不能调用计算资源。补充,NVIDIA在Linux上驱动安装特别麻烦,尤其对新手简直就是噩梦,需要屏蔽第三方显卡驱动;
CUDA:NVIDIA推出只用于自家GPU的并行计算框架,只有安装此框架才能进行复杂并行计算,主流深度学习框架都基于CUDA进行GPU并行加速,几乎无一例外;
cudnn:针对深度卷积神经网络的加速库;
结论:drivers不是CUDA。
知乎 | 显卡、驱动、CUDA
1.9 NVIDIA docker and CUDA
NVIDIA designed NVIDIA-Docker in 2016 to enable portability in Docker images that leverage NVIDIA GPUs.
首先,安装docker;然后,安装NVIDIA diver;然后,安装NVIDIA docker;最后,给容器安装CUDA及cudnn。
结论:CUDA不在NVIDIA docker之前安装,而是作为image在NVIDIA docker之后安装,安装在NVIDIA docker(容器)里面。
官网 | GPU in container
1.10 What is GPU
NVIDIA graphics processing units
2 Secure Boot、分区表类型、重复启动问题的修复
2.1 Secure Boot
问题如下图所示,安装驱动或者CUDA就会出现,解决的方法是禁用系统的安全启动,
Attention!安装系统时,一定要把安全启动和快速启动关闭,关闭方法以个人电脑距离如下:
华硕主板
开机启动,Delete键进入UEFI BIOS Utility - EZ Mode
右下角-Advanced Mode(F7)
启动
快速启动:disabled
安全启动菜单:状态|关闭,密钥|未加载,操作系统类型|其他
2.2 转换磁盘分区表类型
这里相关的理论知识欠缺
硬盘的分区表类型有两类:msdos和gpt
知乎 | MBR GPT BIOS MBR等几个概念
划重点
MBR格式就是msdos格式,
GPT格式就是GUID格式,
启动方式有Legacy模式(BIOS+MBR)和UEFI模式(UEFI+GPT),
这里我们选择UEFI做引导来安装系统,自然需要硬盘分区表类型时GPT格式,
基于软件DiskGenius可以查看和转换分区表的类型,
这里我的SSD固态硬盘格式时msdos,我用DiskGenius把格式转化为GPT后,格式化硬盘,删除引导和启动项,重新安装了系统。
2.3 重复启动
出现重复驱动问题,解决的方法是屏蔽nouveau
引用“Nvidia在Linux上的驱动安装特别麻烦,尤其对于新手简直就是噩梦,得屏蔽第三方显卡驱动。”
知乎 | 屏蔽驱动之初见
卸载已有驱动(此次安装中本来是没有驱动的,以备后用)
sudo apt-get purge nvidia*
知乎 | tensorflow1.4套装安装指南
检查nouveau
lsmod | grep nouveau
有输出,则说明nouveau正在加载,需要手动禁用;反之,说明禁用成功,
这里肯定是有输出的,需要禁用。
禁用nouveau:
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
输入以下内容:
blacklist nouveau
options nouveau modeset=0
CSDN | 屏蔽nouveau 主要参考这一篇
然后键盘esc,输入:wq,保存,
CSDN | 禁用 Nouveau kernel driver
重新配置内核文件
sudo update-initramfs -u
重启
sudo reboot
再检查nouveau,如果没有输出,禁用成功。
3 安装驱动
说明
这里安装驱动的方式有两个
一是纯粹安装驱动
二是安装CUDA顺带着安装驱动
理论上是都可以的,这里都给出来,根据需要选择
我用的是二安装CUDA的方法
这里CUDA安装是阉割版的,没有环境参数的内容
3.1 安装NVIDIA显卡驱动
第一步,查询ppa安装支持的版本驱动
sudo apt-cache search nvidia-*
CSDN | Ubuntu下NVIDIA显卡驱动安装
or
apt-cache search nvidia-driver
nixCraft | Ubuntu Linux Install Nvidia Driver
查询得知列表中驱动最高的版本是
nvidia-384 - NVIDIA binary driver - version 384.130
第二步,查询nvidia-384是否支持GeForce GTX 1070 Ti本机的GPU型号
通过GeForce GT 710M终于查到384驱动
官网 | 显卡驱动查询
CSDN | Ubuntu下安装NVIDIA显卡驱动
第三步,安装驱动
sudo apt-get install nvidia-384
nixCraft | install driver
CSDN | 安装驱动
第四步,重启
sudo reboot
第五步,检测
nvidia-smi
知乎 | 显卡、驱动、CUDA
3.2 卸载显卡驱动
卸载ubuntu
sudo apt-get remove nvidia-384
sudo apt-get remove nvidia*
sudo apt-get purge nvidia*
sudo apt-get autoremove
Attention!
如果出现重复启动,只能以文本模型进入系统,
开机,以文本的模式进入系统:Ctrl+Alt+F1,账户,密码,
CSDN | 文本模式
注意:要输入密码后Enter才能继续,因为文本模型会有很多零星乱码,切莫心急。
CSDN | ubuntu 无限重复登录界面解决方案
3.3 install CUDA(阉割)
安装CUDA要写一片博客,问题很多,主要原因有三:
一、官方安装方式较多,无形导致大家尝试的工作量和错误问题网络检索匹配信息量大大增加;
二、Linux操作技术欠缺,只能完全照抄命令行,不会作任何调整和修改,出了问题则更加看不出来问题所在;
三、Linux, eg.Ubuntu, 本身存在问题,不用的电脑用同一个版本的系统,经常出现不同的问题;
这里主要是三个步骤:
一、禁用nouveau(已经解决)
二、安装
三、环境变量
这里我们的目的不是安装CUDA,而是以安装CUDA的方式,安装驱动,以避免重复启动的问题,所以我们安装即可,全套的CUDA教程以后再整理,这里是阉割版本,郑重说明。
CSDN | nvidia安装及几种错误
官网 | 安装教程
官网 | 新版本匹配下载
官网 | 各版本匹配下载
这里我采用的是deb(local)的方式进行安装:
一、下载deb文件,nvidia官网各版本匹配下载的网页非常不稳定,经常打不开或者无法下载,后期我自己做一下备份;
我的版本:CUDA Toolkit 8.0 GA1[Sept 2016]
二、按照官网的方式进行安装
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
三、重启
sudo reboot
四、检测显卡信息
sudo nvidia-smi
sudo nvidia-setting
到此总算是把NVIDIA驱动安装完成,可见NVIDIA产品做的有多糟糕!
3.4 卸载CUDA
CSDN | 卸载CUDA
卸载
sudo apt-get remove cuda
sudo apt autoremove
sudo apt-get remove cuda*
清理或者检查
cd /usr/local/
dir
sudo rm -r cuda-10.0
在/usr/local/目录下,查看是否有"cuda"或者'cuda-10.0'文件夹,输入指令删除残留的文件夹。
3.5 查看CUDA的版本
CSDN | 查看CUDA的版本
cat /usr/local/cuda/version.txt
我的输出:CUDA Version 8.0.44
4 安装 Autoware Docker
官方github的安装教程
autoware github | wiki
autoware github | wiki | installation
autoware github | wiki | installation | Autoware Docker
sil_qdu的安装教程
| 用docker方式安装autoware
| Docker安装
官网 | Get Docker CE for Ubuntu
nvidia docker的安装教程
nvidia docker github | wiki
nvidia docker github | wiki | installation | version 1.0
nvidia docker github | wiki | installation | version 2.0
4.1 安装docker
| Docker安装
一、检测并清理旧的版本
sudo apt-get remove docker docker-engine docker.io containerd runc
二、安装辅助工具(不理解)
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
三、添加docker官方的key(啥是key?)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
四、添加docker repository(这又是啥?)
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
五、安装docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
默认安装最新的稳定版本docker,也可以安装某个特定的版本,见原文。
六、确认安装成功
sudo docker run hello-world
4.2 安装nvidia docker
第一步,准备
官网 | Repository configuration
Debian和RHEL是什么?简单点说,Ubuntu看Debian。
CSDN | CentOS,Ubuntu,Gentoo,Freebsd,RedHat,Debian的区别及选择
Repository configuration
Debian-based distributions
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
Updating repository keys
Debian-based distributions
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
第二步,安装
nvidia-docker github | nvidia-docker github
sudo apt-get install nvidia-docker
4.3 安装autoware docker
方法一:此教程和官网教程差别挺大
CSDN | 用 Docker 方式安装 Autoware
一、下载autoware的image
docker pull autoware/autoware:1.7.0-kinetic
这里的命令要修改成,前面加sudo,因为作者设置了用户权限,可以免sudo运行,而我没有,免sudo运行的操作如下文的“6.设置用户权限”
二、创建Docker Image的启动文件
注释:
这一步和官网的差别就挺大的,
感觉这篇也是对的,但是这里创建run.sh文件确实没看懂,
首先第一步的加载autoware image我大概是看懂了,
这篇是直接pull了autoware的image,官网分两步:先是克隆了github上的资源,然后运行run.sh文件进行安装,安装过程就是在pull autoware的image文件,最后都可以运行docker image ls来查看,如下所示。
dong@cvad:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
autoware/autoware latest-kinetic 7926d37a198a 3 months ago 7.98GB
hello-world latest fce289e99eb9 3 months ago 1.84kB
autoware/autoware 1.7.0-kinetic 4dd12ac386c0 11 months ago 9.28GB
继续注释:
大概意思是明白的,官网的方法是可以自动创建启动文件,本篇的方法需要手动创建启动文件,这篇先到此,最后通过和官网对比,并调通可行,再回来补充完整。
方法二:官网
autoware github | Generic x86 Docker
这一版就写到这吧,有一台新电脑需要安装,我准备从头安装一遍,这个版本就太监了吧,如果又必须后面再补充,如果没必要,就到此结束。开始写新的“install Autoware Docker 1020”。