DKMS 模块重编译失败的常见原因
内核一升级,NVIDIA、VirtualBox 等靠 DKMS 出的模块就容易挂。现象是开机黑屏、模块加载失败,或 modprobe 报 Exec format error。
先确认版本对齐
uname -r
dpkg -l | grep linux-headers
dkms status
ls /lib/modules/$(uname -r)/build
当前内核必须有对应 headers,且 build 链接有效。headers 不全是最常见原因。
强制重建
dkms remove <module>/<ver> -k $(uname -r)
dkms install <module>/<ver> -k $(uname -r)
dkms autoinstall
失败看 /var/lib/dkms/.../build/make.log。
高频原因
- headers / 编译器与仓库不一致
- Secure Boot 开启但模块未签名
- 模块源码过旧,对新内核 API 编不过
- 残留旧 .ko 与新内核混用