Linux中mod相關的命令 內核模塊化 mod相關命令都是用來動態加載內核模塊/驅動程序模塊


Linux中mod相關的命令 內核模塊化   mod相關命令都是用來動態加載內核模塊/驅動程序模塊

http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjzMvMcGkzCwlxrj5L7YGKGd90hKX0iVU1Du5fa-6GvG0sw_hIoxwNh9rvwM9C2y3NN1RRa  鳥哥私房菜

 

module-init-tools:Linux內核可加載模塊管理工具

rpm -ql module-init-tools
/etc/depmod.d
/etc/depmod.d/dist.conf
/etc/modprobe.d
/etc/modprobe.d/dist-alsa.conf
/etc/modprobe.d/dist-oss.conf
/etc/modprobe.d/dist.conf
/etc/modprobe.d/local.conf
/sbin/depmod
/sbin/insmod
/sbin/insmod.static
/sbin/lsmod
/sbin/modinfo
/sbin/modprobe
/sbin/rmmod
/sbin/weak-modules

 

 

其實跟程序的動態庫的原理和作用一樣,內核在用到的時候調用相應的內核模塊,內核模塊化

Linux驅動程序有兩種加載方式:一種是靜態地編譯進內核,內核啟動時自動加載,另一種是編寫為內核/驅動模塊,使用insmod命令將模塊動態加載到正在運行的內核,

不需要時用rmmod命令將模塊卸載。

LVS的IPVS模塊也是采用動態加載的方式

 

命令有六個:modprobe(Linux 2.6新增)、depmod、insmod  、lsmod、rmmod、modinfo

mod:module內核模塊

modprobe、insmod和depmod包含在一個名為modutils或mod-utils的工具包


modprobe

簡介
Linux命令:modprobe 。
功能說明:自動處理可載入模塊。
語 法:modprobe [-acdlrtvV][--help][模塊文件][符號名稱 = 符號值]。
補充說明:modprobe可載入指定的個別模塊,或是載入一組相依的模塊。modprobe會根據depmod所產生的相依關系,決定要載入哪些模塊。若在載入過程中發生錯誤,在modprobe會卸載整組的模塊。
內容
1、modprobe 命令是根據depmod -a的輸出/lib/modules/kernel version/modules.dep來加載全部的所需要模塊。
2、刪除模塊的命令是:modprobe -r filename。
3、系統啟動后,正常工作的模塊都在/proc/modules文件中列出使用lsmod命令也可顯示相同內容
4、在內核中有一個“Automatic kernel module loading"功能被編譯到了內核中。當用戶嘗試打開某類型的文件時,內核會根據需要嘗試加載相應的模塊。

/etc/modules.conf或 /etc/modprobe.conf文件是一個自動處理內核模塊的控制文件。

cat /lib/modules/version/modules.dep
cat: /lib/modules/version/modules.dep: No such file or directory
參數
-a或--all  載入全部的模塊。
-c或--show-conf  顯示所有模塊的設置信息。
-d或--debug  使用排錯模式。
-l或--list  顯示可用的模塊。
-r或--remove  模塊閑置不用時,即自動卸載模塊。
-t或--type  指定模塊類型。
-v或--verbose  執行時顯示詳細的信息。
-V或--version  顯示版本信息。
-help  顯示幫助。
操作
insmod 與 modprobe 都是載入 kernel module,不過一般差別在於 modprobe 能夠處理 module 載入的依賴問題。
比如你要載入 a module,但是 a module 要求系統先載入 b module 時,直接用 insmod 載入通常都會出現錯誤訊息,不過 modprobe 倒是能夠知道先載入 b module 后才載入 a module,如此相依性就會滿足。
不過 modprobe 並不是大神,不會厲害到知道 module 之間的相依性為何,該程序是讀取 /lib/modules/2.6.xx/modules.dep 文件得知依賴的。而該檔案是透過 depmod 程式所建立。

modprobe   -r igb    刪除igb模塊

使用模塊選項有兩個方法

第一個  加載igb的時候到igb.conf文件里找

echo "options igb max_vfs=7"  >>/etc/modprobe.d/igb.conf

modprobe igb

第二個  在命令里指定選項

modprobe igb  max_vfs=7

深度實踐KVM P49

 

depmod
模塊依賴程序

/sbin/depmod -a 

遍歷文件/lib/modules/內核版本/modules.dep (模塊依賴關系 該文件由depmod -a 命令建立的,保存了內核模塊的依賴關系,使得在裝入指定模塊前裝入那些事先需要裝入的模塊

 

 

insmod  
載入模塊

insmod  first_time.ko

 

 


lsmod
列出內核已加載的模塊

lsmod
Module                   Size        Used by
kvm                     337772   1  kvm_intel   kvm內核模塊
ipmi_si                  44687    1 acpi_ipmi
ipmi_msghandler     38826   2 acpi_ipmi,ipmi_si

 

 

rmmod
卸載模塊

rmmod first_time.ko

 


modinfo
查看模塊信息

modinfo  first_time.ko

 




[root@localhost huage]# lsmod               //列出當前系統已加載的模塊
Module                  Size  Used by
usb_storage            39114  0
cdrom                  34035  1 sr_mod
。。。。。。
。。。。。。
。。。。。。
 

[root@localhost huage]# lsmod |grep usb-storage

 


[root@localhost huage]# modprobe -r usb_storage     //刪除模塊;刪除模塊時需要加‘-r’參數
[root@localhost huage]# lsmod |grep usb

 


[root@localhost huage]# modprobe usb-storage          //添加模塊;添加模塊時,直接加模塊名就可以了
[root@localhost huage]# lsmod |grep usb
usb_storage            39114  0


//使用modprobe命令添加或刪除模塊時,‘_’和‘-’沒有區別,即下划線和中划線沒有區別


不要跟ldd命令搞混了,ldd是顯示程序所用的動態庫 load dynamic library

 

Linux就這個范兒 第15章 七種武器

http://www.cnblogs.com/MYSQLZOUQI/p/5335649.html
modprobe、insmod和depmod包含在一個名為modutils或mod-utils的工具包內。這些工具幫助你自動或手動地裝載模塊。有的時候你想人為控制一個模塊什么時候被裝入,例如當裝入某個模塊會導致問題時,

你不想讓某個模塊被kernel自動裝入,你可以把這個模塊列到黑名單中不讓它跨進內核的大門


在Linux 2.6之前,驅動模塊是智能型的,它的加載是通過掃描總線尋找它識別的設備ID號來實現。
Linux2.6把這部分功能做了梳理,化復雜為簡單,硬件檢測外部化。
利用外部程序以及模塊加載器來判斷模塊支持哪些設備。
除了insmod與rmmod外,Linux 2.6加載命令還有modprobe。modprobe同時會加載當前模塊所依賴的其他模塊。
在Red Hat Linux中,還可以使用PnP設備的檢測程序kudzu來檢測和配置硬件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM