Ubuntu 22.04安装gasket-dkms报错:Cannot create report的解决方法
解决gasket-dkms安装时class_create编译错误的问题
问题原因
Linux内核5.15及以上版本中,class_create()函数接口发生变更——移除了第一个struct module *owner参数,但你使用的gasket-dkms包仍采用旧接口编写,导致编译时出现参数类型不兼容、参数过多的错误,进而引发安装失败及crash文件冲突。
解决步骤
1. 彻底清理旧残留文件
先完全移除旧的gasket-dkms相关文件,避免残留影响重装:
sudo dkms remove gasket/1.0 --all sudo rm -rf /var/lib/dkms/gasket sudo rm -rf /var/crash/gasket-dkms.0.crash sudo apt purge gasket-dkms sudo apt autoremove && sudo apt clean
2. 修改gasket_core.c代码适配新内核
重新触发INSTALL.sh的安装流程,当脚本开始编译gasket-dkms出现错误后,修改内核驱动代码:
- 打开编译目录下的源码文件:
sudo nano /var/lib/dkms/gasket/1.0/build/gasket_core.c - 找到
class_create的调用行,类似:gasket_class = class_create(THIS_MODULE, "gasket"); - 替换为带版本判断的兼容写法:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0) gasket_class = class_create("gasket"); #else gasket_class = class_create(THIS_MODULE, "gasket"); #endif - 保存退出(Ctrl+O,回车,Ctrl+X)
3. 手动编译安装dkms模块
回到编译目录完成编译安装:
cd /var/lib/dkms/gasket/1.0/build make sudo make install sudo modprobe gasket
4. 长期解决方案
如果你的INSTALL.sh是自动下载旧版gasket-dkms包,建议:
- 替换脚本中的驱动包下载链接为Coral官方适配新内核的版本
- 或者将修改后的gasket源码打包成自定义dkms包,替换脚本中的安装包路径
内容的提问来源于stack exchange,提问作者vijay s
相关产品推荐
相关产品推荐

