“个人文化属性”
最近需要做个东西,大体是工控机16.04和20.04.05ubuntu的双linux系统,然后需要分别给这两个系统安装显卡驱动,nvidia的卡,2080SUPER,16的内核版本是4.xxx系列的。20.04.05的内核版本为5.15.0.48,(值得指出的是我的任务是首先卸载掉一个ubuntu22.04的版本,然后在那块分区上安装ubuntu20.04的),以下是我的踩坑合集。千辛万苦化为一文。
- 工控机 nuvo上安装的
双系统
1. 双linux系统格式化一个linux系统
首先,确认自己的要卸载的系统所安装的分区。键入如下查看详细信息
sudo fdisk -l
比如我的ubuntu22在/dev/sdb6分区,那么需要在16下操作,首先在16版本中登录,然后卸载该系统分区:
sudo umount /dev/sdb6
其次,格式化该分区,这里我们选择格式化为ext4格式:
sudo mkfs ext4 /dev/sdb6
至此,原分区还在,只是被清空了。此时开机将会进入grub模式,后边会讲怎么修复这个grub引导项。这里我跟着流程走。
2. 安装新的20系统(双系统)
- 下载ubuntu镜像源,我用的是ultraso软件制作的启动U盘(注意不要用有数据的U盘哦),会格式化。
- 制作好启动U盘后,电脑设置BIOS从U盘启动,然后正常开机,正常安装步骤,但是记得,在选择安装方式时,要选择最后一项,因为我们的电脑上还有16系统,不要伤害到它,所以我们选择其他来安装(最后一项)(这里用的是别人的图啦,忽略哪个windows,我们的是16,无关紧要,举个例子而已)
3. 如果你上一步选择正确,这一步将会设置安装位置,我们选择 /dev/sdb6位置安装,记得要以EXT4文件,并且选择挂载点为"/",然后点击继续->yes,后边的一切照旧。
- 经过一系列步骤,至此,应该已经安装好了然后重启即可。
3. 重启后直接进入grub界面(修复它)
不要慌,这是由于分区调整造成的,输入:
ls
查看一下,不出意外应该能看到很多(hd0, gptsx)(x=0,1,2,3,4,5,6…),我们修复一下就好了,修复步骤如下:
3.1 寻找你的系统分区
比如我知道我这里是 gpts6,就直接输入:
ls (hd0,gpts6)
能看到filesystem,检测到了系统,即为正确的(这只是一个确认步骤,不是必要步骤)
3.2 修改启动分区
以下代码,逐个执行,root选择你系统所在分区就好
set root=(hdt0,gpts6) #
set prefix= (hdt0,gpts6)/boot/grub # grub路径设置
insmod normal #启动normal启动
normal # 之后你就会看到熟悉的启动界面
输入normal即可完成一次正常启动,还要在系统里修复grub。
3.3 进入系统后修复
在终端运行
sudo update-grub
sudo grub-install /dev/sdb6
因为我的系统实在/dev/sdb6分区安装的嘛,各位自行选择就可。然后就没错了。
(有可能更新update-inittrms -u)会有错,百度一下就行了,很简单是找不到snap区的UUID啥的吧,网上教程很多,大概就是自定义一个关键字然后赋值为交换区的UUID。就可以了
N卡驱动的坑
正常的run文件驱动安装方法
我先说正常步骤哈。
首先,驱动(run文件安装的)与内核版本一定有关。经过测试,nuvo工控机,ubuntu22.04.05,内核5.15.0.48,我这里测得只能用470.63.01的驱动。
正常安装步骤:
1.1 禁用nouveau
下载驱动的run文件,存入一个纯英文路径即可。
然后打开文件:
sudo gedit /etc/modprobe.d/blacklist.conf
向文件末尾添加;
blacklist nouveau
options nouveau modeset=0
更新下:
sudo update-initramfs -u
sudo reboot
1.2安装
仍然打开刚才操作的那个内核开机,如果此时界面进不去,就CTR+F1-6去命令行操作,登陆后(文件名太长,自己补全):
chmod +x NVIDIA-Linux....run
sudo ./NVIDIA-Linux....run -no-x-check
进入安装界面后:
基本都选择默认项,32位库选No。
重启
sudo reboot
仍然以刚才的内核版本启动,然后等待一会,就可以有显卡输出了。
进去输入:
nvidia-smi
也是有信息的。证明安装成功。
2. 一些教训
- run文件安装的驱动,需要禁止一下内核更新,因为随着update和upgrade操纵,更新内核后驱动就不能用了。但是我几经尝试,装卸装卸系统多次,可我的只能用run安装
- apt命令行和附加驱动的安装方式是一样的,对我来说都会黑屏,物理机可能没这个问题了
- 以一种内核安装驱动后,建议就把这种内核启动方式设置为默认吧,/etc/default/grub里更改那个序号,默认是0,我这里5.15.0.48是第一个从上往下,0,1,2.。我更改为1,再普通启动就没问题了。换用其他内核可能会出各种各样的问题,比如no device found啊,nvidia driver install latest and running 啦之类的。
- 讲道理,还是推荐附加驱动安装,起码人家不随内核升级而失灵啊。
3. CUDA版本问题
- 问题描述: 运行深度学习项目时,发现在最后fusing layer时提示CUDA版本不匹配,出现如下字样
Hint: ‘CUBLAS_STATUS_NOT_SUPPORTED’. The functionality requested is not supported
3.1 nvidia-smi和nvcc -V 的CUDA不同
之前安装是按照nvidia-smi中的安装的,具体是11.4
而nvcc -V 最后一行显示是10.1
- 其实这样是没问题的,前者是驱动CUDA版本即Driver API,后者是运行时CUDA 即 runtime API
- 保证前者的CUDA版本大于后者即可
- 然后自己的深度学习项目一定要选择和NVCC -V的CUDA版本对应的。重新安装即可成功。