什么是内核模块?
内核模块是Linux系统中可动态加载/卸载的代码片段,用于扩展系统功能。例如:
✅ 网络协议支持
✅ 文件系统类型
✅ 设备驱动程序
📌 了解更多高级开发技巧,请访问 /zh/tutorials/kernel/kernel_module_advanced
开发步骤
编写模块代码
// 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"); }
⚠️ 确保代码中包含必要的头文件和许可证声明
编译模块
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
📁 编译产物为
.ko
文件(如:hello.ko
)加载模块
sudo insmod hello.ko
📈 模块加载后可通过
dmesg
查看日志
常见问题
- ⚠️ 权限不足:需使用
sudo
执行加载操作 - ⚠️ 版本不兼容:模块与内核版本需匹配
- ✅ 调试技巧:使用
printk
输出日志信息