2010-12-09 105 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