9
從我讀到的內容來看,depmod的目的是爲了跟蹤每個內核模塊何時加載的依賴關係。爲什麼不能在加載內核模塊時自動確定,類似於動態加載用戶空間共享庫?爲什麼建立和使用內核模塊需要depmod?
從我讀到的內容來看,depmod的目的是爲了跟蹤每個內核模塊何時加載的依賴關係。爲什麼不能在加載內核模塊時自動確定,類似於動態加載用戶空間共享庫?爲什麼建立和使用內核模塊需要depmod?
depmod不僅僅是計算直接依賴關係 - 它還建立了硬件標識符和處理它們的模塊之間的映射。這用於找到加載檢測到的硬件的正確模塊。
至於爲什麼它不會像用戶空間那樣做需求加載,部分原因是因爲內核鏈接程序不允許通過設計訪問文件系統。內核中的哲學是文件系統的佈局完全取決於用戶空間,因此不能保證foo.ko
將在/lib/modules/3.0.1/drivers/somesubsys/foo.ko
中找到。因此,內核依賴於用戶空間實用程序(如depmod和modprobe)將其模塊的原始數據按照其加載所需的順序傳遞給它;如果用戶空間在這個工作中失敗,它只是返回一個錯誤,並讓用戶空間處理混亂。
但是,modprobe可以負責解決模塊內信息的依賴關係,並首先探測相應的依賴模塊,不是嗎? – PypeBros 2013-03-12 12:22:28
depmod爲modprobe的使用構建這個依賴信息的緩存。實際上掃描所有模塊的信息可能需要相當長的一段時間,所以您不希望每次調用modprobe時都這樣做 – bdonlan 2013-03-23 04:24:25