校内服务器重装系统经验记录
背景
实验室的服务器被劫持了,重装了系统。中间探索了很多东西,记录一下。
题目中校内的主要限制在于:
- 镜像网站的选择,用的浙江大学镜像站
- 系统重装操作依赖管设备的老师
- 可能存在联网权限问题
- 需要装 zjunet 来联外网
文章目录
- 背景
- 1. 备份
- 2. 启动盘制作
- 3. 重装系统
- 4 启用root用户
- 5 修改ssh服务默认端口
- 6. 联网
- Step1:配置dns。
- Step2:修改镜像源
- Step3: 更新系统
- Step4: 下载安装xl2tpd
- Step5: 下载安装zjunet
- 7 安装nvidia driver和cuda toolkit
- 7.1 安装nvidia driver
- 绕路 1:确定驱动版本
- 7.2 安装cuda toolkit
- 安装步骤:
- 绕路1:默认的apt install
- 绕路2:确定版本
- 总结一些版本不匹配的情况
- 8 挂载数据盘
- 8.1 mount
- 8.2 conda环境恢复
- 8.3 新建user并绑定原有用户文件夹
- 9 附带解决的其他问题
1. 备份
重装时只需要重写系统盘,也就是本身硬盘上的系统分区。不会动数据盘。
师姐先见之明,conda环境全部安装在挂载的数据盘上,实验数据最后也全部挪过去了。
这里需要查看数据盘叫什么,挂载到哪。
# 查看硬盘详情,可以看到数据盘叫什么 $ fdisk -l # 可以查看挂载情况,比如我的数据盘/dev/sdb1挂载在/data文件夹下 $ df -h
备注:这里本应该把数据盘unmount一下,但我忘了,后续倒也没影响。注意重装的时候别把系统装到数据盘(交给有经验的设备老师或前辈就没事)。
ChatGPT建议我备份一大堆东西,后来发现倒也不需要。备份好数据就可以去找管设备的老师重装了。
2. 启动盘制作
系统架构是4张3090,x86_64。所选是Ubuntu 22.04系统。
这里可能需要考虑和CUDA Toolkit的适配。比如我之前需要用CUDA Toolkit 11.6,但没有Ubuntu 22.04的CUDA Toolkit 11.6,只有Ubuntu 20.04的,后来解决方法是硬装,也能跑,但应该不建议。
下载地址:Ubuntu官网,下载下来的文件名是ubuntu-22.04.4-live-server-amd64.iso
启动盘制作工具:rufus,这个是按手头电脑的操作系统选的,我在win系统制作启动盘,推荐的多的是这个。不用安装,即开即用。
我使用的是4.5版本,参数配置如图:
- 设备选择的是插入的U盘
- 引导类型选“镜像文件”,然后选择前面下下来的ubuntu iso
- 其他设置保持默认
- 点击开始。
制作完成后,状态条会全绿,字样仍然是“准备就绪”没改,没事的。
拿着启动盘去找管设备老师吧。
3. 重装系统
设备老师带着去机房,找到要重装的一组卡,插入启动盘(U盘),关机,从启动盘启动…所有都等着老师操作就好。下面只记一点学到的东西。
过程中需要配置服务器ip、子网、服务器名、用户和密码。设置ssh登录(启用)和公钥登录(关闭)。用户只是个新user不是root,root要后期启用。老师建议不要开启ssh连接root的权限,要用root就从普通用户su过去,避免被攻击。
至此结束,其他都回去自己捣鼓。
4 启用root用户
参考:新安装的linux/ubuntu,root用户的设置步骤
5 修改ssh服务默认端口
参考:linux下ssh使用除了22的其它端口来连接远程服务器
6. 联网
Step1:配置dns。
参考Ubuntu20.04 系统中设置dns并生效
- 配置dns:修改/etc/systemd/resolved.conf文件,DNS=写入老师给的dns地址。
- 重启服务:
systemctl restart systemd-resolved systemctl enable systemd-resolved
注意不需要修改/etc/resolv.conf的nameserver
Step2:修改镜像源
按照浙大镜像站的指导进行:ZJU Mirror Ubuntu
这里提到需要选择Ubuntu版本,可以执行lsb_release -a查看。这里可以确认我装的是22.04 jammy。
$ lsb_release -a Output: No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.4 LTS Release: 22.04 Codename: jammy
Step3: 更新系统
至此,应该可以正常执行
sudo apt update && sudo apt upgrade
如果仍然报错如图所示Failed to fetch,那么询问设备老师打开联网权限。有可能老师设置连校网都连不上。
如果提示“Pending kernel upgrade… Newer kernel available… Restarting the system to load the new kerne will not be handled automatically, so you should consider rebooting.”,那就reboot一下。重启快则3分钟慢则一小时,可以通过ssh连接试探是否重启完毕。
Step4: 下载安装xl2tpd
$ apt-get install xl2tpd
如果提示“E:Unable to Locate Package ”,说明前面某一步没配好。
Step5: 下载安装zjunet
参考 浙江大学校园网 Ubuntu有线网上网详解 和 Github: QSCTech/zjunet
7 安装nvidia driver和cuda toolkit
这一块我研究了很多,先说最终方案,再说中间绕了哪些路。
总共要安装三个东西:Nvidia driver,CUDA,CUDA toolkit。
- 其中,在安装Nvidia driver时,CUDA已经捆绑安装,也就是nvidia-smi查询到的CUDA显示。
- CUDA toolkit是运行时环境,可以安装很多版本,通过修改环境变量来选取当前项目适用的运行时环境,通过nvcc -V查询是哪个版本。此外,在安装CUDA Toolkit时,还可以选择是否捆绑安装NVIDIA Graphics Drivers显卡驱动。我这里建议不捆绑,因为会修改之前装好的driver。
- 在只使用torch的情况下,不需要安装CUDA Toolkit和cuDNN,只需要显卡驱动,conda或者pip会为我们安排好一切。但如果要加入一些第三方依赖,还是要额外装个CUDA Toolkit的。(参考:【PyTorch】n卡驱动、CUDA Toolkit、cuDNN全解安装教程)
7.1 安装nvidia driver
一行命令直接安装默认适合的驱动,至此结束。
# 安装 $ sudo ubuntu-drivers autoinstall # 重启 $ sudo reboot # 查看driver是否正常安装 $ nvidia-smi
此时安装的版本和ubuntu-drivers devices查询的推荐版本是一致的。
绕路 1:确定驱动版本
网上教程有两种说法,一是去nvidia官网查找适合的驱动,二是通过ubuntu-drivers devices命令,查询推荐版本。我的两个版本不一致。
- nvidia官网查找如图所示,我查到的是2024/04/25新发布的550.78版本。
- 通过ubuntu-drivers devices命令,查询输出如下。查询得到的最高版本也就只有535。
$ ubuntu-drivers devices ERROR:root:aplay command not found == /sys/devices/xxxxxxxxxxx == modalias : xxxxxxxx vendor : NVIDIA Corporation model : xxxxxxxx [GeForce RTX 3090] driver : nvidia-driver-535-server - distro non-free driver : nvidia-driver-545-open - distro non-free driver : nvidia-driver-470 - distro non-free driver : nvidia-driver-545 - distro non-free driver : nvidia-driver-535 - distro non-free recommended driver : nvidia-driver-535-open - distro non-free driver : nvidia-driver-535-server-open - distro non-free driver : nvidia-driver-470-server - distro non-free driver : xserver-xorg-video-nouveau - distro free builtin
最终选择系统默认,也就是535。
这里不用手动指定版本,sudo ubuntu-drivers autoinstall的默认安装就是recommended的版本。
7.2 安装cuda toolkit
跟随nvidia官方教程的指令,每个CUDA版本都有自己对应的安装指南。
CUDA Toolkit版本的选择,在我看来有2个关键因素:
- 在只使用torch的情况下,不需要安装CUDA Toolkit和cuDNN,只需要显卡驱动,conda或者pip会为我们安排好一切。但如果要加入一些第三方依赖,还是要额外装个CUDA Toolkit的。(参考:【PyTorch】n卡驱动、CUDA Toolkit、cuDNN全解安装教程)