Linux kernel中module相關命令集

2021-08-27 20:45:54 字數 2477 閱讀 4269

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就成功解除安裝了,不知道是不是因為依耐性的問題)。

linux kernel中timer的使用

在kernel中如果想週期性的幹些什麼事情,或者某個特定時間幹些什麼事情,可以使用timer。例如像周期性地dump某段buffer的資料等等。先來看看使用方法。先定義乙個struct timer list的物件。eg struct timer list dump t 這個物件相當於乙個鬧鐘,其中包...

Apache中利用mod的方法

自從上次在部落格中推薦 you are my everything 以後,伺服器的流量突然多了起來,有幾次甚至導致了vps的當機。後來經過分析 盜鏈這個 的網頁包括諸如qq空間 校內網空間 更有甚者還放到了taobao小店 個人部落格也有不少,全部作為了背景 並且導致各種爬蟲瘋狂抓取這個檔案。找到了...

Linux Kernel啟動中引數的處理

1.在bootloader中會以taglist的形式儲存板子mem cmdline cmdline中也可以定義mem資訊 等相關資訊,cmdline通過getenv從環境變數取得 該環境變數是之前使用setenv以字串形式配置 addr和size。跳轉到kernel前,r0 0,r1 proc ty...