You are on page 1of 26

第4章

自動安裝與升級

在介紹完手動安裝與升級 Red Hat Enterprise Linux 後,接著,讓我們來研究如何進行


自動安裝 Red Hat Enterprise Linux 吧!!

4.1 Kickstart 的介紹


如果您跟我一樣,需要常常安裝 Red Hat Enterprise Linux,一次又一次重複著同樣的
步驟。我敢保證,您一定會很快就失去對 Red Hat Enterprise Linux 的熱情。所以,Red
Hat 提供了一個安裝與升級的方法,可以讓您只需一兩個步驟,甚至完全不需額外輸
入任何資訊,就可以安裝與升級 Red Hat Enterprise Linux。這個方法,就是 Kickstart。

4.1.1 Kickstart 運作原理


Kickstart 運作的原理很簡單。Anaconda 允許您事先把執行安裝程式的選項,儲存於一
個文字檔中。這個檔案,我們稱為 Kickstart 設定檔 (Kickstart Configure File),或者稱
為自動答應檔 (Answer File)。

1
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

此後,您可以在執行 Red Hat Enterprise Linux 安裝程式 (也就是 Anaconda) 時,指定這


個設定檔的位置。Anaconda 便會以指定的設定檔之內容,作為安裝程式組態參數的依
據,如此一來,Anaconda 便可以全程靜悄悄自動的安裝或升級 Red Hat Enterprise Linux
了。

4.1.2 Kickstart 應用範圍


至於 Kickstart 可以運用在哪些地方?? 這個問題需依賴著您的創造力與想像力。我隨手
捻來幾個,提供您參考:

• 大量安裝:如果您有數十台甚至更多的電腦都需要安裝 Red Hat Enterprise Linux,


不管每一台電腦需要的內容是否一樣,此時,您就可以建立 Kickstart 設定檔,利用
Kickstart 安裝的技術,大量的安裝這些電腦。

• 自動安裝:如果您的客戶要求您在他們的電腦上安裝 Red Hat Enterprise Linux,您


可以蒞臨客戶電腦前,親自進行手動安裝;或者請客戶把電腦送到您那兒,待安裝
好後再送回去。這兩種方法都有點曠日費時,效率與效益都不是最佳的方案。

如果您懂得運用 Kickstart 的技術,您只需在公司裡建立 Kickstart 設定檔與開機媒


體,然後透過電子郵件寄給您的客戶,指導他自行製作一份開機媒體。利用 Kickstart
安裝的技術,便可以依照您定義的內容自動的進行安裝,此時,您可以省去舟車勞
頓的時間,加快客戶服務的速度。

• 災後復原:萬一您的電腦陣亡於慘烈的故障狀況下,您必須在急短的時間內,完成
災後復原的工作。此時,您可以利用 Kickstart 安裝的技術,為這個故障的電腦,自
動的進行安裝作業。甚至可以利用 Kickstart 設定檔,在安裝的後期自動進行系統的
組態與還原。

2
第 4 章:自動安裝與升級

這項運用發揮到極限時,您可以為每一台 Red Hat Enterprise Linux 的伺服器,建立


專屬的 Kickstart 設定檔,在伺服器故障時,只需要重新開機,便可以自動的進行安
裝,省去手動安裝與設定的時間。

4.2 產生 Kickstart 設定檔


要使用 Kickstart 技術進行安裝,您必須先準備好 Kickstart 的設定檔。您可以透過下列
幾種方法,來產生 Kickstart 設定檔:

上述幾種方法,詳述如下。

4.2.1 手動產生 Kickstart 設定檔


由於 Kickstart 設定檔本質上只是一個文字檔,因此,您可以使用任何的文書編輯軟體
(像是 vi、emacs、...),手動的產生 Kickstart 設定檔的內容。

Kickstart 設定檔中每一行代表一個設定值,並以 # 作為註解符號。換言之,自 # 到行


尾的文字則是給人類看的,Kickstart 不會解譯之。

除了註解外,在 Kickstart 設定檔中,還提供了一種名為區段 (Section) 的特殊設定值,


用來區隔不同性質的設定值。目前的 Kickstart 設定檔定義了下列幾個區段 (Section):

指令區段
用來定義進行自動安裝、升級時,每一個步驟要設定的項目。與其他區段不同的
是,指令區段並沒有特別的識別符號,而且一定要提供的內容。

%packages 區段
用來定義要安裝與升級的套件 (Package) 或套件群組 (Package Group) 之名稱。

3
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

%pre 與 %post 區段
用來定義安裝前與安裝後要執行的 Shell 指令,這兩個區段可以省略。

值得注意的是,上述區段,必須依照下列的順序撰寫於 Kickstart 設定檔中:

1. 指令區段。
2. %packages 區段。
3. %pre 或 %post 區段,如果有定義這兩個區段的話。

如果沒有依照順序,恐怕會造成進行自動安裝失敗。

指令區段

