Linux 内核模块 HelloWorld

6/18/2022 Linux 内核

# 示例

#include <linux/init.h>
#include <linux/module.h>

static int __init fried_chicken_init(void) {
    printk("Hello World");
    printk("fried_chicken module init");
    return 0;
}

static void fried_chicken_exit(void) {
    printk("fried_chicken module exit");
    return;
}

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Alex");
MODULE_DESCRIPTION("A linux kernel module example");

module_init(fried_chicken_init);
module_exit(fried_chicken_exit);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 编译

运行 make all 之后将会得到 fried_chicken.ko 文件

Makefile

CONFIG_MODULE_SIG=n

ifneq ($(KERNELRELEASE),)
obj-m := fried_chicken.o
else

KDIR := /usr/src/kernels/$(shell uname -r)

all:
	@$(MAKE) -C $(KDIR) M=$(PWD) modules

endif
1
2
3
4
5
6
7
8
9
10
11
12

# 模块的装载与卸载

insmod fried_chicken.ko
1
rmmod fried_chicken
1
Last Updated: 4/4/2023, 2:33:27 AM