insmod模块时模块验证失败

时间:2014-07-18 04:16:39

标签: linux module kernel

在Ubuntu 14.04,内核3.13.0上,当我在简单模块下面插入时,我从内核日志中收到错误消息: “模块验证失败:签名和/或所需密钥丢失 - 污染内核”

我犯了什么错误或遗漏了什么? 这是名为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

1 个答案:

答案 0 :(得分:1)

您的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

现在你的问题应该解决了