实验环境:
Ubuntu18 +5.4.0-73-generic
1.编写一个简单的内核模块
vi test.c
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
static int __init test_init(void)
{
printk("<1>Hello, World! from the kernel space...\n");
return 0;
}
static void __exit test_exit(void)
{
printk("<1>Good Bye, World! leaving kernel space...\n");
}
module_init(test_init); // 注册模块
module_exit(test_exit); // 注销模块
MODULE_LICENSE("GPL"); //告诉内核该模块具有GNU公共许可证
2.创建Makefile文件
touch Makefile
文件中加入代码:
Makefile 4.0
obj-m := test.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
3.安装库 然后编译 生成test.ko文件
sudo apt-get install libelf-dev
make
4.加载模块
Sudo insmod test.ko
5.查看加载的模块
lsmod | grep test
6.查看日志输出内容
dmesg
7.卸载模块
sudo rmmod test
查看是否移除成功
lsmod | grep test