Linux 内核模块教程

Linux 内核模块是 Linux 内核的重要组成部分,它们允许用户在内核中添加或修改功能,而无需重新编译整个内核。以下是一些关于 Linux 内核模块的基础教程。

基础概念

  • 模块:模块是可以在运行时加载和卸载的内核代码片段。
  • 初始化函数:模块在加载时调用的函数,用于初始化模块。
  • 清理函数:模块在卸载时调用的函数,用于清理模块。

创建模块

  1. 编写模块代码:使用 C 语言编写模块代码。
  2. 定义模块信息:在模块代码中定义模块的名称、作者等信息。
  3. 编译模块:使用 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");

扩展阅读

图片

  • Linux 内核模块