2010-12-09 87 views
0

我试图编译给出了here如何建立一个内核模块

我按照以下步骤一个Hello World模块。

  1. 下载Linux内核2.6.35-RC5
  2. 提取到目录/普通/源极/ Linux的
  3. 遵循的整个内核。
  4. 在linux文件夹中创建了dir测试。
  5. 创建并遵守上面提到的hello world模块。

当我运行insmod命令,我得到这个错误

insmod: error inserting 'hello.ko': -1 Invalid module format 

我如何理清这个错误?

Regards,

回答

1

好的你犯的错是内核版本。

首先尝试

uname -r 

你会得到内核版本。下载的版本很可能不会是你系统的内核版本。 所以make文件更改为

ifeq ($(KERNELRELEASE),) 

KERNELDIR ?= /lib/modules/$(shell uname -r)/build 
PWD := $(shell pwd) 

.PHONY: build clean 

build: 
     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules 

clean: 
     rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c 
else 

$(info Building with KERNELRELEASE = ${KERNELRELEASE}) 
obj-m := hello.o 

endif 

确保选项卡中,如上面提到的脚本的命令。

0

您的内核模块必须与正在运行的内核相匹配。例如,如果你想安装这个特定的模块,你还需要安装你构建的内核。

通常,您不会自行构建内核,并使用与您的发行版内核匹配的预构建版本。在发行版的存储库中查找kernel-headers软件包。

+0

在某些情况下`kernel * devel *`,因为`headers`通常是`/ usr/include/linux`,它是为用户空间保留的。 – user502515 2010-12-09 21:09:01