如何在android设备上insmod自己单独编译的.ko,解决签名问题
近期由于项目需要,需要自己写一个.ko文件,来操作寄存器,但是该.ko是不能跟整体工程在一起的,需要单独编译,这过成功遇到了大量的问题,现在终于解决,跟大家分享一下,很珍贵!!!
遇到的问题:
1. 在android设备中输入insmode hello.ko ,会提示"nsmod: error inserting 'hello.ko': -1 Required key not available" .这是签名问题,没有使用该设备android工程的密钥进行签名。
2. 使用正确的android工程密钥签名后,依然insmode失败,提示"exec format error", 这是由于版本不对。
网上提到的方法:此方法可以了解linux的内容,但是实际不好使!!!
1.将自己的hello文件夹(内部有Kconfig, Makefile, hello.c)复制到随便一个文件夹下,如xxx_self_project/linux_xxx/drivers/hello/
2. 修改xxx_self_project/linux_xxx/drivers/目录下的 Kconfig和Makefile,可参考其他模块。
3.Makefile中为obj-m(生成ko), 不是obj-y
4.在xxx_self_project/linux_xxx/下,make menuconfig, 将hello选项选为[M], 保存,这时会生成xxx_self_project/linux_xxx/.config文件。
5.此时一点要,make savedefconfig(注意 savedefconfig是一个命令,不是一个文件名),对当前.config进行保存合并到默认的配置文件中。 效果可以查看xxx_self_project/linux_xxx/arch/xx/configs/xxxxdefconfig,或xxx_self_project/linux_xxx/include/config/auto.conf.
6.make modules 生成hello.ko
7.对hello.ko签名, 在xxx_self_project/linux_xxx/路径下, perl ./scripts/sign-file sha512 signing_key.priv signing_key.x509 drivers/hello/hello.ko
查看是否签名成功:hexdump -C hello.ko | tail
8. adb push .....,然后insmod hello.ko ,此时安装的话,会出现错误"exec format error", 这是版本不对。
以上内容虽然没有解决问题,但是如果都经历一遍的话对linux的了解还是很好的。
下面是真正的正确的方法:
1.将整个android工程make一遍,
2.将hello文件夹(内部有Makefile, hello.c)拷贝到任一位置,我本人放在xxxx_self_project/ 的路径下,跟android和linux目录平行。
3.Makefile内容如下图,主要是KERNELDIR路径,该路径是android整个工程编译后临时文件的路径!!!!
4. 在hello路径下make
5. 签名,
5.1签名需要的密钥位于xxx_self_project/android/out/target/product/xxxxxx/kernel/下面,将signing_key.priv, signing_key.x509复制到hello下面。
5.2 使用xxx_self_project/linux_xxxx/scripts/sign-file 进行签名
perl ../linuxxxx_/scripts/sign-file sha512 signing_key.priv signing_key.x509 hello.ko
5.3使用hexdump -C hello.ko | tail查看
经过以上方法,就可以将自己单独编译的.ko文件insmod到android设备里边了!!!!!!!!
如何在android设备上insmod自己单独编译的.ko,解决签名问题相关推荐
- android手机icoude邮件,如何在Android设备上访问Apple应用和数据?教程来了!
原标题:如何在Android设备上访问Apple应用和数据?教程来了! 对于一些出于工作原因,拥有ios和Android不同系统手机的人来说,有时候会觉得在共享资料或数据上会比较麻烦.但是,其实并非如 ...
- android初学者_初学者:如何在Android设备上的打开的应用程序之间切换
android初学者 When you run an app on your Android device, you can minimize it and return to the home sc ...
- 手机facebook注销_如何在Android设备上注销Facebook Messenger
手机facebook注销 Ever since Facebook decided to force people to use Facebook Messenger to send and recei ...
- 如何在Android设备上的Google Play商店中清除搜索和应用历史记录
Your Google Play Store search history includes previously searched for apps, movies, books, music, e ...
- 如何在Android设备上关闭/停止正在运行的应用程序
Android apps don't actually stop running when you return to the Home screen or switch to another app ...
- 如何在Android设备上识别读取美国驾照信息
根据美国机动车管理者协会(AAMVA https://www.aamva.org/DL-ID-Card-Design-Standard/)的规定,美国驾照使用PDF417编码,如下图: Google ...
- 安卓手机的证书信任设置在哪_如何在Android设备上安装受信任的CA证书?
Before Android version 4.0, with Android version Gingerbread & Froyo, there was a single read-on ...
- android ca,如何在Android设备上安装可信CA证书?
如果您需要HTTPS连接证书,则可以将.bks文件作为原始资源添加到应用程序并扩展DefaultHttpConnection,以便将证书用于HTTPS连接.public class MyHttpCli ...
- 红橙Darren视频笔记 热更新 bsdiff bspatch 在Android设备上的应用 架构篇1完结篇
概述 当时红橙的视频讲解就差不多90分钟,但是真正自己做出来热更新的demo还是花了八九个晚上,期间遇到各种各样的问题,什么叫台上一分钟 台下十年功是深有体会了. 本节会涉及一部分NDK的知识 推荐阅 ...
最新文章
- 安装了libevent和memcached之后却发现在执行的时候出现了 error while loading shared libraries问题...
- ubuntu中PyCharm的安装与卸载
- 从近两年的CVPR会议来看,目标检测的研究方向是怎么样的?
- Windows下Eclipse+PyDev安装Python开发环境
- 关于分布式锁的面试题都在这里了
- VGA显示器驱动设计与验证
- C#基础视频教程4.3 如何编写简单的计算器
- DMA讲解《一》(清华大学)
- ORA-30377 MV_CAPABILITIES_TABLE not found
- Atitit图像识别的常用特征大总结attilax大总结
- Mac,Windows11,Windows10局域网互传共享文件
- (附源码)计算机毕业设计SSM原创网络文学管理系统
- 关于实时推送系统的那点事
- 使用MIPS完成汇编程序——选择排序实现
- 成品入库过账bapi
- 《最优化方法》——数学基础知识线性规划无约束优化算法初步
- Microsoft.Office.Interop.Excel.dll下载
- 看了这个逻辑关系图,才更清晰为何不让你随便外出了
- JME2 和JME3的比较
- python:比较人脸识别中gallery数据集和prob数据的IP