0%
Linux Kernel Modules
- 系統啟動後,正常工作的模組都在/proc/modules檔案中列出。使用lsmod命令也可顯示相同內容。
- Linux 會將所有核心模組放在
/lib/modules/uname -r/kernel/drivers/
目錄下
lsmod
- 列出核心已載入模組的狀態
- lsmod 顯示當前載入的所有模組,相當於cat /proc/modules
- output
- 模組的大小(size);
- 此模組是否被其他模組所使用 (Used by)。
e.g.
1 2 3
| Module(模組名) Size(模組大小) Used by(被…使用) eg. ne2k_pci 8928 0 8390 9472 1 ne2k_pci
|
modinfo
參數:
- -V –version 版本
- -F –field 僅在一行上顯示field值,這對於指令碼較為有用。常用的field有:author, description, licence, param, depends, alias, filename。
- -0 –NULL 使用’/0′字元分隔field值,而不是一個新行。對指令碼比較有用。
- -a -d -l -p -n 這些分別是author, description, license, param ,filename的簡短形式。
e.g.
1 2 3 4 5 6 7 8 9 10 11 12
| $ modinfo sg filename: /lib/modules/2.6.9-42.ELsmp/kernel/drivers/scsi/sg.ko author: Douglas Gilbert description: SCSI generic (sg) driver license: GPL version: 3.5.31 B0B0CB1BB59F0669A1F0D6B parm: def_reserved_size:size of buffer reserved for each fd parm: allow_dio:allow direct I/O (default: 0 (disallow)) alias: char-major-21-* vermagic: 2.6.9-42.ELsmp SMP 686 REGPARM 4KSTACKS gcc-3.4 depends: scsi_mod ...
|
insmod
insmod [filename] [modue options …]
- 向Linux核心中插入一個模組
- insmod 則完全由使用者自行載入一個完整檔名的模組, 並不會主動的分析模組相依性啊
modprobe
- 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 程式所建立。
- /lib/modules/
uname -r
/modules.dep參 數:
- -a或–all 載入全部的模組。
- -c或–show-conf 顯示所有模組的設定資訊。
- -d或–debug 使用排錯模式。
- -l或–list 顯示可用的模組。
- -r或–remove 模組閒置不用時,即自動解除安裝模組。
- -t或–type 指定模組型別。
- -v或–verbose 執行時顯示詳細的資訊。
- -V或–version 顯示版本資訊。
- -help 顯示幫助。
e.g.
- 刪除模組的命令是
- 列出核心中所有已經或者未掛載的所有模組:
- 掛載 vfat 模組
- modprobe vfat
- 這裡,使用格式 “modprobe 模組名” 來掛載一個模組。
- 掛載之後,用lsmod可以檢視已經掛載的模組。
- 模組名是不能帶有後綴的,我們通過modprobe -l 所看到的模組,都是帶有.ko 或.o字尾。
- 查看modules的配置文件:
- modprobe 另一個用處是顯示核心模組的相依性
modprobe –show-depends ip_tables
rmmod
參數:
- -v –verbose 顯示程式正在做些什麼,一般只顯示執行時的錯誤資訊。
- -f –force 該選項是非常危險:除非編譯核心時,CONFIG_MODULE_FORCE_UNLOAD被設定該命令才有效果,否則沒效果。用該選項可以刪除正在被使用的模組,設計為不能刪除的模組,或者標記為unsafe的模組。
- -w –wait 通常,rmmod拒絕刪除正在被使用的模組。使用該選項後,指定的模組會被孤立起來,直到不被使用。
- -s –syslog 將錯誤資訊寫入syslog,而不是標準錯誤(stderr)。
- -V –version 版本資訊
e.g.
depmod
- depmod命令可产生模块依赖的映射文件,在构建嵌入式系统时,需要由这个命令来生成相应的文件,由modprobe使用
參數
- -a或–all:分析所有可用的模块;
- -d或debug:执行排错模式;
- -e:输出无法参照的符号;
- -i:不检查符号表的版本;
- -m<文件>或system-map<文件>:使用指定的符号表文件;
- -s或–system-log:在系统记录中记录错误;
- -v或–verbose:执行时显示详细的信息;
- -V或–version:显示版本信息;
- –help:显示帮助。
e.g.