指令區段用來儲存每一個安裝步驟中,需要組態的設定值。每一個於指令區段定義的
設定值,稱為 Kickstart 指令 (Kickstart Command)。目前 Kickstart 共定義了數十個指
令,礙於篇幅限制,本書僅介紹幾個常見的 Kickstart 指令。

Red Hat 為 Red Hat Enterprise Linux 提供許多極具參考價值的電子書,您


可以透過下列網址取得這些電子書:

http://www.redhat.com/docs/manuals/enterprise/

其中有一本名為 Installation Guide 文件,就有提供所有 Kickstart 指令完整


且詳細的說明。

與 Shell 中的指令一樣,每一個 Kickstart 指令也許可以搭配額外的參數與引數,藉以


來改變或指派相關的設定。以下列這個 Kickstart 指令為例:

rootpw [--iscrypted] PASSWORD

4
第 4 章:自動安裝與升級

其中的 rootpw 便是 Kickstart 指令,用來指定 root 的密碼;--iscrypted 則是該指


令的參數,而最後的 PASSWORD 則是 rootpw 指令的引數。

除此之外,部分的 Kickstart 指令是必備 (Required) 的,也就是說,您一定要在 Kickstart


設定檔中提供這些指令。如果您遺漏了必備的指令,在進行安裝或升級時,Anaconda
將會停下來要求您提供該項資訊。完成這些資訊後,Anaconda 才會繼續的進行安裝,
除非又發現少了哪個必備的指令;但大部分的 Kickstart 指令則是可選用的 (Optional),
也就是可使用,也可以省略,如果省略可選用的指令,Anaconda 將會依照其內建的預
設值,作為安裝或升級時的依據。

使用 Kickstart 進行安裝或升級時,所必備的指令也不太相同。以下僅整理安裝與升級
時,必備的指令一覽表:

表 4.1. 自動安裝與升級時必備的 Kickstart 指令

安裝 升級

• install • upgrade
• lang • lang
• auth • keyboard
• bootloader • bootloader
• keyboard
• part
• rootpw
• timezone

5
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

%packages 區段

誠如先前提到的,%packages 區段用來定義要安裝的套件或套件群組。您可以把要
安裝的套件或套件群組名稱,撰寫於 %packages 中,當 Anaconda 進行安裝時,便
會安裝 %packages 區段中指定的套件與套件群組。

什麼是 "套件群組"??

套件群組係代表一組具備相同性質的套件。每一個套件群組定義了一個識
別碼、一組名稱、完整說明,以及包含若干個標註為強制的 (Mandatory)
套件,與若干個選用的 (Optional) 的套件。選擇安裝某一個套件群組時,
Anaconda 一定會安裝該群組中強制的套件;如果沒有選擇選用性的套件,
則不會安裝該套件。

在 Red Hat Enterprise Linux 5 中,您可以透過下列任何一種方法,取得套


件群組的詳細資訊:

• 安裝來源 (Installation Source) 的 DIR/repodata/comp-*.xml 檔案


中的定義,其中的 DIR/ 為安裝來源的某一個子目錄。
• 利用 yum grouplist 與 yum groupinfo 指令來查詢。

此外,Red Hat Enterprise Linux 5 預設會自動安裝名為 Core 與 Base 的兩


個套件群組。

%packages 區段裡,一行代表一個要安裝的套件或者套件群組的名稱。如果是套件
群組,請在套件群組名稱前加上 @ 符號;在指定套件或套件群組名稱時,您也可以搭
配 * 萬用字元;若名稱的最前方加上 - 符號,則代表不要安裝該套件。例如:

6
第 4 章:自動安裝與升級

%packages
@FTP Server
system-config-*
-zsh

這個範例代表需要安裝 FTP Server 套件群組中所有必備的套件,並且需安裝以


system-config- 為首的套件,但不要安裝 zsh 套件。

除此之外,在 %packages 的後方,您還可以使用下列的參數13:

表 4.2. %packages 參數一覽表

參數 說明

--nobase 不要安裝 Base 套件群組,若要安裝一個最小的 Red Hat


Enterprise Linux 時,請加上這個參數。

--ignoremissing 當指定的套件或套件群組不存在時,安裝程式預設會詢問
要繼續或者終止安裝。加上這個參數時,Anaconda 會忽略
這些套件,繼續安裝其他套件。

%pre 與 %post 區段

若您打算在開始安裝前,或者安裝完畢後,要做一些動作時,您可以利用 %pre 與
%post 兩個區段來指定要執行的指令:

%pre
用來指定在開始安裝前要執行的動作內容。加諸於 %pre 後的內容,便是要執行
的指令。預設為 Shell 指令,若要執行其他語言的指令,請配合 --interpreter
參數來指定該語言之直譯器 (Interpreter)。

13
其實還有 --resolvedeps 與 --ignoredeps 兩個參數,但這兩個參數已經被標示為 "deprecated",
因此不便再加以介紹。

7
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

此外,您可以在 %pre 中存取網路,但由於此時尚未組態名稱伺服器的位置,因


此僅能使用 IP 位址來存取網路中的資源。

