自動安裝與升級
1
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
• 災後復原:萬一您的電腦陣亡於慘烈的故障狀況下,您必須在急短的時間內,完成
災後復原的工作。此時,您可以利用 Kickstart 安裝的技術,為這個故障的電腦,自
動的進行安裝作業。甚至可以利用 Kickstart 設定檔,在安裝的後期自動進行系統的
組態與還原。
2
第 4 章:自動安裝與升級
上述幾種方法,詳述如下。
指令區段
用來定義進行自動安裝、升級時,每一個步驟要設定的項目。與其他區段不同的
是,指令區段並沒有特別的識別符號,而且一定要提供的內容。
%packages 區段
用來定義要安裝與升級的套件 (Package) 或套件群組 (Package Group) 之名稱。
3
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
%pre 與 %post 區段
用來定義安裝前與安裝後要執行的 Shell 指令,這兩個區段可以省略。
1. 指令區段。
2. %packages 區段。
3. %pre 或 %post 區段,如果有定義這兩個區段的話。
如果沒有依照順序,恐怕會造成進行自動安裝失敗。
指令區段
指令區段用來儲存每一個安裝步驟中,需要組態的設定值。每一個於指令區段定義的
設定值,稱為 Kickstart 指令 (Kickstart Command)。目前 Kickstart 共定義了數十個指
令,礙於篇幅限制,本書僅介紹幾個常見的 Kickstart 指令。
http://www.redhat.com/docs/manuals/enterprise/
4
第 4 章:自動安裝與升級
使用 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 一定會安裝該群組中強制的套件;如果沒有選擇選用性的套件,
則不會安裝該套件。
%packages 區段裡,一行代表一個要安裝的套件或者套件群組的名稱。如果是套件
群組,請在套件群組名稱前加上 @ 符號;在指定套件或套件群組名稱時,您也可以搭
配 * 萬用字元;若名稱的最前方加上 - 符號,則代表不要安裝該套件。例如:
6
第 4 章:自動安裝與升級
%packages
@FTP Server
system-config-*
-zsh
參數 說明
--ignoremissing 當指定的套件或套件群組不存在時,安裝程式預設會詢問
要繼續或者終止安裝。加上這個參數時,Anaconda 會忽略
這些套件,繼續安裝其他套件。
%pre 與 %post 區段
若您打算在開始安裝前,或者安裝完畢後,要做一些動作時,您可以利用 %pre 與
%post 兩個區段來指定要執行的指令:
%pre
用來指定在開始安裝前要執行的動作內容。加諸於 %pre 後的內容,便是要執行
的指令。預設為 Shell 指令,若要執行其他語言的指令,請配合 --interpreter
參數來指定該語言之直譯器 (Interpreter)。
13
其實還有 --resolvedeps 與 --ignoredeps 兩個參數,但這兩個參數已經被標示為 "deprecated",
因此不便再加以介紹。
7
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
%post
用來指定安裝後要執行的指令內容。與 %pre 一樣的是,您也可在 %post 後使用
--interpreter 參數,來改變語言的直譯器。
安裝程式的環境
這是由安裝媒體的影像檔提供的根目錄環境。這個環境僅提供安裝程式所需的各
項元件,以便順利的進行安裝或升級的作業。因此,安裝程式的環境儲存於記憶
體中,只要結束安裝作業,這個環境就會消失。
目的系統的環境
這個環境則儲存於磁碟設備上,因此可以用久保存。這也是安裝完畢後,您使用
的 Red Hat Enterprise Linux 5 的環境。
8
第 4 章:自動安裝與升級
境中執行,如果您希望切換回安裝程式的環境中執行,請親自加上 --nochroot 參
數即可。
%post --nochroot
echo "$(date)" > /mnt/sysimages/root/install-datetime
• 指令:請於圖形模式下的終端機模擬程式中,執行 system-config-kickstart
指令。
9
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
您會發現,Kickstart 設定程式中的每一個項目,都是安裝過程中需要您組態的資訊。
在 Kickstart 設定程式中組態的內容,便是未來使用這個 Kickstart 設定檔進行自動安裝
時,會自動餵送給 Anaconda 安裝程式使用。
待所有的設定都完成後,您可以點擊【檔案】-【儲存檔案】,以便將修改後的 Kickstart
設定檔儲存下來。若需要檢視 Kickstart 設定程式產生的 Kickstart 設定檔內容,您也可
以點擊【檔案】-【預覽】,便會開啟如《圖 4.2 "Kickstart 設定程式預視選項對話
框"》的畫面,在此畫面中便是新的 Kickstart 設定檔內容。
10
第 4 章:自動安裝與升級
4.2.3 /root/anaconda-ks.cfg
在安裝 Red Hat Enterprise Linux 的最後一刻,Anaconda 這個安裝程式,會把安裝過程
中輸入的選項,以 Kickstart 設定檔的格式,儲存成為 /root/anaconda-ks.cfg。
這個檔案除了可以讓您在安裝後,能夠獲取安裝這台電腦時,輸入的每一個選項之組
態外,因其本身就是 Kickstart 設定檔,您還可以直接利用這個檔案,作為 Kickstart 設
定檔的範本 (Template),進行修改與調整後,再運用於其他機器的安裝作業上。
/root/anaconda-ks.cfg 的運用案例
11
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
4.3 開始自動安裝
在產生 Kickstart 設定檔後,您就可以展開自動安裝的動作了。要開始自動安裝,您必
須完成下列兩個步驟:
• 把 Kickstart 設定檔放置到適當的媒體上。
• 在啟動 Anaconda 安裝程式時,指定執行 Kickstart 模式。
以上是上述步驟的詳細說明。
12
第 4 章:自動安裝與升級
軟碟
請使用 ks=floppy:PATH 格式指定 Kickstart 設定檔位置,其中的 PATH 為
Kickstart 設定檔儲存的路徑。
14
關於 Anaconda 啟動參數請參閱《附錄 C, Anaconda 常見參數》。
13
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
光碟片
請使用 ks=cdrom:PATH 指定 Kickstart 設定檔儲存於光碟片中,PATH 也是
Kickstart 設定檔儲存的路徑。
例如:ks=hd:sda1:/ks/myks.cfg。
initrd 影像檔
請使用 ks=file:PATH 格式指定 Kickstart 設定檔的位置,其中的 PATH 為 Kickstart
設定檔的路徑。例如:ks=file:/myks.cfg。
網路伺服器
如果 Kickstart 設定檔儲存於網路伺服器上,請使用下列的格式指定其位置:
例如:ks=nfs:linux.wholan.corp:/kickstart/myks.cfg。
14
第 4 章:自動安裝與升級
有!!
我得聲明一下:本章案例探討之人、事、時、地物全為虛構,如有雷同,
純屬巧合。
4.4.1 情境說明
WhoLan Corp 是一家生產電腦設備的跨國性企業集團。WhoLan Corp 打算將每一台電
腦全部更換為 Red Hat Enterprise Linux 系統,而且每一台電腦中必須安裝 WhoLan Corp
開發的管理系統。在一個內部會議中,這個重責大任被分配到系統部經理 Jacky 的身
上。
15
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
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 章:自動安裝與升級
%packages
@core
@base
@chinese-support
@GNOME Desktop Environment
device-mapper-multipath
-sysreport
4.4.2 分析
為了達成 Jacky 的理想,我們先複習一下 Red Hat Enterprise Linux 安裝光碟如何展開
安裝程式的:
2. 安裝光碟的啟動載入器等候使用者選擇要啟動的項目。在使用者選擇後,則啟動該
作業系統的核心;若使用者一直沒有選擇,則靜候 60 秒鐘後,直接啟動預設的項
目。
17
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
上述的步驟中,與自動安裝最重要的關鍵有二:
把 Kickstart 設定檔儲存在哪裡
第一個要決定的就是 Kickstart 設定檔儲存的位置。為了能讓 Anaconda 取得事先
設定好的 Kickstart 設定檔,Jacky 必須把 Kickstart 設定檔儲存於安裝光碟中,或
者 initrd 影像檔中。
啟動載入器的組態
其次,Jacky 得修改啟動載入器的組態,以便在啟動載入器執行時,可以把預設的
Kickstart 設定檔位置,傳送給安裝光碟中的 Red Hat Enterprise Linux 核心。
這兩個關鍵重點的詳細介紹如下。
Kickstart 設定檔儲存的位置
• 安裝光碟內:包含安裝光碟的光碟片中。
18
第 4 章:自動安裝與升級
• Kickstart 設定檔必須儲存於安裝光碟的最上層目錄中。
• Kickstart 設定檔必須命名為 ks.cfg。
• 啟動載入器必須使用 ks=cdrom 告知 Anaconda 安裝程式 Kickstart 設定檔的位置。
啟動載入器組態重點
啟動載入器的組態重點有二:
預設的啟動項目等候時間
由於安裝光碟的啟動載入器執行時,會等候使用者選擇要執行的項目,若使用者
沒有選擇任何項目必須等候六十秒才會啟動預設的項目。如果沒有處理這個問題,
業務人員可能會傻傻的坐在電腦前不知所措。為了讓安裝光碟能直接啟動 Kickstart
安裝模式,Jacky 必須修改安裝光碟的啟動載入器中等待時間的設定,這樣才能縮
短使用者等候的時間。
預設的啟動參數
另外,Jacky 也得修改啟動載入器中交付給核心的 Anaconda 參數,這樣才能順利
的執行我們指定的 Kickstart 設定檔。
19
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
4.4.3 準備自製安裝光碟
準備自製安裝光碟的最重要目的,就是要產生一個擁有著自訂的啟動載入器與儲存著
Kickstart 設定檔的安裝光碟,以便可以利用這個安裝光碟進行全自動安裝。
不管您的安裝來源為何,基本的精神就是:把所有安裝光碟的內容,複製到同一個目
錄即可。以下是我複製 DVD 型態的安裝光碟之範例:
20
第 4 章:自動安裝與升級
4.4.4 修改啟動載入器設定
誠如於"啟動載入器組態重點"提過的「為了能讓使用者於開機時,自動的啟動自製開
機光碟中安裝程式,並立即執行 Kickstart 安裝,我們必須修改開機光碟中的啟動載入
器之預設項目,以及附加的啟動參數」,現在就讓我們來研究如何修改安裝光碟中的
啟動載入器吧。
參數 說明
15
SYSLINUX 的官方網址為:http://syslinux.zytor.com/。
21
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
參數 說明
❶ 設定預設要啟動的作業系統代號為 install。
❷ 使開機後等候五秒鐘,若五秒內使用者沒有輸入任何項目時,便啟動預設的作業
系統。
❸ 這是我新增的作業系統,代號就是 install。
22
第 4 章:自動安裝與升級
4.4.5 產生自製安裝光碟
完成上述步驟後,您就可以正式的產生自製的安裝光碟了!! 這個階段的步驟有二:
製作自製安裝光碟的 ISO 檔
23
Red Hat Enterprise Linux 5 系統管理寶典 - 進階篇
❸ 將 isolinux/ 所有檔案設定為可寫入。
24
第 4 章:自動安裝與升級
❼ 把目前工作目錄中所有檔案加入安裝光碟中。
產生檢驗碼
範例 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 系統管理寶典 - 進階篇
以後,Jacky 只要把這個光碟片發給使用者,告知他們把光碟片放入光碟機,並且重
新開機,然後等上一段時間,完成後使用者的電腦就有一個全新的 Red Hat Enterprise
Linux 5 了!!
4.5 結論
想要自動安裝 Red Hat Enterprise Linux 嗎?? 希望本章的介紹,能讓您了解 Red Hat
Enterprise Linux 提供的 Kickstart 安裝模式,並在實務上利用 Kickstart 來解決您遇到的
需求。加油!!
26