1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android下linux驱动模块编译与加载 Required key not available

Android下linux驱动模块编译与加载 Required key not available

时间:2023-02-15 09:50:20

相关推荐

Android下linux驱动模块编译与加载 Required key not available

遇到的问题 Required key not available

在之前的linux版本,使用Makefile进行模块编译,下载到板子后使用insmod 模块.ko,就可以加载模块了

现在的安卓版本,使用这种方式会有签名问题,导致加载模块失败

insmod: failed to load ledtest.ko: Required key not available

为了解决此问题需要关闭签名配置后重新编译烧录,再添加模块.ko即可正常使用

高通平台

关闭签名

根据自己板子的kernel config配置文件进行配置

kernel/msm-4.9/arch/arm64/configs/msm8953_defconfig

kernel/msm-4.9/arch/arm64/configs/msm8953-perf_defconfig

# CONFIG_MODULE_SIG=y# CONFIG_MODULE_SIG_FORCE=y# CONFIG_MODULE_SIG_SHA512=y

此配置注释后,可以关闭签名,两个文件一起修改

尝试添加签名

参考资料:insmod: failed to load ledtest.ko: Required key not available解决签名问题

尝试过给模块添加签名后加载到板子上,一直失败.

#编译文件名修改file = helloobj-m += $(file).o #hello.c编译成对应的二进制可执行模块文件 hello.ko#kernel编译生成的路径KDIR=/home/liwl/gaotong/M1508S/LA.UM.7.6.2.r1-10800-89xx.0/out/target/product/msm8953_64KERNEL_DIR=$(KDIR)/obj/KERNEL_OBJ #指定内核源码路径#ARM架构ARCH_CC = arm64#编译使用的交叉编译器,如果没有则需要在安卓源代码中source build/envsetup.shCROSS_COMPILE_CC = aarch64-linux-android-#-C:到某个指定的目录下去编译,到/opt/kernel目录下去编译#SUBDIRS:指定一个子目录,这个子目录为当前路径#modules:采用模块化编译,将.c编译成.ko文件all: #make all执行以下命令make -C $(KERNEL_DIR) SUBDIRS=$(PWD) ARCH=$(ARCH_CC) CROSS_COMPILE=$(CROSS_COMPILE_CC) modules#展开:# make -C /opt/kernel SUBDIRS=/opt/drivers/day01/1.0 arm64 aarch64-linux-android-gcc modules#签名 成功,加载时失败SIGN_DIR = $(KDIR)/obj/kernel/msm-4.9/scripts/sign-file # 签名文件MODSECKEY = $(KDIR)/obj/kernel/msm-4.9/certs/signing_key.pemMODPUBKEY = $(KDIR)/obj/kernel/msm-4.9/certs/signing_key.x509mod_sign_cmd = $(SIGN_DIR) sha512 $(MODSECKEY) $(MODPUBKEY) $(file).ko#签名sign:$(mod_sign_cmd)# 展开# scripts/sign-file sha512 certs/signing_key.pem certs/signing_key.x509 /home/liwl/gaotong/M1508S/kernel_driver/01model/hello.koclean:make -C $(KDIR) SUBDIRS=$(PWD) clean

此编译脚本:编译模块正常,签名正常,加载模块失败

如果觉得对你有帮助,请意思意思

点击赞助

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。