最近接触一个项目,需要编译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