29
10月
2025
20:48

消除安装 nVidia 显卡驱动程序时出现的偏差

29 10月 2025 20:48

解决使用 dpkg-divert 命令安装 nvidia-driver-390 驱动程序时出现的问题。

背景

В Linux Lite 20.04(基于 Ubuntu 的国产操作系统,具有轻量级界面)在我家里运行,我对它很满意(适用于 AMD Phenom(tm) II X3 710)。 在GF119 [GeForce GT 610]显卡的操作系统中,安装了nvidia-driver-390驱动程序并完美运行。 在终端中我错误地执行了命令 ubuntu-drivers install , которая удалила драйвер nvidia-driver-390 и попыталась установить ранее не выбранный пакет nvidia-340

原因

nvidia-340 is the recommended driver in Ubuntu.

sudo ubuntu-驱动程序设备
== /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0 ==
modalias : pci:v000010DEd0000104Asv00001043sd0000847Bbc03sc00i00
供应商:NVIDIA公司
型号 : GF119 [GeForce GT 610]
驱动程序:nvidia-340 - 第三方非免费 推荐
driver : nvidia-driver-390 - third-party non-free
driver : xserver-xorg-video-nouveau - distro free builtin

执行命令的结果 sudo ubuntu-drivers install, the nvidia-340 driver did not install due to the error:

dpkg:处理存档 /var/cache/apt/archives/nvidia-340_340.108-0ubuntu5.20.04.2_amd64.deb 时出错(--unpack):
尝试覆盖“/usr/bin/nvidia-bug-report.sh”,它已经在软件包 nvidia-utils-390 390.157-0ubuntu0.20.04.1 中
pkg-deb: ошибка: вставка subprocess was killed by signal (Обрыв канала)
处理以下包时发生错误:
/var/cache/apt/archives/nvidia-340_340.108-0ubuntu5.20.04.2_amd64.deb

由于另一个错误,nvidia-driver-390 驱动程序也无法安装:

sudo apt install nvidia-driver-390

dpkg-divert:错误:包不匹配
卸载“/usr/lib/x86_64-linux-gnu/libGL.so.1 由于 libnvidia-gl-390 而被拒绝”时
发现“由于 nvidia-340,/usr/lib/x86_64-linux-gnu/libGL.so.1 在 /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib 中存在偏差"

dpkg:处理存档 /tmp/apt-dpkg-install-NZZNFn/04-libnvidia-gl-390_390.157-0ubuntu0.20.04.1_amd64.deb 时出错(--unpack):
新的 libnvidia-gl-390:amd64 包预安装脚本子进程返回错误退出状态 2

所以命令 ubuntu-drivers install 我卸载了一个驱动程序,无法安装另一个驱动程序。

尝试恢复损坏的软件包没有帮助。

sudo apt --fix-broken install

dpkg-divert:错误:包不匹配
卸载“/usr/lib/x86_64-linux-gnu/libGL.so.1 由于 libnvidia-gl-390 而被拒绝”时
发现“由于 nvidia-340,/usr/lib/x86_64-linux-gnu/libGL.so.1 在 /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib 中存在偏差”

解决方案

研究错误

从命令的输出中我了解到了原因 - 库中存在一些“偏差”:

sudo apt install nvidia-driver-390

dpkg-divert:错误:包不匹配
_删除时 “偏差/usr/lib/x8664-linux-gnu/libGL.so.1 由于 libnvidia-gl-390"
发现 “偏差...

我开始调查并发现了一个我不熟悉的团队 dpkg-divert

有关该计划的帮助 man dpkg-divert:

dpkg 转移- 覆盖包文件版本

--list 全局模式
Список отклонений, соответствующих шаблону glob-pattern.

使用列表偏差 dpkg-divert --list

dpkg-divert --list nvidia | dpkg-divert --list nvidia | grep nvidia-340

或者像这样:

如果系统正常,该列表应该为空。 就我而言,出现了需要修正的候选者:

dpkg-divert --list | grep nvidia-340

