Kickstart 是 Red Hat 系發行版實現無人值守自動化安裝的核心技術。透過預先編寫 ks.cfg 回答安裝程式所有互動問題(語言、鍵盤、分區、套件、網路、Root 密碼等),配合 PXE/光碟/USB 啟動,即可實現「插上電源、喝杯咖啡、系統裝好」的批量部署。本文深度解析 Anaconda 安裝流程、Kickstart 三大段落語法、圖形化生成工具、引導參數傳遞及 FTP 自動安裝完整流程。
isolinux/grub.conf 定義選單)isolinux.bin + isolinux.cfg) → 載入 vmlinuz + initrd.imgks.cfg → 自動化安裝(無互動)關鍵:在啟動選單(第 2 步)透過 Kernel 參數指定 ks= 位置,Anaconda 即會自動套用。
從檔案開頭至 %packages 之前。定義安裝全域參數:
# 安裝來源
url --url=ftp://1.0.0.12/centos/
# 或 cdrom
# Root 密碼(加密)
rootpw --iscrypted $1$dpCtQEn6$pC3UGFPZEJJ5nVftiaScq0
# 網路與防火牆
network --bootproto=static --device=eth0 --ip=1.0.0.7 --netmask=255.0.0.0 --onboot=on
firewall --disabled
# 語言、鍵盤、時區
lang zh_CN
keyboard us
timezone Asia/Shanghai
# SELinux、開機載入器、磁碟分區
selinux --disabled
bootloader --location=mbr --driveorder=sda
zerombr
clearpart --all --initlabel
part /boot --fstype=ext4 --size=100 --asprimary
part / --fstype=ext4 --size=20480 --asprimary --grow
part swap --fstype=swap --size=500 --asprimary
# 安裝完成動作
reboot
%packages --resolvedeps
@base
@core
@chinese-support
@desktop-platform
vim-enhanced
git
%end
@Group:安裝整個套件群組。pkg-name:指定單一套件。-pkg:排除套件。--resolvedeps:自動解決相依。%post --interpreter=/bin/bash
# 安裝後在目標系統內執行(chroot 環境)
echo "nameserver 192.168.0.254" >> /etc/resolv.conf
useradd -m admin
echo "admin:P@ssw0rd" | chpasswd
%end
%pre:安裝前(運行於安裝環境,可偵測硬體動態決定分區)。%post:安裝後(運行於目標系統,配置服務、建立用戶、下載額外套件)。yum install system-config-kickstart
system-config-kickstart &
GUI 介面分頁對應上述三段落,生成 ks.cfg 後可用 ksvalidator ks.cfg 驗證語法。
在啟動選單按 Esc 進入命令列模式:
linux ks=ftp://1.0.0.12/pub/ks.cfg ip=1.0.0.7 netmask=255.0.0.0
支援協議:cdrom、http、ftp、nfs、file、hd:partition。
/var/ftp/pub/centos/ → 啟用 vsftpd。/var/ftp/pub/ks.cfg。isolinux/ 目錄燒錄啟動碟/USB。linux ks=ftp://server/pub/ks.cfg → 全自動安裝。part / --size=1 --grow 避免固定大小導致空間浪費。%post 網路未就緒:加 --nochroot 在安裝環境執行,或在腳本開頭 sleep 10; dhclient。driverdisk 指定驅動磁碟,或 kernel --driverload。ksvalidator 測試。