Solaris 9 12/03 安裝指南

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

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


註解 –

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


建立開始程序檔

開始程序檔是使用者定義的 Bourne shell 程序檔,可在 rules 檔案中指定。開始程序檔會在 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 程序檔不會檢驗衍生設定檔,因為衍生程序檔要到開始程序檔執行時才會建立。


建立結束程序檔

結束程序檔是使用者定義的 Bourne shell 程序檔,可在 rules 檔案中指定。結束程序檔在 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 使用結束程序檔加入套裝軟體

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

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



範例 24–3 使用結束程序檔加入修補程式

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

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

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


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

#!/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 目錄中。結束程序檔顯示如何在不進行提示的情況下,自動設定超級使用者密碼。範例 24–5 中顯示了 set_root_pw


註解 –

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



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

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

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


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

您可以在安裝 Solaris 作業環境之後,使用結束程序檔來安裝附加軟體。某些軟體程式是使用 Solaris Web Start 程式安裝的,該程式會在安裝期間提示您輸入資訊。若要維護不需使用者參與的安裝,可以在使用 -nodisplay-noconsole 選項的情況下執行 Solaris Web Start 程式。

表 24–1 Solaris Web Start 選項

選項 

描述 

-nodisplay

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

-noconsole

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

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

建立壓縮配置檔

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

建立壓縮配置檔

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


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


    註解 –

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


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

    • 設定檔

    • rules

    • rules.ok

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

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

壓縮配置檔範例

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


範例 24–6 建立壓縮配置檔


# 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 的格式必須是 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


範例 24–7 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 的格式必須是 cwtxdys2cxdys2

  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


範例 24–8 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