记录一次ko编译

最近接触一个项目,需要编译ko文件,从来没有接触过,先问自己四个问题:

1.什么是ko文件

.ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边, 需要的时候插入内核,不需要时卸载。

2.如何制作ko文件

环境配置:
1.) export PATH="$PATH:/media/msy/d1f626d8-c58c-415d-910c-39bd89f08b2b/d9p/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin"
2.) make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android-

3.)编译引用文件:
1. 中间文件:  d9p/out/target/product/clover/obj/kernel/msm-4.4
2. 源码:  /media/msy/d1f626d8-c58c-415d-910c-39bd89f08b2b/d9p/kernel/msm-4.4
3. Makefile:  
kernel_source := kernel编译中间文件/msm-4.4
PREFIX = 编译连工具/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-

4.)编译

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android-

3.如何加载ko文件

 insmod

4.遇到的问题

 内核从3.7后开始支持模块签名,这个功能使能以后,内核只允许安装特定key签名的模块,内核配置项如下所示:
 CONFIG_MODULE_SIG=y 表示开启了签名机制,但是这时候模块签名或不签名都可以使用。
 CONFIG_MODULE_SIG_FORCE=y 如果上述配置项使能,则模块必须有正确的签名才能正常使用。
 CONFIG_MODULE_SIG_ALL=y 内核在编译的时候,并不会主动去给模块签名,除非你把上述配置项打开。

 为了测试:在配置文件中将CONFIG_MODULE_SIG_FORCE=y注释掉

参考文章:

http://www.cnblogs.com/uestc-mm/p/7644966.html

https://blog.csdn.net/qq_38880380/article/details/79227760

Linux命令查询网址:http://man.linuxde.net/

5.总结

从来没有接触过Linux驱动开发的相关知识,此次总结算是了解下该模块的支持,扩展下技术宽度。

猜你喜欢

转载自blog.csdn.net/misiyuan/article/details/84066546
今日推荐