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

第八章 系統更新與擴充

 

8-1 系統核心簡介

內容:

8-1-1 何謂核心?

系統核心』(System kernel)是整部系統運作的中心,任何處理動作的運行,都必須透過它的指揮,諸如作業系統的週邊管理、記憶體管理、行程排序管理……等等,都必須分別將它實現成可執行的程式,並將其組織成為一套完善的『系統程式』(System Program,並常駐於主記憶體內,使其成為一部系統的『核心』。另一方面,也必須將一些較常用的硬體驅動程式(如音效卡、網路卡、USB 介面卡等等)嵌入於核心內,以備隨時被呼叫使用,而且『核心』程式與系統的屬性較有關聯。

Linux 可貴的地方,除了是免費的自由軟體之外,它還具有一套可組態規劃的核心,亦即同一套 Linux 作業系統可隨著系統需求而將它組態成網路伺服器、資料處理系統、多媒體工作站、路由器或網路交換器等等。當它被建構成不同系統環境時,所需的核心程式內容當然會有所不同。譬如,建構成一只路由器,核心程式的重點可能是網路驅動程式與路徑選擇演算法,至於虛擬記憶體或其他週邊設備(如音效卡)的驅動程式可能較不重要。

核心程式可區分為下列三大部分:

  • 核心影像檔(Kernel image file):已編譯完成的核心執行程式,大多與系統啟動較有關聯;當系統啟動時,『啟動載入器』(Boot Loader會將此影像檔存入記憶體內,並立即啟動執行。

  • 核心模組(Kernel module):系統會將某些特殊功能的程式建立成一套模組;組態系統時,再選擇哪些模組要參與編譯成為核心的一部分。核心模組程式大多儲存於 /lib/module 目錄下。

  • initrd 影像檔:『初始化記憶體磁碟』(Initial RAM Disk, initrd是將記憶體空間做為磁碟檔案系統。我們將某些核心模組儲存於 initrd 目錄上,即是 initrd 影像檔。

核心影像檔的內容大多與系統啟動較有關聯,至於建構系統的功能也大多由各個核心模組所構成,因此一般系統管理者甚少去變動或修正核心影像檔的內容,除非是直接升級核心版本。管理者想要組態一部較合適的核心,多半藉由增減或變更核心模組,譬如,建構一套網路伺服器,可能需要嵌入密碼系統(Crypto)較為合適。從另一個角度來看,一部電腦可能是許多不同硬體套件拼裝而成,至於需要拼裝哪些硬體週邊,會隨著電腦的應用環境而有所不同,譬如,一部資料處理主機與路由器兩者之間所拼裝的設備究竟有很大的差異。再說,每一只硬體套件都需要一套驅動程式,並由該週邊製造廠商所提供,如果所安裝的硬體套件需要隨時操作的話(譬如,SCSI 硬碟控制或加速繪圖卡等等),我們也希望它的驅動程式能嵌入核心,並隨時保存於主記憶體內。最簡單的做法,就是在啟動時將所需硬體的驅動程式,以核心模組方式,儲存於主記憶體內以備隨時被呼叫使用;又為了方便管理,將各種驅動程式以 initrd 方式儲存(/proc/modules/ 目錄下),管理者也可隨時觀察到底有哪些驅動程式被嵌入於核心內,我們則統稱這些核心程式為『initrd 影像檔』。

8-1-2 更新系統核心

當有新技術被發展出來,或更新其他硬體設備時,我們都希望作業系統的功能也能隨之提升,此時便有更新系統核心的必要。基本上,更新核心有下列幾種途徑可循:

  • 修改核心原始程式,再重新編譯而成:此方法最為透徹,但並非任何人都可以達成此目的。欲編寫核心程式必須具有相當的軟硬體功力才行,除非自行利用 Linux 系統去建置其他電腦設備,譬如製造路由器、交換器或其他網路設備(已超過本書範圍,不另介紹);否則大多僅由發行者網站下載最新核心版本來更新而已(或稱核心升級,本書將介紹)。

  • 嵌入或移除核心模組:將已編譯完成的核心模組嵌入系統核心,或移除掉不需要的核心模組。

  • 變更核心參數:此方法為最簡單的更新核心方法,某些核心程式是依照參數來運作,如果改變了參數的內容,某些參數也會影響到整個核心的運作。

  • 核心升級:更新版本核心程式,雖然看起來很直接,但有些舊有的套件可能會因版本不合而無法執行。

以下分別介紹之。

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: