我能够为Galaxy S4 kernel 3.4.xx编译内核模块,但在模块插入过程中出现以下错误。有没有人能解释一下这里缺少了什么。
内核模块是一个普通的helloworld模块,具有基本的初始化和清理功能。
insmod错误:
insmod /data/local/tmp/testHello.ko
insmod: init_module '/data/local/tmp/testHello.ko' failed (Exec format error)Dmesg日志
<4>[ 2127.554107] TIMA: lkmauth--launch the tzapp to check kernel module; module len is 71334
<4>[ 2127.554168] TIMA: lkmauth -- hdr before kreq is : e337b000
<4>[ 2127.554199] TIMA: lkmauth--send cmd (lkmauth) cmdlen(304:320), rsplen(264:320) id 0x00050000, req (0xE352A000), rsp(0xE352A140), module_start_addr(0xE337B000) module_len 71334
<3>[ 2127.581909] TIMA: lkmauth--verification failed -1
<4>[ 2127.582183] TIMA: MSG=lkm_modified; result (TIMA_RESULT=MSG=lkm_modified;)
<6>[2129.417541] [debug_wake_locks]active wake lock msm_otg发布于 2013-05-23 04:40:32
您的答案就在dmesg日志中: S4内核经过强化,只接受经过身份验证(即数字签名)的模块。因此,您编译的模块没有签名,因此init_module失败(尽管可以说返回代码可能更好- exec格式错误通常意味着ELF格式错误,但从技术上讲并非如此)。
检查带有mod信息的模块(/ S4 /lib/ modules或/S4/lib/modules)(在Linux上),您将看到带有签名的ELF部分。这是主流Linux在3.7中也添加的一个特性。
https://stackoverflow.com/questions/16562102
复制相似问题