insmod 和 modprobe 有什麼不同?

insmod 和 modprobe 有什麼不同?

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載入模組的底層程式。

與模組相關的其他程式有rmmodmodinfo

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 檔案)。

了解更多

相關內容