%post
用來指定安裝後要執行的指令內容。與 %pre 一樣的是,您也可在 %post 後使用
--interpreter 參數,來改變語言的直譯器。

與 %pre 不同的是,若是採用靜態 IP 位址 (Static IP Address) 方式組態網路的話,


在 %post 可以使用主機名稱的方式來存取網路中的電腦;但若使用動態方式時,
由於 /etc/resolv.conf 尚未完成,請勿使用主機名稱來存取其他的電腦。

另外一個組態 %pre 與 %post 時,還必須要特別留意的,就是這些指令執行的環境


為何。Anaconda 執行時,會有兩個執行的環境:

安裝程式的環境
這是由安裝媒體的影像檔提供的根目錄環境。這個環境僅提供安裝程式所需的各
項元件,以便順利的進行安裝或升級的作業。因此,安裝程式的環境儲存於記憶
體中,只要結束安裝作業,這個環境就會消失。

目的系統的環境
這個環境則儲存於磁碟設備上,因此可以用久保存。這也是安裝完畢後,您使用
的 Red Hat Enterprise Linux 5 的環境。

安裝程式的環境中,會把目的系統的環境掛載於 /mnt/sysimages/ 中。因此,若


您需要在安裝程式的環境裡,存取目的系統環境中的資源,您可以切換至
/mnt/sysimages/ 目錄,再存取相對應的路徑即可。

值得注意的是,%pre 中的指令,只會在安裝程式的環境中執行;而 %post 則可以於


安裝程式的環境,以及目的系統的環境中執行。但是,%post 預設是在目的系統的環

8
第 4 章:自動安裝與升級

境中執行,如果您希望切換回安裝程式的環境中執行,請親自加上 --nochroot 參
數即可。

以下是一個簡單的 %pre 與 %post 範例:


%pre
dd if=/dev/zero of=/dev/hda bs=512 count=1

%post --nochroot
echo "$(date)" > /mnt/sysimages/root/install-datetime

4.2.2 使用 Kickstart 設定程式


如果您嫌自己產生 Kickstart 設定檔過於麻煩,這裡要介紹您一個名為 Kickstart 設定程
式的圖形化工具,它可協助您輕鬆的產生正確的 Kickstart 設定檔!!

由於 Kickstart 設定程式係由 system-config-kickstart 套件所提供,因此,若


要使用 Kickstart 設定程式,您必須先確認是否已順利的安裝過這個套件。如果沒有,
將無法使用 Kickstart 設定程式來編輯 Kickstart 設定檔。

確認安裝好 Kickstart 設定程式後,您可以依照下列的方法,啟動 Kickstart 設定程式:

• 指令:請於圖形模式下的終端機模擬程式中,執行 system-config-kickstart
指令。

• 圖形:點擊【應用軟體】-【系統工具】-【Kickstart】,即可啟動 Kickstart 設定程


式工具。

《圖 4.1 "Kickstart 設定程式主畫面"》是 Kickstart 設定程式的主畫面。在此畫面中,


左方會列出數個可供點擊的項目,右方則是所選擇項目的詳細內容。您可以切換左邊
的組態項目,並且在右方填入詳細的設定內容。

9
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

您會發現,Kickstart 設定程式中的每一個項目,都是安裝過程中需要您組態的資訊。
在 Kickstart 設定程式中組態的內容,便是未來使用這個 Kickstart 設定檔進行自動安裝
時,會自動餵送給 Anaconda 安裝程式使用。

圖 4.1. Kickstart 設定程式主畫面

待所有的設定都完成後,您可以點擊【檔案】-【儲存檔案】,以便將修改後的 Kickstart
設定檔儲存下來。若需要檢視 Kickstart 設定程式產生的 Kickstart 設定檔內容,您也可
以點擊【檔案】-【預覽】,便會開啟如《圖 4.2 "Kickstart 設定程式預視選項對話
框"》的畫面,在此畫面中便是新的 Kickstart 設定檔內容。

10
第 4 章:自動安裝與升級

圖 4.2. Kickstart 設定程式預視選項對話框

4.2.3 /root/anaconda-ks.cfg
在安裝 Red Hat Enterprise Linux 的最後一刻,Anaconda 這個安裝程式,會把安裝過程
中輸入的選項,以 Kickstart 設定檔的格式,儲存成為 /root/anaconda-ks.cfg。

這個檔案除了可以讓您在安裝後,能夠獲取安裝這台電腦時,輸入的每一個選項之組
態外,因其本身就是 Kickstart 設定檔,您還可以直接利用這個檔案,作為 Kickstart 設
定檔的範本 (Template),進行修改與調整後,再運用於其他機器的安裝作業上。

/root/anaconda-ks.cfg 的運用案例

anaconda-ks.cfg 檔案非常的好用!! 舉例,如果您有一堆電腦需要安


裝 Red Hat Enterprise Linux,而且每一台電腦的組態都完全相同。此時,
您可以先找一台電腦依照您心中的想法進行手動安裝,待安裝完畢後,把
該電腦中的 /root/anaconda-ks.cfg 略做修改,再複製於他處 (磁碟
片、光碟片、網路中的伺服器、...)。

