1.编写MakeFile
obj-m:=xxx.o //名称可改
//以下内容可以不用动
CURRENT_PATH:=$(shell pwd)
LINUX_KERNEL:=$(shell uname -r)
LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL)
all:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
clean:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean
2.编写模块函数
//一个简单的helloworld函数
#include <linux/init.h>
#include<linux/kernel.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");//许可证
static int __init lkm_init(void) //入口函数
{
printk("Hello,Linux!\n");
return 0;
}
static void __exit lkm_exit(void)//出口函数
{
printk("Good bye!\n");
}
module_init(lkm_init);//入口点
module_exit(lkm_exit);//出口点
3.插入内核模块
sudo insmod xxx.ko
4.打印日志信息
因为其结果不可能直接打印在终端,所以需要打印日志信息来查看结果
dmesg
5.查看当前所有模块列表
lsmod
命令
6.卸载模块
rmmod xxx
注意:这里不用加.ko