
insmod 和 modprobe 有什麼不同嗎?
答案1
modprobe
從中讀取模組/lib/modules/$(uname -r)/modules.dep.bin
(.bin
如果其他檔案不可用,則不帶後綴)。從同一檔案載入依賴項。
modprobe
.ko
接受檔案名稱/lib/modules/$(uname -r)
(例如nvidia-current
檔案dkms/nvidia-current.ko
)和別名(modules.alias.bin
)。內建函數 ( modules.alias.bin
) 也可以被識別,但由於這些模組是預設載入的,因此對此類模組進行 modprobing 沒有意義。
insmod
另一方面接受文件路徑。此模組不必駐留在 中/lib/modules/$(uname -r)
,但依賴項不會自動載入。這是用於modprobe
載入模組的底層程式。
與模組相關的其他程式有rmmod
和modinfo
。
rmmod
根據 中的名稱刪除內核名稱/proc/modules
。該名稱不必與傳遞給的名稱相同modprobe
(例如nvidia-current
,對於文件來說nvidia
)。
modinfo
.ko
接受檔名,或不帶後綴的檔名/lib/modules/$(uname -r)
。
答案2
每man insmod
:
大多數使用者會想使用 modprobe,它更聰明並且可以處理模組依賴性。
答案3
modprobe
是一個智慧命令,它在載入模組時會尋找依賴關係。假設,如果我加載了一個模組,該模組具有在其他模組中定義的符號(該模組路徑在主模組內部給出)。因此,modprobe
載入主模組和依賴模組。
但如果insmod
使用,它不會加載依賴項,因此會出現諸如Unresolved symbols
.在這種情況下,我們必須手動尋找依賴模組並載入它們才能解決錯誤。
答案4
modprobe 指令比更基本的 insmod 和 rmmod 實用程式提供更多功能。 modprobe 聰明地在 Linux 核心中新增或刪除模組。請注意,為了方便起見,模組名稱中的 _ 和 - 沒有區別(執行自動下劃線轉換)。 modprobe 在模組目錄 /lib/modules/ 中尋找uname -r
所有模組和其他文件,除了 /etc/modprobe.d 目錄中的可選設定檔(某些發行版使用 /etc/modprobe.conf 檔案)。