首先在自己的目录下写源码
用VI这个工具
文件命名为hello.c
//
//hello.c
//
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
static int hello_init(void) {
printk(KERN_WARNING "Module init: Hello world!\n");
return 0;
}
static void hello_exit(void) {
printk(KERN_WARNING "Module exit: bye-bye\n");
}
module_init(hello_init);
module_exit(hello_exit);
最后两行指定了模块加载和卸载时执行的函数,加载时执行hello_init,卸载时执行hello_exit。
写一个Makefile,内容如下(文件名也为Makefile)
obj-m = hello.o
default:
$(MAKE) -C/usr/src/kernels/2.6.18-238.el5-i686 M=$(PWD) modules
clean:
$(MAKE) -C/usr/src/kernels/2.6.18-238.el5-i686 M=$(PWD) clean
第一个路径则是要去编译的内核版本的路径 M后面的路径则是hello.c的目录
在当前目录下,编译
可从当前目录下看到生成的文件
会生成一个内核模块hello.ko。这就是我们编译好的内核模块,接下来加载它,并查看结果。
输入命令
insmod hello.ko
输入命令
dmesg
看系统日志(最后一行)
输入命令
lsmod | grep hello
也可查看
输入命令
rmmod hello 卸载模块
再次输入命令
dmesg
看系统日志