2013-04-25 64 views
1

我下載了蝙蝠俠高級MANET的內核模塊源代碼,然後在源代碼目錄中調用make並讓它執行它的操作。當我有.ko文件可用時,爲什麼modprobe或insmod不能工作?

一旦make完成,文件batman-adv.ko在位於/home/batman-adv-2013.2.0的文件夾中可用。當我在目錄調用modprobe batman-adv我得到的錯誤:

FATAL: Module batman_adv not found. 

,當我打電話insmod batman-adv.ko

insmod: error inserting '/home/batman-adv-2013.2.0/batman-adv.ko': -1 Unknown symbol in module 

操作系統我使用的是Debian的GNU/Linux的6.0.7(擠)

我是否錯過了我應該做的不同的事情,或者模塊文件需要放在別的地方?

+2

嘗試使用'depmod -a' – 2013-04-25 21:03:42

回答

2

「未知符號」通常意味着該模塊對另一個模塊具有依賴性。您可以使用dmesg驗證哪個符號,它會告訴您遇到了哪些未知符號。通常符號的前綴(例如,fat_xxxxx)意味着需要哪個內核模塊。 modprobe僅適用於modules.dep文件中列出的模塊。

+0

是的,也儘量 '納米/home/batman-adv-2013.2.0/batman-adv.ko' 來查看符號。 – 2013-04-25 21:34:27

0

添加到Technologeeks答案:

modprobe將只搜索標準路徑/lib/modules/$(uname -r)模塊。 由於您的.ko文件不在該目錄中,因此modprobe未找到它。

使用你的模塊的正確方法是:

make install 
depmod -a 
modprobe batman-adv 
  • 第一行應該將模塊安裝到一個合適的位置,在所有其他工具一起工作。

  • 二號線試圖找出使用你的模塊所需要的所有的依賴,並把這些信息到一些持久的地方(lib/modules/$(uname -r)/modules.dep

  • 3號線使用的相關性信息,並加載所有的依賴和你模塊。

+1

但是,如果你已經建立了樹,不使用'make modules_install'?當你這樣做的時候,我認爲它需要處理depmod。在這個領域我仍然很綠。 – 2013-04-27 16:03:28

+0

@mark mcmurray另外,當我不想經歷這些時,我只是用'insmod'填充它 - 但這不會解決您未解決的符號! – 2013-04-27 16:04:18

相關問題