Linux modprobe 命令

簡介:

modprobe命令 用於向內核裝在模塊或從內核中移除模塊。

modprobe可載入指定的個別模塊兒,或是載入一組相依模塊。modprobe會根據depmod(depmod是一個用來產生modules.dep和map文件的程序,depmod通過讀取/lib/modules/version目錄下的每一個模塊來創建一個記錄模塊相依性的列表。這個列表就是/lib/modules/version目錄下的modules.dep。)所產生的相依關係,決定載入哪些模塊。如無法正確載入則modprobe會卸載整組模塊。

爲了一致性,modprobe不區分模塊名字中包含的_和-。modprobe檢查/lib/modules/`uname -r`下的所有模塊,除了/etc/modprobe.conf配置文件和/etc/modprobe.d目錄以外。所有/etc/modprobe.d/arch/目錄下的文件將被忽略。值得注意的是現在modprobe不會對模塊本身進行操作,解析symbols(linux核心模塊可以提供服務給其他模塊,稱之爲"symbols")和理解參數的工作都交由kernel來作,所以模塊加載等錯誤有時將會包含在內核信息中,利用dmesg可以查看到,如果指定模塊名,這些模塊將會被傳到核心中,當然還有它們對應的參數(記錄在配置文件中).。

modprobe會根據modules.dep來添加或者刪除模塊。
通過了解modprobe的manpage 可以知道modprobe -l來顯示當前可以加載的模塊,所謂當前可以加載的模塊實際上是modules.dep文件中包含的那些模塊,而不是manpage裏說的modprobe會加載/lib/modules/`uname -r`下的所有模塊,modprobe加載某個模塊是根據/lib/modules/`uname -r`目錄下的modules.dep文件中的模塊列表,這個文件中所有的模塊modprobe會正確加載,否則就會出錯。

用法及例子:

modprobe(選項)(參數—要加載或移除的模塊名)


顯示當前裝入的內核模塊:
$ lsmod

顯示模塊信息:
$ modinfo module_name

顯示所有模塊的配置信息:
$ modprobe -c | less

顯示某個模塊的配置信息:
$ modprobe -c | grep module_name

顯示一個裝入模塊使用的選項:
$ systool -v -m module_name

顯示模塊的依賴關係:
$ modprobe --show-depends module_name

手動加載卸載
控制內核模塊載入/移除的命令是kmod 軟件包提供的, 要手動裝入模塊的話,執行:
# modprobe module_name

如果要移除一個模塊:
# modprobe -r module_name
或者:
# rmmod module_name


查看modules的配置文件: 
modprobe -c 
可以查看modules的配置文件,比如模塊的alias別名是什麼等。

列出內核中所有已經或者未掛載的所有模塊: 
modprobe -l 
能查看到所需要的模塊,然後根據需要來掛載;其實modprobe -l讀取的模塊列表就位於/lib/modules/`uname -r`目錄中;其中uname -r是內核的版本。

掛載vfat模塊: modprobe vfat 
使用格式modprobe [模塊名] 來掛載一個模塊。掛載之後,用lsmod可以查看已經掛載的模塊。模塊名是不能帶有後綴的,我們通過modprobe -l所看到的模塊,都是帶有.ko或.o後綴。



擴展連接:https://wiki.archlinux.org/index.php/Kernel_modules_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章