Solaris 9 安裝指南

第 24章 使用可選的自訂 JumpStart 功能(工作)

本章說明可以用來建立其他自訂 JumpStart 安裝工具的可選功能。


註解 –

本章的說明適用於可提供自訂 Jumpstart 檔案的 SPARC 伺服器或 x86 伺服器,也稱為設定檔伺服器。一個設定檔伺服器可以提供不同平台類型的自訂 JumpStart 檔案。例如,SPARC 伺服器可以為 SPARC 及 x86 系統提供自訂 JumpStart 檔案。


建立開始程序檔

開始程序檔是一個您在 rules 檔案中指定的 Bourne shell 程序檔,使用者可以自訂。 開始程序檔會在 Solaris 軟體安裝在系統上前執行工作。您只有在使用自訂 JumpStart 來安裝 Solaris 軟體時可以使用開始程序檔。

使用開始程序檔來執行下列任何一項工作:

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

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

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

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

當系統符合某個規則,而「設定檔」欄位出現等號 (=) 時,開始程序檔會建立用來在系統上安裝 Solaris 軟體的衍生設定檔。

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


範例 24–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 時才可以使用結束程序檔。

您可使用結束程序檔執行的工作如下:

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

使用結束程序檔增加檔案

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


註解 –

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


  1. 將所有您要加入已安裝系統的檔案複製到 JumpStart 目錄。

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

    cp ${SI_CONFIG_DIR}/file_name /a/path_name
    

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

範例 24–2 顯示增加套裝軟體的結束程序檔範例。


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

  #!/bin/sh
 
  BASE=/a
  MNT=/a/mnt
  ADMIN_FILE=/a/tmp/admin
 
  mkdir ${MNT}
  mount -f nfs sherlock:/export/package ${MNT}1
  cat>${ADMIN_FILE} <<DONT_ASK2
  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} SUNWxyz3 
  umount ${MNT}
  rmdir ${MNT}
  1. 將目錄裝載到包含要安裝套裝軟體的伺服器上。

  2. 建立一個臨時套裝軟體管理檔 admin,讓 pkgadd( 1M) 指令在安裝套裝軟體時不會執行檢查或是問您問題。 增加套裝軟體時,使用臨時套裝軟體管理檔可以不需要您的參與便可完成安裝。

  3. 使用 -a 選項增加套裝軟體,指定套裝軟體管理檔案,並使用 -R 選項指定根目錄。



註解 –

在過去,chroot( 1M) 是在結束程序檔環境中與 pkgaddpatchadd 指令一起使用。 只有在很少數的情況下,某些套裝軟體才不使用 -R 選項。 您必須在 /a 根目錄中建立一個虛擬 /etc/mnttab 根目錄,然後再發出 chroot 指令。

若要建立一個虛擬 /etc/mnttab 檔案,請將下行加入您的結束程序檔中:

cp /etc/mnttab /a/etc/mnttab

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

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


範例 24–3 使用結束程序檔自訂根環境

#!/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 軟體之後,系統會重新啟動。 在開機程序完成前,系統會要求您輸入超級使用者密碼。 除非有人鍵入密碼,否則系統無法完成開機。

名為 set_root_pw 的結束程序檔儲存在 auto_install_sample 目錄中。 結束程序檔顯示不詢問使用者,而自動設定超級使用者密碼的方法。 set_root_pw 顯示於範例 24–4


範例 24–4 使用結束程序檔設定系統的超級使用者密碼

	 #!/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 file1
 cp /a/etc/shadow /a/etc/shadow.orig2
 
	 mv /a/etc/shadow /a/etc/shadow.orig
 	nawk -F: '{
         if ( $1 == "root" )3
           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.orig4
 # set the flag so sysidroot won't prompt for the root password
 sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE}> /tmp/state.$$5
  mv /tmp/state.$$ ${SI_SYS_STATE}
  1. 將變數 PASSWD 設為加密的超級使用者密碼,該密碼是從系統的 /etc/shadow 檔案中的現存項目所取得。

  2. 建立一個 /a/etc/shadow 暫存輸入檔。

  3. 使用 $PASSWD 作為密碼欄位,對新安裝的系統變更 /etc/shadow 檔案中的根登錄。

  4. 移除 /a/etc/shadow 暫存檔。

  5. 在狀態檔中將項目由 0 變更為 1,這樣系統就不會要求使用者輸入超級使用者密碼。狀態檔是藉由使用變數 SI_SYS_STATE 所存取,該變數的值是 /a/etc/.sysIDtool.state。 若要避免因值改變而發生的程序檔問題,請一律使用 $SI_SYS_STATE 來參照此檔案。 此處所顯示的 sed 指令在 01 之後包含一個跳格字元。



