參考:5 UNIX / Linux modprobe Command Examples
簡介
modprobe用於向Linux Kernel添加 或 移除 kernel modules。 kernel modules以.ko作為擴展名。 'modprobe'足夠智能,可以先加載kernel module(如果有)的依賴模塊,然后加載實際的kernel module。
kernel modules
kernel modules是一段代碼,可以擴展操作系統Kernel的功能,而無需重新啟動。 加載后,modules駐留在內存中,可以多次實例化,可以把他想像成類似於設備驅動程序的東西。
modprobe使用depmod生成的依賴關系列表 和 硬件映射 來智能地將modules加載到kernel 或 從內核移除。 加載和移除分別使用較低級別的insmod和rmmod命令。雖然可以手動調用insmod和rmmod,但建議使用depmod加載和卸載模塊,以確保在進行更改之前考慮任何模塊間依賴關系。
modprobe工作原理
modprobe搜尋modules目錄
# ls /lib/modules/`uname -r` -F
build@ modules.alias.bin modules.dep.bin modules.symbols
initrd/ modules.builtin modules.devname modules.symbols.bin
kernel/ modules.builtin.bin modules.order vdso/
modules.alias modules.dep modules.softdep
對於所有模modules和其他文件,除了/etc/modprobe.d目錄中的可選配置文件。 modprobe還將使用內核命令行中指定的模塊選項,形式如下:
<module>.<option>
blacklists形式如下
modprobe.blacklist=<module>
現代版本的modprobe(內核版本2.4.x后)不會自行修改modules。 解析符號和理解參數的工作是在kernel中完成的。 因此,模塊故障有時伴隨着內核消息。modprobe需要一個最新的modules.dep.bin文件(或fallback human readable的modules.dep文件),由depmod實用程序生成。 此文件列出了每個模塊需要的其他模塊(如果有),modprobe使用它來自動添加或刪除這些依賴項。如果在modulename之后給出了任何參數,它們將被傳遞給內核。