proc伪文件系统 - 加载一个进程

内核模块的编译方法及注意事项

Ubuntu内核(2.6.32)

2.6内核中,模块的编译需要配置过的内核源码;编译、链接后生成的内核模块后缀为.ko;编译过程首先会到内核源码目录下读取顶层的Makefile文件,然后再返回模块源码所在目录。

 

将上面代码保存成Makefile文件,放置在与hello.c文件同一目录下。执行make命令后就可以得到hello.ko模块文件。

模块的加载和卸载使用insmodrmmod

 

 

使用 lsmod查看已加载的模块,以上表明加载成功,可以在/proc中查看。

 

 

模块的许可证声明

从2.4.10版本内核开始,模块必须通过MODULE_LICENSE宏声明此模块的许可证,否则在加载此模块时,会收到内核被污染"kernel tainted" 的警告。从linux/module.h文件中可以看到,被内核接受的有意义的许可证有 "GPL","GPL v2","GPL and additional rights","Dual BSD/GPL","Dual MPL/GPL","Proprietary"。

在同时支持2.4与2.6内核的设备驱动中,模块可按如下方式声明自己的许可证。

#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,10)

MODULE_LICENSE("GPL");

#endif

 

posted on 2017-04-21 17:29  枝桠  阅读(281)  评论(0编辑  收藏  举报

导航