Solaris 10 11/06 インストールガイド (カスタム JumpStart/ 上級編)

第 4 章 カスタム JumpStart オプション機能の使用 (作業)

この章では、カスタム JumpStart インストールのオプション機能について説明します。


注 –

この章の手順は、カスタム JumpStart ファイルの提供に使用される SPARC サーバーと x86 サーバーの両方 (「プロファイルサーバー」と呼ばれる) に利用できます。プロファイルサーバーは、異なる種類のプラットフォームのシステムにカスタム JumpStart ファイルを提供できます。たとえば、SPARC サーバーは、SPARC ベースのシステムと x86 ベースのシステムの両方に、カスタム JumpStart ファイルを提供できます。


開始スクリプトの作成

開始スクリプトは、rules ファイル内に指定する、ユーザー定義の Bourne シェルスクリプトです。Solaris ソフトウェアがシステムにインストールされる前に作業を実行します。開始スクリプトは、カスタム JumpStart インストールで Solaris をインストールするときのみ使用できます。

開始スクリプトは、次のような場合に使用してください。

開始スクリプトに関する注意事項

開始スクリプトによる派生プロファイルの作成

カスタム JumpStart インストール時に開始スクリプトが動的に作成するプロファイルを「派生プロファイル」と呼びます。派生プロファイルは、特定のシステムを 1 つのプロファイルに対応させる rules ファイルを設定できない場合に必要となります。たとえば、異なるハードウェア構成要素を持つ同一のシステムモジュール (異なるフレームバッファーを持つシステムなど) には、派生プロファイルを使用する必要があります。

派生プロファイルを使用するルールの設定手順は次のとおりです。

システムが、プロファイルフィールドに等号 (=) があるルールと一致すると、開始スクリプトは、システムに Solaris ソフトウェアをインストールするのに使用する派生プロファイルを作成します。

次に、毎回同じ派生プロファイルを作成する開始スクリプトの例を示します。もちろん、ルールの評価に応じて異なる派生プロファイルを生成する開始スクリプトも作成できます。


例 4–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 シェルスクリプトです。Solaris ソフトウェアがシステムにインストールされた後、システムがリブートする前に作業を実行します。終了スクリプトは、カスタム JumpStart インストールで Solaris をインストールするときのみ使用できます。

終了スクリプトは、次のような作業に利用できます。

終了スクリプトに関する注意事項

Procedure終了スクリプトでファイルを追加する方法

終了スクリプトにより、JumpStart ディレクトリにあるファイルをインストールされたシステムへ追加できます。ファイルを追加できるのは、SI_CONFIG_DIR 変数で指定されるディレクトリに JumpStart ディレクトリがマウントされるためです。このディレクトリは、デフォルトで /tmp/install_config に設定されます。


注 –

インストールされたシステムにすでに存在するファイルに、JumpStart ディレクトリからファイルをコピーして、ファイルを置換することもできます。


  1. インストール済みシステムに追加するすべてのファイルを JumpStart ディレクトリにコピーします。

  2. 新しくインストールされたファイルシステムの階層にコピーするファイルごとに、次の行を終了スクリプトに挿入します。

    cp ${SI_CONFIG_DIR}/file_name /a/path_name
    

例 4–2 終了スクリプトでファイルを追加する

たとえば、自分のサイトのすべてのユーザーを対象に開発された特別なアプリケーション site_prog があると仮定します。site_prog のコピーを JumpStart ディレクトリに置いた場合、終了スクリプト内の次の行は JumpStart ディレクトリからシステムの /usr/bin ディレクトリに site_prog をコピーします。

cp ${SI_CONFIG_DIR}/site_prog  /a/usr/bin

終了スクリプトによるパッケージとパッチの追加

終了スクリプトを作成すると、Solaris ソフトウェアをシステムにインストールした後に、パッケージやパッチを自動的に追加できます。終了スクリプトを使用してパッケージを追加すると時間を節約できるだけでなく、サイトのさまざまなシステムにパッケージおよびパッチをインストールする上での整合性を維持できます。

終了スクリプト内で pkgadd(1M) コマンドや patchadd(1M) コマンドを使用するときは、-R オプションを使って、/a をルートパスとして指定します。


例 4–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}

次に、この例のいくつかのコマンドの説明を示します。



例 4–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


注 –

以前は終了スクリプト環境では、pkgadd コマンドや patchadd コマンドとともに chroot(1M) コマンドが使用されていました。まれに、一部のパッケージやパッチで -R オプションが正しく動作しないことがあります。chroot コマンドを実行する前には、/a ルートパスにダミーの /etc/mnttab ファイルを作成する必要があります。

ダミーの /etc/mnttab ファイルを作成するには、終了スクリプトに次の行を追加します。

cp /etc/mnttab /a/etc/mnttab

終了スクリプトによるルート環境のカスタマイズ

