热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

编写Android的LKM(LinuxKernelModule)

默认的内核是不支持加载与卸载LKM的,所以在编译Android的Linux内核之前,需要配置下,在Android的Linux内核的源代码,目录下,运行$makemenuconfig出现

默认的内核是不支持加载与卸载LKM的,所以在编译Android的Linux内核之前,需要配置下,

在Android的Linux内核的源代码,目录下,运行

$ make menuconfig

出现如下的图片:

另外,按向左键选择,卸载模块相关

 

注意:

如果用官方的模拟器内核或者没有进行以上的配置的话:

1 运行 insmod hello.ko 来加载模块的时候,会提示

 insmod: init_module 'hello.ko' failed (Function not implemented)

2 而如果运行 rmmod hello.ko 来卸载模块的时候,会提示

rmmod: delete_module 'hello.ko" failed (errno 38)

当编译完andorid的内核后,重新编译我们的hello模块,然后用我们自己编译的内核启动模拟器:
$ emulator -avd AVD15 -kernel ~/android_source/kernel/common/arch/arm/boot/zImage -show-kernel
//其中
~/android_source/kernel/common/arch/arm/boot/zImage 是编译生成的内核的Image
//而 show-kernel 是为了显示系统的Log信息
操作如下:
1)加载与卸载LKM

2)内核的Log信息


参考:
1. http://tjworld.net/wiki/Android/Linux/ARMCrossCompileOnIntel#BuildaCustomModule
2  在 Android Emulator 中开发 LKM 程序
3 http://comments.gmane.org/gmane.comp.handhelds.android.kernel/810

附件,本文的测试程序

推荐阅读
author-avatar
静默的温柔结成思念
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有