註解 –

如果您使用一個結束程序檔來設定系統的超級使用者密碼,使用者可能會嘗試在結束程序檔的加密密碼中尋找超級使用者密碼。 確保您可以防止其他使用者嘗試決定超級使用者密碼。


使用結束程序檔安裝具有 Web Start 安裝程式的軟體

您可以在安裝了 Solaris 作業環境之後,使用結束程序檔來安裝附加的軟體。 某些軟體是用 Solaris Web Start 程式安裝的,該程式會在安裝期間要求您輸入資訊。 若要維護不讓使用者干涉的自動安裝,您可以用 -nodisplay-noconsole 選項執行 Solaris Web Start 程式。

表 24–1 Solaris Web Start 選項

選項 

說明  

-nodisplay

執行沒有圖形使用者介面的安裝程式。除非安裝用 -locales 選項修改,否則使用預設的產品安裝。

-noconsole

執行沒有任何互動式文字主控台裝置。 搭配 -nodisplay 特別適用於 UNIX 程序檔。

如需詳細資訊,請參閱線上援助頁 installer (1M)

建立壓縮的配置檔

您可以在啟動系統時指定檔案位置,而不是使用 add_install_client 指令來指定自訂 JumpStart 配置檔的位置。 不過,您僅可以在發佈 boot 指令時指定一個檔案名稱。 因此,您必須將所有的自訂 JumpStart 配置檔壓縮成一個檔案。壓縮的配置檔可能是下列任何一種類型:

建立壓縮的配置檔

  1. 在設定檔伺服器上將目錄變更為 JumpStart 目錄。


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


    註解 –

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


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

    • 設定檔

    • rules

    • rules.ok

    您也可以將 sysidcfg 檔案納入壓縮的配置檔中。

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

壓縮的配置檔範例

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


範例 24–5 建立壓縮的配置檔


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

建立磁碟配置檔

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

SPARC:建立磁碟配置檔

  1. 找出您要測試的磁碟所在的 SPARC 系統。

  2. 成為超級使用者。

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


    # prtvtoc /dev/rdsk/device_name>disk_config_file
    

    /dev/rdsk/device_name

    系統磁碟的裝置名稱。device_name 的格式必須是 cwtxdy s2cxd ys2

    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 的方法。


範例 24–6 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 的系統建立了磁碟配置檔。測試設定檔 包含關於使用磁碟配置檔來測試設定檔的資訊。


x86: 建立磁碟配置檔

  1. 尋找包含所要測試磁碟之基於 x86 的系統。

  2. 成為超級使用者。

  3. 透過在檔案中儲存 fdisk(1M) 指令的輸出來建立部份單一磁碟配置檔。


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

    disk_config_file

    磁碟配置檔的名稱。 

    /dev/rdsk/device_name

    整個磁碟的 fdisk 佈局之裝置名稱。 device_name 的格式必須是 cwtxdy s2cxd ys2

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


    # prtvtoc /dev/rdsk/device_name >>disk_config
    

    /dev/rdsk/device_name

    系統磁碟的裝置名稱。device_name 的格式必須是 cwtxdy s2cxd ys2

    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


範例 24–7 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 suninstall 程式來控制。

例如,如果下列規則符合某個系統, x_install.beg 開始程序檔和 x_install.fin 結束程序檔就會將 Solaris 軟體安裝在名為 clover 的系統上:

hostname clover x_install.beg - x_install.fin