歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux kernel中module相關命令集

Linux kernel中module相關命令集

日期:2017/2/28 13:50:02   编辑:Linux教程

Linux的kernel能夠以動態的方式加載,卸載模塊,以達到減小內核的大小,復雜度,以及增加內核的靈活性。目前,我知道的有lsmod,insmod,rmmod,modprobe四條命令,現在分別總結記錄這四條命令,命令後的模塊名稱均不加後綴(如.ko或.o)。

1:lsmod 即list modules的簡稱
功能說明:顯示已載入系統的所有模塊。
語法:lsmod 模塊名稱
說明:執行lsmod指令,會列出所有已載入系統的模塊。Linux操作系統的核心具有模塊化的特性,因此在編譯核心時,無需把全部的功能都放入核心。你可以將這些功能編譯成一個個單獨的模塊,待需要時再分別載入

一般顯示的格式如下:

nfs 170109 0 - Live 0x129b0000
lockd 51593 1 nfs, Live 0x128b0000
nls_utf8 1729 0 - Live 0x12830000
vfat 12097 0 - Live 0x12823000
fat 38881 1 vfat, Live 0x1287b000
第一列表示:模塊的名字

第二列表示:用到的內存大小,單位為byte

第三列表示:列出當前引用了該模塊的實例數,0表示這是沒有實例引用該模塊

第四列表示:列出它所依賴的模塊如果有的話

第五列表示:模塊加載的狀態,取值只能是Live,Loading或Unloading中的一個

第六列表示:加載的模塊在內核中內存地址偏移量,這個信息可用於調試的目的

2:insmod 即insert module的簡稱
功能說明:載入模塊。
語法:insmod [-fkmpsvxX][-o <模塊名稱>][模塊文件][符號名稱 = 符號值]
說明:Linux有許多功能是通過模塊的方式,在需要時才載入kernel。如此可使kernel較為精簡,進而提高效率,以及保有較大的彈性。這類可載入的模塊,通常是設備驅動程序。
參數-f  不檢查目前kernel版本與模塊編譯時的kernel版本是否一致,強制將模塊載入。
-k  將模塊設置為自動卸除。
-m  輸出模塊的載入信息。
-o<模塊名稱>  指定模塊的名稱,可使用模塊文件的文件名。
-p  測試模塊是否能正確地載入kernel。
-s  將所有信息記錄在系統記錄文件中。
-v  執行時顯示詳細的信息。
-x  不要匯出模塊的外部符號。
-X  匯出模塊所有的外部符號,此為預設值。

3:rmmod 即remove module的簡稱
功能說明:刪除模塊。
語法:rmmod [-as][模塊名稱...]
說明:執行rmmod指令,可刪除不需要的模塊。Linux操作系統的核心具有模塊化的特性,因此在編譯核心時,不需把全部的功能都放入核心。你可以將這些功能編譯成一個個單獨的模塊,待有需要時再分別載入它們。
參數:
-a  刪除所有目前不需要的模塊。
-s  把信息輸出至syslog常駐服務,而非終端機界面。

4:modprobe 即module probe的簡稱

功能說明:自動處理可載入模塊。
語法:modprobe [-acdlrtvV][--help][模塊文件][符號名稱 = 符號值]。
說明:modprobe可載入指定的個別模塊,或是載入一組相依的模塊。modprobe會根據depmod所產生的相依關系,決定要載入哪些模塊。若在載入過程中發生錯誤,在modprobe會卸載整組的模塊。

參數
-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 程式所建立。(PS:今天遇到想卸載一個module,用rmmod總是失敗,後來用modprobe -r就成功卸載了,不知道是不是因為依耐性的問題)。

Copyright © Linux教程網 All Rights Reserved