本章將介紹可用來建立其他自訂 JumpStart 安裝工具的可選功能。
本章的說明適用於要用來提供自訂 JumpStart 檔案的 SPARC 伺服器或 x86 伺服器,這些伺服器又稱為設定檔伺服器。設定檔伺服器可以為不同平台類型提供自訂 JumpStart 檔案。例如,SPARC 伺服器可同時為 SPARC 系統和 x86 系統提供自訂 JumpStart 檔案。
開始程序檔是您在 rules 檔案中所指定的使用者定義 Bourne shell 程序檔。開始程序檔會在 Solaris 軟體安裝到系統上之前執行作業。只有在使用自訂 JumpStart 來安裝 Solaris 軟體時,才能使用開始程序檔。
使用開始程序檔來執行下列其中一項作業:
建立導出設定檔
升級之前先備份檔案
請勿在程序檔中做任何指定,如此有可能會在初始安裝或升級安裝中,讓檔案系統無法掛載到 /a 上。如果 JumpStart 程式無法將檔案系統掛載到 /a 上,就會發生錯誤,使安裝失敗。
在安裝期間,開始程序檔的輸出會儲存在 /tmp/begin.log 中。安裝完畢後,記錄檔會重新導向至 /var/sadm/system/logs/begin.log。
可以在您的開始程序檔中使用自訂 JumpStart 環境變數。如需環境變數清單,請參閱自訂 JumpStart 環境變數。
將開始程序檔儲存在 JumpStart 目錄中。
衍生設定檔是在自訂 JumpStart 安裝期間,由開始程序檔動態建立的設定檔。當您無法設定 rules 檔案,以比對特定系統和設定檔時,就需要使用衍生設定檔。例如,您可能需要使用具有不同硬體元件的相同系統模型 (如包含不同框架緩衝區的系統) 所衍生的設定檔。
若要設定使用衍生設定檔的規則,必須執行下列作業:
當系統符合某項規則,並且設定檔欄位中為等號 (=) 時,開始程序檔將建立用於在系統上安裝 Solaris 軟體的衍生設定檔。
以下是一個開始程序檔的範例,它每次都建立相同的衍生設定檔。您可以撰寫一個開始程序檔,以依據規則的評估來建立其他衍生設定檔。
#!/bin/sh echo "install_type initial_install" > ${SI_PROFILE} echo "system_type standalone" >> ${SI_PROFILE} echo "partitioning default" >> ${SI_PROFILE} echo "cluster SUNWCprog" >> ${SI_PROFILE} echo "package SUNWman delete" >> ${SI_PROFILE} echo "package SUNWolman delete" >> ${SI_PROFILE} echo "package SUNWxwman delete" >> ${SI_PROFILE} |
在範例中,開始程序檔必須使用 SI_PROFILE 環境變數作為衍生設定檔的名稱,預設會設定成 /tmp/install.input。
如果使用開始程序檔建立衍生設定檔,請確定程序檔沒有任何錯誤。check 程序檔不會檢驗衍生設定檔,因為衍生程序檔要到開始程序檔執行時才會建立。
結束程序檔是您在 rules 檔案中指定的使用者定義 Bourne shell 程序檔。結束程序檔在 Solaris 軟體安裝到系統上之後,系統重新啟動之前執行作業。只有在使用自訂 JumpStart 來安裝 Solaris 時,才能使用結束程序檔。
可以使用結束程序檔執行的作業如下:
增加檔案
除了已經安裝在特定軟體群組中的套裝軟體或修補程式以外,還可以增加個別套裝軟體或修補程式
自訂根環境
設定系統的 Root 密碼
安裝其他軟體
Solaris 安裝程式會在 /a 掛載系統的檔案系統。檔案系統仍然掛載於 /a 上,直到您重新啟動系統為止。您可以藉由修改對應於 /a 的檔案系統,使用結束程序檔,在新安裝的檔案系統階層中增加、變更或移除檔案。
在安裝期間,結束程序檔的輸出會儲存在 /tmp/finish.log 中。安裝完畢後,記錄檔會重新導向至 /var/sadm/system/logs/finish.log。
您可以在結束程序檔中使用自訂 JumpStart 環境變數。如需環境變數清單,請參閱自訂 JumpStart 環境變數。
將結束程序檔儲存在 JumpStart 目錄中。
您可以透過程序檔,將 JumpStart 目錄的檔案增加到已經安裝的系統。您可以增加檔案,因為 JumpStart 目錄掛載在變數 SI_CONFIG_DIR 所指定的目錄上。依預設,該目錄設定為 /tmp/install_config。
也可以將檔案從 JumpStart 目錄複製至已安裝系統上的現有檔案,從而取代檔案。
例如,假定您有一個特殊的應用程式 site_prog ,是專為您站點上的所有使用者開發的。如果您將一份 site_prog 放入 JumpStart 目錄中,下面這行結束程序檔的內容就會將 site_prog 從 JumpStart 目錄複製到系統的 /usr/bin 目錄:
cp ${SI_CONFIG_DIR}/site_prog /a/usr/bin |
您可以建立一個結束程序檔,以在系統安裝了 Solaris 軟體之後,自動增加套裝軟體或修補程式。藉由使用結束程序檔來增加套裝軟體,可以減少所需時間,並確保在您站點的不同系統上安裝的套裝軟體和修補程式一致。
當您使用結束程序檔中的 pkgadd(1M) 或 patchadd(1M) 指令時,請使用 -R 選項指定 /a 做為根路徑。
#!/bin/sh BASE=/a MNT=/a/mnt ADMIN_FILE=/a/tmp/admin mkdir ${MNT} mount -f nfs sherlock:/export/package ${MNT} cat >${ADMIN_FILE} <<DONT_ASK mail=root instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck rdepend=nocheck space=ask setuid=nocheck conflict=nocheck action=nocheck basedir=default DONT_ASK /usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz umount ${MNT} rmdir ${MNT} |
下面將描述此範例中的一些指令。
以下指令在伺服器上掛載包含要安裝的套裝軟體的目錄。
mount -f nfs sherlock:/export/package ${MNT} |
下列指令會建立臨時套裝軟體管理檔 admin,以強制 pkgadd(1M) 指令在安裝套裝軟體時,不執行檢查或提示問題。增加套裝軟體時,使用臨時套裝軟體管理檔,不需要您的參與便可完成安裝。
cat >${ADMIN_FILE} <<DONT_ASK |
下列 pkgadd 指令會使用 -a 選項指定套裝軟體管理檔,並使用 -R 選項指定根路徑,進而增加套裝軟體。
/usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz |
#!/bin/sh ######## # # USER-CONFIGURABLE OPTIONS # ######## # The location of the patches to add to the system after it's installed. # The OS rev (5.x) and the architecture (`mach`) will be added to the # root. For example, /foo on a 8 SPARC would turn into /foo/5.8/sparc LUPATCHHOST=ins3525-svr LUPATCHPATHROOT=/export/solaris/patchdb ######### # # NO USER-SERVICEABLE PARTS PAST THIS POINT # ######### BASEDIR=/a # Figure out the source and target OS versions echo Determining OS revisions... SRCREV=`uname -r` echo Source $SRCREV LUPATCHPATH=$LUPATCHPATHROOT/$SRCREV/`mach` # # Add the patches needed # echo Adding OS patches mount $LUPATCHHOST:$LUPATCHPATH /mnt >/dev/null 2>&1 if [ $? = 0 ] ; then for patch in `cat /mnt/*Recommended/patch_order` ; do (cd /mnt/*Recommended/$patch ; echo yes | patchadd -u -d -R $BASEDIR .) done cd /tmp umount /mnt else echo "No patches found" if |
在過去,chroot(1M) 指令和結束程序檔環境中的 pkgadd 與 patchadd 指令搭配使用。只有在很少數的情況下,某些套裝軟體或修補程式才不使用 -R 選項。您必須在 /a 根目錄中建立一個虛擬 /etc/mnttab 根目錄,然後再發出 chroot 指令。
若要建立虛擬 /etc/mnttab 檔案,請將下行增加到結束程序檔:
cp /etc/mnttab /a/etc/mnttab
您也可以使用結束程序檔,自訂已安裝在系統上的檔案。例如,範例 7–5 中的結束程序檔會將資訊附加到根 (/) 目錄中的 .cshrc 檔案,以自訂根環境。
#!/bin/sh # # Customize root's environment # echo "***adding customizations in /.cshrc" test -f a/.cshrc || { cat >> a/.cshrc <<EOF set history=100 savehist=200 filec ignoreeof prompt="\$user@`uname -n`> " alias cp cp -i alias mv mv -i alias rm rm -i alias ls ls -FC alias h history alias c clear unset autologout EOF } |
Solaris 軟體在系統上安裝完畢後,系統會重新啟動。在啟動程序完成前,系統會提示您輸入 Root 密碼。除非鍵入密碼,否則系統無法完成啟動。
名為 set_root_pw 的結束程序檔會儲存在 auto_install_sample 目錄中。結束程序檔顯示如何在不進行提示的情況下,自動設定 Root 密碼。範例 7–6 中會顯示 set_root_pw。
如果使用結束程序檔設定系統的 Root 密碼,使用者可能會企圖在結束程序檔中從加密的密碼找出 Root 密碼。請確保您可以防止使用者嘗試確定 Root 密碼。
#!/bin/sh # # @(#)set_root_pw 1.4 93/12/23 SMI # # This is an example Bourne shell script to be run after installation. # It sets the system's root password to the entry defined in PASSWD. # The encrypted password is obtained from an existing root password entry # in /etc/shadow from an installed machine. echo "setting password for root" # set the root password PASSWD=dKO5IBkSF42lw #create a temporary input file cp /a/etc/shadow /a/etc/shadow.orig mv /a/etc/shadow /a/etc/shadow.orig nawk -F: '{ if ( $1 == "root" ) printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,passwd,$3,$4,$5,$6,$7,$8,$9 else printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9 }' passwd="$PASSWD" /a/etc/shadow.orig > /a/etc/shadow #remove the temporary file rm -f /a/etc/shadow.orig # set the flag so sysidroot won't prompt for the root password sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ mv /tmp/state.$$ ${SI_SYS_STATE} |
下面將描述此範例中的一些指令。
以下指令將變數 PASSWD 設定為加密的 Root 密碼,該密碼取自系統的 /etc/shadow 檔案中現有的項目。
#create a temporary input file |
以下指令建立 /a/etc/shadow 的臨時輸入檔案。
cp /a/etc/shadow /a/etc/shadow.orig |
以下指令使用 $PASSWD 做為密碼欄位,對新安裝的系統變更 /etc/shadow 檔案中的 root 項目。
if ( $1 == "root" ) |
以下指令移除臨時 /a/etc/shadow 檔案。
rm -f /a/etc/shadow.orig |
以下指令在狀態檔中將項目由 0 變更為 1,這樣系統就不會提示使用者輸入 Root 密碼。狀態檔是使用變數 SI_SYS_STATE 進行存取的,該變數目前的值為 /a/etc/.sysIDtool.state。若要避免因值變更而發生的程序檔問題,請一律使用 $SI_SYS_STATE 來參考此檔案。此處顯示的 sed 指令在 0 和 1 之後各增加一個跳格字元。
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ |
安裝 Solaris 作業系統之後,您可以使用結束程序檔來安裝其他的軟體。Solaris 安裝程式會在安裝期間提示您輸入相關資訊。若要維護不需使用者參與的安裝,您可以使用 -nodisplay 或 -noconsole 選項執行 Solaris 安裝程式。
表 7–1 Solaris 安裝選項
選項 |
描述 |
---|---|
-nodisplay |
在沒有圖形化使用者介面的情況下執行安裝程式。使用預設的產品安裝,除非該安裝由 -locales 選項修改過。 |
-noconsole |
在沒有任何互動式文字主控台裝置的情況下執行安裝。搭配 -nodisplay 時,適用於 UNIX 程序檔。 |
如需詳細資訊,請參閱「installer(1M) 線上手冊」。
您可以在啟動系統時指定自訂 JumpStart 配置檔的位置,而不是使用 add_install_client 指令來指定這些檔案的位置。但是您只能指定一個檔案的名稱。因此,必須將所有的自訂 JumpStart 配置檔壓縮成一個檔案。
若為 SPARC 系統,請在 boot 指令中指定檔案的位置
若為 x86 系統:
從 Solaris 10 1/06 發行版本開始,您可以編輯 GRUB 功能表中的 GRUB 項目,以指定檔案的位置
若為 Solaris 10 3/05 發行版本,請在 boot 指令中指定檔案的位置
壓縮配置檔可以是下列任何一種類型:
tar
壓縮的 tar
zip
bzip tar
將該目錄變更為設定檔伺服器上的 JumpStart 目錄。
# cd jumpstart_dir_path |
請使用壓縮工具,將自訂 JumpStart 配置檔壓縮成一個檔案。
壓縮配置檔不能包含相對路徑。自訂 JumpStart 配置檔必須與壓縮檔案位於同一目錄中。
壓縮配置檔必須包含下列檔案:
設定檔
rules
rules.ok
還可以將 sysidcfg 檔案納入壓縮配置檔中。
將壓縮配置檔儲存在 NFS 伺服器、HTTP 伺服器或本機硬碟上。
以下範例顯示了使用 tar 指令建立壓縮配置檔的方法,該配置檔名為 config.tar。自訂 JumpStart 配置檔位於 /jumpstart 目錄中。
# cd /jumpstart # tar -cvf config.tar * a profile 1K a rules 1K a rules.ok 1K a sysidcfg 1K |
本節旨在說明如何建立單一磁碟配置檔和多重磁碟配置檔。磁碟配置檔可讓您從單一系統使用 pfinstall(1M),以測試不同磁碟配置的設定檔。
成為超級使用者,或者假定一個對等身份。
身份包含授權指令與特權指令。如需有關角色的更多資訊,請參閱「System Administration Guide: Security Services」中的「Configuring RBAC (Task Map)」。
藉由將 prtvtoc(1M) 指令的輸出重新導向到檔案,即可建立單一磁碟配置檔案。
# prtvtoc /dev/rdsk/device_name >disk_config_file |
系統的磁碟之裝置名稱。device_name 的格式必須為 cwtxdys2 或 cxdys2。
磁碟配置檔的名稱。
請確定您是否要在多重磁碟上測試 Solaris 軟體的安裝。
如果選擇否,則停止,並結束程序。
如果選擇是,請串連單一磁碟配置檔,然後將輸出結果儲存在新的檔案中。
# cat disk_file1 disk_file2 >multi_disk_config |
新檔案會成為多重磁碟配置檔,如以下範例所示。
# cat 104_disk2 104_disk3 104_disk5 >multi_disk_test |
請確定磁碟裝置名稱中的目標編號在前一步所建立的多重磁碟配置檔中是否為唯一編號。
下列範例顯示如何在具有 104 MB 磁碟的 SPARC 系統上建立單一磁碟配置檔 104_test。
將 prtvtoc 指令的輸出結果重新導向名為 104_test 的單一磁碟配置檔。
# prtvtoc /dev/rdsk/c0t3d0s2 >104_test |
104_test 檔案的內容就像下面這樣:
* /dev/rdsk/c0t3d0s2 partition map * * Dimensions: * 512 bytes/sector * 72 sectors/track * 14 tracks/cylinder * 1008 sectors/cylinder * 2038 cylinders* 2036 accessible cylinders * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 1 2 00 0 164304 164303 / 2 5 00 0 2052288 2052287 3 0 00 164304 823536 987839 /disk2/b298 5 0 00 987840 614880 1602719 /install/298/sparc/work 7 0 00 1602720 449568 2052287 /space |
您已經為 SPARC 系統建立磁碟配置檔。測試設定檔包含使用磁碟配置檔案測試設定檔的相關資訊。
成為超級使用者,或者假定一個對等身份。
身份包含授權指令與特權指令。如需有關角色的更多資訊,請參閱「System Administration Guide: Security Services」中的「Configuring RBAC (Task Map)」。
藉由將 fdisk(1M) 指令的輸出結果儲存至檔案,即可建立單一磁碟配置檔案的部分內容。
# fdisk -R -W disk_config_file -h /dev/rdsk/device_name |
磁碟配置檔的名稱。
整個磁碟的 fdisk 配置之裝置名稱。device_name 的格式必須為 cwtxdys0 或 cxdys0。
將 prtvtoc(1M) 指令的輸出結果附加到磁碟配置檔案:
# prtvtoc /dev/rdsk/device_name >>disk_config |
系統的磁碟之裝置名稱。device_name 的格式必須為 cwtxdys2 或 cxdys2。
磁碟配置檔的名稱。
請確定您是否要在多重磁碟上測試 Solaris 軟體的安裝。
如果選擇否,則停止,並結束程序。
如果選擇是,請串連單一磁碟配置檔,然後將輸出結果儲存在新的檔案中。
# cat disk_file1 disk_file2 >multi_disk_config |
新檔案會成為多重磁碟配置檔,如以下範例所示。
# cat 104_disk2 104_disk3 104_disk5 >multi_disk_test |
請確定磁碟裝置名稱中的目標編號在前一步所建立的多重磁碟配置檔中是否為唯一編號。
以下範例顯示如何在具有 500 MB 磁碟的 x86 系統上建立單一磁碟配置檔 500_test。
首先,您必須先將 fdisk 指令的輸出結果儲存到一個名為 500_test 的檔案中:
# fdisk -R -W 500_test -h /dev/rdsk/c0t0d0p0 |
500_test 檔案如下所示:
* /dev/rdsk/c0t0d0p0 default fdisk table * Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * HBA Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * systid: * 1: DOSOS12 * 2: PCIXOS * 4: DOSOS16 * 5: EXTDOS * 6: DOSBIG * 86: DOSDATA * 98: OTHEROS * 99: UNIXOS * 130: SUNIXOS * * Id Act Bhead Bsect Bcyl Ehead Esect Ecyl Rsect Numsect 130 128 44 3 0 46 30 1001 1410 2050140 |
然後,將 prtvtoc 指令的輸出結果附加到 500_test 檔案:
# prtvtoc /dev/rdsk/c0t0d0s2 >>500_test |
現在,500_test 檔案是一個完整的磁碟配置檔:
* /dev/rdsk/c0t0d0p0 default fdisk table * Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * HBA Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * systid: * 1: DOSOS12 * 2: PCIXOS * 4: DOSOS16 * 5: EXTDOS * 6: DOSBIG * 86: DOSDATA * 98: OTHEROS * 99: UNIXOS * 130: SUNIXOS * * Id Act Bhead Bsect Bcyl Ehead Esec Ecyl Rsect Numsect 130 128 44 3 0 46 30 1001 1410 2050140 * /dev/rdsk/c0t0d0s2 partition map * * Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1110 sectors/cylinder * 1454 cylinders * 1452 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 2 5 01 1410 2045910 2047319 7 6 00 4230 2043090 2047319 /space 8 1 01 0 1410 1409 9 9 01 1410 2820 422987 |
您已經為基於 x86 的系統建立了磁碟配置檔。測試設定檔包含使用磁碟配置檔測試設定檔的相關資訊。
您還可以使用開始程序檔和結束程序檔來建立您自己的安裝程式,以安裝 Solaris 軟體。
當您在設定檔欄位中指定負號 (-) 時,會由開始和結束程序檔來控制 Solaris 軟體在系統上的安裝方式,而不是由設定檔和 Solaris 安裝程式來控制。
例如,如果下列規則符合某個系統,x_install.beg 開始程序檔和 x_install.fin 結束程序檔就會將 Solaris 軟體安裝在名為 clover 的系統上:
hostname clover x_install.beg - x_install.fin |