1. 概述

我们编写 Linux 内核模块的软件代码,通过某种方式将其加载到内核空间进行生效,相当于是给 Linux 内核安装了一个实现特定功能的插件。

2. 内核模块编程的三要素

3. Linux内核模块编程实例

// filename: demo.c
#include <linux/init.h>
#include <linux/module.h>

static int __init mycdev_init(void)
{
  return 0;
}
static void __exit mycdev_exit(void)
{

}
module_init(mycdev_init);
module_exit(mycdev_exit);
MODULE_LICENSE("GPL");

4. Linux内核模块的编译

内核模块的编译依赖内核源码,因为需要使用内核提供的接口。编译的方式有两种:1. 内部编译;2. 外部编译

4.1 内部编译(静态编译)

一类内核源码树进行编译,也就是将自己的内核模块文件添加到内核源码树,通过内核模块编译命令进行编译(Linux 内核移植 的第 7 节)