
Ubuntu 18.04安装NVIDIA驱动报dkms错误的解决办法
安装驱动步骤
添加ppa源
sudo add-apt-repository ppa:graphics-drivers/ppa
使用USTC PPA源代理
# 我这里是 Ubuntu 18.04 因而为 bionic,根据你的 Ubuntu 版本修改
sudo cp /etc/apt/sources.list.d/graphics-drivers-ubuntu-ppa-bionic.list /etc/apt/sources.list.d/graphics-drivers-ubuntu-ppa-bionic.list.bak
sudo nano /etc/apt/sources.list.d/graphics-drivers-ubuntu-ppa-bionic.list
将文件内容注释掉(#),添加新行:
deb https://launchpad.proxy.ustclug.org/graphics-drivers/ppa/ubuntu bionic main
# 注意替换 bionic 为你的 Ubuntu distro 版本
这样就成功使用了USTC的代理,理论上来说会快一点(实测速度更稳定,但没有快很多)。
接下来更新软件源缓存:
sudo apt update
安装驱动
s
此命令可以查看当前设备可以安装的版本。
输出如下:
~$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:1c.5/0000:02:00.0 ==
modalias : pci:v000010DEd00001E07sv000010DEsd000012A4bc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-535 - third-party non-free
driver : nvidia-driver-545 - third-party non-free
driver : nvidia-driver-470 - third-party non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
ubuntu-drivers autoinstall
此命令将自动选择一个合适的版本,也可以通过sudo apt install
手动安装上面列出的版本之一,例如:
sudo apt install nvidia-driver-470
报错了…
如果不想看排错过程,可以直接跳转到这里。
错误排查
不出意外的话,要出意外了:
ERROR (dkms apport): kernel package linux-headers-5.4.0-150-generic is not supported
Error! Bad return status for module build on kernel: 5.4.0-150-generic (x86_64)
看一下已安装的驱动是什么版本:
ls /usr/src | grep nvidia
查看到是 470.223.02
版本,手动重试一下:
sudo dkms install -m nvidia -v 470.223.02
还是报了一样的错误,但蹦了一个log:/var/lib/dkms/nvidia/470.223.02/build/make.log
查看log发现是编译过程出错了,于是立刻想到了gcc和g++编译器上,一看版本——哦豁,gcc 4.8
……难怪会失败。
离谱的是,系统安装了gcc/g++ 7
,当前使用的却是4.8
,真让人摸不着头脑。
好在切换一下就可以解决此问题:
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
输入这两行命令之后,会询问你要使用哪个版本的编译器作为默认版本,选最新的即可。
再试一次
sudo dkms install -m nvidia -v 470.223.02
这次没有报错了,构建成功:
~$ sudo dkms install -m nvidia -v 470.223.02
Kernel preparation unnecessary for this kernel. Skipping...
applying patch disable_fstack-clash-protection_fcf-protection.patch...patching file Kbuild
Hunk #1 succeeded at 82 (offset 11 lines).
Building module:
cleaning build area...
unset ARCH; [ ! -h /usr/bin/cc ] && export CC=/usr/bin/gcc; env NV_VERBOSE=1 'make' -j16 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=5.4.0-150-generic IGNORE_XEN_PRESENCE=1 IGNORE_CC_MISMATCH=1 SYSSRC=/lib/modules/5.4.0-150-generic/build LD=/usr/bin/ld.bfd modules......
Signing module:
- /var/lib/dkms/nvidia/470.223.02/5.4.0-150-generic/x86_64/module/nvidia-drm.ko
- /var/lib/dkms/nvidia/470.223.02/5.4.0-150-generic/x86_64/module/nvidia-uvm.ko
- /var/lib/dkms/nvidia/470.223.02/5.4.0-150-generic/x86_64/module/nvidia-modeset.ko
- /var/lib/dkms/nvidia/470.223.02/5.4.0-150-generic/x86_64/module/nvidia.ko
- /var/lib/dkms/nvidia/470.223.02/5.4.0-150-generic/x86_64/module/nvidia-peermem.ko
Secure Boot not enabled on this system.
cleaning build area...
DKMS: build completed.
nvidia.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.4.0-150-generic/updates/dkms/
nvidia-modeset.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.4.0-150-generic/updates/dkms/
nvidia-drm.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.4.0-150-generic/updates/dkms/
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-150-generic/updates/dkms/
nvidia-peermem.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.4.0-150-generic/updates/dkms/
depmod...
DKMS: install completed.
重启系统
此时还不能高兴太早,先重启一下再看看:
sudo reboot
重启之后,再看看显卡:
nvidia-smi
问题解决,显卡可以正确识别到了:
~$ nvidia-smi
Mon Mar 17 23:21:10 2025
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.223.02 Driver Version: 470.223.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| 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 NVIDIA GeForce ... Off | 00000000:B3:00.0 Off | N/A |
| 41% 33C P8 4W / 250W | 118MiB / 11011MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1521 G /usr/bin/gnome-shell 108MiB |
+-----------------------------------------------------------------------------+
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-SA 4.0 协议,您可以在不商用的情况下,免费转载或修改本文内容,完整转载请注明来自 Patrick's Blog
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果