LPI Linux 認證/核心執行時管理和查詢
權重:4
描述
考生應該能夠管理和/或查詢核心和核心可載入模組。
- 關鍵知識領域
- 使用命令列工具獲取有關當前執行的核心和核心模組的資訊。
- 手動載入和解除安裝核心模組。
- 確定何時可以解除安裝模組。
- 確定模組接受哪些引數。
- 配置系統以使用除檔名以外的其他名稱載入模組。
- 以下是用到的檔案、術語和工具的部分列表
- /lib/modules/kernel-version/modules.dep
- /etc/modules.conf
- /etc/modprobe.conf
- depmod
- insmod
- lsmod
- rmmod
- modinfo
- modprobe
- uname
要顯示當前執行的核心版本,請使用uname命令
uname -r uname -v
lsmod 命令可用於顯示當前已載入的核心模組
$ lsmod Module Size Used by nls_iso8859_1 3261 0 nls_cp437 4931 0 vfat 9201 0 fat 48240 1 vfat usb_storage 40172 0 .............
Used by 列顯示有多少模組依賴於給定的模組。在上面的示例中,vfat 依賴於 fat,必須先載入 fat。
要載入和解除安裝核心模組,您需要超級使用者許可權。
insmod - 此命令可用於載入核心模組(但是建議使用modprobe)。它會由工具自動定位,但此命令在低階執行,不會解析模組依賴關係。下面的命令失敗,因為vfat 模組需要先載入fat
# insmod /lib/modules/2.6.35-22-generic/kernel/fs/fat/vfat.ko insmod: error inserting '/lib/modules/2.6.35-22-generic/kernel/fs/fat/vfat.ko': -1 Unknown symbol in module
當我們先載入fat 模組時,一切正常
# insmod /lib/modules/2.6.35-22-generic/kernel/fs/fat/fat.ko # insmod /lib/modules/2.6.35-22-generic/kernel/fs/fat/vfat.ko
rmmod - 此命令可用於從正在執行的核心中刪除模組。與insmod 一樣,它不會解析依賴關係
# rmmod fat ERROR: Module fat is in use by vfat # rmmod vfat # rmmod fat
modprobe - 此命令允許載入和解除安裝模組,並使用 System.map 檔案(即 /lib/modules/2.6.31-21-generic/modules.dep)自動解析依賴關係。要載入模組,請使用帶有模組名稱作為引數的命令。它將確保所有必需的模組都已載入
# modprobe vfat
要使用modprobe 命令刪除模組,請使用 -r 開關
# modprobe -r vfat
要列出當前正在執行的核心的所有可用模組,請使用 -l 開關
# modprobe -l .................. kernel/drivers/net/ne2k-pci.ko kernel/drivers/net/8390.ko kernel/drivers/net/pcnet32.ko kernel/drivers/net/e100.ko kernel/drivers/net/tlan.ko kernel/drivers/net/epic100.ko kernel/drivers/net/smsc9420.ko kernel/drivers/net/sis190.ko kernel/drivers/net/sis900.ko ..................
要確定是否可以安全地刪除模組,請使用上面描述的lsmod 命令。您必須確保最後一列中的數字為 0(因此沒有模組使用您要刪除的模組)
modinfo - 可用於顯示有關模組的資訊。常見的開關是-a 用於顯示作者資訊,-d 用於顯示描述,-p 用於顯示模組接受的選項(引數)
$ modinfo bonding filename: /lib/modules/2.6.35-22-generic/kernel/drivers/net/bonding/bonding.ko alias: rtnl-link-bond author: Thomas Davis, tadavis@lbl.gov and many others description: Ethernet Channel Bonding Driver, v3.6.0 version: 3.6.0 license: GPL srcversion: EC8FCCE4D57BF7B3823F70F depends: vermagic: 2.6.35-22-generic SMP mod_unload modversions 686 parm: max_bonds:Max number of bonded devices (int) parm: num_grat_arp:Number of gratuitous ARP packets to send on failover event (int) parm: num_unsol_na:Number of unsolicited IPv6 Neighbor Advertisements packets to send on failover event (int) parm: miimon:Link check interval in milliseconds (int) .....................
要建立一個由modprobe 命令使用的別名,需要將其新增到其配置檔案之一中。可以是 /etc/modprobe.conf 或 /etc/modprobe.d/ 目錄中的檔案。下面的示例條目將eth0 定義為 bnx2 網絡卡驅動程式的別名,而scsi_hostadapter 將是 mptbase 的別名。新增條目後,可以使用modprobe eth0 載入 bnx2 網絡卡模組。
alias eth0 bnx2 alias scsi_hostadapter mptbase