分类: LINUX
2014-12-12 10:38:38
内核模块的编写、编译、加载、卸载,Makefile的编写
1.创建实验目录:
#mkdir filename
#cd filename
2.编写内核模块hello.c, Makefile
#include
#include
MODULE_LICENSE("GPL");
MODULE_AUTHOR("DAVID");
MODULE_DESCRIPTION("Hello world module");
static int __init hello_init(void)
{
printk(KERN_ERR "hello world!\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_EMERG "hello exit!\n");
}
module_init(hello_init);
module_exit(hello_exit);
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KDIR:= /lib/modules/2.6.32-279.el6.i686/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c .symvers
endif
3.编译内核模块
#make
#ls后就有hello.ko出来
4.加载内核模块
#insmod hello.ko
因为prink权限不够,在终端并没有看到输出“Hello world”,打印的输出信息在文件/var/log/messages中
#vi /var/log/messages
5.查看内核模块
#lsmod
6.卸载内核模块
#rmmod hello
#vi /var/log/messages可以看到退出的信息
7.再次查看内核模块
#lsmod | grep hello看模块是否已经成功从系统中卸载了