名稱
depmod - 處理可加載內核模塊的依賴性描述
概要
depmod [-aA] [-ehnqrsuvV] [-C configfile ] [-F kernelsyms ] [-b 基於目錄 ] [ forced_version ]
depmod [-enqrsuv] [-F kernelsyms ] module1.o module2.o ...
描述
depmod和modprobe實用程序旨在為所有用戶,管理員和分發維護者提供可管理的Linux模塊化內核。
基於它在命令行中提到的模塊集合中找到的符號,或者從配置文件中指定的目錄中找到的符號, Depmod創建一個“Makefile”類型的依賴文件。 這個依賴文件稍後將被modprobe用來自動加載正確的模塊或模塊堆棧。
depmod的正常使用是包含該行
/ sbin / depmod -a
在/etc/rc.d中的rc文件中的某處,以便正確的模塊依賴關係在引導系統後立即可用。 請注意,選項-a現在是可選的。 對於啟動目的,選項-q可能更合適,因為這會使depmod對無法解析的符號保持沉默。
在編譯新內核之後立即創建依賴文件也是可能的。 如果你在第一次編譯內核2.2.99及其模塊時執行“ depmod -a 2.2.99 ”,同時仍然運行例如2.2.98,則將在正確的位置創建該文件。 但是,在這種情況下,對內核的依賴性不能保證是正確的。 有關處理此問題的更多信息,請參閱上面的選項-F , -C和-b 。
在構建模塊和其他模塊導出的符號之間的關係時, depmod不會考慮模塊的GPL狀態,也不會考慮導出的符號。 也就是說,如果沒有GPL兼容許可證的模塊引用僅GPL唯一符號(內核中的EXPORT_SYMBOL_GPL),depmod將不會標記錯誤。 但是, insmod將拒絕為非GPL模塊解析GPL唯一符號,因此實際負載將失敗。
選項
-a , - 全部
搜索(可選)配置文件/etc/modules.conf中指定的所有目錄中的模塊。
-A , - 快
比較文件時間戳,並且如果有必要,就像depmod -a一樣 。 如果有任何更改,此選項只會更新依賴項文件。
-e ,-- errsyms
顯示每個模塊的所有未解決的符號。
-h , - 幫助
顯示選項摘要並立即退出。
-n , - 顯示
在stdout而不是在/ lib / modules樹中寫入依賴文件。
-q , - 安靜
告訴depmod保持安靜,不要抱怨丟失的符號。
-r , - 根
一些用戶在非root用戶標識下編譯模塊,然後以root身份安裝模塊。 即使模塊目錄由root擁有,此進程也可以讓非root用戶標識擁有的模塊。 如果非根用戶標識符受到攻擊,入侵者可以覆蓋該用戶標識符擁有的現有模塊,並使用此公開權限引導至根用戶訪問權限。
默認情況下,modutils將拒絕嘗試使用不屬於root的模塊。 指定-r會抑制錯誤並允許root加載不屬於root的模塊。
使用-r是主要的安全風險,不建議使用。
-s ,-- syslog
通過syslog守護進程而不是stderr寫入所有錯誤消息。
-u , - 未解決的錯誤
當有任何未解決的符號時, depmod 2.4不會設置返回碼。 modutils(2.5)的下一個主要版本將為未解析的符號設置返回碼。 一些發行版希望在modutils 2.4中有一個非零的返回代碼,但這種更改可能會導致期望舊行為的用戶出現問題。 如果您需要depmod 2.4中的非零返回碼,請指定-u 。 depmod 2.5會默默地忽略-u標誌,並且總會為未解析的符號提供非零返回碼。
-v , - 詳細
顯示每個模塊正在處理的名稱。
-V ,-- version
顯示depmod的版本。
以下選項對管理分配的人員很有用:
-b 基於目錄 , - 基於 目錄的 基礎 目錄
如果將包含模塊子樹的目錄樹/ lib /模塊移動到其他位置以便處理其他環境的模塊,則-b選項將指示depmod在何處查找/ lib / modules樹的移動圖像。 構建的depmod輸出文件中的文件引用modules.dep不包含基礎目錄路徑。 這意味著當文件樹從基本目錄/ lib / modules移回到最終發行版中的/ lib / modules時,所有引用都是正確的。
-C configfile ,-- config configfile
使用文件configfile而不是/etc/modules.conf 。 環境變量MODULECONF也可用於從默認的/etc/modules.conf (或/etc/conf.modules (不建議使用))中選擇不同的配置文件。
當環境變量
UNAME_MACHINE已設置,modutils將使用它的值而不是uname()系統調用中的機器字段。 這主要是在32位用戶空間中編譯64位模塊時使用,反之亦然,請將UNAME_MACHINE設置為正在構建的模塊的類型。 當前modutils不支持模塊的完全交叉構建模式,它僅限於在主機體系結構的32位和64位版本之間進行選擇。
-F kernelsyms ,-- filesyms kernelsyms
當為與當前運行的內核不同的內核構建依賴文件時, depmod使用正確的一組內核符號來解析每個模塊中的內核引用是非常重要的 。 這些符號可以是另一個內核的System.map的副本,也可以是/ proc / ksyms的輸出的副本。 如果內核使用版本化符號,最好使用/ proc / ksyms輸出的副本,因為該文件包含內核符號的符號版本。 但是,即使使用版本化符號,也可以使用System.map 。
組態
depmod和modprobe的行為可以通過(可選)配置文件/etc/modules.conf進行調整。
有關完整的描述,請參閱modprobe (8)和modules.conf (5)。
戰略
每次編譯新內核時,命令“ make modules_install ”將創建一個新目錄,但不會更改默認值。
當你得到一個與內核分發無關的模塊時,你應該把它放在/ lib / modules下的一個與版本無關的目錄中。
這是默認策略,可以在/etc/modules.conf中重寫。
也可以看看
重要提示:使用man 命令 ( %man )查看特定計算機上的命令使用方式。