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

本文介绍了ko文件的含义——内核对象文件,详细讲述了如何配置环境并编译ko文件,包括设置环境变量、makefile内容以及编译步骤。同时,提到了加载ko文件的方法insmod,并讨论了内核模块签名的问题,特别是不同配置选项对签名的影响。最后,作者分享了这次学习经历,作为扩展Linux驱动开发知识的起点。

6209

被折叠的 条评论
为什么被折叠?



