Modprobe - Linux命令 - Unix命令

名稱

modprobe - 可加載模塊的高級處理

概要

modprobe [-adnqv] [-C config ]模塊[symbol = value ...]
modprobe [-adnqv] [-C config ] [-t type ]模式
modprobe -l [-C config ] [-t type ]模式
modprobe -c [-C config ]
modprobe -r [-dnv] [-C config ] [module ...]
modprobe -Vh

OPTIONS

-a , - 全部

加載所有匹配的模塊,而不是在第一次成功加載後停止。

-c ,-- showconfig

顯示當前使用的配置。

-C ,-- config config

使用文件配置而不是(可選的) /etc/modules.conf來指定配置。 環境變量MODULECONF也可用於從默認的/etc/modules.conf(或/etc/conf.modules (不建議使用))中選擇(並覆蓋)其他配置文件。

當設置環境變量UNAME_MACHINE時 ,modutils將使用它的值而不是uname()系統調用中的機器字段。 這主要是在32位用戶空間中編譯64位模塊時使用,反之亦然,請將UNAME_MACHINE設置為模塊的類型。 當前modutils不支持模塊的完全交叉構建模式,它僅限於在主機體系結構的32位和64位版本之間進行選擇。

-d ,-- debug

顯示關於模塊堆棧的內部表示的信息。

-h , - 幫助

顯示選項摘要並立即退出。

-k ,-- autoclean

在加載的模塊上設置'autoclean'。 內核在調用modprobe時用於滿足缺少的功能(作為模塊提供)。 -q選項的含義-k 。 這些選項將自動發送到insmod

-l ,-- list

列出匹配模塊。

-n , - 顯示

不要實際執行該操作,只顯示將要完成的操作。

-q , - 安靜

不要抱怨insmod無法安裝模塊。 像平常一樣繼續,但默默地用modprobe的其他可能性來測試。 該選項將自動發送到insmod

-r , - 刪除

取消模塊(堆棧)或自動清理,具體取決於命令行上是否提到了任何模塊。

-s ,-- syslog

通過syslog報告而不是stderr。 該選項將自動發送到insmod

-t moduletype ; --type 模塊類型

只考慮這種類型的模塊。 modprobe只會查看其目錄路徑完全包含“ / moduletype / ”的模塊。 moduletype可以包含多個目錄名,例如“ -t drivers / net ”會列出xxx / drivers / net /及其子目錄中的模塊。

-v ,-- verbose

打印執行的所有命令。

-V,--version

顯示modprobe的版本。

注意:

模塊名稱不能包含路徑(不是'/'),也不能包含尾部的'.o'。 例如,slip是modprobe的有效模塊名稱,/lib/modules/2.2.19/net/slip和slip.o是無效的。 這適用於命令行和配置中的條目。

描述

modprobedepmod實用程序旨在使Linux模塊化內核對所有用戶,管理員和分發維護者更易於管理。

Modprobe使用由depmod創建的類似“Makefile”的依賴文件自動從預定義目錄樹中可用模塊集中加載相關模塊。

Modprobe用於加載單個模塊,一堆依賴模塊或所有標有指定標籤的模塊。

Modprobe將自動加載模塊堆棧中所需的所有基本模塊,如依賴文件modules.dep所述 。 如果其中一個模塊的加載失敗,則當前會話中加載的當前整個模塊堆將自動卸載。

Modprobe有兩種加載模塊的方式。 一種方式(探測模式)將嘗試從列表中加載模塊(由模式定義)。 一旦一個模塊加載成功, Modprobe立即停止加載。 這可以用來從列表中自動載入一個以太網驅動程序。
modprobe的另一種使用方法是從列表中加載所有模塊。 請參閱下面的示例

使用-r選項,modprobe將自動卸載一堆模塊,類似於“ rmmod -r ”的方式。 請注意,僅使用“ modprobe -r ”將清理未使用的自動加載模塊,並在配置文件/etc/modules.conf中執行pre-和post-remove命令。

組合選項-l-t列出了特定類型的所有可用模塊。

