编译自定义内核时nvidia-current外部模块致构建失败求助
问题解答
1. 当前存在的配置/适配问题
- NVIDIA驱动与新内核不兼容:你用的nvidia-current/535.216.03版本较老,而6.13.0-rc7是预发布内核,该驱动未适配这个新内核的Kbuild结构变化,导致DKMS构建时找不到
Kbuild文件。 - 手动编译模块后未完成完整安装流程:手动编译仅完成了编译环节,未执行模块安装命令将编译后的
.ko文件复制到新内核的模块目录(/lib/modules/6.13.0-rc7/),也未更新模块依赖(depmod),因此DKMS状态不会更新。 - 内核配置大概率无问题:若新内核未启用
CONFIG_MODULES、CONFIG_MODULE_UNLOAD或CONFIG_MODVERSIONS会导致DKMS异常,但你手动编译模块无报错,说明核心问题还是驱动与新内核的适配性。
2. 避免DKMS触发/禁用外部模块的方法
临时禁用DKMS服务
直接停止并禁用DKMS服务,阻止其在新内核安装时自动触发构建:
sudo systemctl stop dkms sudo systemctl disable dkms
后续需要恢复DKMS的话,执行:
sudo systemctl enable --now dkms
彻底移除NVIDIA的DKMS模块
删除nvidia-current的DKMS模块,从根源上消除干扰:
sudo dkms remove nvidia-current/535.216.03 --all
之后可根据需求安装适配6.13.0-rc7的NVIDIA驱动版本(需选择支持该预发布内核的驱动,或等待官方更新)。
安装内核时跳过DKMS触发
执行make install时,通过环境变量阻止DKMS自动运行:
sudo DKMS_INSTALL=no make install
也可修改全局配置,编辑/etc/dkms/framework.conf并添加AUTOINSTALL=no,全局禁用DKMS自动安装模块。
正确切换到nouveau/核显
你之前切换驱动仍触发DKMS失败,是因为nvidia-current的DKMS模块仍存在于系统中,正确步骤如下:
- 先移除nvidia-current的DKMS模块(使用上述移除命令)
- 安装nouveau驱动并配置NVIDIA黑名单:
sudo apt install xserver-xorg-video-nouveau echo "blacklist nvidia-current" | sudo tee -a /etc/modprobe.d/blacklist-nvidia.conf sudo update-initramfs -u
- 重启系统后即可使用nouveau或核显驱动,此时DKMS不会再触发NVIDIA模块的构建。
注意:
menuconfig无法禁用nvidia-current或DKMS,因为它们是系统级外部模块/服务,不属于内核内置组件,内核配置仅能管理nouveau这类原生支持的模块。
内容的提问来源于stack exchange,提问作者khaled
相关产品推荐
相关产品推荐

