以最简单的Hello World模块为例
1.编写模块
2.编写Makefile
3.编译模块
$ make all
生成my_module.ko
4.载入模块
注:需要切换到超级用户
# insmod my_module.ko
载入后通过命令dmesg查看结果:
# dmsg
5.卸载模块
# rmmod my_module.ko
卸载后通过命令dmesg查看结果:
# dmsg
可以看到模块已经被正确卸载了!
6.查看正常工作的模块
$ lsmod
7.删除编译后产生的文件
$ make clean
1.编写模块
//my_module.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int hello_init(void)
{
printk(KERN_ALERT "I bear a charmed life.\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Out, out, brief candle.\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Julian");
MODULE_DESCRIPTION("A Hello, World Module");
2.编写Makefile
obj-m := my_module.o
all:
make -C /usr/src/linux-3.11.1 SUBDIRS=$(PWD) modules
clean:
make -C /usr/src/linux-3.11.1 SUBDIRS=$(PWD) clean
3.编译模块
$ make all
生成my_module.ko
4.载入模块
注:需要切换到超级用户
# insmod my_module.ko
载入后通过命令dmesg查看结果:
# dmsg
5.卸载模块
# rmmod my_module.ko
卸载后通过命令dmesg查看结果:
# dmsg
可以看到模块已经被正确卸载了!
6.查看正常工作的模块
$ lsmod
7.删除编译后产生的文件
$ make clean