2009年1月13日 星期二

核心模組的觀察: lsmod, modinfo

那你到底曉不曉得目前核心載入了多少的模組呢?粉簡單啦!利用 lsmod 即可!
[root@linux ~]# lsmod
Module Size Used by
loop 18121 0
ipt_state 1857 2
ipt_MASQUERADE 3265 2
iptable_filter 2881 1
ip_nat_irc 2753 0
ip_conntrack_irc 72401 1 ip_nat_irc
ip_nat_ftp 3393 0
ip_conntrack_ftp 73297 1 ip_nat_ftp
....中間省略.....
8139too 30017 0
mii 5441 1 8139too
floppy 65141 0
ext3 132681 4
jbd 86233 1 ext3
使用 lsmod 之後,系統會顯示出目前已經存在於核心當中的模組,顯示的內容包括有:
  • 模組名稱(Module);
  • 模組的大小(size);
  • 此模組是否被其他模組所使用 (Used by)。
舉例來說,上面的表格當中,我的 ip_conntrack_ftp 模組其實還被 ip_nat_ftp 模組所使用呢! 也就是說,這兩個模組之間應該是有相關性的!所以囉,如果我載入 ip_nat_ftp 勢必還得要載入 ip_conntrack_ftp 才行~而這個相依性就是被紀錄在上個小節提到的 modules.dep 檔案內囉! ^_^

那麼除了顯示出目前的模組外,我還可以查閱每個模組的資訊嗎?當然可以啦!就用 modinfo 即可:
[root@linux ~]# modinfo [-adln] [module_name|filename]
參數:
-a :僅列出作者名稱;
-d :僅列出該 modules 的說明 (description);
-l :僅列出授權 (license);
-n :僅列出該模組的詳細路徑。
範例:


範例一:由上個表格當中,請列出 8139too 這個模組的相關資訊:
[root@linux ~]# modinfo 8139too
filename: /lib/modules/2.6.12-1.1398_FC4/kernel/drivers/net/8139too.ko
author: Jeff Garzik
description: RealTek RTL-8139 Fast Ethernet driver
license: GPL
version: 0.9.27
parmtype: multicast_filter_limit:int
parmtype: media:array of int
parmtype: full_duplex:array of int
parmtype: debug:int
parm: debug:8139too bitmapped message enable number
parm: media:8139too: Bits 4+9: force full duplex, bit 5: 100Mbps
parm: full_duplex:8139too: Force full duplex for board(s) (1)
vermagic: 2.6.12-1.1398_FC4 686 REGPARM 4KSTACKS gcc-4.0
depends: mii
alias: pci:v000010ECd00008139sv*sd*bc*sc*i*

範例二:我有一個模組名稱為 a.ko ,請問該模組的資訊為?
[root@linux ~]# modinfo a.ko
.......省略......
事實上,這個 modinfo 除了可以『查閱在核心內的模組』之外,還可以檢查『某個模組檔案』, 因此,如果你想要知道某個檔案代表的意義為何,利用 modinfo 加上完整檔名吧! 看看就曉得是啥玩意兒囉! ^_^