# 内核开发 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- Debian系统中集成开发内核模块需要的内核头文件,同时提供编译内核模块需要的工具链,用户可以在设备中直接开发和构建新的模块。 # 环境准备 Quectel Pi M2 内核版本为 6.1.118-rt36,系统提供对应的 Linux Kernel Headers,路径如下: /usr/src/linux-headers-6.1-rockchip 安装内核模块编译所需工具: ```plaintext apt update apt install -y make gcc ``` 创建 Hello World 内核模块工程目录: ```plaintext mkdir -p /home/pi/helloworld cd /home/pi/helloworld ``` # 编写源码 ## helloworld.c文件 helloworld.c文件内容: ```cpp #include #include #include MODULE_LICENSE("GPL"); MODULE_AUTHOR("Quectel"); MODULE_DESCRIPTION("A simple Hello World kernel module"); MODULE_VERSION("0.1"); static int __init helloworld_init(void) { printk(KERN_INFO "Hello World!\n"); return 0; } static void __exit helloworld_exit(void) { printk(KERN_INFO "Goodbye!\n"); } module_init(helloworld_init); module_exit(helloworld_exit); ``` ## Makefile 文件 Makefile 文件内容: ```javascript obj-m := helloworld.o KERNELDIR ?= /usr/src/linux-headers-6.1-rockchip PWD := $(shell pwd) all: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules clean: $(MAKE) -C $(KERNELDIR) M=$(PWD) clean ``` # 编译构建 进入工程目录: ```plaintext cd /home/pi/helloworld ``` 执行编译: ```plaintext make ``` 编译完成后,目录下生成内核模块文件: ```plaintext helloworld.ko ``` # 运行测试 加载模块:insmod helloworld.ko 检查模块:lsmod | grep helloworld 检查运行日志:dmesg | grep "Hello World" 卸载模块:rmmod helloworld 检查卸载日志:dmesg | grep "Goodbye"