Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

32.6. 前置安裝 Script

在剖析 ks.cfg 之後,您可以馬上在系統上新增指令並執行。您必須在 kickstart 檔案(指令之後)的最後,並且與 %pre 指令一同啟始、%end 結束(如〈節 32.4, “Kickstart 的選項”〉所述)。如果您的 kickstart 檔案也包括了 %post 一節,那麼 %pre%post 的順序就無關宏旨。
您可以在 %pre 部份中存取網路;然而,由於此時尚未設定 name service,因此您只能輸入 IP 位址。

注意

前置安裝 script 不會在更改 root 目錄的環境下(chroot)執行。
--interpreter /usr/bin/python
您可以指定一個不同的 script 語言,例如 Python。請以您所希望使用的 script 語言取代 /usr/bin/python

32.6.1. 前置安裝 script 的範例

以下是 %pre 一節的範例:
%pre
#!/bin/sh
hds=""
mymedia=""
for file in /proc/ide/h* do
	mymedia=`cat $file/media`
	if [ $mymedia == "disk" ] ; then
		hds="$hds `basename $file`"
	fi
done
set $hds
numhd=`echo $#`
drive1=`echo $hds | cut -d' ' -f1`
drive2=`echo $hds | cut -d' ' -f2`
#Write out partition scheme based on whether there are 1 or 2 hard drives
if [ $numhd == "2" ] ; then
	#2 drives
	echo "#partitioning scheme generated in %pre for 2 drives" > /tmp/part-include
	echo "clearpart --all" >> /tmp/part-include
	echo "zerombr" >> /tmp/part-include
	echo "part /boot --fstype ext3 --size 75 --ondisk hda" >> /tmp/part-include
	echo "part / --fstype ext3 --size 1 --grow --ondisk hda" >> /tmp/part-include
	echo "part swap --recommended --ondisk $drive1" >> /tmp/part-include
	echo "part /home --fstype ext3 --size 1 --grow --ondisk hdb" >> /tmp/part-include
else
	#1 drive
	echo "#partitioning scheme generated in %pre for 1 drive" > /tmp/part-include
	echo "clearpart --all" >> /tmp/part-include
	echo "part /boot --fstype ext3 --size 75" >> /tmp/part-include
	echo "part swap --recommended" >> /tmp/part-include
	echo "part / --fstype ext3 --size 2048" >> /tmp/part-include
	echo "part /home --fstype ext3 --size 2048 --grow" >> /tmp/part-include
fi
%end
此 script 會決定系統上的硬碟數量,並以不同的磁碟分割機制來寫入一個文字檔案(取決於有一個還是兩個硬碟)。您可以不用在 kickstart 檔案中指定一組磁碟分割指令,只需要將以下這行加入即可:
%include /tmp/part-include
使用了在 script 中所選的分割指令。

注意

kickstart 的前置安裝 script 無法管理多重安裝樹或來源媒介。這項資訊必須包括在每個已建立的 ks.cfg 檔案中,因為前置安裝 script 會在安裝過程中的第二階段出現。