Linux 伺服器系統管理第八章 系統更新與擴充  上一頁    下一頁

8-2 管理核心模組

內容:

  • 8-2-1 查閱核心版本 - uname

  • 8-2-2 核心模組 - /lib/modules

  • 8-2-3 查閱模組資訊 - modinfo

  • 8-2-4 查閱已載入模組 - lsmod

  • 8-2-5 載入模組 - insmod

  • 8-2-6 移除模組 - rmmod

8-2-1 查閱核心版本 - uname

每一個 Linux distribution 都會將它所發行的核心編號,核心版本表示方法如下:

Major.Minor.Relase[-Custom]

主要包含四個項目,說明如下:

  • Major:主要版本號碼。

  • Minor:次要版本號碼。

  • Release:第幾次修正發行號碼。

  • Custom:發行廠商自行編號。

基本上,版本更新的次序是,經過幾次修正(Release)之後,再增加次要版本(Minor);若再經過幾次次要版本更新,或系統有大變動時,才會增加主要版本(Major)。以 2.6.5-1.358 版本為例,則主要版本為 2Major = 2)、次要版本為 6Minor = 6)、第五次修正發行(Release = 5)、以及廠商編號為 1.358

我們可利用 uname 命令查閱核心版本,命令格式如下:

# uname [OPTION]

常用參數如下:

  • -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

操作範例如下:

[root@tsnien ~]# uname

Linux

[root@tsnien ~]# 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

[root@tsnien ~]# uname  -r

3.10.0-514.el7.x86_64

8-2-2 核心模組 - /lib/modules

當系統被建立之後,它的核心模組將被儲存於 /lib/modules/$(unmae –r)/kernel/ 目錄內,其中 $(uname –r) 為目前核心的版本號碼,操作範例如下:

[root@tsnien ~]# uname -r

3.10.0-514.el7.x86_64

[root@tsnien ~]# 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/)。系統會將屬性相同的模組歸納於同一目錄下,本書範例有下列目錄:

  • arch 目錄:儲存與磁碟系統相關的程式模組。

  • crypto 目錄:儲存密碼系統相關的程式模組。

  • drivers 目錄:儲存硬體設備的驅動程式模組。

  • fs 目錄:儲存與檔案系統相關的程式模組。

  • lib 目錄:儲存安裝各個模組所需的庫存函數。

  • net 目錄:儲存與網路服務較有關聯的程式模組。

  • sound 目錄:儲存與音效較有關聯的程式模組。

我們可以觀察看看 crypto 目錄下有哪些程式模組,只是這些模組都已編譯成可執行檔,執行當中可能會使用到 lib 目錄下的庫存函數,範例如下:

[root@tsnien ~]# 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 ...]

操作範例如下:

[root@tsnien ~]# 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 命令查閱,目前到底有哪些模組已載入核心內,操作範例如下:

[root@tsnien ~]# 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

….

上述範例中,每一行表示一只已載入的模組,其中包含三個欄位,說明如下:

  • Module 欄位:顯示模組名稱。

  • Size 欄位:該模組載入記憶體之後,所佔用空間的大小(Byte 單位)。

  • Used by 欄位:有哪些模組正在使用該模組。

8-2-5 載入模組 – insmod

如果需要再載入其他模組進入核心的話,也可利用 insmod/sbin/insmod)命令來達成,若是自行載入模組,則必須注意到某些模組之間的關聯性,也就是說,除了載入所需的模組之外,也必須載入它執行時所需的其他模組。操作範例如下:

[root@tsnien ~]# 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)命令移除已載入的模組。如果模組有被其他模組呼叫使用時,系統將會拒絕移除,而必須先將原模組移除,才會允許移除被呼叫的模組。操作範例如下:

[root@tsnien ~]# lsmod  |grep des_generic 【查閱 des_generic 模組已載入】

des_generic            21379  0      【已載入】

[root@tsnien ~]# rmmod des_generic      【移除 des_generic 模組】

[root@tsnien ~]# lsmod |grep des_generic  【查閱 des_generic 模組是否已載入】

值得注意的是,如利用直接輸入 insmod/rmmod 命令載入或移除模組,系統重新開機之後,這些設定將不再存在,而必須重新輸入命令。如希望永久保存著,簡單的方法是將這些設定編寫到 /etc/rc.local 檔案內,往後每次開機,系統都將會自動執行該檔案內的命令。

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: