内核更新至6.9.4版本后DKMS模块编译失败求助
看起来你在升级到Linux 6.9.4内核后,遇到了broadcom-sta和rtl8821au两个无线相关DKMS模块的编译失败问题,这两个错误本质都是旧版本驱动不兼容新内核,或者依赖缺失导致的,我来帮你逐一解决:
一、处理broadcom-sta驱动编译失败问题
你的错误日志显示:
ERROR (dkms apport): kernel package linux-headers-6.9.4-060904-generic is not supported
Error! Bad return status for module build on kernel: 6.9.4-060904-generic (x86_64)
可能原因与解决步骤:
确认内核头文件与当前内核版本完全匹配
首先验证你的当前内核版本,确保安装了对应的头文件和编译基础依赖:# 查看当前运行的内核版本 uname -r # 安装匹配的内核头文件、镜像及编译工具 sudo apt install linux-headers-$(uname -r) linux-image-$(uname -r) build-essential如果提示找不到
linux-headers-6.9.4-060904-generic包,说明你使用的是主线(mainline)内核,对应的头文件可能需要手动从内核官方渠道下载安装,或者切换到发行版官方维护的稳定内核分支。更新broadcom-sta驱动至兼容6.9内核的版本
你当前使用的broadcom-sta/6.30.223.271版本过于老旧,完全不支持6.9+系列内核。可以按照以下步骤更新:# 先移除旧版本的DKMS模块 sudo dkms remove broadcom-sta/6.30.223.271 --all # 安装发行版源中最新的broadcom-sta DKMS驱动 sudo apt install broadcom-sta-dkms如果发行版源中的版本仍不兼容,可以寻找适配6.9内核的
broadcom-sta源码包,手动通过DKMS安装:- 下载适配的源码包并解压
- 进入解压后的目录,执行:
sudo dkms add . sudo dkms build broadcom-sta/<新驱动版本号> sudo dkms install broadcom-sta/<新驱动版本号>
二、处理rtl8821au驱动编译失败问题
你的错误日志显示:
ERROR (dkms apport): binary package for rtl8821au: 5.12.5.2 not found
Error! Bad return status for module build on kernel: 6.9.4-060904-generic (x86_64)
可能原因与解决步骤:
rtl8821au/5.12.5.2版本同样陈旧,无法适配6.9内核,需要更新到维护活跃的新版本:
移除旧版本驱动
sudo dkms remove rtl8821au/5.12.5.2 --all安装适配新内核的rtl8821au DKMS驱动
首先尝试从发行版源安装官方维护的版本:sudo apt install rtl8821au-dkms如果源中没有兼容版本,可以选择一个维护活跃、明确标注支持6.9+内核的
rtl8821au驱动源码,通过DKMS手动安装(步骤同broadcom-sta的手动安装流程)。
三、关于内核模块签名的补充说明
日志中出现的kmodsign相关内容是Secure Boot要求的模块签名流程,只要你成功编译出兼容新内核的驱动模块,签名流程会自动完成;如果仍遇到签名错误,可以临时在BIOS/UEFI中关闭Secure Boot,待驱动安装完成后再开启(或重新导入MOK密钥)。
备注:内容来源于stack exchange,提问作者user2036381