11
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

接著使用開機媒體,啟動其他電腦並執行 Anaconda 安裝程式。這樣您就


不用費心自己手動的建立 Kickstart 設定檔了。

不過值得注意的是,為了避免發生誤用 /root/anaconda-ks.cfg 而造成毀掉原有


系統的遺憾,Anaconda 在產生 /root/anaconda-ks.cfg 的時候,會把用來組態
分割區的參數註解起來。如果您打算直接使用 /root/anaconda-ks.cfg,並且希
望重新產生分割區與檔案系統,就得手動的檢視並調整該檔案中關於檔案系統設定的
相關設定。

4.3 開始自動安裝
在產生 Kickstart 設定檔後,您就可以展開自動安裝的動作了。要開始自動安裝,您必
須完成下列兩個步驟:

• 把 Kickstart 設定檔放置到適當的媒體上。
• 在啟動 Anaconda 安裝程式時,指定執行 Kickstart 模式。

以上是上述步驟的詳細說明。

4.3.1 Kickstart 設定檔存放的媒體


首先,您得先把 Kickstart 設定檔儲存到正確的位置上。截至目前為止,您可以把
Kickstart 設定檔儲存於下列幾項媒體上:

• 軟碟:您可以把 Kickstart 設定檔儲存於 vfat 或 ext2 檔案系統的軟碟片中。

• 光碟:您也可以把 Kickstart 設定檔儲存於標準的 ISO9660 檔案系統的光碟片中。

12
第 4 章:自動安裝與升級

• 硬碟或 USB 拇指碟:如果您的電腦沒有軟碟,也沒有光碟,那還可以把 Kickstart


設定檔儲存於硬碟或 USB 拇指碟中。與軟碟一樣,用來儲存 Kickstart 設定檔的硬
碟或 USB 拇指碟的檔案系統必須為 vfat 或 ext2。

• initrd 影像檔:您還可以把 Kickstart 設定檔儲存於 initrd 影像檔中。

• 網路中的伺服器:除此之外,您也可以將 Kickstart 設定檔儲存於下列的伺服器上,


分享給 Anaconda 使用:
• HTTP 伺服器。
• FTP 伺服器。
• NFS 伺服器。

至於儲存於上述媒體中的 Kickstart 設定檔之檔案名稱為何,這就悉聽尊便;但如果沒


有好的主意,我會建議您使用 ks.cfg 作為 Kickstart 設定檔的檔案名稱。

4.3.2 啟動 Kickstart 安裝模式


將 Kickstart 設定檔儲存到適當的媒體後,您就可以正式的啟動 Kickstart 安裝了!!

與手動安裝一樣,您得先使用開機媒體來啟動您的電腦,以便執行 Anaconda 這個安


裝程式,來進行安裝的動作。但與手動安裝不同的是,您必須給予 Anaconda 正確的
啟動參數14,方能順利的執行 Kickstart 安裝模式。

至於要給予什麼樣的參數,則因 Kickstart 設定檔存放的位置不同,會有不同的值:

軟碟
請使用 ks=floppy:PATH 格式指定 Kickstart 設定檔位置,其中的 PATH 為
Kickstart 設定檔儲存的路徑。

14
關於 Anaconda 啟動參數請參閱《附錄 C, Anaconda 常見參數》。

13
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

光碟片
請使用 ks=cdrom:PATH 指定 Kickstart 設定檔儲存於光碟片中,PATH 也是
Kickstart 設定檔儲存的路徑。

硬碟與 USB 拇指碟


若 Kickstart 設定檔儲存於硬碟或 USB 外接磁碟設備中,請使用 ks=hd:DEV:PATH
格式來指定 Kickstart 設定檔的位置。其中的 DEV 為硬碟或 USB 拇指碟的裝置名
稱,而 PATH 則為 Kickstart 設定檔的路徑。

例如:ks=hd:sda1:/ks/myks.cfg。

initrd 影像檔
請使用 ks=file:PATH 格式指定 Kickstart 設定檔的位置,其中的 PATH 為 Kickstart
設定檔的路徑。例如:ks=file:/myks.cfg。

網路伺服器
如果 Kickstart 設定檔儲存於網路伺服器上,請使用下列的格式指定其位置:

• NFS 伺服器:ks=nfs:SERVER:PATH,其中的 SERVER 為 NFS 伺服器的主機


名稱或 IP 位址,PATH 則是 Kickstart 設定檔的路徑。

例如:ks=nfs:linux.wholan.corp:/kickstart/myks.cfg。

• FTP 伺服器或 HTTP 伺服器:ks=URL,URL 則是 Kickstart 設定檔的 URL。例


如:ks=ftp://linux.wholan.corp/kickstart/myks.cfg。

比較特別的是,如果您的 Kickstart 設定檔儲存於軟碟或光碟片中,則 PATH 欄位可以


省略。若省略 PATH 時,您的 Kickstart 設定檔檔案名稱必須為 ks.cfg,否則將可能
因找不到 Kickstart 設定檔,而無法執行 Kickstart 安裝模式。

