Anaconda 及 Kickstart 的提示與技巧
欲取得所有文檔,請參閱 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Installation_Guide/ch-kickstart2.html (CentOS 5),https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ch-kickstart2.html (CentOS 6)或 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html (CentOS 7)
1. 調校 %packages 部份
當使用 %packages 來定義哪些套件需要安裝時,有一些比較少記載的選項可供使用:
- --resolvedeps
- 自動排除套件之間的依賴。這個選項在 Centos 5 已經被降級。套件之間的依賴現在每次都會自動被排除。
- --excludedocs
安裝時省略那些被標籤為文檔的檔案(就是那些在執行 rpm -qld <packagename> 時列出來的檔案)
- --nobase
- 安裝時省略 @Base。除非你知道自己在做甚麼,否則這樣做行不通,因為可能會遺漏某些套件是安裝後執行腳本時所需的
- --ignoremissing
- 忽視不存在的套件及群組,而不要詢問處理方法。這個選項在 Centos 5 已經被降級。套件之間的依賴現在每次都會自動被排除。
為 CentOS 4 選取最少套件的範例:
%packages --resolvedeps --excludedocs --nobase kudzu
請留意這樣做會遺漏一些基本的元件。rpm、yum、vim、dhcp-client 及鍵盤佈局都不會存在。Kudzu 是必須的,因為沒有它,安裝程式將無法執行。
為 CentOS 5 選取最少套件的範例:
%packages --excludedocs --nobase @Core
同樣,這樣做只會產生一個非常基本的系統,而大部份你遇期有的功能都不會存在。
CentOS 4 上所指定的 --resolvedeps 已不必在 CentOS 5 或以上的發行版本中採用,因為較新的安裝程式經常會解決依賴關係。
2. 分割磁碟
若果你以一個未分割的磁碟、或虛擬機器上未分割的映像作為起始點,請使用 --initlabel 或 clearpart 參數來確定磁碟標籤會被初始化,否則 Anaconda 會互動地要求你確定建立磁碟標籤。假設你需要清除 xvda 上的所有分割區,並為未存在的磁碟標籤進行初始化,請執行:
clearpart --all --initlabel --drives=xvda
3. 在直正的文字模式執行 anaconda
你很可能已經知道在你的 kickstart 檔內加入 "text" 這一行會令 anaconda 採用 ncurses 介面,而不是 X11 介面。但其實還有另一個可能選擇:就是在真正的文字模式中進行安裝。只要將 kickstart 檔內 "text" 這行以 "cmdline" 取代,anaconda 便會將整個安裝過程在文字模式中進行。尤其是當採用 %packages --nobase 或執行複雜的 %post 腳本時,這樣做會省下很多小時的偵錯時間,因為你可以親眼看見所有在安裝時執行的腳本的輸出。
4. 啟用/停用 firstboot
你們都認識 firstboot,那個在安裝後幫助你設置系統的精靈。你可以在 kickstart 檔內的指命部份加入 "firstboot --enable" 或 "firstboot --disable" 來啟用或停用它。
5. 各個終端機所顯示的內容
- Alt-F1
- 使用 text 或 cmdline 模式安裝時的對話方塊
- Alt-F2
- 指命殼的提示符號
- Alt-F3
- 安裝程式所輸出的安裝日誌
- Alt-F4
- 內核及其它程式所輸出的系統日誌
- Alt-F5
- 其它信息
- Alt-F7
- 使用圖像介面安裝時的對話方塊
6. 記錄 %pre 及 %post
當使用 %pre 或 %post 腳本時,你可以輕易地用 --log=/path/to/file 將輸出記錄在一個檔案內
%post --log=/root/my-post-log echo 'Hello, World!'
下面是另一個同時記錄輸出並將它顯示在畫面上的方法:
%post exec < /dev/tty3 > /dev/tty3 chvt 3 echo echo "################################" echo "# Running Post Configuration #" echo "################################" ( echo 'Hello, World!' ) 2>&1 | /usr/bin/tee /var/log/post_install.log chvt 1
7. 為防火牆設定多個信任的介面
你可以在防火牆的選項中多次加入 --trust 選項來信任多個介面:
# 啟用 firewall,打開 ssh 連接埠,並信任 eth1 及 eth2 firewall --enable --ssh --trust=eth1 --trust=eth2
8. 令 kickstart 使用指定的網絡介面
當你的系統擁有多過一個的網絡介面時,anaconda 會詢問你要 kickstart 使用哪一個。這個決定可以在開機透過加入 ksdevice 參數來設定。要以 eth0 來進行 kickstart,你只須在內核指命行內加入 ksdevice=eth0。
第二個方法是指定 ksdevice=link。這樣,anaconda 就會採用第一個穫得有效連線的介面。
第三個方法在 PXE 模式的安裝下生效。你須要在 PXE 設定檔內加入 IPAPPEND 2 及指定 ksdevice=bootif。這樣,anaconda 就會採用 PXE 啟動時使用的介面(這未必等同第一個穫得有效連線的介面)。
在 kickstart 設定檔內,你亦需要用 network 語句來定義網絡介面。假若你採用第二個或第三個方法,你便無法預知哪個介面會被使用。若果你在 network 語句中沒有指定一個介面,anaconda 將會按照 network 語句內的定義來設置 kickstart 所使用的儀器。
9. 強迫 kickstart 詢問網絡設置
由 CentOS 5 起,有一個未被記載的選項可以在安裝過程啟用網絡設置的提示。在 network 語句內,為 --bootproto= 這個選項放入 query 關鍵字,如下:
network --device=eth0 --bootproto=query
這樣一個對話方塊便會出現,詢問有關 IP 位址及主機名稱的設定。
10. 有用的現成 kickstart 檔
你可以在 https://github.com/CentOS/Community-Kickstarts 找到一堆現成的 kickstart 檔。它們的首要目的是為社群提供一些針對不同部署類型的 kickstart 範例。
Translation of revision 29