查看 /var/log/syslog 和 /var/log/kern.log 后,我发现以下内核问题:
NVRM: API mistmatch: the client has version 375.26, but
NVRM: this kernel module has the version 375.39. Please
NVRM: make sure that kernel module and all NVIDIA driver
NVRM: components have the same version.
我发现Nvidia 驱动程序已更新 - 304.88 和 319.32 的混合版本描述了同样的问题。为了解决我的问题,我运行了命令:
dpkg -l | grep nvidia
sudo apt-get autoremove nvidia375
sudo apt-get --purge remove nvidia*
dpkg -l | grep nvidia
最后一个命令的输出确认没有安装 nvidia 软件包。此后,我运行:
sudo update-grub
sudo update-initramfs -u
sudo reboot
但是,我仍然遇到相同的内核问题。启动时,我卡在低图形模式设置中,内核和 /var/log/syslog 以及 /var/log/kern.log 仍然抱怨客户端有 Nvidia 驱动程序 375.26,内核模块有 Nvidia 驱动程序 375.39。
我当前的内核是 4.4.0-64-generic。
更新1:为了查看内核读入的 nvidia 模块,我运行了此命令。
$ lsmod | grep nvidia
module size used by
nvidia_drm 53248 0
nvidia_modeset 790528 1 nvidia_drm
nvidia 12144640 1 nvidia_modeset
drm_helper 155648 2 i915_bpo,nvidia_drm
drm 364544 4 i915_bpo,drm_helper,nvidia_drm
还发现modinfo module_name
这些模块位于文件夹中/lib/modules/4.4.0-64-generic/updates/dkms/
,它们的文件名分别为nvidia-drm.ko
、nvidia-modeset.ko
和nvidia.ko
,其版本为 375.39。
第二个问题:为什么在我清除了所有 nvidia 软件包后这些模块仍然存在?我应该删除它们吗?如果是,该怎么做?
答案1
通过执行以下步骤我能够解决我的问题:
- 首先重新安装 nvidia-418 存储库图形驱动程序。
安装 nvidia-418
在安装过程中,我注意到 nvidia-418.26 驱动程序正在安装。
我将整个 /lib/modules/4.18.0-17-generic/updates/dkms 文件夹移至我的主目录备份文件夹。这是为了确保所有旧的 .ko 文件都已被删除。
sudo mv /lib/modules/4.18.0-17-generic/updates/dkms/nvidia* /home//backup我使用以下方法重新生成了已安装驱动程序的 .ko 文件
sudo dpkg-重新配置 nvidia-418它创建了一个包含相关 nvidia 内核模块的新 dkms 文件夹。我还使用以下命令检查了它们的版本:
sudo modinfo /lib/modules/4.18.0-17-generic/updates/dkms/nvidia.ko
sudo modinfo /lib/modules/4.18.0-17-generic/updates/dkms/nvidia_drm.ko
sudo modinfo /lib/modules/4.18.0-17-generic/updates/dkms/nvidia_modeset.ko
sudo modinfo /lib/modules/4.18.0-17-generic/updates/dkms/nvidia_uvm.ko它们的输出显示它们适用于 418.26 版本。太好了,这证实了内核客户端和内核模块指的是同一个 NVidia 驱动程序版本。
(可选,但建议这样做,以确保 apt-get 正常工作)卸载并重新安装驱动程序 sudo apt-get 删除”英伟达“ sudo apt-get 安装 nvidia-driver-418
我重启了系统
sudo 重启