Linux内核模块Exec格式错误:自定义uvcvideo模块适配求助
内核模块加载失败问题求助
我编译了一个自定义uvcdriver.ko,加载模块时出现以下错误:
giuliano@Astra2A:~$ sudo rmmod uvcvideo && sudo modprobe uvcvideo modprobe: ERROR: could not insert 'uvcvideo': Exec format error
查看dmesg日志,显示:
[25961.151982] usbcore: registered new interface driver uvcvideo [26323.125534] usbcore: deregistering interface driver uvcvideo [26323.189294] uvcvideo: disagrees about version of symbol module_layout
经确认,该问题由模块与当前内核版本不匹配导致。对比新旧uvcvideo模块的modinfo信息:
- 旧模块vermagic:
5.15.0-56-generic SMP mod_unload modversions - 新模块vermagic:
5.15.64 SMP mod_unload modversions
当前主机运行的内核版本:
giuliano@Astra2A:~$ cat /proc/version_signature Ubuntu 5.15.0-56.62-generic 5.15.64
我在Ubuntu归档中未找到完全匹配的内核源码。编译内核时,为适配Eclipse编译执行了以下命令:
scripts/config --disable CONFIG_SYSTEM_REVOCATION_KEYS scripts/config --disable SYSTEM_REVOCATION_KEYS scripts/config --disable SYSTEM_TRUSTED_KEYS
内核及uvcvideo.ko编译过程无报错,但模块始终无法加载,现求助以下问题:
- 何处可获取与当前运行版本完全匹配的Ubuntu内核源码?
- 如何让uvcdriver.c适配当前内核版本?
- 是否有其他方法使编译的内核模块匹配当前系统?
内容的提问来源于stack exchange,提问作者Giuliano69
相关产品推荐
相关产品推荐

