跳轉到內容

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


華夏公益教科書