
今天在生产环境遇到个问题,ubuntu22.04系统执行了apt upgrade,内核从6.8.0-79-generic升级到6.8.0-124-generic,NVIDIA驱动不能正常使用了。计划重新安装一下NVIDIA GPU驱动,在官网上下载驱动时发现,最新版本的驱动安装已经发生重大变化,之前都是下载.run文件安装,现在官方提供了deb安装且对安装包的管理进行了改进,可以很方便的对驱动升级、回退、锁定。
1、驱动下载
下载地址:https://www.nvidia.cn/drivers/
选择对应的卡和操作系统:

点击查找:

确认系统版本和驱动版本之后,点击查看:

点击下载,下载本地deb安装文件:
nvidia-driver-local-repo-ubuntu2204-590.48.01_1.0-1_amd64.deb2、安装配置本地源
这里我们以本地安装为例,先安装第一步下载的deb包:
dpkg -i nvidia-driver-local-repo-ubuntu2204-590.48.01_1.0-1_amd64.deb添加GPG Key:cp /var/nvidia-driver-local-repo-$distro-$version/nvidia-driver-*-keyring.gpg /usr/share/keyrings/apt update本地源添加成功:

3、安装Pin packages
从590版本开始,针对Ubuntu的安装包做了一些修改,以便可以通过锁定软件包(pinning)来切换、安装特定的驱动版本和特定版本的升级、降级。在安装驱动之前,需要先安装pin packages,以便锁定驱动版本。
我为什么对这个功能很推荐,因为被深深伤过,之前遇到在生产环境执行了apt upgrade导致nvidia-fabricmanager包被升级,因为之前驱动都是.run安装的,驱动没变,驱动和nvidia-fabricmanager版本不一致导致驱动异常,之前我们都是手动将驱动、CUDA、nvidia-fabricmanager等包pin住,现在有了这个功能,那这事就可以交给Ubuntu包管理器了。
apt install nvidia-driver-pinning-590执行以上命令,安装成功如下图:

这一步其实创建了一个配置文件,将驱动固定在一个版本:

4、安装GPU驱动
上一步安装了pin包,这里直接执行驱动安装即可,会自动安装上一步指定的版本。
apt install nvidia-open -y安装完成后,执行nvidia-smi命令查询版本:

5、驱动版本升级
当没有锁定版本时,直接执行apt upgrade即可升级驱动,如果有锁定版本,首先得修改锁定的版本,然后执行驱动升级(比如从570升级到590):
1)修改锁定版本
apt install -V --purge nvidia-driver-pinning-5902)执行升级,并删除不需要的依赖包
apt dist-upgrade --autoremove --purge nvidia-open
夜雨聆风