insmod不匹配問題的解決

         第一次練習寫模塊,使用insmod安裝模塊時,發現內核版本不匹配,你可以baidu或者google下,有很多解決方案,但是我這種不匹配錯誤有點不太一樣,不管我在開發板上uname -r查看運行linux內核版本,還是用modinfo來查看編譯模塊版本都是顯示的3.0.8,很奇怪內核版本一樣的的怎麼還會報錯呢。


/mnt/work # uname -r                                                            
3.0.8 


chen@chen:~/work/project/LinuxCross/my6410/nfs/work$ modinfo first_drv.ko
filename:       first_drv.ko
depends:        
vermagic:       3.0.8 mod_unload modversions ARMv6


再看insmod的錯誤提示

# insmod first_drv.ko                                                       
  insmod: kernel-module version mismatch                              
  first_drv.ko was compiled for kernel version                       
  while this kernel is version 3.0.8


我發現我的錯誤提示和別人的錯誤提示不一樣,就是我的ko內核版本並沒有顯示出來 (for kernel version後面沒有版本號),所以我就推測可能是insmod函數本身出了錯誤,因爲yaffs2文件系統是我自己做的,所以我覺得busybox和glibc的不匹配的可能很大,爲了證明這個猜測,我將glibc從2.3.5換成了2.8,重新制作yaffs2文件系統,燒寫進去,啓動,掛載nfs,再insmod ***.ko

ok,問題解決了!


最後爲製作YAFFS2文件系統的朋友給個建議,就是編譯busybox使用的交叉編譯工具一定要和yaffs2的glibc版本匹配(就是lib目錄的庫),不然yaffs2起不來的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章