insmod提示invalid module format


insmod: error could not insert module test.ko: -1 Invalid module format

原因:驅動文件編譯的內核版本與當前運行系統的內核版本不一致導致。

1. 通過modinfo 查看test.ko的內核版本vermagic

2. 通過uname -r查看系統的內核版本

 

對於嵌入系統,當確認系統的內核版本與編譯版本差異不大,又急用ko時,可以去編譯環境下find關鍵字UTS_RELEASE, 將該定義宏修改為要運行系統內核版本,再重新編譯一版驅動,就可以通過magic校驗。

UTS_RELEASE通常可能會在如下頭文件中定義:

include/linux/vermagic.h

include/generated/utsrelease.h

 

對於本地系統,部分可以做如下調整。

/usr/src/linux/Makefile:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 130
EXTRAVERSION = -extversion

/usr/src/linux/.config:

CONFIG_LOCALVERSION="-debug"

然后,執行make時:

localhost linux # make
scripts/kconfig/conf --silentoldconfig Kconfig
  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
  UPD     include/generated/utsrelease.h
對應的utsrelease.h的內容為:
#define UTS_RELEASE "2.6.130-extversion-debug"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM