Win10与Ubuntu双系统下安装tensorflow2.0个人备忘录
全部流程
流程有点儿多,慢慢写,慢慢看。已经不知道多少次重装系统了,每次都得折腾好久,折腾得心累,写个流程记录一下吧,方便下次重装。
安装Windows10
下载
没啥好说的,去官网下载一个iOS镜像文件,刻录到光盘里。
需要注意的是,要将BIOS的启动方式修改为UEFI模式。以我的华硕主板为例,开机F2进入BIOS设置,进入高级模式。在“启动”中找到“CSM模式”,关掉。
磁盘使用GPT模式,对于MBR模式的,使用Windows自带的工具进行转换。
- 右键此电脑,管理,存储,磁盘管理,右键每一个磁盘,看看哪个需要转换。
- 以管理员身份运行cmd
验证和转换,0替换为要转换的磁盘编号
mbr2gpt /disk:0 /validate /allowfullos
mbr2gpt /convert /disk:0 /allowfullos
安装Ubuntu18.04
下载
还是先刻盘。安装时先进入试用模式,在软件更新器中将下载源换成国内的,我每次都用华为的源。将电源选项改为常亮(我遇到了息屏后安装会停止的问题)。接着开始安装。
- 语言选为中文。
- 键盘为默认汉语。
- 四个选项选1正常安装和3下载更新。
- 选第一个与Windows共存。
- 只留一个新的空盘安装Ubuntu,此时会自动选择该盘。
- 时区选上海
- 设定用户名密码,开始安装。
- 漫长的等待……
- 重启。
- 修改华为源,更新软件。
我在安装时遇到了一个无法创建grub启动的问题,Google说这是Ubuntu的bug,给出的解决方法是在这一步选择下载更新,所以第三步一定要选下载更新,但是不保证一定能成功,我在选了下载更新的情况下失败过一次,这时候最简单的方法就是重装Ubuntu,就是比较费时间。
在安装失败重装Ubuntu时,先进Windows清空磁盘。这时候可能会出现黑屏,几句话加一个“grub:”,输入exit后进入Windows。还是在刚才的磁盘管理处,删除安装Ubuntu的磁盘,这时候可能会遇到Ubuntu系统的EFI分区用磁盘管理删除不掉。参考theoreoeater的这篇博客,轻松搞定。
安装nVidia驱动
禁用nouveau
首先创建文件
~$ sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
在文件中输入
blacklist nouveau
options nouveau modeset=0
保存退出后更新配置
~$ sudo update-initramfs -u
重启电脑
~$ reboot
检测驱动是否禁止,无输出,则禁止成功
~$ lsmod | grep nouveau
安装nVidia驱动
下载
首次检查是否装有gcc
~$ gcc –version
如果没有就安装一个
~$ sudo apt update
~$ sudo apt install build-essential
~$ gcc --version
接着安装nVidia驱动。先进入安装文件目录,
~$ cd install_package
安装nVidia驱动没必要关闭图形界面。不知道为啥网上查到的都让先关闭图形界面,对于我这种Linux菜鸡来说,没有图形界面怎么活……
~$ sudo chmod a+x NVIDIA-Linux-x86_64-390.59.run
~$ sudo ./NVIDIA-Linux-x86_64-440.36.run
必然会报错The distribution-provided pre-install script failed!,不必理会,继续安装。出现是否使用nv的xconfig文件时选yes。
~$ reboot
~$ nvidia-smi
这时可以看到驱动已经是440了,但是cuda version是10.2,关于cuda版本没搞懂啥意思,后续装完10.0的cuda,还是显示10.2,但是不影响使用。
安装Anaconda
下载
把.sh文件拖入终端执行,有个关于conda的yes/no的选项,选yes。
安装cuda
下载
如果之前安装过cuda,先卸载。卸载cuda很简单,一条命令就可以了,主要执行的是cuda自带的卸载脚本。
~$ sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
使用deb安装的没有pl文件,删除方式如下
$ sudo apt-get remove --purge cuda
$ sudo apt-get autoremove
之后删除文件夹中的剩余文件。
~$ sudo rm -rf /usr/local/cuda-8.0/
Ubuntu可以用run文件安装,也可以用deb安装。我推荐使用run文件安装,不容易出错。运行run文件
~$ sudo sh cuda__linux.run
各个选项,有两个地址的直接enter
accept
n(驱动前边已经安装了)
y
y
y
重启电脑
~$ reboot
使用deb安装
$ sudo dpkg -i cuda-repo-.deb
$ sudo apt-key add /var/cuda-repo-/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get install cuda
当sudo apt-get install cuda报错无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系,这时候换用下面的
$ sudo aptitude intall cuda
在终端中打开(也可以找到文件直接打开)bashrc
~$ sudo gedit ~/.bashrc
在文件中输入
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存退出。验证cuda(感觉没啥必要)
~$ cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
~$ sudo make
~$ ./deviceQuery
最后出现“Result = PASS”就没问题了。
查看cuda版本
~$ cat /usr/local/cuda/version.txt
安装cudnn
下载
同样可以使用两种类型的文件安装,我推荐使用tgz文件,使用deb文件安装后不方便查看cudnn版本。
进入tgz所在文件夹,解压tgz文件(其实直接将tgz拖进来使用绝对路径就可以)
~$ tar -xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
复制文件到cuda中
~$ 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 /usr/local/cuda/lib64/libcudnn*
查看cudnn版本
~$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
安装tensorflow
下载
使用whl文件安装,加上清华的源,因为安装中要下载一些包。
~$ pip install XX.whl -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装opencv
下载
使用whl文件安装。
~$ pip install XX.whl
安装gdal
下载
下载whl,先尝试用pip安装。
~$ pip install XX.whl
之前用pip安装一直都能成功,这次重装不知道哪儿搞岔气了,使用pip安装gdal告诉我当前平台不支持这个whl文件,试了两个版本的whl文件都不行,搜了半天也没找到原因。
最后没办法了,使用conda安装的。
~$ conda install gdal
使用conda前,先换成清华的源,不然速度慢不说,最受不了的是有一些文件下着下着就断了……
按照官方给的方法替换,网上搜出来的替换之后不成功。
安装vscode
下载
上官网下个deb文件双击运行安装,之后再装几个插件。
Anaconda Extension Pack
Chinese (Simplified)
Python
YAML
在使用tensorflow时遇到了一个错误提示“No name “python” in module”,虽然这并不是个错误,不影响使用,但是强迫症看着难受。简单搜了一下,参考这篇博客修改一下设置。新版vscode只需要修改一项,在设置中找到python.linting.pylintEnable
,取消勾选,OK。
添加spyder图标
很无语,为啥anaconda装完以后没有spyder图标呢?参考
在anaconda3/share/applications中有个spyder.desktop文件,打开它(还是可以直接拖进来使用完整路径)
~$ sudo vim spyder.desktop
下载一个spyder的图标(我直接把Windows的spyder图标拷过来了),然后修改desktop文件中的Icon,TryExec和Exec,一定要使用绝对路径。
Icon=/home/name/anaconda3/share/icons/spyder3.png
TryExec=/home/name/anaconda3/bin/spyder
Exec=/home/name/anaconda3/bin/spyder %F
点击Esc,输入:wq 回车保存退出。
双击图标运行,选择trust。到现在完成了图标的生成,但是还没法添加到收藏夹。最后需要将图标复制到/usr/share/applications/。直接复制会提示没权限,只能使用命令行(还是拖进来使用绝对路径)
~$ sudo cp spyder.desktop /usr/share/applications/
完工,测试tensorflow2.0.0没有遇到问题。