什么是内核模块?

内核模块是Linux系统中可动态加载/卸载的代码片段,用于扩展系统功能。例如:
✅ 网络协议支持
✅ 文件系统类型
✅ 设备驱动程序

📌 了解更多高级开发技巧,请访问 /zh/tutorials/kernel/kernel_module_advanced

开发步骤

  1. 编写模块代码

    // hello.c
    #include <linux/module.h>
    #include <linux/kernel.h>
    
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("Your Name");
    MODULE_DESCRIPTION("A simple Hello World module");
    
    int init_module(void) {
        printk(KERN_INFO "Hello, world!\n");
        return 0;
    }
    
    void cleanup_module(void) {
        printk(KERN_INFO "Goodbye, world!\n");
    }
    

    ⚠️ 确保代码中包含必要的头文件和许可证声明

  2. 编译模块

    make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
    

    📁 编译产物为 .ko 文件(如:hello.ko

  3. 加载模块

    sudo insmod hello.ko
    

    📈 模块加载后可通过 dmesg 查看日志

常见问题

  • ⚠️ 权限不足:需使用 sudo 执行加载操作
  • ⚠️ 版本不兼容:模块与内核版本需匹配
  • 调试技巧:使用 printk 输出日志信息
Linux_内核模块结构

扩展学习

🔗 查看内核模块加载流程图
🔗 了解模块签名与安全机制

内核模块开发指南