【发布时间】:2018-07-30 23:21:51
【问题描述】:
我只想插入一个模块而不污染内核。
这是文件test1.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL")
MODULE_AUTHOR("AUTHOR")
MODULE_DESCRIPTION("DESCRIPTION")
static int __init module_hello(void) {
printk(KERN_ALERT "Hello");
return 0;
}
static void __exit module_bye(void) {
printk(KERN_ALERT "Bye");
}
module_init(module_hello);
module_exit(module_bye);
在同一文件夹中,文件 Makefile,如 kernel.org 第 3 节所述
ifneq ($(KERNELRELEASE),)
obj-m := test1.o
else
KDIR ?= /lib/modules/`uname -r`/build
default:
$(MAKE) -C $(KDIR) M=$$PWD
endif
执行make 会正确创建必要的文件,但是当我插入它时,我会收到消息Loading out-of-tree modules taints kernel,并且在我删除模块之前我不会得到module_hello 的输出,之后,如果我再次插入它,我从module_bye 函数中得到消息,但不是你好。
【问题讨论】: