1.文件准备
新建hello.c Makefile在同级目录下
2.hello.c
#include<linux/module.h>//所有模块都要使用头文件module.h,此文件必须包含进来
#include<linux/kernel.h>//头文件kernel.h包含了常用的内核函数。
#include<linux/init.h>//头文件init.h包含了宏_init和_exit,它们允许释放内核占用的内存。
static int __init Hello(void)
{
printk("Hello, this is my first kernel module\n");
return 0;
}
static void __exit Exit(void)
{
printk("------ kernel module exit-----\n");
}
module_init(Hello);
module_exit(Exit);
MODULE_LICENSE("GPL");//告诉内核该模块具有GNU公共许可证
MODULE_DESCRIPTION("Hello");
3.Makefile
# Makefile 4.0
obj-m := hello.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
4.当前目录下打开终端执行命令
4.1make
4.2 insmod hello.ko
4.3 rmmod hello