Solaris 10 安裝指南:自訂 JumpStart 及進階安裝

第 7 章 使用可選的自訂 JumpStart 功能 (作業)

本章將介紹可用來建立其他自訂 JumpStart 安裝工具的可選功能。


備註 –

本章的說明適用於要用來提供自訂 JumpStart 檔案的 SPARC 伺服器或 x86 伺服器,這些伺服器又稱為設定檔伺服器。設定檔伺服器可以為不同平台類型提供自訂 JumpStart 檔案。例如,SPARC 伺服器可同時為 SPARC 系統和 x86 系統提供自訂 JumpStart 檔案。


建立開始程序檔

開始程序檔是您在 rules 檔案中所指定的使用者定義 Bourne shell 程序檔。開始程序檔會在 Solaris 軟體安裝到系統上之前執行作業。只有在使用自訂 JumpStart 來安裝 Solaris 軟體時,才能使用開始程序檔。

使用開始程序檔來執行下列其中一項作業:

有關開始程序檔的重要資訊

使用開始程序檔建立衍生設定檔

衍生設定檔是在自訂 JumpStart 安裝期間,由開始程序檔動態建立的設定檔。當您無法設定 rules 檔案,以比對特定系統和設定檔時,就需要使用衍生設定檔。例如,您可能需要使用具有不同硬體元件的相同系統模型 (如包含不同框架緩衝區的系統) 所衍生的設定檔。

若要設定使用衍生設定檔的規則,必須執行下列作業:

當系統符合某項規則,並且設定檔欄位中為等號 (=) 時,開始程序檔將建立用於在系統上安裝 Solaris 軟體的衍生設定檔。

以下是一個開始程序檔的範例,它每次都建立相同的衍生設定檔。您可以撰寫一個開始程序檔,以依據規則的評估來建立其他衍生設定檔。


範例 7–1 建立衍生設定檔的開始程序檔

#!/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 時,才能使用結束程序檔。

可以使用結束程序檔執行的作業如下:

有關結束程序檔的重要資訊

Procedure使用結束程序檔增加檔案

您可以透過程序檔,將 JumpStart 目錄的檔案增加到已經安裝的系統。您可以增加檔案,因為 JumpStart 目錄掛載在變數 SI_CONFIG_DIR 所指定的目錄上。依預設,該目錄設定為 /tmp/install_config


備註 –

也可以將檔案從 JumpStart 目錄複製至已安裝系統上的現有檔案,從而取代檔案。


步驟
  1. 將所有增加到已安裝系統的檔案複製到 JumpStart 目錄中。

  2. 請將下行插入您想要複製至新安裝的檔案系統階層結構的每個檔案之結束程序檔中:

    cp ${SI_CONFIG_DIR}/file_name /a/path_name
    

範例 7–2 使用結束程序檔增加檔案

例如,假定您有一個特殊的應用程式 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 做為根路徑。


範例 7–3 使用結束程序檔增加套裝軟體

  #!/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}

下面將描述此範例中的一些指令。



範例 7–4 使用結束程序檔增加修補程式

 #!/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) 指令和結束程序檔環境中的 pkgaddpatchadd 指令搭配使用。只有在很少數的情況下,某些套裝軟體或修補程式才不使用 -R 選項。您必須在 /a 根目錄中建立一個虛擬 /etc/mnttab 根目錄,然後再發出 chroot 指令。

若要建立虛擬 /etc/mnttab 檔案,請將下行增加到結束程序檔:

cp /etc/mnttab /a/etc/mnttab

使用結束程序檔自訂根環境

您也可以使用結束程序檔,自訂已安裝在系統上的檔案。例如,範例 7–5 中的結束程序檔會將資訊附加到根 (/) 目錄中的 .cshrc 檔案,以自訂根環境。


範例 7–5 使用結束程序檔自訂根環境

#!/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
}

使用結束程序檔設定系統的 Root 密碼

