内核模块的代码文件
文件 yyyy.c  (yyyy可以与模块xxxx同名也可以不同名)
 (类似模板的东西) 
 #ifndef __KERNEL__
 #define __KERNEL__
 #endif
#ifndef MODULE             //直接添加到内核时去掉,生成模块时保留
 #define MODULE
 #endif
#include <*.h>
...
MODULE_LICENSE("GPL"); //许可证申明,用来告知内核,该模块带有一个许可证
 MODULE_AUTHOR("you name"); //作者申明(可选)
 MODULE_DESCRIPTION("aaaa");//模块描述(可选)
 MODULE_VERSION("V1.0"); //模块版本(可选)
 MODULE_ALIAS("a bbbb module"); //模块别名(可选)
static  int  __inti  xxxx_init(void)
 {
 }
static  void  __inti  xxxx_exit(void)
 {
 }
... // 其他函数
 ...
module_init(xxxx_init);
 module_exit(xxxx_exit);
内核编译的Makefile
Makefile 
 (类似模板的东西)
 ifneq ($(KERNELRELEASE),)
 obj-m := xxxx.o
 xxxx-objs := yyyy.o  (如有其它源文件继续添加 zzzz.o  ...)(如yyyy = xxxx 且只有一个源文件,该行可去掉)
  else
 KDIR := /lib/module/2.6.28.6/build 
 all:
          make -C $(KDIR ) M=$(PWD)  modules
 clean:
          rm  -f  *.ko  *.o  *.mod.o  *.mod.c  *.symvers
 endif
其中 /lib/module/2.6.28.6/build 为创建内核代码树所生成的目录,创建内核代码数: http://blog.csdn.net/leaglave_jyan/article/details/6652444
编辑好源文件和Makefile后,该目录下运行 make 即可编译生成 模块 xxxx.ko 文件
使用 insmod xxxx.ko 添加