小白日记–从零开始配置工位电脑
实验室科研学习必然用到工作站和linux系统,我初次接触,踩了不少坑,回头看也有一些操作不太得当,所以写下这篇博文,整合个人经验和网上的各种教程,方便将来再次重装时参考(最好是不要走到这一步),欢迎批评指正
硬件与接线
与几乎能“开机即用”的笔记本电脑不同,整个工作站分为数个部分,比如主机、显示器、键盘和鼠标等必要的外设。
主机
连接电源;摆放时注意考虑通风散热,插拔各种线是否方便。
显示器
我现在分到一台主机和一台显示器;看师兄师姐们工位上可以双屏,这个就以后再说。显示器有一条电源线和一条DP/HDMI线,电源线正常接三孔插座,**DP线一定要接到主机上正确的位置!否则会影响显卡驱动和CUDA的安装。**机箱上不止一个DP口,DP线要接显卡(在我的机箱上对应更靠下的DP口),不要接主板
键盘鼠标
正常接USB口。
卸载原有系统(可选)
电脑是windows和ubuntu双系统,卸载和重装ubuntu需要用到windows,准备好启动盘的情况下无需联网。
准备启动盘(可选)
准备一个空U盘,最好大于8G,用于制作启动盘。ubuntu官网下载对应版本的.iso镜像文件,注意安装操作系统和安装虚拟机不同。这里我直接用了现成的启动盘,启动盘的具体制作步骤可以参考其他博客。
重装前备份文件
删除系统
根据网上教程,我是在windows下删除了原先的ubuntu再进行重装。在“磁盘管理”中,普通分区右键“删除卷”,删除efi系统分区需要用到磁盘工具:win + r 输入cmd打开终端,输入diskpart进入磁盘工具,参考:
link
另外似乎可以无需手动删除,直接插入启动盘→BIOS界面选择U盘启动→重新安装ubuntu,删除(或覆写?)之前的系统,但没尝试
重装ubuntu 20.04系统
听取建议+实验室惯例选择了安装ubuntu20.04;其他许多软件和工具也是如此,一般官网优先提供最新版本,但最新版本可能不稳定,一般使用比最新版稍低(2-3代)的版本。
电脑断网,不插网线,插入启动盘,开机时迅速按F2/F10进入BIOS界面(不同主板对应不同的进入方式)。调整启动优先级,最优先设为从U盘启动,保存并退出
再次重启(启动盘插好),选择“ubuntu”进入安装界面
设置系统语言(语言可以在安装完成后切换),在“试用”和“安装”中选择“安装”,键盘布局默认
建议选择最小安装,节约时间
安装方式选“其他”,自定义分区
分区(重要)
非常非常重要的一步,一定要想办法搞清楚自己在做什么。网上教程说什么的都有,我这里算是结合了教程、需求、踩坑和自己的想法
在图形化界面中从“free space”里划分各个分区,选中空闲空间→点击左下角“+”号→设置分区大小、分区类型、分区位置、分区用途
- 1-EFI分区
分区大小:300M+,不用太大,我设置了512M
分区类型:逻辑分区
分区位置:默认选择从当前分区起点开始
分区用途:EFI System Partition,系统引导分区。Device for boot loader installation必须选择EFI所在分区。
- 2-swap分区
分区大小:内存小于8G设8G,大于8G设为和物理内存相等,我设置了32G
分区类型:逻辑分区
分区位置:默认
分区用途:swap area“交换空间”,存储临时数据,相当于windows上的虚拟内存,有深度学习需求会用到(较大的)swap
- 3-/分区
分区大小:根据电脑实际情况设置,稍大一点比较好,众说纷纭;25G+(计划设置40G)
分区类型:主分区
分区位置:默认
分区用途:ext4文件系统,根目录,存放系统文件,命令行下载的软件包等,有点类似windows的C盘;只要”/”存在,Linux系统即可运作。另外还可分出/usr,/var等分区。网上资料称/usr用于存放用户安装的软件包,如CUDA toolkit和各种命令。 如果不分/usr分区,且有深度学习跑模型的需求,/分区要足够大
挂载点:/
- 4-/home分区
分区大小:剩余所有(计划设置72G)
分区类型:逻辑分区
分区位置:默认
分区用途:ext4文件系统,存放用户个人数据;需要注意的是anaconda会安装到/home下,所以新建的环境都会在/home里面,home要足够大。额外分割出/home有个好处,据说只要选择不格式化这个分区,重新安装系统时,就不需要特别去备份个人文件,只要重新挂载为/home就不会丢失分区中的数据。
挂载点:/home
- 其他:最简单的情况下,个人用户只需三个分区,EFI、swap、剩下的全给/
关于主分区和逻辑分区
主分区、扩展分区、逻辑分区是MBR分区表类型下的专有概念
MBR分区支持最少1个、最多4个主分区,主分区和扩展分区同级,主分区不能继续分区,扩展分区能被拆分成多个逻辑分区
其他细节
设备名称可以之后随时更改;密码可以简单一些,因为会经常用到
扩容
初次重装时分区设置:32G的swap, 512M的EFI, 30G的home, 25G的根目录/, 剩下的给了usr(主分区/逻辑分区没有记录)
后重新分区,为home目录扩容(现在根目录20G,usr 30G,home 62G),使用gparted扩容需要启动盘
Ubuntu20.04根目录/home目录扩容(双系统,亲测有效)_ubuntu home扩容双硬盘_放p给你玩的博客-CSDN博客
也有无需用到启动盘,在终端中通过命令行扩容的方法,相对复杂,可参考其他博客
挂载硬盘
外置硬盘可以用来存放训练数据,也可以用来扩容。硬盘可以通过硬盘底座、硬盘柜等方式连接电脑。
- 1-新硬盘初次连接
初次连接时,不会出现U盘图标,df -h也看不到新硬盘,因为新硬盘尚未分区。用lsblk可以看到,根据"SIZE"(如4T、8T),判断出新硬盘是哪一个,记住对应的NAME(如sda);
命令行输入:
parted /dev/sda
分区、格式化与挂载步骤参考教程:
ubuntu 挂载硬盘(GPT分区,大于2T的硬盘) - 叶建成 - 博客园 (cnblogs.com)
硬盘格式化为ext4文件系统;数据盘无需设置开机自动挂载。
- 2-硬盘的使用
硬盘底座连电脑(一根电源线,一根连电脑的线),硬盘接硬盘底座。
使用时可在“磁盘”中修改硬盘卷标为希望的名字(如Dataset1):选中硬盘→点击齿轮图标编辑文件系统→修改卷名为Dataset1
如果“编辑文件系统”一栏标灰不可选中,首先点击停止符(黑色方块),卸载分区
首次使用需要chmod更改硬盘权限(可否读、可否写、可否被执行),否则无法在硬盘中新建文件夹。如:
chmod 754 /media/用户名/Dataset1
- 3-硬盘的卸载
手动挂载的硬盘类似U盘,在文件夹界面点击右侧小箭头即可卸载,最好不要直接拔。
- 4-其他
硬盘注意防摔防震动,硬盘底座尽量不要积灰。
联网
粗暴地说,工位电脑上网方法分为有线上网(插网线)和无线上网(连wifi)两种,分别需要对应的硬件(网线/无线网卡)和网卡驱动(软件);利用路由器的方法暂不清楚
查看网卡驱动
相应地,网卡驱动分为以太(有线)网卡驱动和无线网卡驱动。我的以太网卡和驱动都是内置的,插上网线直接可以上网;无线上网则需要插无线网卡,然后安装无线网卡驱动。
命令:lspci | grep -i ethernet // lspci | grep net
输出:06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
命令释义:lspci用来显示系统中所有PCI总线设备,或连接到该总线上的所有设备;grep指定设备名中的关键词。上述输出说明电脑所用以太网卡为r8125,下载驱动时要选择相应的版本(或能向下兼容的更高版本,如r8129)
命令:lspci -v 查看所有设备,并给出一定的信息
输出:
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
Subsystem: ASUSTeK Computer Inc. RTL8125 2.5GbE Controller
Kernel driver in use: r8125
Kernel modules: r8125
上述输出说明当前所用驱动为r8125. 此时网线已插上,电脑可以上网,ubuntu桌面右上角出现有线网图标,没有wifi图标。如不插网线,同样命令同样可以查看网卡和驱动的型号,输出会略有不同。
wifi图标
命令:sudo vim(或gedit) /etc/NetworkManager/NetworkManager.conf
修改networkmanager配置文件,开启网络服务(managed=true,表示托管网络);其中wifi.scan-rand-mac-address表示随机设置MAC地址,一般设为wifi.scan-rand-mac-address=no
【已解决】双系统 ubuntu wifi 图标消失,无法连接无线网,查询无线网卡型号安装驱动(含网络备用方案)_dell安装ubuntu双系统没有无限网-CSDN博客
进行上述操作后,wifi图标还是没有出现,可能需要配合无线网卡及无线网卡驱动。
显卡驱动与CUDA
重要而且坑多的一步,网上这方面的教程有很多,这里结合教程和个人经验做整理。
基本情况
按nvidia官方说法,CUDA本身是一个并行计算平台和编程模型,也有人说这就像一门编程语言,用于GPU编程;CUDA与CUDA Toolkit二者常常混用。CUDA Toolkit是工具包,在安装CUDA Toolkit的时候会默认安装CUDA Driver(即显卡驱动软件),也可单独安装显卡驱动。
在已有驱动的情况下,安装CUDA(Toolkit)时可以手动选择不再安装驱动。需要注意CUDA(Toolkit)和显卡驱动之间的版本兼容性。
cuDNN是专门针对深度神经网络中的基础操作而设计的加速库,几乎所有深度学习框架都支持cuDNN这一加速工具,如TensorFlow、Torch、Pytorch. 以pytorch为例,pytorch自带cuda和cudnn,理论上只需要准备支持高于这个cuda版本的显卡驱动就可以了。不过这个cuda只包含给pytorch用的库函数,不包括cuda toolchain,比如nvcc等等,如果需要完整的cuda还是要自己装。
anaconda中安装的"cuda toolkit"与上述提到的不同,“可有可无”。
CUDA可以去nvidia官网下载,无需注册,cudnn需要注册。
【精选】一文讲清楚CUDA、CUDA toolkit、CUDNN、NVCC关系_健0000的博客-CSDN博客 写得很好
硬件检查
命令:lspci | grep -i vga
输出:01:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti Rev. A] (rev a1)
上述输出表明电脑显卡型号为GeForce RTX 2080 Ti Rev. A。
安装显卡驱动
命令:ubuntu-drivers devices
输出:
标有“recommended”的为推荐版本,记住推荐的版本号(此处为535)。对于较新的ubuntu,安装方式多样,可以从nvidia官网下载对应版本的包,然后手动安装,也可以通过终端输入命令自动安装。
关于图形界面的问题(关键)
- safe graphics
我的电脑在最开始安装Ubuntu后就出现了黑屏+左上角光标闪烁,无法进入图形界面的情况。后通过“safe graphics”模式重新安装解决:
后来在安装高版本内核后,又出现了同样的情况。
- 内核
查看内核版本:dpkg --list | grep linux-image
输出:
一般建议保留1-2个旧版本内核备用。部分教程提示安装显卡驱动(及后续步骤)之前需要升级内核,然而在无驱动的情况下,从高内核版本启动已经无法进入图形界面。与开机启动项有关的配置文件为grub:
gedit /etc/default/grub
命令可以打开grub文件。针对黑屏问题,部分教程建议修改grub,将配置文件中的"quiet splash"删去;这一参数的含义为“安静地启动”,即开机时不显示启动信息。实测修改它对我无效。
grub文件还可以指定启动时的内核版本,实测通过较低版本的内核可以顺利进入图形化界面。内核版本也可在每次开机时手动指定。
对grub进行修改并保存后,还需使用sudo update-grub更新配置。
- gdm3和lightdm
ubuntu 20.04默认的显示管理器是gdm3。可以下载lightdm,来应对gdm3出错、与安装的其他软件冲突的情况:
安装lightdm: sudo apt-get install lightdm
卸载lightdm: sudo apt-get remove lightdm
二者共存时,再次开机可能会遇到要求选择gdm3或lightdm的界面,选择其一即可
- tty
禁用图形界面:sudo telinit 3
然后进入tty模式。tty模式下需要重新输入用户名和密码。
重新启用图形界面:sudo telinit 5
tty模式中,ctrl + alt + f1(f2,f3,…f12)分别对应数个不同的终端。实测我的电脑只支持到f6,大家可以一个个试。
部分教程建议在安装显卡驱动时禁用默认的显卡驱动和图形界面,通过tty来安装;进不去图形界面的时候也可以通过tty来挽救,例如用tty卸载显卡驱动,然后重装。
- 特殊
再次检查DP线是否接对了,是否接到了显卡而不是主板,否则安装显卡驱动时,即使没有冲突问题也会黑屏。
官网下载安装包手动安装
uname -a查看系统架构等信息。
根据电脑实际硬件配置,到官方驱动 | NVIDIA下载合适的安装包:
参考博客:【超详细】【ubunbu 22.04】 手把手教你安装nvidia驱动,有手就行,隔壁家的老太太都能安装_ubuntu安装nvidia显卡驱动_huiyoooo的博客-CSDN博客
Ubuntu自动安装
自动安装或官网下载手动安装选择其一即可。部分教程建议手动安装,能更清楚自己在做什么、做了什么,但自动安装确实很方便。实测自动安装时无需手动禁用nouveau。
sudo apt install nvidia-driver-XXX
其中XXX为推荐的版本号(如535).
安装完成后,打开软件和更新-附加驱动,可以看到附加驱动已经更换为刚才下载的驱动。也可以直接在软件和更新-附加驱动中切换到所需版本。
关于驱动名称:
一般而言,NVIDIA提供多个驱动程序版本,以满足不同用户需求和硬件配置的要求。其中,"Server"和"Open"可能指的是不同类型的应用场景或发行版本,以 NVIDIA Driver 535 版本为例进行介绍:
NVIDIA Driver 535 Server Open: 这是专为服务器环境设计的开放版本的NVIDIA驱动程序,它具有一些特定于服务器的功能或优化,以提供更好的性能和稳定性。
NVIDIA Driver 535: 这是通用版本的NVIDIA驱动程序,适用于大多数NVIDIA显卡和桌面/笔记本电脑系统,它能提供广泛的兼容性和功能,并支持各种应用程序和游戏。
NVIDIA Driver 535 Open: 这是开源版本的NVIDIA驱动程序,针对那些希望在开放源代码环境下自定义和修改驱动程序的用户,它能提供更多的灵活性和可定制性。
一般选择“NVIDIA Driver 535”这类即可。
安装CUDA 11.7
装好显卡驱动后,终端输入nvidia-smi查看当前驱动支持的最高CUDA版本:
右上角数字表明,当前版本的显卡驱动最高支持CUDA12.2. 据说12以上的CUDA与很多热门深度学习模型不兼容,不好用,选择安装CUDA11.7.
建议同时参考需要用到的深度学习框架(如pytorch)和CUDA之间的版本对应关系。
下载安装包
进入CUDA Toolkit Archive | NVIDIA Developer,选择所需版本。注意在官网某个界面看到的“下载”默认下载最新版CUDA,而我们需要的往往是指定版本的CUDA,不要弄错了。
uname -a 查看相关信息,根据实际情况选择。选择完成后,下方会给出命令:
选择deb和runfile都可以,runfile的命令比较简单。
安装CUDA时的各种可选项
如果已经安装了显卡驱动,取消选择Drivers:
其他可以一路默认过去。感兴趣的话可以搜一下各个参数分别是什么意思。
修改环境变量
是否添加环境变量选yes. 也可以手动更改环境变量:
sudo vim ~/.bashrc (vim 和 gedit都可以)
在最后一行增加
export PATH=“/usr/local/cuda-11.7/bin:$PATH”
export LD_LIBRARY_PATH=“/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH”
source ~/.bashrc 更新环境变量。增加的内容可能需要根据具体情况(如当前终端所在目录位置)调整。
多版本CUDA切换
暂时没有这个需求,等有需要了再来补充。
其他
更换软件源
安装vscode
安装anaconda
…