问题:老显卡 GT620 新驱动不支持
我的显卡是 04:00.0 VGA compatible controller: NVIDIA Corporation GF119 [GeForce GT 620 OEM] (rev a1)
飞牛自带 nvidia-560 驱动
飞牛默认安装 nvidia-560版本并不支持该型号,nvidia-smi 提示失败
debian 自动安装
官方仓库直接安装,是570版本
shell
$ apt install nvidia-driver
省略一万行
安装成功
$ dpkg -l | grep nvidia
ii firmware-nvidia-gsp 570.86.15-1 amd64 NVIDIA GSP firmware
ii libegl-nvidia0:amd64 570.86.15-1 amd64 NVIDIA binary EGL library
ii libgles-nvidia1:amd64 570.86.15-1 amd64 NVIDIA binary OpenGL|ES 1.x library
ii libgles-nvidia2:amd64 570.86.15-1 amd64 NVIDIA binary OpenGL|ES 2.x library
ii libglx-nvidia0:amd64 570.86.15-1 amd64 NVIDIA binary GLX library
ii libnvidia-allocator1:amd64 570.86.15-1 amd64 NVIDIA allocator runtime library
ii libnvidia-api1:amd64 570.86.15-1 amd64 NVAPI runtime library
ii libnvidia-cfg1:amd64 570.86.15-1 amd64 NVIDIA binary OpenGL/GLX configuration library
ii libnvidia-egl-gbm1:amd64 1.1.2-1 amd64 GBM EGL external platform library for NVIDIA
ii libnvidia-egl-wayland1:amd64 1:1.1.10-1 amd64 Wayland EGL External Platform library -- shared library
ii libnvidia-egl-xcb1:amd64 570.86.15-1 amd64 Wayland EGL External Platform library -- shared library
ii libnvidia-eglcore:amd64 570.86.15-1 amd64 NVIDIA binary EGL core libraries
ii libnvidia-glcore:amd64 570.86.15-1 amd64 NVIDIA binary OpenGL/GLX core libraries
ii libnvidia-glvkspirv:amd64 570.86.15-1 amd64 NVIDIA binary Vulkan Spir-V compiler library
ii libnvidia-gpucomp:amd64 570.86.15-1 amd64 NVIDIA binary GPU compiler library
ii libnvidia-ml1:amd64 570.86.15-1 amd64 NVIDIA Management Library (NVML) runtime library
ii libnvidia-ngx1 570.86.15-1 amd64 NVIDIA NGX runtime library
ii libnvidia-rtcore:amd64 570.86.15-1 amd64 NVIDIA binary Vulkan ray tracing (rtcore) library
ii libnvidia-vksc-core 570.86.15-1 amd64 NVIDIA binary Vulkan Safety Critical library
ii nvidia-driver 570.86.15-1 amd64 NVIDIA metapackage
ii nvidia-driver-libs:amd64 570.86.15-1 amd64 NVIDIA metapackage (OpenGL/GLX/EGL/GLES libraries)
ii nvidia-egl-icd 570.86.15-1 amd64 NVIDIA EGL installable client driver (ICD)
ii nvidia-kernel-dkms 570.86.15-1 amd64 NVIDIA binary kernel module DKMS source
ii nvidia-kernel-support 570.86.15-1 amd64 NVIDIA binary kernel module support files
ii nvidia-modprobe 570.86.15-1 amd64 utility to load NVIDIA kernel modules and create device nodes
ii nvidia-vdpau-driver:amd64 570.86.15-1 amd64 Video Decode and Presentation API for Unix - NVIDIA driver
ii nvidia-vulkan-icd:amd64 570.86.15-1 amd64 NVIDIA Vulkan installable client driver (ICD)
ii xserver-xorg-video-nvidia 570.86.15-1 amd64 NVIDIA binary Xorg driver
执行 nvidia-smi 具体提示没找到文件。。。
lsmod | grep nvidia 也没有结果。。。
应该是没成功
官网最新驱动(570.run)下载安装
下载安装,失败,提示不支持该显卡,退出。
shell
WARNING: The following NVIDIA GPUs are supported through NVIDIA legacy Linux graphics drivers and will be ignored by the NVIDIA 570.86.16 Linux graphics driver:
GeForce GT 620 requires 390.xx
Please visit https://www.nvidia.com/object/unix.html for more information.
WARNING: You do not appear to have an NVIDIA GPU supported by the 570.86.16 NVIDIA Linux graphics driver installed in this system. For further details, please see
the appendix SUPPORTED NVIDIA GRAPHICS CHIPS in the README available on the Linux driver download page at www.nvidia.com.
官网指定型号 run 驱动下载安装
官网按指定型号查到最后一版是390.157,下载安装,编译失败。
既然失败,链接就不发了
安装结果如下
WARNING: Unable to determine the path to install the libglvnd EGL vendor library config files. Check that you have pkg-config and the libglvnd development libraries
installed, or specify a path with --glvnd-egl-config-path.
ERROR: Failed to run `/usr/sbin/dkms build -m nvidia -v 390.157 -k 6.6.38-trim`: Sign command: /lib/modules/6.6.38-trim/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Building module:
Cleaning build area...
'make' -j12 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=6.6.38-trim modules.........(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.6.38-trim (x86_64)
Consult /var/lib/dkms/nvidia/390.157/build/make.log for more information.
再看 make.log 。一堆编译失败,多数是函数参数错误、结构体定义错误等,太长,不贴了。
官方回复是2022年后不再更新该版本,所以在新内核上是安装不了的。
Unix 驱动存档
nvidia-detect安装
安装成功,运行失败,提示 debian 版本找不到
shell
Detected NVIDIA GPUs:
04:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF119 [GeForce GT 620 OEM] [10de:1049] (rev a1)
Checking card: NVIDIA Corporation GF119 [GeForce GT 620 OEM] (rev a1)
Uh oh. Failed to identify your Debian suite.```
百度说 lsb-release 没安装,折腾一圈后,查看 nvidia-detect 是个shell 脚本,上面开头写着最后支持nvidia 550版本,下面一堆版本判断中,结束在debian 11,也就是说,不支持debian 12.
game over ...
难道就这样废了???????????
不死心,继续百度,同时向百度AI求救。没中文资料。。。
转机
最后在nvidia官网论坛中,有人指出安装 nvidia-legacy-390xx-driver,并给了链接
发现 debian 官方有对 390 版本驱动进行维护,我整理使用方法如下
前提是先把之前安装的卸载
比如在飞牛控制面板上卸载nvidia驱动
之前运行过的 nvidia-xxxx.run 的,执行 nvidia-xxxx.run --uninstall
apt 包卸载
查看一下
shell
$ dpkg -l | grep nvidia
iU firmware-nvidia-gsp 570.86.15-1 amd64 NVIDIA GSP firmware
iU libnvidia-eglcore:amd64 570.86.15-1 amd64 NVIDIA binary EGL core libraries
iU libnvidia-glcore:amd64 570.86.15-1 amd64 NVIDIA binary OpenGL/GLX core libraries
ii libnvidia-glvkspirv:amd64 570.86.15-1 amd64 NVIDIA binary Vulkan Spir-V compiler library
ii libnvidia-gpucomp:amd64 570.86.15-1 amd64 NVIDIA binary GPU compiler library
ii libnvidia-rtcore:amd64 570.86.15-1 amd64 NVIDIA binary Vulkan ray tracing (rtcore) library
iU nvidia-driver-libs:amd64 570.86.15-1 amd64 NVIDIA metapackage (OpenGL/GLX/EGL/GLES libraries)
ii nvidia-driver-trim 560.28.03 all exiftool
iU nvidia-kernel-dkms 570.86.15-1 amd64 NVIDIA binary kernel module DKMS source
iU nvidia-kernel-support 570.86.15-1 amd64 NVIDIA binary kernel module support files
iU nvidia-vulkan-icd:amd64 570.86.15-1 amd64 NVIDIA Vulkan installable client driver (ICD)
iU xserver-xorg-video-nvidia 570.86.15-1 amd64 NVIDIA binary Xorg driver
卸载相关包
shell
apt purge nvidia-* libnvidia-eglcore libnvidia-glcore libegl1 libegl-mesa0 xserver-xorg-core xserver-xorg-video-nvidia
更新系统
shell
apt upgrade
The following packages will be upgraded:
avahi-daemon avahi-utils base-files bind9-dnsutils bind9-host bind9-libs bsdextrautils bsdutils btrfs-progs curl distro-info-data dnsmasq-base docker-compose-plugin
dpdk eject exim4-base exim4-config exim4-daemon-light fdisk ghostscript git git-man gnutls-bin gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x
gtk-update-icon-cache imagemagick-6-common initramfs-tools initramfs-tools-core intel-microcode iputils-ping libaom3 libarchive13 libavahi-client3
libavahi-common-data libavahi-common3 libavahi-core7 libblkid1 libcephfs2 libcjson1 libcups2 libcurl3-gnutls libcurl4 libfdisk1 libglib2.0-0 libglib2.0-data
libgnutls-dane0 libgnutls30 libgs-common libgs10 libgs10-common libgsf-1-114 libgsf-1-common libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libgtk-3-bin
libgtk-3-common libheif1 libmagick++-6.q16-8 libmagickcore-6.q16-6 libmagickwand-6.q16-6 libmount1 libmpg123-0 libnfsidmap1 libnghttp2-14 libnss-mymachines
libnss-systemd libnss3 libntfs-3g89 libopenjp2-7 libpam-systemd libpostproc56 libpq5 libpython3.11 libpython3.11-minimal libpython3.11-stdlib librados2 librbd1
librte-bus-auxiliary23 librte-bus-pci23 librte-bus-vdev23 librte-bus-vmbus23 librte-common-mlx5-23 librte-cryptodev23 librte-dmadev23 librte-eal23 librte-ethdev23
librte-gso23 librte-hash23 librte-ip-frag23 librte-kvargs23 librte-mbuf23 librte-mempool-ring23 librte-mempool23 librte-meter23 librte-net-af-packet23
librte-net-bond23 librte-net-e1000-23 librte-net-fm10k23 librte-net-i40e23 librte-net-ixgbe23 librte-net-mlx4-23 librte-net-mlx5-23 librte-net-netvsc23
librte-net-pcap23 librte-net-tap23 librte-net-thunderx23 librte-net-vdev-netvsc23 librte-net-vhost23 librte-net-virtio23 librte-net-vmxnet3-23 librte-net23
librte-pci23 librte-rcu23 librte-ring23 librte-sched23 librte-security23 librte-telemetry23 librte-vhost23 libsmartcols1 libsoup2.4-1 libsoup2.4-common libsqlite3-0
libsrt1.5-gnutls libssl3 libsystemd-shared libsystemd0 libtasn1-6 libtiff6 libudev1 libuuid1 libxencall1 libxendevicemodel1 libxenevtchn1 libxenforeignmemory1
libxengnttab1 libxenhypfs1 libxenmisc4.17 libxenstore4 libxentoolcore1 libxentoollog1 libxnvctrl0 locales mount nfs-common nfs-kernel-server ntfs-3g openssh-client
openssh-server openssh-sftp-server openssl postgresql-15 postgresql-client-15 python3-cryptography python3-pkg-resources python3-setuptools python3-setuptools-whl
python3-urllib3 python3.11 python3.11-minimal python3.11-venv qemu-block-extra qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86 qemu-utils rsync
shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned systemd systemd-container systemd-sysv systemd-timesyncd tzdata ucf udev util-linux
util-linux-extra util-linux-locales uuid-runtime
185 upgraded, 0 newly installed, 0 to remove and 25 not upgraded.
Need to get 142 MB of archives.
省略一万行
升级系统失败
遇到了 libc6 依赖冲突
shell
The following packages have unmet dependencies: libc6 : Breaks: locales (< 2.40) but 2.36-9+deb12u9 is to be installed
解决方法
仓库 source.list 不能只是 sid 库,全部都要打开,执行下面命令升级
shell
apt install --only-upgrade xserver-xorg-core locales libc6 libc-l10n
安装 nvidia-legacy-390xx-driver
shell
# 更新仓库,添加 sid 库
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ sid main contrib non-free non-free-firmware" | sudo tee /etc/apt/sources.list
apt update
apt install nvidia-legacy-390xx-driver
检查安装情况
dpkg
结果如下,显示安装了390版本,但是有些模块是560,570
shell
$ dpkg -l | grep nvidia
ii glx-alternative-nvidia 1.2.2 amd64 allows the selection of NVIDIA as GLX provider
ii libegl-nvidia-legacy-390xx0:amd64 390.157-11 amd64 NVIDIA binary EGL library (390xx legacy version)
ii libgl1-nvidia-legacy-390xx-glvnd-glx:amd64 390.157-11 amd64 NVIDIA binary OpenGL/GLX library (GLVND variant) (390xx legacy version)
ii libgles-nvidia-legacy-390xx1:amd64 390.157-11 amd64 NVIDIA binary OpenGL|ES 1.x library (390xx legacy version)
ii libgles-nvidia-legacy-390xx2:amd64 390.157-11 amd64 NVIDIA binary OpenGL|ES 2.x library (390xx legacy version)
ii libglx-nvidia-legacy-390xx0:amd64 390.157-11 amd64 NVIDIA binary GLX library (390xx legacy version)
ii libnvidia-cfg1:amd64 570.86.15-1 amd64 NVIDIA binary OpenGL/GLX configuration library
ii libnvidia-legacy-390xx-cfg1:amd64 390.157-11 amd64 NVIDIA binary OpenGL/GLX configuration library (390xx legacy version)
ii libnvidia-legacy-390xx-cuda1:amd64 390.157-11 amd64 NVIDIA CUDA Driver Library (390xx legacy version)
ii libnvidia-legacy-390xx-eglcore:amd64 390.157-11 amd64 NVIDIA binary EGL core libraries (390xx legacy version)
ii libnvidia-legacy-390xx-encode1:amd64 390.157-11 amd64 NVENC Video Encoding runtime library (390xx legacy version)
ii libnvidia-legacy-390xx-fatbinaryloader:amd64 390.157-11 amd64 NVIDIA FAT binary loader (390xx legacy version)
ii libnvidia-legacy-390xx-glcore:amd64 390.157-11 amd64 NVIDIA binary OpenGL/GLX core libraries (390xx legacy version)
ii libnvidia-legacy-390xx-ml1:amd64 390.157-11 amd64 NVIDIA Management Library (NVML) runtime library (390xx legacy version)
ii libnvidia-legacy-390xx-nvcuvid1:amd64 390.157-11 amd64 NVIDIA CUDA Video Decoder runtime library (390xx legacy version)
ii libnvidia-legacy-390xx-ptxjitcompiler1:amd64 390.157-11 amd64 NVIDIA PTX JIT Compiler library (390xx legacy version)
ii nvidia-egl-common 560.35.05-1 amd64 NVIDIA binary EGL driver - common files
ii nvidia-installer-cleanup 20240109+1 amd64 cleanup after driver installation with the nvidia-installer
ii nvidia-kernel-common 20240109+1 amd64 NVIDIA binary kernel module support files
ii nvidia-legacy-390xx-alternative 390.157-11 amd64 allows the selection of NVIDIA as GLX provider (390xx legacy version)
ii nvidia-legacy-390xx-driver 390.157-11 amd64 NVIDIA metapackage (390xx legacy version)
ii nvidia-legacy-390xx-driver-bin 390.157-11 amd64 NVIDIA driver support binaries (390xx legacy version)
ii nvidia-legacy-390xx-driver-libs:amd64 390.157-11 amd64 NVIDIA metapackage (OpenGL/GLX/EGL/GLES libraries) (390xx legacy version)
ii nvidia-legacy-390xx-egl-icd:amd64 390.157-11 amd64 NVIDIA EGL installable client driver (ICD)
ii nvidia-legacy-390xx-kernel-dkms 390.157-11 amd64 NVIDIA binary kernel module DKMS source (390xx legacy version)
ii nvidia-legacy-390xx-kernel-support 390.157-11 amd64 NVIDIA binary kernel module support files (390xx legacy version)
ii nvidia-legacy-390xx-smi 390.157-11 amd64 NVIDIA System Management Interface (390xx legacy version)
ii nvidia-legacy-390xx-vdpau-driver:amd64 390.157-11 amd64 Video Decode and Presentation API for Unix - NVIDIA driver (390xx legacy)
ii nvidia-legacy-390xx-vulkan-icd:amd64 390.157-11 amd64 NVIDIA Vulkan installable client driver (ICD) (390xx legacy version)
ii nvidia-modprobe 570.86.15-1 amd64 utility to load NVIDIA kernel modules and create device nodes
ii nvidia-persistenced 570.86.15-1 amd64 daemon to maintain persistent software state in the NVIDIA driver
ii nvidia-support 20240109+1 amd64 NVIDIA binary graphics driver support files
ii nvidia-vulkan-common 560.35.05-1 amd64 NVIDIA Vulkan driver - common files
ii xserver-xorg-video-nvidia-legacy-390xx 390.157-11 amd64 NVIDIA binary Xorg driver (390xx legacy version)
lsmod 正常
shell
$ lsmod | grep nvidia
nvidia_drm 61440 0
nvidia_modeset 1064960 1 nvidia_drm
nvidia 15933440 1 nvidia_modeset
drm_kms_helper 245760 1 nvidia_drm
ipmi_msghandler 86016 2 ipmi_devintf,nvidia
video 73728 1 nvidia
drm 749568 3 drm_kms_helper,nvidia_drm
nvidia-smi 失败
shell
$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
NVML library version: 560.28
nvidia-smi 修复之路
先说修复方案
上代码
shell
mkdir ~/libnvidia-bak
mv /usr/lib/x86_64-linux-gnu/libnvidia-ml.so* ~/libnvidia-bak
rm /etc/ld.so.cache
ldconfig -X
ldconfig
ldconfig -p |grep nvidia-ml
再说过程
百度AI说是 libnvidia-ml.so
引起的问题,需要删了错误版本
本机找到的有2个版本
shell
-rwxr-xr-x 1 root root 2127640 Sep 6 14:48 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so
-rwxr-xr-x 1 root root 2127640 Sep 6 14:48 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
-rwxr-xr-x 1 root root 2127640 Sep 6 14:48 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.560.28.03
lrwxrwxrwx 1 root root 17 Jan 26 04:43 /usr/lib/x86_64-linux-gnu/nvidia/legacy-390xx/libnvidia-ml.so -> libnvidia-ml.so.1
lrwxrwxrwx 1 root root 23 Jan 26 04:43 /usr/lib/x86_64-linux-gnu/nvidia/legacy-390xx/libnvidia-ml.so.1 -> libnvidia-ml.so.390.157
mv /lib/x86_64-linux-gnu/libvdpau_nvidia.so* \
/lib/x86_64-linux-gnu/libnvidia-tls.so.570.86.15 \
/lib/x86_64-linux-gnu/libnvidia-tls.so.560.28.03 \
/lib/x86_64-linux-gnu/libnvidia-ptxjitcompiler.so* \
/lib/x86_64-linux-gnu/libnvidia-gtk3.so.560.28.03 \
/lib/x86_64-linux-gnu/libnvidia-glsi.so.570.86.15 \
/lib/x86_64-linux-gnu/libnvidia-glsi.so.560.28.03 \
/lib/x86_64-linux-gnu/libnvidia-glcore.so.570.86.15 \
/lib/x86_64-linux-gnu/libnvidia-glcore.so.560.28.03 \
/lib/x86_64-linux-gnu/libnvidia-encode.so* \
/lib/x86_64-linux-gnu/libnvidia-eglcore.so.570.86.15 \
/lib/x86_64-linux-gnu/libnvidia-eglcore.so.560.28.03 \
/lib/x86_64-linux-gnu/libnvidia-cfg.so* \
/lib/x86_64-linux-gnu/libGLX_nvidia.so* \
/lib/x86_64-linux-gnu/libGLESv2_nvidia.so* \
/lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so* \
/lib/x86_64-linux-gnu/libEGL_nvidia.so* \
./libnvidia-bak/
把560那个版本备份迁移,重新加载 ldconfig
后,nvidia-smi 成功显示,但是。。。memory 报错,显示Function Not Found
shell
$ nvidia-smi
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.28.03 Driver Version: 390.157 CUDA Version: ERR! |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 GeForce GT 620 Off | 00000000:04:00.0 N/A | N/A |
| 40% 47C P0 N/A / N/A | Function Not Found | N/A Default |
| | | ERR! |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
使用390 版本的 nvidia-smi
https://packages.debian.org/sid/nvidia-legacy-390xx-smi
shell
wget https://mirrors.tuna.tsinghua.edu.cn/debian/pool/non-free/n/nvidia-graphics-drivers-legacy-390xx/nvidia-legacy-390xx-smi_390.157-11_amd64.deb
dpkg -x nvidia-legacy-390xx-smi_390.157-11_amd64.deb nvidia/
cp ./nvidia/usr/lib/nvidia/legacy-390xx/nvidia-smi /usr/bin/nvidia-smi-390
# 备份560版本的smi
mv /usr/bin/nvidia-smi{,-560}
ln -s /usr/bin/nvidia-smi-390 /usr/bin/nvidia-smiyu
运行结果
shell
$ nvidia-smi
Wed Feb 19 23:19:19 2025
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.157 Driver Version: 390.157 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GT 620 Off | 00000000:04:00.0 N/A | N/A |
| 40% 47C P0 N/A / N/A | 0MiB / 1985MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
成功完成驱动安装