2009-07-15 68 views
0

我在hid模塊中做了一些修改。添加insmod內核HID模塊

我可以把它和加載(insmod的),它的內核v 2.6.27.14成功地

現在我願意來加載內核訴相同的內核模塊2.6.27.11

至於有沒有迪菲昂斯在兩者的內核版本

的kerbel源文件,我可以把它成功地,但我不能在這0.11內核版本

**

添加/ insmod的
   ERROR: Module myhid does not exist in /proc/modules 

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

**

問候,

+0

您能否添加更多詳細信息?代碼,Makefile,你如何插入它等? – hyperboreean 2009-07-15 14:15:49

+0

也許嘗試和區分.config文件? – Inshallah 2009-07-15 14:16:05

+0

這是make文件。我將所有依賴源文件下載到HID.O並重命名它們。 #MAKEFILE #多部分對象。 OBJ-M:= myhid.o myhid-的OBJ:= MY-hiddraw.o myhid-core.o myhid-input.o myhid輸入-quirk.o KDIR: =/LIB /模塊/ $(殼UNAME -r)/建立 PWD:= $(殼PWD) 默認: \t $(MAKE)-C $(KDIR)M = $(PWD)模塊 – Madni 2009-07-15 14:23:53

回答

0

看什麼 「modinfo命令」 告訴你關於你的模塊:

檢查它的正確編譯,鏈接到正確的內核。

$ modinfo hid 
filename:  /lib/modules/2.6.27.7/kernel/drivers/hid/hid.ko 
license:  GPL 
depends:   
vermagic:  2.6.27.7 mod_unload 486 
parm:   pb_fnmode:Mode of fn key on Apple keyboards (0 = disabled, 1 = fkeyslast, 2 = fkeysfirst) (int) 

當你編譯/安裝模塊,不要忘記,你必須運行「depmod」(根)運行insmod的/ modprobe的前重建模塊依賴關係。

3

您無法加載爲其他內核版本編譯的模塊。模塊的源代碼沒有改變並不意味着二進制文件對於另一個內核版本將是相同的。內核內部API的任何接口更改(即使不能直接看到)都會中斷該模塊...

因此,內核通過禁止加載爲其他內核版本構建的模塊而保持安全。或者,您可以在構建內核時設置MODVERSIONS配置選項。這會將版本信息嵌入到您的模塊使用的所有符號中,幸運的是您可以將其加載到另一個內核版本上。

如果你的模塊使用的任何接口改變了,結果將是相同的。

+0

謝謝!是的,如果我在每個內核版本上編譯我的源文件,它都可以。 在構建我們的內核時,我們如何設置MODVERSIONS配置選項。它是在MAKEFILE還是在任何源文件中?問候, – Madni 2009-07-15 14:46:22

+0

它在.config中設置,通常通過運行'make menuconfig'之類的。有關更多信息,請查看內核源代碼中的'Documentation/kbuild/modules.txt'。 – Bluehorn 2009-07-15 20:25:59

+0

謝謝!我仍然在使用MODVERSIONS,但仍然沒有一個好的照片。請給我一個例子。問候 – Madni 2009-07-16 08:17:11

0

謝謝!這是make文件。我下載中心都依賴源文件HID.O並重新命名

MAKEFILE

OBJ-M:= myhid.o

myhid-OBJ文件:= MY-hiddraw.o myhid核心.O我-HID-input.o我-HID-輸入quirk.o

KDIR:=/LIB /模塊/ $(殼UNAME -r)/建立

PWD:= $(殼PWD )

默認值:

$(MAKE) -C $(KDIR) M=$(PWD) modules