Linux内核模块
最后发布时间:2021-08-01 21:37:29
浏览量:
linux内核配置文件
写一个内核模块hello.c
#include <linux/init.h>
#include <linux/module.h>
int hello_init(void){
printk("Hello init");
return 0;
}
void hello_exit(void){
printk("Hello exit");
}
module_init(hello_init)
module_exit(hello_exit)
/usr/src/linux-headers-5.4.0-58-generic/include/linux/init.h
编译内核模块Makefile
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERN_DIR ?= /usr/src/linux-headers-$(shell uname -r)/
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERN_DIR) M=$(PWD) modules
endif
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
结果
.
├── hello.c
├── hello.ko
├── .hello.ko.cmd
├── hello.mod
├── hello.mod.c
├── .hello.mod.cmd
├── hello.mod.o
├── .hello.mod.o.cmd
├── hello.o
├── .hello.o.cmd
├── Makefile
├── modules.order
└── Module.symvers
模块命令的使用
- insmod
- rmmod
- lsmod
- dmesg
dmesg实时读取
watch "dmesg | tail -20"
dmesg -wH