1.下载与目标机器kernel版本一致的kernel源码。本地编译该kernel源码并创建编译外置模块时所需的文件。
~/kernel/linux-5.19$ pwd /home/meetabs/kernel/linux-5.19
make -j16
make -j16 modules_prepare
|
2.编写第一个内核模块helloworld。Makefile文件里面的路径修改为正确的路径。直接执行make即可得到helloworld.ko模块。
#include <linux/init.h> #include <linux/module.h>
static int __init hello_init(void) { printk("Hello World enter\n"); return 0; }
static void __exit hello_exit(void) { printk("Hello World exit\n "); }
module_init(hello_init); module_exit(hello_exit);
MODULE_LICENSE("GPL v2");
|
KERNEL_DIR="/home/meetabs/kernel/linux-5.19"
obj-m += helloWorld.o
build: make -C ${KERNEL_DIR} M=$(CURDIR) modules clean: rm -f *.o *.ko *.mod* *.order *.symvers
|
3.使用insmod和rmmod命令即可验证helloworld.ko是否生效。
meetabs@testing:~$ insmod helloWorld.ko meetabs@testing:~$ dmesg [ 3768.028551] Hello World enter meetabs@testing:~$ rmmod helloWorld meetabs@testing:~$ dmesg [ 3779.121813] Hello World exit
|