1. 程式人生 > >insmod: error inserting './igb.ko': -1 Unknown symbol in module 的問題所在

insmod: error inserting './igb.ko': -1 Unknown symbol in module 的問題所在

編譯驅動的時候碰到了  insmod: error inserting './igb.ko': -1 Unknown symbol in module 的問題,在網上看了下,說是檢視 dmesg | tail 看輸出資訊中的Unknown symbol,載入上這些模組就好。我的輸出資訊是:

1 2 3 4 5 [ 3548.357465] igb: Unknown symbol dca_remove_requester [ 3548.358569] igb: Unknown symbol dca_add_requester [ 3548.358814] igb: Unknown symbol dca_unregister_notify
[ 3548.358817] igb: Unknown symbol dca_register_notify [ 3548.358924] igb: Unknown symbol dca3_get_tag

但是我在系統中檢視

dca_remove_requester

dca_add_requester

dca_unregister_notify

dca_register_notify

dca3_get_tag

5個模組是沒有找到,細細一想,估計是由於模組依賴的其他模組沒有載入導致的。

直接用: modinfo  ./igb.ko | grep depend   找模組的依賴,結果如下,

depends:        dca

然後再執行: 

localhost:/opt/igb/igb-4.0.17/src #  modprobe dca

localhost:/opt/igb/igb-4.0.17/src #  insmod ./igb.ko 

一切OK,嘿嘿,看來以後載入模組之前還是要先看看他的依賴是不是已經載入了阿。

附:《模組載入常見錯誤》

  1. insmod: error inserting './igb.ko': -1 Unknown symbol in module           --->    依賴的模組沒有載入,需要先載入 depends 中列出的模組

  2. insmod: error inserting './igb.ko': -1 Operation not permitted                --->    這當然是你用普通使用者執行才出現的錯誤咯

  3. insmod: error inserting './igb.ko': -1 Invalid module format                    --->    模組的vermagic(就是編譯核心的環境的核心版本)和當前系統不相匹配

  4. insmod: error inserting './aacraid.ko': -1 No such device                       --->    模組是對的,只是沒有相應的裝置

呵呵,其他的還沒收集,等想起來了再加上。