将 Nvidia 驱动程序从 nvidia-440 降级为 nvidia-390

将 Nvidia 驱动程序从 nvidia-440 降级为 nvidia-390

我最近将系统更新到 Unbutu 20.04,然后注意到附加驱动程序小程序中列出了较新版本的 nvidia 驱动程序。我决定尝试安装最新版本,但结果却是一个错误的举动,因为我有一台较旧的 GTX 550 ti。后来发现唯一仍支持它的驱动程序版本是 nvidia-390,所以我尝试按照 apt purge 和 autoremove 的步骤进行操作,然后使用

sudo apt install -y nvidia-driver-390

虽然它似乎运行正常,但重新启动仍显示它正在运行手动安装的驱动程序,并且分辨率停留在 800x600。我看到此输出并注意到安装过程中出现错误:

Loading new nvidia-390.141 DKMS files...
Building for 5.4.0-60-generic
Building for architecture x86_64
Building initial module for 5.4.0-60-generic
Done.

nvidia.ko:
Running module version sanity check.
Error! Module version 390.141 for nvidia.ko
is not newer than what is already found in kernel 5.4.0-60-generic (460.32.03).
You may override by specifying --force.

nvidia-modeset.ko:
Running module version sanity check.
Error! Module version 390.141 for nvidia-modeset.ko
is not newer than what is already found in kernel 5.4.0-60-generic (460.32.03).
You may override by specifying --force.

nvidia-drm.ko:
Running module version sanity check.
Error! Module version 390.141 for nvidia-drm.ko
is not newer than what is already found in kernel 5.4.0-60-generic (460.32.03).
You may override by specifying --force.

nvidia-uvm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.4.0-60-generic/updates/dkms/

depmod...

DKMS: install completed.

似乎它不会降级内核模块的版本,因为较新的(错误的)版本已经安装并且需要强制继续。我尝试运行 modprobe -r 来手动从正在运行的内核中删除模块,但这似乎没有帮助。

以下是 /var/lib/dkms 的内容:


tree /var/lib/dkms/
/var/lib/dkms/
├── dkms_dbversion
└── nvidia
    ├── 390.141
    │   ├── 5.4.0-60-generic
    │   │   └── x86_64
    │   │       ├── log
    │   │       │   └── make.log
    │   │       └── module
    │   │           ├── nvidia-drm.ko
    │   │           ├── nvidia.ko
    │   │           ├── nvidia-modeset.ko
    │   │           └── nvidia-uvm.ko
    │   └── source -> /usr/src/nvidia-390.141
    └── kernel-5.4.0-60-generic-x86_64 -> 390.141/5.4.0-60-generic/x86_64

我尝试运行以下命令,但没有效果。

  1. 删除所有专有的 nvidia 包。

    sudo apt update
    sudo apt remove '^nvidia'
    sudo apt remove xserver-xorg-video-nvidia-440-server xserver-xorg-video-nvidia-440
    sudo apt autoremove  
    sudo reboot 
    
  2. 安装 390 系列专有 Nvidia 软件包。

    sudo apt install nvidia-driver-390 xserver-xorg-video-nvidia-390
    sudo reboot 
    

同时,我无法激活第二台显示器或更改默认分辨率。

答案1

我能够通过使用 synaptic 安装旧版本的内核来使其工作。以下是我所做的:

  1. 安装了 linux-image-generic-5.4.0-58 和 linux-headers-generic-5.4.0-58
  2. 编辑 /etc/default/grub 并将 GRUB_TIMEOUT 从 0 更改为 5
  3. 运行 sudo update-grub
  4. 运行 sudo reboot,确保在 UEFI 屏幕后按 esc 进入 grub 菜单并选择 Ubuntu 高级 -> kernel-5.4.0-58
  5. 登录后,打开终端并使用 sudo apt install nvidia-driver-390 xserver-xorg-video-nvidia-390 运行 nvidia-390 的安装
  6. 注意到它不再抱怨内核中的较新驱动程序,我运行了 sudo reboot 并重复步骤 4 以确保我加载了正确的内核。
  7. 这次我的屏幕分辨率和第二个显示器工作正常,所以我打开了 synaptic 并搜索 kernel-5.4.0-60 版本并将其标记为删除,并选择 kernel-5.4.0-62 版本进行升级。运行更新并再次重新启动,这次让它启动默认内核,现在是 kernel-5.4.0-62。正确的驱动程序得到维护,我又可以正常运行了。

答案2

我也遇到过这个问题。对我来说,GTX 820M 最高支持 nvidia-340,但 20.10 中的内核获取了 nvidia.ko 版本 450。为了更快地降级版本,您可以使用陣容工具本身。

首先,驱动安装后卸载当前版本的dkms lib:

sudo dkms uninstall nvidia-VER/XXX.YYY

在哪里nvidia-VER- 驱动程序名称(例如 nvidia-390),XXX.年- 驱动程序版本(即 390.141)。然后重新安装所需版本:

sudo dkms install nvidia-VER/XXX.YYY

就这样。

相关内容