14
第 4 章:自動安裝與升級

4.4 案例探討 (一):全自動化安裝


在我多年的實務與教學經驗常常遇到一個問題:「Kickstart 既然用來進行自動安裝,
為什麼還需要特別輸入 ks 之類的參數給 Anaconda?? 有什麼方法可以不用輸入任何參
數,只要把安裝光碟放入光碟機,重新開機後使用光碟機開機,就可全程自動進行安
裝??」

有!!

在此利用下列 WhoLan Corp 這個虛構的案例,詳細說明如何產生可以全自動化安裝的


安裝光碟吧!!

我得聲明一下:本章案例探討之人、事、時、地物全為虛構,如有雷同,
純屬巧合。

4.4.1 情境說明
WhoLan Corp 是一家生產電腦設備的跨國性企業集團。WhoLan Corp 打算將每一台電
腦全部更換為 Red Hat Enterprise Linux 系統,而且每一台電腦中必須安裝 WhoLan Corp
開發的管理系統。在一個內部會議中,這個重責大任被分配到系統部經理 Jacky 的身
上。

Jacky 分析發現,WhoLan Corp 旗下共有數萬台電腦,分佈於全世界十多個國家,如


果要手動的為每一台電腦安裝 Red Hat Enterprise Linux,恐怕得花上數年的時間。更

15
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

麻煩的是,WhoLan Corp 還有數千名的業務人員,配備著含 DVD 光碟的筆記型電腦,


這些業務人員常遊走四方而非於內部網路中作業,所以無法讓他們在內部網路中進行
安裝的作業。

為了順利完成更換系統的任務,Jacky 打算先從業務人員的電腦著手。Jacky 想到 Red


Hat Enterprise Linux 提供了 Kickstart 安裝的技術,可以自動化的安裝 Red Hat Enterprise
Linux。所以 Jacky 打算發給每一個業務人員一張 Red Hat Enterprise Linux 安裝光碟,
利用 Kickstart 安裝的技術,只要把光碟片放入光碟機中,重新開機後,便可自動安裝
Red Hat Enterprise Linux。這樣做還有另外一個好處:萬一業務人員電腦中的 Red Hat
Enterprise Linux 損毀時,還可以直接使用安裝光碟重新安裝系統。

後來測試時,Jacky 發現一個蠻嚴重的問題:若直接使用原版的 Red Hat Enterprise


Linux 安裝光碟,要執行 Kickstart 安裝模式,那得在執行啟動載入器階段時,手動的
指定 Kickstart 相關參數給 Anaconda 安裝程式。業務人員可能不知道如何執行這項動
作,而切換成手動安裝模式,這會造成許多困擾。

為此,Jacky 寫了一篇 Email,請求您的協助。信中並附上 Jacky 提供的 Kickstart 設定


檔 (《範例 4.1, "WhoLan Corp 全自動安裝的 Kickstart 設定檔"》)。

範例 4.1. WhoLan Corp 全自動安裝的 Kickstart 設定檔


# Kickstart file automatically generated by anaconda.

install
cdrom
key --skip
lang zh_TW.UTF-8
keyboard us
xconfig --startxonboot
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$wcp9o6db$QjbL/teQqjMupLuR5xCWD0
firewall --enabled --port=22:tcp --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc Asia/Taipei
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
# The following is the partition information you requested

16
第 4 章:自動安裝與升級

# Note that any partitions you deleted are not expressed


# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all
part /boot --fstype ext3 --size=100
part /usr --fstype ext3 --size=4096
part swap --size=1024
part / --fstype ext3 --size=512
part /home --fstype ext3 --size=512
part /var --fstype ext3 --size=512

%packages
@core
@base
@chinese-support
@GNOME Desktop Environment
device-mapper-multipath
-sysreport

您,可以幫助 Jacky 解決這個問題嗎??

4.4.2 分析
為了達成 Jacky 的理想,我們先複習一下 Red Hat Enterprise Linux 安裝光碟如何展開
安裝程式的:

1. 電腦的 BIOS 執行安裝光碟中的啟動載入器。

2. 安裝光碟的啟動載入器等候使用者選擇要啟動的項目。在使用者選擇後,則啟動該
作業系統的核心;若使用者一直沒有選擇,則靜候 60 秒鐘後,直接啟動預設的項
目。

3. 啟動載入器此時會啟動儲存於開機光碟中的 Red Hat Enterprise Linux 核心,並且將


上個步驟使用者額外輸入的 Anaconda 參數,傳給 Red Hat Enterprise Linux 核心。

17
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

4. Red Hat Enterprise Linux 核心啟動時,會掛載 initrd 影像檔成為臨時的根檔案系


統,並且在啟動完 Red Hat Enterprise Linux 核心後執行 /init,也就是位於 initrd
影像檔根目錄中的 init。

5. init 執行時,會配置 Red Hat Enterprise Linux 執行的環境,並且執行 Anaconda 安


裝程式。

上述的步驟中,與自動安裝最重要的關鍵有二:

