Linux 内核模块 HelloWorld
Alex 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
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
2
3
4
5
6
7
8
9
10
11
12
# 模块的装载与卸载
insmod fried_chicken.ko
1
rmmod fried_chicken
1