本章將介紹可用來建立其他自訂 JumpStart 安裝工具的可選功能。
如果您將要安裝 Solaris ZFS 根池,請參閱第 9 章使用 JumpStart 安裝 ZFS 根池,以取得限制和設定檔範例。
本章中的說明適用於那些用做提供自訂 JumpStart 檔案的 SPARC 伺服器或 x 86 伺服器 (稱為設定檔伺服器)。設定檔伺服器可以為不同平台類型提供自訂 JumpStart 檔案。例如,SPARC 伺服器可同時為基於 SPARC 的系統和基於 x86 的系統提供自訂 JumpStart 檔案。
開始程序檔是您在 rules 檔案中指定之使用者定義的 Bourne shell 程序檔。開始程序檔會在 Solaris 軟體安裝到系統上之前執行作業。只有在使用自訂 JumpStart 來安裝 Solaris 軟體時,才能使用開始程序檔。
使用開始程序檔來執行下列其中一項作業:
建立導出設定檔
升級之前先備份檔案
記錄安裝的持續時間
請勿在程序檔中指定某些會造成初始安裝或升級安裝時,檔案系統無法掛載至 /a 的動作。如果 JumpStart 程式無法將檔案系統掛載至 /a,就會發生錯誤,使安裝失敗。
3安裝時,開始程序檔的輸出會存放在 /tmp/begin.log。安裝完畢後,記錄檔會重新導向至 /var/sadm/system/logs/begin.log。
可以在您的開始程序檔中使用自訂 JumpStart 環境變數。如需環境變數的清單,請參閱自訂 JumpStart 環境變數。
將開始程序檔儲存在 JumpStart 目錄中。
若為 Solaris 10 發行版本,媒體上已提供了一個範例 JumpStart 程序檔 set_nfs4_domain,可避免在安裝 JumpStart 時顯示提示。此程序檔會抑制安裝時顯示的 NFSv4 提示。已不再需要這個程序檔,從 Solaris 10 5/09 發行版本開始,請使用 sysidcfg 關鍵字 nfs4_domain 來抑制提示。set_nfs4_domain 程序檔已無法用來抑制提示。
如果您已安裝非全域區域,且 sysidcfg 檔案中存在新的 nfs4_domain 關鍵字,則非全域區域第一次啟動時即會設定網域。否則,Solaris 互動式安裝程式會提示您提供網域名稱,才可以完成啟動程序。
請參閱「Oracle Solaris 10 9/10 安裝指南:網路安裝」中的「nfs4_domain 關鍵字」
衍生設定檔是由開始程序檔在自訂 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 程序檔不會驗證衍生設定檔。
可包含開始程序檔和結束程序檔以追蹤安裝的開始時間和結束時間。請參閱下面的範例。
# more begin-with-date #!/bin/sh # echo echo "Noting time that installation began in /tmp/install-begin-time" echo "Install begin time: `date`" > /tmp/install-begin-time echo cat /tmp/install-begin-time echo # |
# more finish*with*date #!/bin/sh # cp /tmp/install-begin-time /a/var/tmp echo echo "Noting time that installation finished in /a/var/tmp/install-finish-time" echo "Install finish time: `date`" > /a/var/tmp/install-finish-time echo cat /a/var/tmp/install-finish-time # |
開始時間和結束時間都會記錄在 finish.log 檔案中。
結束程序檔是您在 rules 檔案中指定之使用者定義的 Bourne shell 程序檔。結束程序檔在 Solaris 軟體安裝到系統上之後,系統重新啟動之前執行作業。只有在使用自訂 JumpStart 來安裝 Solaris 時,才能使用結束程序檔。
可以使用結束程序檔執行的作業如下:
增加檔案
除了已經安裝在特定軟體群組中的套裝軟體或修補程式以外,還可以增加個別套裝軟體或修補程式
自訂根環境
安裝其他軟體
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
您也可以使用結束程序檔,自訂已安裝在系統上的檔案。例如,範例 4–7 中的結束程序檔會將資訊附加到根 (/) 目錄中的 .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 作業系統之後,您可以使用結束程序檔來安裝其他的軟體。Solaris 安裝程式會在安裝期間提示您輸入相關資訊。若要維護不需使用者參與的安裝,您可以使用 -nodisplay 或 -noconsole 選項執行 Solaris 安裝程式。
表 4–1 Solaris 安裝選項
選項 |
說明 |
---|---|
-nodisplay |
在沒有圖形化使用者介面的情況下執行安裝程式。該安裝若未以 -locales 選項修改過,請使用預設的產品安裝。 |
-noconsole |
在沒有任何互動式文字主控台裝置的情況下執行安裝。搭配 -nodisplay 時,適用於 UNIX 程序檔。 |
如需更多資訊,請參閱「installer(1M) 線上手冊」。
您可以在啟動系統時指定自訂 JumpStart 配置檔的位置,而不是使用 add_install_client 指令來指定這些檔案的位置。但是您只能指定一個檔案的名稱。因此,必須將所有的自訂 JumpStart 配置檔壓縮成一個檔案。
若為基於 SPARC 的系統,請在 boot 指令中指定檔案的位置
若為基於 x86 的系統,請編輯 GRUB 功能表中的 GRUB 項目以指定檔案的位置
壓縮配置檔可以是下列任何一種類型:
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 的格式必須為 cwt xdys2 或 cxdy s2。
磁碟配置檔的名稱。
請確定您是否要在多重磁碟上測試 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 的格式必須為 cwtx dys0 或 c xdys0。
將 prtvtoc(1M) 指令的輸出附加至磁碟配置檔:
# prtvtoc /dev/rdsk/device_name >>disk_config |
系統的磁碟之裝置名稱。device_name 的格式必須為 cwt xdys2 或 cxdy s2。
磁碟配置檔的名稱。
請確定您是否要在多重磁碟上測試 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 |