内核开发

Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.


Debian系统中集成开发内核模块需要的内核头文件,同时提供编译内核模块需要的工具链,用户可以在设备中直接开发和构建新的模块。

环境准备

sudo apt update
sudo apt install -y make

编写源码

helloworld.c 文件

helloworld.c 文件内容:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
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 文件内容:

obj-m := helloworld.o

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

all:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) clean

install:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

help:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) help

.PHONY: all clean install help

编译构建

构建方法:

LD_LIBRARY_PATH=/opt/qcom/lib:$LD_LIBRARY_PATH PATH=/opt/quectel/bin:$PATH make LLVM=1

运行测试

加载模块:insmod helloworld.ko

检查结果:lsmod | helloworld

卸载模块:rmmod helloworld

检查运行日志:dmesg | grep “Hello World”