把 Kickstart 設定檔儲存在哪裡
第一個要決定的就是 Kickstart 設定檔儲存的位置。為了能讓 Anaconda 取得事先
設定好的 Kickstart 設定檔,Jacky 必須把 Kickstart 設定檔儲存於安裝光碟中,或
者 initrd 影像檔中。

啟動載入器的組態
其次,Jacky 得修改啟動載入器的組態,以便在啟動載入器執行時,可以把預設的
Kickstart 設定檔位置,傳送給安裝光碟中的 Red Hat Enterprise Linux 核心。

這兩個關鍵重點的詳細介紹如下。

Kickstart 設定檔儲存的位置

先前提過,我們可以把 Kickstart 設定檔儲存於數種媒體上。若以安裝光碟為界線,可


分為下列兩類:

• 安裝光碟外:包含軟碟、其他的光碟片、硬碟、USB 拇指碟、NFS 伺服器、HTTP


伺服器,以及 FTP 伺服器。

• 安裝光碟內:包含安裝光碟的光碟片中。

18
第 4 章:自動安裝與升級

可是以 WhoLan Corp 這個案例來說,若把 Kickstart 設定檔儲存於安裝光碟外的媒體,


一來會造成使用者進行安裝前,必須先安裝這些媒體;二來也還需準備這些儲存
Kickstart 設定檔的媒體。我想,這並不是 Jacky 所樂見的。因此,我們必須排除這個
想法。

只剩下把 Kickstart 設定檔儲存於安裝光碟內了!! 若要把 Kickstart 設定檔儲存於安裝光


碟中,此時必須符合下列的要求:

• Kickstart 設定檔必須儲存於安裝光碟的最上層目錄中。
• Kickstart 設定檔必須命名為 ks.cfg。
• 啟動載入器必須使用 ks=cdrom 告知 Anaconda 安裝程式 Kickstart 設定檔的位置。

啟動載入器組態重點

啟動載入器的組態重點有二:

預設的啟動項目等候時間
由於安裝光碟的啟動載入器執行時,會等候使用者選擇要執行的項目,若使用者
沒有選擇任何項目必須等候六十秒才會啟動預設的項目。如果沒有處理這個問題,
業務人員可能會傻傻的坐在電腦前不知所措。為了讓安裝光碟能直接啟動 Kickstart
安裝模式,Jacky 必須修改安裝光碟的啟動載入器中等待時間的設定,這樣才能縮
短使用者等候的時間。

預設的啟動參數
另外,Jacky 也得修改啟動載入器中交付給核心的 Anaconda 參數,這樣才能順利
的執行我們指定的 Kickstart 設定檔。

19
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

4.4.3 準備自製安裝光碟
準備自製安裝光碟的最重要目的,就是要產生一個擁有著自訂的啟動載入器與儲存著
Kickstart 設定檔的安裝光碟,以便可以利用這個安裝光碟進行全自動安裝。

由於光碟片中的檔案是唯讀的,因此我們必須先把 Red Hat Enterprise Linux 5 的安裝


光碟內容,複製至硬碟才能進行修改與調整。複製安裝光碟的方法,會因安裝光碟是
光碟片,亦或是剛從 RHN 中下載取回的 ISO 檔;甚至是 CD 格式,或 DVD 格式,會
有數種不同的組合。

不管您的安裝來源為何,基本的精神就是:把所有安裝光碟的內容,複製到同一個目
錄即可。以下是我複製 DVD 型態的安裝光碟之範例:

範例 4.2. 複製 DVD 型態的安裝光碟


[root@linux ~]# cp -a /media/DVD/ rhel5source/
[root@linux ~]# ls rhel5source/
Cluster/ README-or.html RELEASE-NOTES-ml.html
ClusterStorage/ README-pa.html RELEASE-NOTES-mr.html
EULA README-pt_BR.html RELEASE-NOTES-or.html
eula.en_US README-ru.html RELEASE-NOTES-pa.html
GPL README-si.html RELEASE-NOTES-pt_BR.html
images/ README-ta.html RELEASE-NOTES-ru.html
isolinux/ README-te.html RELEASE-NOTES-si.html
README-as.html README-zh_CN.html RELEASE-NOTES-ta.html
README-bn.html README-zh_TW.html RELEASE-NOTES-te.html
README-de.html RELEASE-NOTES-as.html RELEASE-NOTES-zh_CN.html
README-en RELEASE-NOTES-bn.html RELEASE-NOTES-zh_TW.html
README-en.html RELEASE-NOTES-de.html RPM-GPG-KEY-fedora
README-es.html RELEASE-NOTES-en RPM-GPG-KEY-fedora-test
README-fr.html RELEASE-NOTES-en.html RPM-GPG-KEY-redhat-auxiliary
README-gu.html RELEASE-NOTES-es.html RPM-GPG-KEY-redhat-beta
README-hi.html RELEASE-NOTES-fr.html RPM-GPG-KEY-redhat-former
README-it.html RELEASE-NOTES-gu.html RPM-GPG-KEY-redhat-release
README-ja.html RELEASE-NOTES-hi.html Server/
README-kn.html RELEASE-NOTES-it.html TRANS.TBL
README-ko.html RELEASE-NOTES-ja.html VT/
README-ml.html RELEASE-NOTES-kn.html
README-mr.html RELEASE-NOTES-ko.html
[root@linux ~]#