選項-c將打印當前使用的配置(默認+配置文件)。

組態

modprobe (和depmod )的行為可以通過(可選)配置文件/etc/modules.conf進行修改。
有關此文件可包含的更詳細說明以及depmodmodprobe使用的缺省配置,請參閱modules.conf (5)。

請注意,如果模塊被kerneld“autocleaned”,則不會執行pre-和post-remove命令! 相反,尋找持久模塊存儲的即將到來的支持。
如果你想使用安裝前和安裝後的功能,你必須關閉kerneld的autoclean,並在你的crontab中使用下面這行代碼(這也用於kmod系統),每隔2分鐘做一次autoclean :

* / 2 * * * * test -f / proc / modules && / sbin / modprobe -r

戰略

這個想法是, modprobe將首先查看包含為當前版本的內核編譯的模塊的目錄。 如果在那裡找不到該模塊, modprobe將查找內核版本通用的目錄(例如2.0,2.2)。 如果仍然找到該模塊,則modprobe將在包含默認版本的模塊的目錄中查找,等等。

當你安裝一個新的linux時,這些模塊應該被移動到與你正在安裝的內核的版本(和版本)相關的目錄中。 然後你應該從這個目錄到“默認”目錄做一個符號鏈接。

每次編譯新內核時,命令“ make modules_install ”將創建一個新目錄,但不會更改“默認”鏈接。

當你得到一個與內核分發無關的模塊時,你應該把它放在/ lib / modules下的一個與版本無關的目錄中。

這是默認策略,可以在/etc/modules.conf中重寫。

例子

modprobe -t net

加載標記為“net”的目錄中存儲的其中一個模塊。 每個模塊都嘗試,直到一個成功。

modprobe -a -t啟動

存儲在標記為“boot”的目錄中的所有模塊都將被加載。

modprobe滑

這將試圖加載模塊slhc.o,如果它以前沒有加載,因為滑動模塊需要在slhc模塊中的功能。 這個依賴關係將在由depmod自動創建的文件modules.dep中進行描述。

modprobe -r滑動

這將卸載滑動模塊。 它也會自動卸載slhc模塊,除非它也被其他模塊使用(例如ppp)。

也可以看看

depmod (8), lsmod (8), kerneld (8), ksyms (8), rmmod (8)。

安全模式

如果有效的uid不等於真實的uid,那麼modprobe會以極度懷疑的態度對待它的輸入。 最後一個參數始終被視為模塊名稱,即使它以' - '開頭。 只能有一個模塊名稱,並且“變量=值”形式的選項是禁止的。 模塊名稱始終被視為字符串,不在安全模式下執行元擴展。 然而元擴展仍然適用於從配置文件讀取的數據。

從內核調用modprobe時,euid可能不等於uid,對於內核> = 2.4.0-test11,這是正確的。 在理想的世界中, modprobe可以信任內核只傳遞有效參數給modprobe。 但是至少有一個本地根攻擊發生,因為高級內核代碼將未驗證的參數直接從用戶傳遞到modprobe。 所以modprobe不再信任內核輸入。

當環境僅由這些字符串組成時, modprobe會自動設置安全模式

HOME = / TERM = linux PATH = / sbin:/ usr / sbin:/ bin:/ usr / bin

這在內核2.2到2.4.0-test11上檢測內核的modprobe執行,即使uid == euid,它在早期的內核上執行也是如此。

登錄命令

如果目錄/ var / log / ksymoops存在並且modprobe使用可以加載或刪除模塊的選項運行,則modprobe將在/ var / log / ksymoops /`date +%Y%m%d中記錄其命令並返回狀態.log` 。 沒有開關禁用這個自動日誌記錄,如果你不想讓它發生,不要創建/ var / log / ksymoops 。 如果該目錄存在,它應該由root擁有並且是644或600模式,並且您應該每天運行腳本insmod_ksymoops_clean

要求的實用程序

depmod (8), insmod (8)。

重要提示:使用man命令( %man )查看特定計算機上的命令使用方式。