Yocto构建的cryptodev-module加载时报Exec format错误问题咨询
问题根因
对比两个驱动的vermagic信息可以直接定位核心问题:可正常加载的8188eu驱动标识包含thumb2字段,cryptodev模块的标识缺失该字段,说明cryptodev模块编译时采用的是ARM32标准ARM指令集,而设备运行的内核是Thumb2指令集编译的,二者指令集不兼容触发Exec format error报错。
另外你执行加载命令时填写的模块名有误,正确模块名是cryptodev,无需加-module后缀,但该问题不会触发格式类报错,仅会提示模块不存在。
修复方案
- 首先确认Yocto构建配置的全局指令集参数:检查
conf/local.conf中是否开启了Thumb2编译,确认ARM_INSTRUCTION_SET = "thumb"配置存在,且DEFAULTTUNE参数对应支持Thumb2的ARM架构(如cortexa系列tune配置)。 - 修改cryptodev-module的配方文件(
.bb/.bbappend),确保构建时继承内核的编译参数,避免模块使用独立的编译配置,可在配方中添加如下配置:inherit module EXTRA_OEMAKE += "CC='${KERNEL_CC}' LD='${KERNEL_LD}' AR='${KERNEL_AR}'" - 清理旧的编译缓存,重新编译模块:
bitbake -c cleanall cryptodev-module && bitbake cryptodev-module - 卸载设备上原有的cryptodev相关rpm包,安装新编译的包后,执行
modprobe cryptodev即可完成加载。
内容的提问来源于stack exchange,提问作者voidstein
相关产品推荐
相关产品推荐

