安装并配置Ubuntu系统
我最近要跑几个神经网络模型。有个模型需要在Linux环境下执行,我因此安装并配置了Ubuntu系统。简要记录一下过程。
安装Ubuntu
我目前这台实验室电脑的前任主人装了Windows和Linux双系统,我接手之后删除了Linux系统。这导致了许多奇怪的问题,例如在Win 10系统下安装CUDA 10.2会导致闪屏等。为了解决这些问题,我选择删除旧系统,改装Ubuntu。
安装过程相当简单明了,简要记录如下。
1. 从官网或镜像站下载系统文件(ISO格式)。
2. 使用Rufus刻录ISO文件,将U盘设置成启动盘。
3. 将U盘插入电脑,根据指引程序安装。
注意:
1. 如果是用来跑神经网络,尽量选择Ubuntu 18.04.03或18.04.01版本。Ubuntu的其他版本不支持CUDA 10.2,只能装CUDA 9.2。
2. Rufus刻录文件时会清空U盘,所以执行操作前请务必做好备份。
3. Installation types列出了多个选项,请按照实际情况选择。我这里选择了”Ease disk and install Ubuntu”。
安装完成后,Windows环境下还原U盘:
#打开磁盘管理系统
diskpart
在磁盘管理系统中查看硬盘信息:
list disk
格式化U盘:
select disk 2
clean
然后进入磁盘管理面板,右键U盘,选择新建简单卷。引导界面出现后,点击“下一步”直至完成。
配置软件
软件安装需要遵循一定的顺序,不然会有点麻烦。
Anaconda
安装
官网给出了详细教程,一步步执行就可以了。我用的是校园网,所以从TUNA镜像站下载Conda安装包,并将其拷贝至电脑上。流程大致如下。
Install dependency.
sudo apt update
sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6
Install Anaconda for Python 3.7.
bash ~/Downloads/Anaconda3-2020.02-Linux-x86_64.sh
Verify data integrity with SHA-256 (optional).
sha256sum /path/filename
然后一路ENTER,遇到yes/no时输入yes就可以了。注意不要安装VSCode。
要退出Base环境,执行
conda deactivate
配置清华源
新建condarc文件:
nano ~/.condarc
粘贴以下内容:
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
CTRL + O保存, CTRL + X退出nano。重启Terminal。
清除缓存,检查是否配置正确:
conda clean -i
conda config --show-sources # 显示所有源
配置环境
配置python 3.6.7 环境:
conda create -n py36 python=3.6.7
Trojan
CUDA 10.2需要从国外源下载软件,所以要先配置好代理。
# 下载
wget https://github.com/trojan-gfw/trojan/releases/download/v1.14.1/trojan-1.14.1-linux-amd64.tar.xz
# 解压
tar -xvf trojan-1.14.1-linux-amd64.tar.xz
# 切换到 Trojan 客户端的目录
cd trojan
#配置代理信息, CTRL + O保存
nano config.json
运行Trojan:
#前台运行
sudo ./trojan
#后台运行
sudo ./trojan &
终止进程:
pkill -f trojan
CUDA 10.2
对于Ubuntu系统而言,NVIDIA CUDA 10.2只支持Ubuntu 18.04.3和Ubuntu 16.04.6系统。
Pre-installation Actions
检查软硬件版本。对Ubuntu 18.04.3系统, CUDA要求的软件版本如下表。其他系统对应的软件要求请查询官方文档。
软件名称 | 版本 |
---|---|
Kernel | 4.15.0 |
GCC | 7.3.0 |
GLIBC | 2.27 |
ICC | 19.0 |
PGI | 18.x, 19.x |
XLC | NO |
CLANG | 8.0.0 |
执行以下命令:
# Verify your GPU
lspci | grep -i nvidia
# Verify linux version
uname -m && cat /etc/*release
# Check gcc version
gcc --version
# Verify kernel version
uname -r
安装gcc
为安装7.3.0版本,下载并解压安装包,安装在Home中。
ftp://gcc.gnu.org/pub/gcc/releases/gcc-7.3.0/gcc-7.3.0.tar.gz #下载地址
我这边网络不行,需要预先下载,手动编译。进入 gcc 源码包目录下 ,编辑 ./contrib/download_prerequisites,查看版本号:
gmp = 'gmp-6.1.0.tar.bz2'
mpfr = 'mpfr-3.1.4.tar.bz2'
mpc = 'mpc-1.0.3.tar.gz'
isl = 'isl-0.15.1.tar.bz2'
对应的下载地址:
https://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2
https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.bz2
https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2
将其拷贝至 ~/gcc-7.3.0目录下,执行以下命令
./contrib/download_prerequisites
创建目录并编译(这步需要1个多小时):
mkdir gcc-temp
cd gcc-temp
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
编译完成后,执行
make
sudo make install
检查gcc版本:
gcc -v
Done!
更换内核
查看可安装的内核:
sudo apt-cache search linux-image | grep generic
下载指定版本的内核:
sudo apt-get install linux-image-4.15.0-101-generic
查看系统可用的 Linux 内核:
grep menuentry /boot/grub/grub.cfg
修改Grub,设置内核启动版本.打开 grub 文件:
sudo nano /etc/default/grub
注意:不建议在root模式下使用GUI(如gredit),这样可能会导致下载目录混乱。详细论述请参阅这里:Why should users never use normal sudo to start graphical applications?
将GRUB_DEFAULT=0 (0代表系统当前启动的内核序号)改为修改为想要启动的内核版本对应子选项。例如1 <4。选项确认参考:
vim /boot/grub/grub.cfg
menuentry 'Ubuntu'{...}
submenu 'Advanced options for Ubuntu'{
menuentry 'Ubuntu, with Linux 3.19.0-25-generic'{..}
menuentry 'Ubuntu, with Linux 3.19.0-25-generic'(recovery mode){..}
....
}
# 上图表示格式为
0--ubuntu
1--Advanced options for Ubuntu
0--Ubuntu, with Linux 3.19.0-25-generic
1--menuentry 'Ubuntu, with Linux 3.19.0-25-generic'(recovery mode)
2 ....
更新Grub:
sudo grub-mkconfig -o /boot/grub/grub.cfg
无错误提示,即可reboot重启系统。
重启后查看内核版本:
sudo reboot
uname -r
我重启后发现屏幕分辨率和刷新率都不对(分辨率只有640*480)。更改分辨率:
sudo nano /etc/default/grub
将#GRUB_GFXMODE=640x480改成你想要的分辨率,例如
GRUB_GFXMODE=1024x768
CTRL + O保存,然后更新文件:
sudo grub-mkconfig -o /boot/grub/grub.cfg
#或者
sudo update-grub
#重启系统
sudo reboot
更改刷新率:
# 格式是分辨率_刷新率
xrandr -s 1920*1080_60.00
显示问题修好之后,我发现机子上不了网。。。具体来说,GUI显示Wfi adaptor not found。最初怀疑是驱动问题,换回旧内核更新驱动,无效。使用新内核,手机USB链接电脑使用data tethering(不需要安装驱动),无反应。Fresh install系统之后,切换到4.15.0内核还是连不上网。后来注意到开机有条ERROR一闪而过。怀疑是网络层出问题,或者软硬件不兼容。这个bug倒腾了两天,没修好。我这边没有网线,
所以这台电脑完全处于离线状态,啥都干不了。
记录一下该电脑的参数,以作参考。
电脑型号 | Dell XPS 8930 |
---|---|
CPU | Intel Core i7-8700@3.20GHz |
显卡 | NVIDIA GeForce GTX 1070 |
WIFI适配器 | Qualcomm Atheros QCA6174 802.11ac |
谷歌一圈,发现Linux下装CUDA是真的麻烦…Stack Exchange上有人折腾了几周都没弄好。所以准备换回Windows,然后远程连接实验室的Linux工作站了。
重装Windows的流程与Linux类似。注意在选择系统安装盘时,需要删除Linux创建的磁盘分区后再选择。重装后如果看不到哪个磁盘,点击“磁盘管理器”,新建简单卷即可。
Reference
- WikiHow: 如何安装Ubuntu Linux
- U盘启动安装Linux系统
- U盘启动盘怎么复原为普通U盘
- TUNA: 清华大学开源软件镜像站
- Anaconda Documentation - Installing on Linux
- TUNA: Anaconda 镜像使用帮助
- Ubuntu 16.04 安装Anaconda并换源
- Trojan-Github
- NVIDIA CUDA Installation Guide for Linux
- 手动更新gcc
- Makefile:252: recipe for target ‘install’ failed - Stack Exchange
- 如何降级/切换 Ubuntu 系统 Linux 内核启动版本
- Ubuntu 切换内核
- Ubuntu系统分辨率只有640*480 的解决办法