现有一个服务器,打算用于深度学习,于是只安装ubuntu系统即可。先列一下我电脑的配置信息:

类型

版本/大小

显卡

nvidia 3080Ti

内存

32G

SSD

512G

固态硬盘

4T

  我这里安装的是ubuntu20.04.2.0,下面是系统的安装配置教程。


1 系统安装

  系统安装首先需要准备一个U盘,将ubuntu系统下载解压进去,然后进入电脑的BIOS界面设置security boot并设置从该U盘启动。详细教程百度即可。设置好之后重启电脑,会进入系统安装界面。在选择安装类型的时候,选择其他选项,可以自己定义磁盘的分配方式(而实际上也必须这么做,因为如果选择清除整个磁盘并安装的话,那系统只能安装在一个硬盘上,但是我们有双硬盘)。在安装类型界面,如果该服务器之前已经使用过了,比如它原本已经安装了windows系统或者是安装了双系统了,那么磁盘会显示一些使用的情况,我们这里需要清空所有内容然后只装ubuntu系统,所以直接把所有非空闲状态的磁盘都删除掉就行,这样磁盘就都变成空闲了。如下图所示,其中名为nvme0n1的磁盘是固态硬盘,大小为512G,名为sda的磁盘为机械硬盘,大小为4T。这里,我们只需要给ubuntu系统分四个区就行,分区方案如下表所示:

分区

大小

挂载点

类型

硬盘

位置

efi系统分区

500M


主分区

SSD

空间起始位置

swap分区

与电脑内存一样大(比如我这里32G)

交换空间

逻辑分区

SSD

空间起始位置

Ext4分区

SSD剩余所有空间

/

主分区

SSD

空间起始位置

Ext4分区

机械硬盘所有空间

/home

主分区

机械硬盘

空间起始位置

  其中efi系统分区是启动引导相关的,swap分区是交换分区,一般设置为与电脑内存一样大就行,/是系统根目录,将SSD的剩余所有空间都给它,/home用于存放用户数据等,整个机械硬盘都分给它(当然,我这里留了200G空闲内存,算是以备不时之需吧,毕竟总共有4T的机械硬盘,不差那200G)。分区后的情况如下图:

固态硬盘对于深度学习 深度系统 固态硬盘_ubuntu

  确认分区方案后,进行安装即可。


2 基本设置

  下面介绍一些安装完系统后的初始化配置方法。
  

2.1 设置root用户密码

  在安装好系统后,如果直接打开一个终端执行su的话,会得到报错su: 认证失败。因为root用户默认是锁定状态,不允许登录,因此需要进行配置。终端执行:

sudo passwd root

  会先要求你输入用户密码,然后会要你输入新的密码以及确认,这里新的密码就是root的密码,可以设置的和用户密码不一样,也可以一样。设置后,再次执行:

su

  输入刚刚设置的root密码后,就可以进入root了。
  

2.2 更新系统软件

  依次执行如下两行代码即可:

sudo apt update
sudo apt upgrade

  

2.3 禁止内核更新(非常重要!)

  这是必要的一步,不然后边很容易出现驱动版本错误等各种问题,导致系统崩溃。执行:

dpkg --get-selections |grep linux

  可以查看电脑已安装的内核版本,比如我这里的输出如下:

固态硬盘对于深度学习 深度系统 固态硬盘_服务器_02


  然后再执行:

uname -a

  可以查看当前正在使用的内核版本。比如我这里的输出是:

固态硬盘对于深度学习 深度系统 固态硬盘_深度学习_03


  表明我在用的是5.11.0-41-generic这个版本,那么,禁止内核自动更新需要执行sudo apt-mark hold命令。一般只禁止和上述输出版本一致的image和headers即可,如果想保守起见,也可以将所有与该版本一致的内容都禁止掉。比如我这里禁止的有:

sudo apt-mark hold linux-image-5.11.0-41-generic
sudo apt-mark hold linux-headers-5.11.0-41-generic
sudo apt-mark hold linux-modules-5.11.0-41-generic
sudo apt-mark hold linux-modules-extra-5.11.0-41-generic

  禁止后,可以再次执行dpkg --get-selections |grep linux查看版本情况,输出如下:

固态硬盘对于深度学习 深度系统 固态硬盘_ubuntu_04


  可以看到被禁止的四项变成了hold状态。

  

3 显卡驱动配置

3.1 安装nvidia驱动

  删除旧驱动:

sudo apt-get purge nvidia*

  禁止自带的nouveau nvidia驱动:

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

  在打开的空白文件内,填入如下两行内容,然后保存关闭。

blacklist nouveau
options nouveau modeset=0

  更新配置文件:

sudo update-initramfs -u

  接下来执行如下命令,重启系统:

sudo reboot

  重启之后,因为禁止了显卡的驱动,所以重启后显示的效果不是很好,通过这个可以看出,是否完成这一步操作。(在我这里表现很明显的就是,我本来是双屏的,但是重启后就只剩一个屏了)
