Linux 内核模块教程
Linux 内核模块是 Linux 内核的重要组成部分,它们允许用户在内核中添加或修改功能,而无需重新编译整个内核。以下是一些关于 Linux 内核模块的基础教程。
基础概念
- 模块:模块是可以在运行时加载和卸载的内核代码片段。
- 初始化函数:模块在加载时调用的函数,用于初始化模块。
- 清理函数:模块在卸载时调用的函数,用于清理模块。
创建模块
- 编写模块代码:使用 C 语言编写模块代码。
- 定义模块信息:在模块代码中定义模块的名称、作者等信息。
- 编译模块:使用
make
命令编译模块。
加载和卸载模块
- 加载模块:使用
insmod
命令加载模块。 - 卸载模块:使用
rmmod
命令卸载模块。
示例
#include <linux/module.h>
#include <linux/kernel.h>
static int __init hello_init(void) {
printk(KERN_INFO "Hello, world!\n");
return 0;
}
static void __exit hello_exit(void) {
printk(KERN_INFO "Goodbye, world!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple Linux kernel module");