8-2 管理核心模組
內容:
8-2-1 查閱核心版本 - uname
每一個 Linux distribution 都會將它所發行的核心編號,核心版本表示方法如下:
Major.Minor.Relase[-Custom] |
主要包含四個項目,說明如下:
-
Major:主要版本號碼。
-
Minor:次要版本號碼。
-
Release:第幾次修正發行號碼。
-
Custom:發行廠商自行編號。
基本上,版本更新的次序是,經過幾次修正(Release)之後,再增加次要版本(Minor);若再經過幾次次要版本更新,或系統有大變動時,才會增加主要版本(Major)。以 2.6.5-1.358 版本為例,則主要版本為 2(Major = 2)、次要版本為 6(Minor = 6)、第五次修正發行(Release = 5)、以及廠商編號為 1.358。
我們可利用 uname 命令查閱核心版本,命令格式如下:
常用參數如下:
-
-a :顯示核心所有訊息,如 Linux linux-1 2.6.5-1.358 #1 Sat May 8 09:04:50 EDT 2004 i686 i686 i386 GNU/Lx。
-
-r :僅顯示核心的版本號碼,如 2.6.5-1.358。
-
-s :僅顯示核心名稱,如 Linux。
-
-n :僅顯示主機名稱,如 linux-1。
-
-v :顯示核心編輯的時間,如 #1 Sat May 8 09:04:50 EDT 2004。
-
-p :顯示核心的 CPU 版本,如 i686。
-
-i :顯示主機平台名稱,如i386。
-
-o :顯示作業系統名稱,如GNU/Linux。
操作範例如下:
# uname
Linux
# uname -a
Linux tsnien.idv.tw 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# uname -r
3.10.0-514.el7.x86_64 |
8-2-2 核心模組 - /lib/modules
當系統被建立之後,它的核心模組將被儲存於 /lib/modules/$(unmae –r)/kernel/ 目錄內,其中 $(uname –r) 為目前核心的版本號碼,操作範例如下:
# uname -r
3.10.0-514.el7.x86_64
# ls /lib/modules/`uname -r`/kernel
arch crypto drivers fs kernel lib mm net sound virt |
第一個命令(# uname -r)查閱目前所安裝的核心序號,再觀察該序號的核心模組內容如何(/lib/modules/2.6.5-1.358/kernel/)。系統會將屬性相同的模組歸納於同一目錄下,本書範例有下列目錄:
我們可以觀察看看 crypto 目錄下有哪些程式模組,只是這些模組都已編譯成可執行檔,執行當中可能會使用到 lib 目錄下的庫存函數,範例如下:
# ls /lib/modules/`uname -r`/kernel/crypto
ansi_cprng.ko crypto_null.ko rmd160.ko
anubis.ko crypto_user.ko rmd256.ko
arc4.ko cts.ko rmd320.ko
async_tx deflate.ko salsa20_generic.ko
authencesn.ko des_generic.ko seed.ko
…. |
8-2-3 查閱模組資訊 - modinfo
我們可利用 modinfo 命令觀察某一模組的訊息為何,其命令格式如下:
modinfo [ -a -d -l -p] [-F field] [module ...] |
操作範例如下:
# modinfo /lib/modules/`uname -r`/kernel/crypto/des_generic.ko
filename: /lib/modules/3.10.0-514.el7.x86_64/kernel/crypto/des_generic.ko
alias: crypto-des3_ede-generic
alias: des3_ede-generic
alias: crypto-des3_ede
alias: des3_ede
alias: crypto-des-generic
filename: /lib/modules/2.6.11-1.1369_FC4/kernel/crypto/des.ko
alias: des3_ede
license: GPL
description: DES & Triple DES EDE Cipher Algorithms
vermagic: 2.6.11-1.1369_FC4 686 REGPARM 4KSTACKS gcc-4.0
depends:
srcversion: EF1EE5113D8719DA384B3EE
…. |
由上述範例可以看出,des.ko 的版權擁有者(GPL),以及相關版本訊息。
8-2-4 查閱已載入模組 - lsmod
並非在 kernel 目錄下模組都已經載入系統,我們可利用 lsmod 命令查閱,目前到底有哪些模組已載入核心內,操作範例如下:
# lsmod
Module Size Used by
xt_CHECKSUM 12549 1
iptable_mangle 12695 1
ipt_MASQUERADE 12678 3
nf_nat_masquerade_ipv4 13412 1 ipt_MASQUERADE
iptable_nat 12875 1
nf_nat_ipv4 14115 1 iptable_nat
nf_nat 26147 2 nf_nat_ipv4,nf_nat_masquerade_ipv4
…. |
上述範例中,每一行表示一只已載入的模組,其中包含三個欄位,說明如下:
8-2-5 載入模組 – insmod
如果需要再載入其他模組進入核心的話,也可利用 insmod(/sbin/insmod)命令來達成,若是自行載入模組,則必須注意到某些模組之間的關聯性,也就是說,除了載入所需的模組之外,也必須載入它執行時所需的其他模組。操作範例如下:
# lsmod | grep des_generic【查閱 des_generic 模組是否已載入】
[root@tsnien ~]# insmod /lib/modules/`uname -r`/kernel/crypto/des_generic.ko
【載入 des_generic 模組】
[root@tsnien ~]# lsmod |grep des_generic【查閱 des_generic 模組是否已載入】
des_generic 21379 0 【 des_generic 模組已成功載入】 |
上述範例,我們首先查閱 des_generic 模組是否已載入,發現沒有載入,則再利用 insmod 載入。
8-2-6 移除模組 – rmmod
除了可自行載入模組之外,也可利用 rmmod(/sbin/rmmod)命令移除已載入的模組。如果模組有被其他模組呼叫使用時,系統將會拒絕移除,而必須先將原模組移除,才會允許移除被呼叫的模組。操作範例如下:
# lsmod |grep des_generic 【查閱 des_generic 模組已載入】
des_generic 21379 0 【已載入】
# rmmod des_generic 【移除 des_generic 模組】
# lsmod |grep des_generic 【查閱 des_generic 模組是否已載入】
|
值得注意的是,如利用直接輸入 insmod/rmmod 命令載入或移除模組,系統重新開機之後,這些設定將不再存在,而必須重新輸入命令。如希望永久保存著,簡單的方法是將這些設定編寫到 /etc/rc.local 檔案內,往後每次開機,系統都將會自動執行該檔案內的命令。
|