由于 nvidia-340,拒绝 /usr/lib/x86_64-linux-gnu/libEGL.so 到 /usr/lib/x86_64-linux-gnu/libEGL.so.distrib
由于 nvidia-340,拒绝 /usr/lib/i386-linux-gnu/libGLESv2.so.2 到 /usr/lib/i386-linux-gnu/libGLESv2.so.2.distrib
由于 nvidia-340 拒绝 /usr/lib/x86_64-linux-gnu/libGLESv2.so.2 到 /usr/lib/x86_64-linux-gnu/libGLESv2.so.2.distrib
由于 nvidia-340 拒绝 /usr/lib/i386-linux-gnu/libGLESv1_CM.so.1 到 /usr/lib/i386-linux-gnu/libGLESv1_CM.so.1.distrib
由于 nvidia-340 拒绝 /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so 到 /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.distrib
由于 nvidia-340,拒绝 /usr/lib/x86_64-linux-gnu/libEGL.so.1 到 /usr/lib/x86_64-linux-gnu/libEGL.so.1.distrib
由于 nvidia-340,拒绝 /usr/lib/i386-linux-gnu/libGLESv2.so 到 /usr/lib/i386-linux-gnu/libGLESv2.so.distrib
由于 nvidia-340,拒绝 /usr/lib/i386-linux-gnu/libEGL.so 到 /usr/lib/i386-linux-gnu/libEGL.so.distrib
由于 nvidia-340,拒绝 /usr/lib/i386-linux-gnu/libGL.so 到 /usr/lib/i386-linux-gnu/libGL.so.distrib
由于 nvidia-340,拒绝 /usr/lib/x86_64-linux-gnu/libGL.so.1 到 /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib
由于 nvidia-340,拒绝 /usr/lib/x86_64-linux-gnu/libGL.so 到 /usr/lib/x86_64-linux-gnu/libGL.so.distrib
由于 nvidia-340,拒绝 /usr/lib/i386-linux-gnu/libGLESv1_CM.so 到 /usr/lib/i386-linux-gnu/libGLESv1_CM.so.distrib
由于 nvidia-340,拒绝 /usr/lib/i386-linux-gnu/libEGL.so.1 到 /usr/lib/i386-linux-gnu/libEGL.so.1.distrib
由于 nvidia-340,拒绝 /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1 到 /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1.distrib
由于 nvidia-340,拒绝 /usr/lib/x86_64-linux-gnu/libGLESv2.so 到 /usr/lib/x86_64-linux-gnu/libGLESv2.so.distrib
由于 nvidia-340,拒绝 /usr/lib/i386-linux-gnu/libGL.so.1 到 /usr/lib/i386-linux-gnu/libGL.so.1.distrib

偏差修正

我使用以下命令一致纠正了所有“偏差”:

sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libEGL.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGLESv2.so.2
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGLESv2.so.2
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGLESv1_CM.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libEGL.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGLESv2.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libEGL.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGL.so
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGL.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGL.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGLESv1_CM.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libEGL.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGLESv2.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGL.so.1

我还纠正了主要偏差:

sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGL.so

钥匙在哪里:

--remove 删除文件中的偏差...
--no-rename 指定_remove_而不是重命名偏差(与应该可靠地从 dpkg 数据库中消失的重要包相关)。

软件包重新安装:现已成功

sudo apt install --reinstall libnvidia-gl-390

正在读取包列表...完成
构建依赖树
正在读取状态信息...完成
将安装以下新软件包:
libnvidia-gl-390

等等

DKMS:安装完成。
正在配置包 xserver-xorg-video-nvidia-390 (390.157-0ubuntu0.20.04.1)...
正在配置软件包 nvidia-driver-390 (390.157-0ubuntu0.20.04.1)...
处理 libc-bin (2.31-0ubuntu9.18) 的触发器 ...
处理 man-db 的触发器 (2.9.1-1) ...
处理 initramfs-tools (0.136ubuntu6.8) 的触发器 ...
update-initramfs:生成 /boot/initrd.img-5.4.0-216-lowlatency
I: initramfs 将尝试从 /dev/sda7 恢复
我:(UUID = 7a17fe7e-acee-4c19-8641-1fdd39d0364d)
I:设置 RESUME 变量来覆盖它。

重新启动

现在驱动程序已安装,并且显卡驱动程序已添加到 dkms 内核中,我重新启动:

sudo shutdown --reboot now

sudo shutdown --立即停止

sudo poweroff --reboot

须藤断电--停止

结果 - 2D 作品

!! !操作系统已加载,2D 图形工作正常。


来源: https://forum.ubuntu.ru/index.php?topic=301381.0


新增:视频加速库

检查视频加速:vainfo 命令

vainfo

应该没有错误,在我的命令输出中有一个错误表明 利布瓦 不起作用。

libva 信息:VA-API 版本 1.7.0
libva 信息:尝试打开 /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva 信息:va_openDriver() 返回 -1
vaInitialize 失败,错误代码 -1(未知的 libva 错误),退出

旨在加快视频速度

sudo apt install mesa-va-drivers mesa-vdpau-drivers

较旧的 Ununtu Linux 需要 vdpau-va-driver,但该驱动程序不存在。

sudo apt 安装 vdpau-va-driver

E:找不到软件包“vdpau-va-driver”的安装候选。

Ubuntu 20.04中vdpau的视频加速解决方案

https://launchpad.net/ubuntu/cosmic/amd64/vdpau-va-driver/0.7.4-6ubuntu1

从下载文件的目录安装的命令:

sudo dpkg -i vdpau-va-driver_0.7.4-6ubuntu1_amd64.deb

检查vainfo

瓦信息

结果:

libva 信息:VA-API 版本 1.7.0
libva 信息:尝试打开 /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva 信息:找到 init 函数 __vaDriverInit_1_0
libva 信息:va_openDriver() 返回 0
vainfo:VA-API 版本:1.7(libva 2.6.0)
vainfo:驱动程序版本:VA-API 的拆分桌面系统 VDPAU 后端 - 0.7.4
vainfo:支持的配置文件和入口点
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG4Simple            : VAEntrypointVLD
      VAProfileMPEG4AdvancedSimple    : VAEntrypointVLD
                     : VAEntrypointVLD
    VAProfileH264Main : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD

例如,当您开始从任何网站播放全高清视频时,维梅奥,CPU负载56%。

然后我应用了 Mozilla Firefox 设置来加速浏览器 - 文章 在 FireFox 浏览器中启用硬件加速。 在 about:config 中启用参数 media.hardware-video-decoding.enabled = true - 处理器负载 50-65%。



相关出版物