添加Graphic Drivers PPA:

sudo add-apt-repository ppa:graphics-drivers/ppa

  更新:

sudo apt-get update

  查看合适的驱动版本:

ubuntu-drivers devices

  输出如下:

固态硬盘对于深度学习 深度系统 固态硬盘_深度学习_05


  从输出可以看出,推荐安装的版本为nvidia-driver-470,于是,执行如下命令进行安装(我直接根据推荐版本进行了安装,当然,如果你想要更高的495或者更低的460版本,都是可以的):

sudo apt-get install nvidia-driver-470

  安装完成后,重启系统:

sudo reboot

  (嗯,上面不是说我卸掉默认驱动后,重启双屏变单屏了吗。然后这回重启后,双屏它又自动回来了)
  执行如下命令,可以判断是否成功安装驱动:

sudo nvidia-smi

  如果输出类似如下,则表明显卡驱动安装成功:

固态硬盘对于深度学习 深度系统 固态硬盘_系统安装_06

  此外,也可以使用如下命令:

sudo nvidia-settings

  如果执行之后,有弹出一个NVIDIA X Server Settings窗口,则表明安装成功。

固态硬盘对于深度学习 深度系统 固态硬盘_ubuntu_07

  

3.2 安装cuda

  cuda的安装主要包括cuda toolkit的安装以及cudnn的配置两步。
  

3.2.1 安装cuda toolkit

  首先从官网下载自己需要的cuda版本,下载链接。我这里选择cuda11.0(下面涉及到版本号的记得替换成自己的版本),配置选项如下所示:

固态硬盘对于深度学习 深度系统 固态硬盘_系统安装_08

  选好之后,会自动给出安装的命令,如下图所示:

固态硬盘对于深度学习 深度系统 固态硬盘_服务器_09

  在需要存放下载的run文件的位置,打开一个终端,执行第一行命令:

wget http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run

  在下载的过程中,可以先安装一下依赖库(不安装的话安装cuda的过程会报错),执行如下命令:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

  然后,执行安装命令:

sudo sh cuda_11.0.2_450.51.05_linux.run

  下面是安装的选项:

Existing package manager installation of the driver found. It is strongly    │
│ recommended that you remove this before continuing.
# 选continue

Do you accept the above EULA? (accept/decline/quit):
#accept

  接下来会选择是否安装驱动等,这一步比较重要。驱动的话我们在前面已经安装好了,这里需要把它的选项给去掉。界面操作的方式在底部有说明,设置好的选项如下图所示,然后选择install。

固态硬盘对于深度学习 深度系统 固态硬盘_服务器_10

  安装过程还比较快,完成后的输出如下图所示:

固态硬盘对于深度学习 深度系统 固态硬盘_系统安装_11

  为了确认是否安装成功,可以依次执行如下命令:

cd /usr/local
ls

  如果输出中有cuda-11.0的话,那么再进入该目录下:

cd cuda-11.0
ls

  如果输出如下,则表明安装成功了:

固态硬盘对于深度学习 深度系统 固态硬盘_ubuntu_12

  需要这么确认的原因是,我之前安装cuda的时候,虽然有出现了cuda-xxx文件夹,但是该目录下却缺少include或者lib64文件夹这样。这种情况就是没安装完整,需要卸载掉重新进行安装(可以参考这里)。

  

3.2.2 配置cudnn

  安装好cuda后,需要下载cudnn对相应文件进行替换。cudnn的下载链接。我这里选择用于cuda11.0的8.0.5版本,选择第一个选项cuDNN Library for Linux (x86_64)即可,如下图所示:

固态硬盘对于深度学习 深度系统 固态硬盘_系统安装_13

  下载cudnn需要登陆nvidia的账号,没有的话就用邮箱去注册一个,免费。下载完成后,解压,然后进入解压后的目录下,打开一个终端,依次执行如下命令:

sudo cp cuda/include/cudnn.h /usr/local/cuda-11.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.0/lib64
sudo chmod a+r /usr/local/cuda-11.0/include/cudnn.h /usr/local/cuda-11.0/lib64/libcudnn*

  配置好后即可。
  

3.3 设置环境变量

  这里的配置和其他教程有所不同,我是直接不带版本号添加cuda的,这样便于后续进行多版本的cuda安装和管理,多版本cuda安装管理教程可参考这里。在任一终端中,执行:

sudo gedit ~/.bashrc

  在打开文件的末尾,添加如下两行代码:

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

  保存关闭,然后在终端执行:

source ~/.bashrc

  使修改立即生效。接下来,给cuda创建软链接:

sudo ln -s /usr/local/cuda-11.0 /usr/local/cuda

  然后输入如下命令进行验证:

nvcc --version

  我这里的输出如下:

固态硬盘对于深度学习 深度系统 固态硬盘_系统安装_14


  环境配置成功!

  当然,前面我们默认选择安装了cuda的示例,这里可以通过运行示例来判断是否成功安装。执行如下命令:

cd /usr/local/cuda-11.0/samples/1_Utilities/deviceQuery

  执行make命令:

sudo make

  然后:

./deviceQuery

  如果有输出GPU信息,则表明安装成功!
  

4 安装Anaconda

  Anaconda是一个使用非常广泛的深度学习虚拟环境管理软件,它可以用于隔离多个环境,操作简便。使用Anaconda管理多个虚拟环境的教程可以参考这里。个人版Anaconda3可以从官网直接下载(历史版本在这里),我这里下载的是当下最新的版本Anaconda3-2021.11-Linux-x86_64.sh。下载完成后,执行如下命令进行安装:

bash Anaconda3-2021.11-Linux-x86_64.sh

  遇到的所有中断都直接yes即可。安装完成后,会输出如下信息:

固态硬盘对于深度学习 深度系统 固态硬盘_系统安装_15

  关闭该终端再重新打开一个,可以发现用户名前面多了一个(base)字样,表明当前环境已经在Anaconda的虚拟环境base里面了。关于如何使用conda创建并管理多个虚拟环境,可以参考这里

  

5 其他一些工具的安装

  下面是一些常用开发工具的安装教程,可以按需进行选择。
  

5.1 vscode

  vscode是一个使用非常广泛的轻量级跨平台编程IDE。虽然vscode可以简单地使用命令行进行安装。但是,这样安装好的vscode是不能输入中文的,所以需要手动从官网下载vscode的deb安装包来安装。我这里下载的文件名为code_1.62.3-1637137107_amd64.deb,然后,在该目录下打开一个终端,执行如下命令进行安装:

sudo dpkg -i code_1.62.3-1637137107_amd64.deb

  安装过程很快。完成后即可在全部应用里面看到vscode的应用图标了。

打开vscode,进入extension,可以安装一些自己需要的扩展,这些扩展可以方便我们的开发过程,如下图所示:

固态硬盘对于深度学习 深度系统 固态硬盘_系统安装_16

  因为我的主要开发语言为python和C++,所以我这里首先把python和c++的扩展给安装了。然后还安装了Bracket Pair Colorizer(让括号拥有独立的颜色,易于区分)、Better Comments(使注释有人性化的高亮显示)。更多扩展推荐可以参考这里

  

5.2 向日葵

  向日葵是一个常用的免费远程控制软件,可以点击这里下载。我这里下载的文件名为sunloginclient-11.0.0.36662-amd64.deb。与vscode的安装一样,在该目录下打开一个终端,执行如下命令:

sudo dpkg -i sunloginclient-11.0.0.36662-amd64.deb

  安装完成后即可在全部应用中看到向日葵的应用图标,登陆账号即可使用。但是,在使用另一台电脑远程控制这个电脑的时候,有可能会遇到还没进入控制界面就出现连接已断开的问题。这是因为我们的系统中还没有安装配置lightdm,而这是向日葵所需要的依赖。解决方法可以参考这里
  

5.3 git

  git是远程代码托管平台,可以直接执行如下命令进行安装:

sudo apt-get install git

  安装完成后,依次执行如下两行命令进行用户名和邮箱的配置(这里用户名可以随意设置,简单好输入就行,因为后面使用的时候经常会要你输入用户名。但是邮箱需要和你注册github或者gitee的一致):

git config --global user.name "xxx"
git config --global user.email "xxx@xxx.com"

  然后需要配置ssh。首先执行如下命令生成.ssh目录(使用上面设置的邮箱):

ssh-keygen -t rsa -C "xxx@xxx.com"

  执行后会有三个要你确认的东西,全部直接按回车键默认选项即可。完成后,打开用户文件夹,打开主目录的显示隐藏文件的选项,如下图所示:

固态硬盘对于深度学习 深度系统 固态硬盘_ubuntu_17

  然后就可以看到有.ssh文件夹,进入该文件夹,里面有id_rsa和id_rsa.pub两个文件。其中id_rsa是私匙,id_rsa.pub是公匙,我们要的就是公匙。所以,打开id_rsa.pub,复制里面的所有内容,然后进入github或者gitee,登陆自己的账号,找到ssh设置,将复制的内容输入进去保存就可以了。其中,gitee的ssh设置在设置 -> 安全设置 -> SSH公匙 -> 添加公匙,github在Settings -> SSH and GPG keys -> New SSH key

  

5.4 sublime

  sublime是一个轻量级文本编辑软件,对各种语言的代码都有较高的支持度,使用方便。其完全配置教程可以直接参考这里
  
  
  

参考链接:
Ubuntu系统安装与深度学习环境配置Ubuntu18.04深度学习GPU环境配置ubuntu下安装多版本cuda及版本切换教程