20
第 4 章:自動安裝與升級

複製完安裝光碟的內容後,別忘記把您撰寫好的 Kickstart 設定檔,放置於工作目錄的


最上層 (以這個案例來說,請把 Kickstart 設定檔儲存於 rhel5source/ 目錄中),並
且命名為 ks.cfg,以便符合"Kickstart 設定檔儲存的位置"提及的要求。

4.4.4 修改啟動載入器設定
誠如於"啟動載入器組態重點"提過的「為了能讓使用者於開機時,自動的啟動自製開
機光碟中安裝程式,並立即執行 Kickstart 安裝,我們必須修改開機光碟中的啟動載入
器之預設項目,以及附加的啟動參數」,現在就讓我們來研究如何修改安裝光碟中的
啟動載入器吧。

Red Hat Enterprise Linux 5 安裝光碟中的啟動載入器,並非普通的 Red Hat Enterprise


Linux 所使用的 GRUB,而是 SYSLINUX 套件中的 ISOLINUX15。因此,組態安裝光
碟啟動載入器的方法,便與 GRUB 設定方法不同了。

您可以從安裝光碟中找到一個名為 isolinux/ 的目錄,這個目錄用來儲存 ISOLINUX


的相關檔案。其中最重要的應屬 isolinux.cfg,因為這個檔案就是 ISOLINUX 的
設定檔。isolinux.cfg 中與我們要修改的項目有關的參數,包含:

參數 說明

default LABEL 預設啟動的作業系統名稱。

timeout TIMEOUT 預設等待的時間,單位為 0.1 秒。

label LABEL 作業系統的代號。

kernel IMGFILE 核心的影像檔名稱,該檔案必須儲存於 isolinux/ 目錄


中。

15
SYSLINUX 的官方網址為:http://syslinux.zytor.com/。

21
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

參數 說明

append OPTIONS 要傳遞給核心的啟動參數。

以下是我推薦給 Jacky 使用的 isolinux.cfg 範例:

範例 4.3. 修改後的 isolinux.cfg 設定檔


1 #default linux
2 default install ❶
3 prompt 1
4 #timeout 600
5 timeout 50 ❷
6 display boot.msg
7 F1 boot.msg
8 F2 options.msg
9 F3 general.msg
10 F4 param.msg
11 F5 rescue.msg
12 label install ❸
13 kernel vmlinuz
14 append ks=cdrom❹ initrd=initrd.img
15 label linux
16 kernel vmlinuz
17 append initrd=initrd.img
18 label text
19 kernel vmlinuz
20 append initrd=initrd.img text
21 label ks
22 kernel vmlinuz
23 append ks initrd=initrd.imglabel local
24 localboot 1
25 label memtest86
26 kernel memtest
27 append -

❶ 設定預設要啟動的作業系統代號為 install。

❷ 使開機後等候五秒鐘,若五秒內使用者沒有輸入任何項目時,便啟動預設的作業
系統。
❸ 這是我新增的作業系統,代號就是 install。

22
第 4 章:自動安裝與升級

❹ 這是用來啟動自動化安裝的 Kickstart 設定檔定義,也是這個案例的關鍵。利用


這個參數,可以讓 Anaconda 從安裝光碟最上層目錄中的 ks.cfg,作為 Kickstart
設定檔。

4.4.5 產生自製安裝光碟
完成上述步驟後,您就可以正式的產生自製的安裝光碟了!! 這個階段的步驟有二:

製作自製安裝光碟的 ISO 檔

首先,請先產生自製安裝光碟的 ISO 檔,在 Red Hat Enterprise Linux 系統中,您可使


用 mkisofs 這個工具來產生安裝光碟的 ISO 檔。為了能順利的使用 mkisofs 工具,
您必須先安裝 mkisofs 套件。

為了能在製作自製安裝光碟的 ISO 檔中產生正確的檔案,請先完成下列幾項工作:

• 刪除各目錄中的 TRANS.TBL 檔案。


• 刪除 isolinux/boot.cat 檔案。
• 將 isolinux/ 中所有檔案設為可寫入。

以下是我製作自製安裝光碟 ISO 檔案的示範:

範例 4.4. 製作自製安裝光碟 ISO 檔

[root@linux rhel5source]# find -type f -name "TRANS.TBL" | xargs rm -f ❶