Solaris 軟體在系統上安裝完畢後,系統會重新啟動。在啟動程序完成前,系統會提示您輸入 Root 密碼。除非鍵入密碼,否則系統無法完成啟動。

名為 set_root_pw 的結束程序檔會儲存在 auto_install_sample 目錄中。結束程序檔顯示如何在不進行提示的情況下,自動設定 Root 密碼。範例 7–6 中會顯示 set_root_pw


備註 –

如果使用結束程序檔設定系統的 Root 密碼,使用者可能會企圖在結束程序檔中從加密的密碼找出 Root 密碼。請確保您可以防止使用者嘗試確定 Root 密碼。



範例 7–6 使用結束程序檔設定系統的 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}

下面將描述此範例中的一些指令。


使用結束程序檔的非互動式安裝

安裝 Solaris 作業系統之後,您可以使用結束程序檔來安裝其他的軟體。Solaris 安裝程式會在安裝期間提示您輸入相關資訊。若要維護不需使用者參與的安裝,您可以使用 -nodisplay-noconsole 選項執行 Solaris 安裝程式。

表 7–1 Solaris 安裝選項

選項 

描述 

-nodisplay

在沒有圖形化使用者介面的情況下執行安裝程式。使用預設的產品安裝,除非該安裝由 -locales 選項修改過。

-noconsole

在沒有任何互動式文字主控台裝置的情況下執行安裝。搭配 -nodisplay 時,適用於 UNIX 程序檔。

如需詳細資訊,請參閱「installer(1M) 線上手冊」。

建立壓縮配置檔

您可以在啟動系統時指定自訂 JumpStart 配置檔的位置,而不是使用 add_install_client 指令來指定這些檔案的位置。但是您只能指定一個檔案的名稱。因此,必須將所有的自訂 JumpStart 配置檔壓縮成一個檔案。

壓縮配置檔可以是下列任何一種類型:

Procedure建立壓縮配置檔

步驟
  1. 將該目錄變更為設定檔伺服器上的 JumpStart 目錄。


    # cd jumpstart_dir_path
    
  2. 請使用壓縮工具,將自訂 JumpStart 配置檔壓縮成一個檔案。


    備註 –

    壓縮配置檔不能包含相對路徑。自訂 JumpStart 配置檔必須與壓縮檔案位於同一目錄中。


    壓縮配置檔必須包含下列檔案:

    • 設定檔

    • rules

    • rules.ok

    還可以將 sysidcfg 檔案納入壓縮配置檔中。

  3. 將壓縮配置檔儲存在 NFS 伺服器、HTTP 伺服器或本機硬碟上。

壓縮配置檔範例

以下範例顯示了使用 tar 指令建立壓縮配置檔的方法,該配置檔名為 config.tar。自訂 JumpStart 配置檔位於 /jumpstart 目錄中。


範例 7–7 建立壓縮配置檔


# cd /jumpstart
# tar -cvf config.tar *
a profile 1K
a rules 1K
a rules.ok 1K
a sysidcfg 1K

建立磁碟配置檔

本節旨在說明如何建立單一磁碟配置檔和多重磁碟配置檔。磁碟配置檔可讓您從單一系統使用 pfinstall(1M),以測試不同磁碟配置的設定檔。

ProcedureSPARC: 建立磁碟配置檔