終了スクリプトでは、すでにシステムにインストールされたファイルをカスタマイズすることもできます。たとえば、例 4–5 の終了スクリプトは、ルート (/) ディレクトリの .cshrc ファイルに情報を追加することによってルート環境をカスタマイズします。


例 4–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
}

終了スクリプトによるシステムのルートパスワードの設定

Solaris ソフトウェアのシステムへのインストールが完了すると、システムは再起動します。ブートプロセス終了前に、システムは root パスワードを入力するように求めてきます。パスワードを入力するまで、システムはブート処理を終了できません。

set_root_pw という終了スクリプトが、auto_install_sample ディレクトリに保存されています。この終了スクリプトは、プロンプトを表示することなく root パスワードを自動的に設定する方法を示します。set_root_pw については、例 4–6 を参照してください。


注 –

システムの root パスワードを終了スクリプトで設定した場合、ユーザーが、終了スクリプト内にある暗号化されたパスワードからルートのパスワードを発見しようと試みる可能性があります。ユーザーに root パスワードを解読されないよう、対策を講じてください。



例 4–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 OS のインストールに続いてさらにソフトウェアをインストールできます。Solaris インストールプログラムは、インストール中に情報を入力するプロンプトを表示します。自動インストールを行うには、-nodisplay オプションまたは -noconsole オプションを指定して Solaris インストールプログラムを実行します。

表 4–1 Solaris インストールオプション

オプション 

説明 

-nodisplay

GUI を使用せずにインストーラを実行します。-locales オプションを用いてインストール条件を変更した場合を除き、デフォルトの設定に従って製品がインストールされます。

-noconsole

対話形式のテキストコンソールデバイスを介さずにインストールを実行します。UNIX スクリプトで -nodisplay と共に使用すると便利です。

詳細については、installer(1M) のマニュアルページを参照してください。

圧縮された構成ファイルの作成

add_install_client コマンドを使用してカスタム JumpStart 構成ファイルの場所を指定する代わりに、システムのブート時に構成ファイルの場所を指定することができます。ただし、指定できるファイル名は 1 つだけです。したがって、すべてのカスタム JumpStart 構成ファイルを 1 つのファイルに圧縮する必要があります。

圧縮された構成ファイルの形式は、次のいずれかにしてください。

Procedure圧縮された構成ファイルを作成する方法

  1. プロファイルサーバー上の JumpStart ディレクトリに移動します。


    # cd jumpstart_dir_path
    
  2. 圧縮ツールを使って、すべてのカスタム JumpStart 構成ファイルを 1 つのファイルに圧縮します。


    注 –

    圧縮構成ファイルに相対パスを含めないでください。カスタム JumpStart 構成ファイルは、圧縮されたファイルと同じディレクトリに置かれている必要があります。


    圧縮された構成ファイルには、次のファイルが含まれている必要があります。

    • プロファイル

    • rules

    • rules.ok

    圧縮された構成ファイルに、さらに sysidcfg ファイルを入れることもできます。

  3. 圧縮された構成ファイルを NFS サーバー、HTTP サーバー、またはローカルハードディスク上に保存します。

圧縮された構成ファイルの例

次の例は、tar コマンドを使って、圧縮された構成ファイルを config.tar という名前で作成します。カスタム JumpStart 構成ファイルはすべて /jumpstart ディレクトリにあります。


例 4–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. スーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  3. prtvtoc(1M) コマンドの出力をファイルにリダイレクトして、単一ディスク構成ファイルを作成します。


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

    システムのディスクのデバイス名。device_name は、cwtxdys2 または cxdys2 の形式で指定する必要があります。

    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

      この場合は次のように、2 番目のターゲット番号を t2 に設定します。

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

SPARC: ディスク構成ファイルの例

次の例では、104M バイトのディスクを持つ SPARC 搭載システムで、単一ディスク構成ファイル 104_test を作成します。


例 4–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. スーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  3. fdisk(1M) コマンドの出力をファイルに保存して、単一ディスク構成ファイルを部分的に作成します。


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

    ディスク構成ファイルの名前。

    /dev/rdsk/device_name

    ディスク全体の fdisk レイアウトのデバイス名。device_name は、cwtxdys0 または cxdys0 の形式で指定する必要があります。

  4. prtvtoc(1M) コマンドの出力をディスク構成ファイルの末尾に書き込みます。


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

    システムのディスクのデバイス名。device_name は、cwtxdys2 または cxdys2 の形式で指定する必要があります。

    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

      この場合は次のように、2 番目のターゲット番号を t2 に設定します。

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

x86: ディスク構成ファイルの例

次の例では、500M バイトのディスクを持つ x86 システムで、単一ディスク構成ファイル 500_test を作成します。


例 4–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 が、clover という名前のシステムに Solaris ソフトウェアをインストールします。

hostname clover x_install.beg - x_install.fin