[root@linux rhel5source]# rm isolinux/boot.cat ❷
rm: remove regular file `isolinux/boot.cat'? y
[root@linux rhel5source]# chmod +w isolinux/* ❸
[root@linux rhel5source]# mkisofs -o ../myrhel5.iso -J -r -v \ ❹
> -b isolinux/isolinux.bin -c isolinux/boot.cat \ ❺
> -no-emul-boot -boot-load-size 4 -boot-info-table \
> -V "My RHEL5 Install DVD" \ ❻
> . ❼
INFO: UTF-8 character encoding detected by locale settings.

23
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

Assuming UTF-8 encoded filenames on source filesystem,


use -input-charset to override.
mkisofs 2.01 (cpu-pc-linux-gnu) ❽
Scanning .
Scanning ./images
Scanning ./images/xen
Scanning ./images/pxeboot
Scanning ./isolinux
Scanning ./ClusterStorage
Scanning ./ClusterStorage/repodata
Scanning ./Cluster
Scanning ./Cluster/repodata
Scanning ./VT
Scanning ./VT/repodata
Scanning ./Server
Scanning ./Server/repodata
Using RELEA000.HTM;1 for /RELEASE-NOTES-U1-mr.html (RELEASE-NOTES-U1-or.html)
Using RELEA001.HTM;1 for /RELEASE-NOTES-U1-or.html (RELEASE-NOTES-bn.html)
Using RELEA002.HTM;1 for /RELEASE-NOTES-bn.html (RELEASE-NOTES-de.html)
...
Writing: The File(s) Start Block 352
0.34% done, estimate finish Mon Mar 10 03:01:35 2008
0.69% done, estimate finish Mon Mar 10 02:59:09 2008
1.03% done, estimate finish Mon Mar 10 02:59:58 2008
...
99.32% done, estimate finish Mon Mar 10 02:59:45 2008
99.66% done, estimate finish Mon Mar 10 02:59:44 2008
Total translation table size: 587185
Total rockridge attributes bytes: 253227
Total directory bytes: 382976
Path table size(bytes): 188
Done with: The File(s) Block(s) 1459451
Writing: Ending Padblock Start Block 1459803
Done with: Ending Padblock Block(s) 150
Max brk space used 1f5000
1459953 extents written (2851 MB)
[root@linux rhel5source]# file ../myrhel5.iso ❾
../myrhel5.iso: ISO 9660 CD-ROM filesystem data UDF filesystem data (unknown ver
sion, id 'NSR01') 'My RHEL5 Install DVD ' (bootable)
[root@linux rhel5source]#

❶ 先刪除各目錄中的 TRANS.TBL 檔案。

❷ 再刪除 isolinux/boot.cat 檔案。

❸ 將 isolinux/ 所有檔案設定為可寫入。

24
第 4 章:自動安裝與升級

❹ 執行 mkisofs 來產生自製安裝光碟的 ISO 檔吧!! 這裡先指定將產生的 ISO 檔,


儲存成上層目錄的 myrhel5.iso。
❺ 使用 ISOLINUX 作為安裝光碟的啟動載入器。

❻ 將光碟的磁卷識別碼 (Volumn ID) 設定成 "My RHEL5 Install DVD"。

❼ 把目前工作目錄中所有檔案加入安裝光碟中。

❽ 開始產生 ISO 檔吧!! 這可能需要一些時間,請耐心等候。

❾ 完成後,檢視一下 myrhel5.iso 的類型與識別碼是否正確。看起來是正確的,


恭喜了,大功告成!!

產生檢驗碼

產生 ISO 檔後,接著我們必須為 Red Hat Enterprise Linux 5 安裝光碟加上 MD5 的檢查


碼,否則 Anaconda 可能會認為這不是一個正確的 Red Hat Enterprise Linux 5 安裝光
碟,而無法進行安裝的作業。

在 Red Hat Enterprise Linux 5 中,Red Hat 提供了一個名為 anaconda-runtime 套


件,這個套件提供了一堆與 Anaconda 有關的工具。anaconda-runtime 中提供了
一個名為 implantisomd5 的工具,請您使用這個工具來產生安裝光碟的 MD5 檢查
碼:

範例 4.5. 產生安裝光碟檢驗碼
[root@linux rhel5source]# /usr/lib/anaconda-runtime/implantisomd5 \
> --force ../myrhel5.iso
Inserting md5sum into iso image...
md5 = 0a3cfc15407f7611cc0d7b5d3c873b3a
Inserting fragment md5sums into iso image...
fragmd5 = b144d8e2c69cb881cdaf4dab5f735d87c7d87486cf17feba69a5a4f63d53
frags = 20
Setting supported flag to 0
[root@linux rhel5source]#

25
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇

完成上述動作後,您就可以把方才產生的 ISO 檔,交給 Jacky 並燒錄成為光碟片。這


個光碟片,就是用來全程自動化安裝 Red Hat Enterprise Linux 5 的安裝光碟。

以後,Jacky 只要把這個光碟片發給使用者,告知他們把光碟片放入光碟機,並且重
新開機,然後等上一段時間,完成後使用者的電腦就有一個全新的 Red Hat Enterprise
Linux 5 了!!

4.5 結論
想要自動安裝 Red Hat Enterprise Linux 嗎?? 希望本章的介紹,能讓您了解 Red Hat
Enterprise Linux 提供的 Kickstart 安裝模式,並在實務上利用 Kickstart 來解決您遇到的
需求。加油!!

26