步驟
  1. 尋找具有您要測試之磁碟的 SPARC 系統。

  2. 成為超級使用者,或者假定一個對等身份。

    身份包含授權指令與特權指令。如需有關角色的更多資訊,請參閱「System Administration Guide: Security Services」中的「Configuring RBAC (Task Map)」

  3. 藉由將 prtvtoc(1M) 指令的輸出重新導向到檔案,即可建立單一磁碟配置檔案。


    # prtvtoc /dev/rdsk/device_name >disk_config_file
    
    /dev/rdsk/device_name

    系統的磁碟之裝置名稱。device_name 的格式必須為 cwtxdys2cxdys2

    disk_config_file

    磁碟配置檔的名稱。

  4. 請確定您是否要在多重磁碟上測試 Solaris 軟體的安裝。

    • 如果選擇否,則停止,並結束程序。

    • 如果選擇是,請串連單一磁碟配置檔,然後將輸出結果儲存在新的檔案中。


      # cat disk_file1 disk_file2 >multi_disk_config
      

      新檔案會成為多重磁碟配置檔,如以下範例所示。


      # cat 104_disk2 104_disk3 104_disk5 >multi_disk_test
      
  5. 請確定磁碟裝置名稱中的目標編號在前一步所建立的多重磁碟配置檔中是否為唯一編號。

    • 如果是,則停止,並結束程序。

    • 如果否,請使用文字編輯程式開啟檔案,然後使磁碟裝置名稱中的目標編號成為唯一編號。

      例如,假設檔案中不同磁碟裝置名稱的目標編號相同,都為 t0,如此處所示:

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t0d0s2 partition map

      將第二個目標編號變更為 t2,如此處所示:

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t2d0s2 partition map

SPARC: 磁碟配置檔範例

下列範例顯示如何在具有 104 MB 磁碟的 SPARC 系統上建立單一磁碟配置檔 104_test


範例 7–8 SPARC: 建立磁碟配置檔

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 系統建立磁碟配置檔。測試設定檔包含使用磁碟配置檔案測試設定檔的相關資訊。


Procedurex86: 建立磁碟配置檔

步驟
  1. 尋找包含您要測試之磁碟的 x86 系統。

  2. 成為超級使用者,或者假定一個對等身份。

    身份包含授權指令與特權指令。如需有關角色的更多資訊,請參閱「System Administration Guide: Security Services」中的「Configuring RBAC (Task Map)」

  3. 藉由將 fdisk(1M) 指令的輸出結果儲存至檔案,即可建立單一磁碟配置檔案的部分內容。


    # fdisk -R -W disk_config_file -h /dev/rdsk/device_name
    
    disk_config_file

    磁碟配置檔的名稱。

    /dev/rdsk/device_name

    整個磁碟的 fdisk 配置之裝置名稱。device_name 的格式必須為 cwtxdys0cxdys0

  4. prtvtoc(1M) 指令的輸出結果附加到磁碟配置檔案:


    # prtvtoc /dev/rdsk/device_name >>disk_config
    
    /dev/rdsk/device_name

    系統的磁碟之裝置名稱。device_name 的格式必須為 cwtxdys2cxdys2

    disk_config

    磁碟配置檔的名稱。

  5. 請確定您是否要在多重磁碟上測試 Solaris 軟體的安裝。

    • 如果選擇否,則停止,並結束程序。

    • 如果選擇是,請串連單一磁碟配置檔,然後將輸出結果儲存在新的檔案中。


      # cat disk_file1 disk_file2 >multi_disk_config
      

      新檔案會成為多重磁碟配置檔,如以下範例所示。


      # cat 104_disk2 104_disk3 104_disk5 >multi_disk_test
      
  6. 請確定磁碟裝置名稱中的目標編號在前一步所建立的多重磁碟配置檔中是否為唯一編號。

    • 如果是,則停止,並結束程序。

    • 如果否,請使用文字編輯程式開啟檔案,然後使目標編號成為唯一編號。

      例如,檔案中不同的磁碟裝置名稱可能含有相同的目標編號 t0,如此處所示:

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t0d0s2 partition map

      將第二個目標編號變更為 t2,如此處所示:

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t2d0s2 partition map

x86: 磁碟配置檔範例

以下範例顯示如何在具有 500 MB 磁碟的 x86 系統上建立單一磁碟配置檔 500_test


範例 7–9 x86: 建立磁碟配置檔

首先,您必須先將 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