最近接触一个项目,需要编译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驱动开发的相关知识,此次总结算是了解下该模块的支持,扩展下技术宽度。