2010-11-01 58 views
1

有沒有辦法從命令行列出運行時在內核中加載的內核模塊的完整依賴列表?如何在運行時獲取內核模塊的完整依賴列表

讓我澄清一下我的問題。

我所試圖做的事:

  1. 我使用lsmod
  2. 然後通過運行一個循環刪除/卸載當前加載的內核模塊得到所有加載的模塊的列表。我正在使用modprobe -r。由於某些模塊正在使用,此步驟失敗(顯然)。 (我可以切換到使用rmmod -r,但不想因爲它是不安全的並可能導致系統崩潰。)
  3. 然後我想再一次加載模塊。

這是第2步失敗,因爲在使用modprobe -r之前無法獲取所有模塊相關性。

任何意見,建議或意見?

回答

4

然而lsmod的O/P有時會不完整。它也並不總是指示所有依賴於給定模塊的模塊。

在「使用者」列中的lsmod中看到的內容僅僅是您可以使用modinfo查看的靜態符號依賴關係。

但是,如果一段內核代碼使用(try_)module_get對模塊進行引用,則不會記錄調用方。引用沒有所有者(模塊A可以將指針傳遞給模塊B,然後module_puts它..),對於使用者列沒有任何記錄。

2

man lsmod:lsmod是一個簡單的程序,可以很好地格式化/ proc/modules的內容,顯示當前加載的內核模塊。

編輯: 又見:depmod -n

+0

我知道lsmod的。但是lsmod o/p有時不完整。它也並不總是指示所有依賴於給定模塊的模塊。 – abc 2010-11-01 21:27:45

2

要獲得模塊依賴關係的列表,將被modprobe使用(即它通常應該是完整的清單,但看到user502515答案),使用

$ modprobe --show-depends <module> 

注意,這個命令可以顯示更多信息比modinfodepends:行,因爲它遞歸地列出了依賴關係(即依賴關係的依賴關係)。 它還考慮到modprobe配置文件中的alias命令。

使用測試:

$ modprobe -V 
kmod version 14 
相關問題