[踩坑合集] 双linux系统卸载/安装,nvidia驱动安装,引导项缺失,开机黑屏,nvidia-smi和nvcc -v CUDA版本不匹配


最近需要做个东西,大体是工控机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系统(双系统)

  1. 下载ubuntu镜像源,我用的是ultraso软件制作的启动U盘(注意不要用有数据的U盘哦),会格式化。
  2. 制作好启动U盘后,电脑设置BIOS从U盘启动,然后正常开机,正常安装步骤,但是记得,在选择安装方式时,要选择最后一项,因为我们的电脑上还有16系统,不要伤害到它,所以我们选择其他来安装(最后一项)(这里用的是别人的图啦,忽略哪个windows,我们的是16,无关紧要,举个例子而已)
    在这里插入图片描述3. 如果你上一步选择正确,这一步将会设置安装位置,我们选择 /dev/sdb6位置安装,记得要以EXT4文件,并且选择挂载点为"/",然后点击继续->yes,后边的一切照旧。
  3. 经过一系列步骤,至此,应该已经安装好了然后重启即可。

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. 一些教训

  1. run文件安装的驱动,需要禁止一下内核更新,因为随着update和upgrade操纵,更新内核后驱动就不能用了。但是我几经尝试,装卸装卸系统多次,可我的只能用run安装
  2. apt命令行和附加驱动的安装方式是一样的,对我来说都会黑屏,物理机可能没这个问题了
  3. 以一种内核安装驱动后,建议就把这种内核启动方式设置为默认吧,/etc/default/grub里更改那个序号,默认是0,我这里5.15.0.48是第一个从上往下,0,1,2.。我更改为1,再普通启动就没问题了。换用其他内核可能会出各种各样的问题,比如no device found啊,nvidia driver install latest and running 啦之类的。
  4. 讲道理,还是推荐附加驱动安装,起码人家不随内核升级而失灵啊。

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版本对应的。重新安装即可成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值