安装并配置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

  1. WikiHow: 如何安装Ubuntu Linux
  2. U盘启动安装Linux系统
  3. U盘启动盘怎么复原为普通U盘
  4. TUNA: 清华大学开源软件镜像站
  5. Anaconda Documentation - Installing on Linux
  6. TUNA: Anaconda 镜像使用帮助
  7. Ubuntu 16.04 安装Anaconda并换源
  8. Trojan-Github
  9. NVIDIA CUDA Installation Guide for Linux
  10. 手动更新gcc
  11. Makefile:252: recipe for target ‘install’ failed - Stack Exchange
  12. 如何降级/切换 Ubuntu 系统 Linux 内核启动版本
  13. Ubuntu 切换内核
  14. Ubuntu系统分辨率只有640*480 的解决办法