一、 编写第一个模块例子
$>vim mod_test01.c
#include <linux/module.h>
//模块的入口函数,在insmod时调用
static int __init my_init(void)
{
printk("hello kernel\n");//显示信息
return 0;//成功返回0,失败返回负数
}
//模块出口函数,在rmmod时调用
static void __exit my_exit(void)
{
printk("Bye,kernel\n");
}
module_init(my_init);
module_exit(my_exit);
MODULE_AUTHOR("LFJ");
MODULE_LICENSE("GPL");
$>vim Makefile
KERNEL := /usr/src/linux-headers-`uname -r`/
obj-m := mod_test01.o
myko := mod_test01.ko
all:
make -C $(KERNEL) M=`pwd` modules
clean:
make -C $(KERNEL) M=`pwd` clean
1、在pc上进行安装并测试;
2、注意:linux内核源码的路径中,可以包含中文,但是一定不能有空格
3、编译模块
$>make
二、模块的相关命令:
1.模块加载
sudo insmod mod_test01.ko
安装模块后,默认调用模块入口函数
2.查看内核信息
显示printk的信息
dmesg
清除printk的缓存区
sudo dmesg -c
3.卸载模块
sudo rmmod mod_test01
4.显示模块信息
modinfo mod_test01.ko
5.列出内核中已经加载的模块
lsmod