现有一个服务器,打算用于深度学习,于是只安装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)。分区后的情况如下图: | |||||
确认分区方案后,进行安装即可。 | |||||
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
可以查看电脑已安装的内核版本,比如我这里的输出如下:
然后再执行:
uname -a
可以查看当前正在使用的内核版本。比如我这里的输出是:
表明我在用的是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
查看版本情况,输出如下:
可以看到被禁止的四项变成了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
输出如下:
从输出可以看出,推荐安装的版本为nvidia-driver-470
,于是,执行如下命令进行安装(我直接根据推荐版本进行了安装,当然,如果你想要更高的495或者更低的460版本,都是可以的):
sudo apt-get install nvidia-driver-470
安装完成后,重启系统:
sudo reboot
(嗯,上面不是说我卸掉默认驱动后,重启双屏变单屏了吗。然后这回重启后,双屏它又自动回来了)
执行如下命令,可以判断是否成功安装驱动:
sudo nvidia-smi
如果输出类似如下,则表明显卡驱动安装成功:
此外,也可以使用如下命令:
sudo nvidia-settings
如果执行之后,有弹出一个NVIDIA X Server Settings窗口,则表明安装成功。
3.2 安装cuda
cuda的安装主要包括cuda toolkit的安装以及cudnn的配置两步。
3.2.1 安装cuda toolkit
首先从官网下载自己需要的cuda版本,下载链接。我这里选择cuda11.0(下面涉及到版本号的记得替换成自己的版本),配置选项如下所示:
选好之后,会自动给出安装的命令,如下图所示:
在需要存放下载的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。
安装过程还比较快,完成后的输出如下图所示:
为了确认是否安装成功,可以依次执行如下命令:
cd /usr/local
ls
如果输出中有cuda-11.0的话,那么再进入该目录下:
cd cuda-11.0
ls
如果输出如下,则表明安装成功了:
需要这么确认的原因是,我之前安装cuda的时候,虽然有出现了cuda-xxx文件夹,但是该目录下却缺少include或者lib64文件夹这样。这种情况就是没安装完整,需要卸载掉重新进行安装(可以参考这里)。
3.2.2 配置cudnn
安装好cuda后,需要下载cudnn对相应文件进行替换。cudnn的下载链接。我这里选择用于cuda11.0的8.0.5版本,选择第一个选项cuDNN Library for Linux (x86_64)
即可,如下图所示:
下载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
我这里的输出如下:
环境配置成功!
当然,前面我们默认选择安装了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即可。安装完成后,会输出如下信息:
关闭该终端再重新打开一个,可以发现用户名前面多了一个(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,可以安装一些自己需要的扩展,这些扩展可以方便我们的开发过程,如下图所示:
因为我的主要开发语言为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"
执行后会有三个要你确认的东西,全部直接按回车键默认选项即可。完成后,打开用户文件夹,打开主目录的显示隐藏文件的选项,如下图所示:
然后就可以看到有.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及版本切换教程