Ubuntu 22.04虚拟机GPU直通场景下NVIDIA驱动版本不匹配问题求助
Ubuntu 22.04虚拟机GPU直通场景下NVIDIA驱动版本不匹配问题求助
Hey Luis,碰到这种驱动版本不匹配的问题确实挺闹心的,尤其是在虚拟机GPU直通的场景下,咱们一步步来把这个问题解决掉:
问题背景梳理
你当前的情况是:
- 虚拟机系统为Ubuntu 22.04,已完成GPU直通,NVIDIA GT 740M显卡被正常识别(内核驱动显示为
nvidia) - 按照
ubuntu-drivers devices推荐安装了nvidia-drivers-390,但运行nvidia-smi时提示NVML驱动/库版本不匹配,内核模块版本是390.157,但客户端API版本却是530.30.02 - 通过
dpkg --get-selections | grep nvidia查看已安装包,没有530版本的驱动,但用sudo find /usr/lib -iname "*nvidia*530*"能找到相关文件夹,删除后又出现了520版本的文件
解决步骤
1. 彻底卸载所有NVIDIA相关残留
先把系统里所有NVIDIA相关的包和残留文件彻底清理干净:
# 卸载所有NVIDIA相关包 sudo apt-get purge nvidia* # 自动清理无用依赖 sudo apt-get autoremove # 清理缓存文件 sudo apt-get autoclean
2. 手动删除残留的高版本驱动文件
针对那些dpkg没记录但实际存在的高版本驱动文件,咱们手动清理:
# 删除所有530、520版本的NVIDIA相关文件 sudo find /usr/lib -iname "*nvidia*530*" -delete sudo find /usr/lib -iname "*nvidia*520*" -delete # 清理所有非390版本的NVIDIA库文件(稳妥起见可以先不加-delete,先查看列表确认) sudo find /usr/lib -iname "*nvidia*" ! -name "*390*" -type f | sudo xargs rm -f
3. 清理内核模块残留
确保内核里没有残留的高版本NVIDIA模块:
# 删除内核中的NVIDIA驱动模块文件 sudo rm -rf /lib/modules/$(uname -r)/kernel/drivers/video/nvidia* # 更新内核模块依赖 sudo depmod -a
4. 重新安装适配的390驱动
清理完成后,重新安装官方推荐的390驱动:
# 自动安装推荐的驱动 sudo ubuntu-drivers autoinstall # 或者手动指定安装390版本(更稳妥) sudo apt install nvidia-driver-390 nvidia-dkms-390
5. 重启系统并验证
安装完成后重启虚拟机,然后运行以下命令验证:
nvidia-smi
如果一切正常,应该会显示390.157版本的驱动信息,不再出现版本不匹配的提示。
补充说明
出现这种“幽灵”高版本文件的原因,大概率是之前系统里安装过高版本驱动(可能是误操作、系统更新自动拉取的依赖包,或者虚拟机镜像本身带的残留),这些文件不在dpkg的管理范围内,所以需要手动清理。另外,GT740M最高支持的是470版本驱动,如果你后续想尝试更高版本,也可以安装nvidia-drivers-470,步骤和上面一致。
备注:内容来源于stack exchange,提问作者Luis Pereira
相关产品推荐
相关产品推荐

