如何构建内核模块

时间:2010-12-09 14:01:15

标签: linux-kernel linux-device-driver

我正在尝试编译一个通过here

给出的hello world模块

我已按照以下步骤操作。

  1. 已下载Linux内核2.6.35-rc5
  2. 解压到目录/ general / source / linux
  3. 完成整个内核。
  4. 在linux文件夹中创建了一个dir测试。
  5. 创建并编写了一个如上所述的hello world模块。
  6. 当我运行insmod命令时,我收到此错误

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

    如何解决此错误?

    此致

2 个答案:

答案 0 :(得分: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

确保选项卡符合上述脚本中提到的顺序。

答案 1 :(得分:0)

您的内核模块必须与正在运行的内核匹配。例如,如果要安装此特定模块,则还需要安装已构建的内核。

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