insmod模块时模块validation失败

在Ubuntu 14.04上,内核3.13.0,当我插入下面的简单模块,我从内核日志中得到错误信息:“模块validation失败:签名和/或所需的密钥丢失 – 玷污内核”

我犯了什么错误或错过了什么? 这里是一个名为ts2.c的文件中的模块源代码。

#include <linux/module.h> /* Needed by all modules */ #include <linux/kernel.h> /* Needed for KERN_INFO */ #include <linux/init.h> MODULE_LICENSE("GPL"); MODULE_ALIAS("hello2"); static int __init hello1_init(void) { printk(KERN_INFO "Hello world 2.\n"); return 0; } static void __exit hello1_exit(void) { printk(KERN_INFO "Goodbye world 2.\n"); } module_init(hello1_init); module_exit(hello1_exit); 

这里是Makefile:

 ifeq ($(DEBUG),y) DEBFLAGS = -O -g -DPCI_INFO_DEBUG # "-O" is needed to expand inlines else DEBFLAGS = -O2 endif EXTRA_CFLAGS += $(DEBFLAGS) -I$(LDDINC) ifneq ($(KERNELRELEASE),) obj-m := ts2.o else KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) LDDINC=$(PWD) modules clean: $(MAKE) -C $(KERNELDIR) M=$(PWD) LDDINC=$(PWD) clean endif depend .depend dep: $(CC) $(EXTRA_CFLAGS) -M *.c > .depend ifeq (.depend,$(wildcard .depend)) include .depend endif 

你的make文件有问题

 ifeq ($(DEBUG),y) DEBFLAGS = -O -g -DPCI_INFO_DEBUG # "-O" is needed to expand inlines else DEBFLAGS = -O2 endif EXTRA_CFLAGS += $(DEBFLAGS) -I$(LDDINC) ifneq ($(KERNELRELEASE),) obj-m := ts2.o 

相反,它应该如下所示:

 ifeq ($(DEBUG),y) DEBFLAGS = -O -g -DPCI_INFO_DEBUG # "-O" is needed to expand inlines else DEBFLAGS = -O2 endif EXTRA_CFLAGS += $(DEBFLAGS) -I$(LDDINC) ifneq ($(KERNELRELEASE),) obj-m := hello1.o 

现在你的问题应该得到解决