Solaris のインストール (上級編)

第 9 章 カスタム JumpStart オプション機能の使用

この章では、カスタム JumpStart インストールで利用できるオプションの機能について説明します。この章は、第 8 章「カスタム JumpStart インストールの準備」の補足でもあります。


注 -

この章の手順は、カスタム JumpStart ファイルを提供するために使用している SPARC サーバーと x86 サーバーの両方で有効です (「プロファイルサーバー」と呼びます)。プロファイルサーバーは、異なるプラットフォームタイプのシステムにカスタム JumpStart ファイルを提供できます。たとえば、SPARC サーバーは、SPARC 搭載システムと x86 搭載システムの両方に、カスタム JumpStart ファイルを提供できます。


begin スクリプトの作成

begin スクリプトとは

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

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

begin スクリプトについて、次のことを知っておいてください。

begin スクリプトの使用目的

begin スクリプトを設定して、次の作業を実行できます。

begin スクリプトによる動的プロファイルの作成

「動的プロファイル」とは、カスタム JumpStart インストール時に begin スクリプトが動的に作成するプロファイルです。動的プロファイルは、特定のシステムを 1 つのプロファイルに一致させる rules ファイルを設定できないとき (rules ファイルが持つ柔軟性では十分ではない場合) に必要です。たとえば、異なるハードウェア構成要素を持つ同一システムモデル (たとえば、異なるフレームバッファを持つシステム) に対しては動的プロファイルを使用しなければならない場合があります。

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

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

毎回同じ動的プロファイルを作成する begin スクリプトの例を次に示します。ただし、begin スクリプトを書けば、ルールの評価に応じて異なる動的プロファイルを作成することもできます。

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

上記のように begin スクリプトは、動的プロファイル名に SI_PROFILE 環境変数を使用する必要があります。この動的プロファイルは、デフォルトでは /tmp/install.input に設定されます。


注 -

begin スクリプトを使用して動的プロファイルを作成する場合は、スクリプトにエラーがないことを確認してください。動的プロファイルは、begin スクリプトが実行されてから作成されるため、check スクリプトでは妥当性は検査されません。


finish スクリプトの作成

finish スクリプトとは

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

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

finish スクリプトについて、次のことを知っておいてください。

finish スクリプトの使用目的

finish スクリプトを設定して、次の作業を実行できます。

この節では、これらの作業のすべてについて、finish スクリプトの例を示します。

finish スクリプトによるファイルの追加

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


注 -

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


次の手順により、Solaris ソフトウェアがインストールされた後、システムにファイルを追加する finish スクリプトを作成できます。

finish スクリプトでファイルを追加する方法
  1. インストールされたシステムに追加したいすべてのファイルを JumpStart ディレクトリにコピーします。

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

    cp ${SI_CONFIG_DIR}/file_name /a/path_name
    

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


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

パッケージとパッチの追加

finish スクリプトを作成すると、Solaris をシステムにインストールした後に、パッケージやパッチを自動的に追加できます。これは時間を節約するだけでなく、どのパッケージやパッチがユーザーのサイトにあるさまざまなシステムにインストールされているかについての整合性を確保できます。pkgadd(1M) コマンドや patchadd(1M) コマンドを finish スクリプトで使用するときは、-R オプションを使用して、/a をルートパスとして指定しなければなりません。

次に、パッケージを追加する finish スクリプトの例を示します。

	#!/bin/sh
 
  BASE=/a
  MNT=/a/mnt
  ADMIN_FILE=/a/tmp/admin
 
  mkdir ${MNT}
 [インストールするパッケージを含むサーバー上にディレクトリをマウントします。 ]  mount -f nfs sherlock:/export/package ${MNT}
 [一時的なパッケージ管理ファイル patchadd(1M) を作成し、パッケージのインストール時に pkgadd(1M) コマンドがチェックを行わない (および、質問を表示しない) ようにします。これにより、パッケージ追加時に自動インストールを実行できます。]  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
 
 [-a オプション (パッケージ管理ファイルを指定) と -R オプション (ルートパスを指定) を使用してパッケージを追加します。  ]  /usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz
 
  umount ${MNT}
  rmdir ${MNT}

以前は finish スクリプト環境では、pkgadd コマンドや patchadd コマンドとともに chroot(1M) コマンドが使用されていました。これは推奨する方法ではありませんが、一部のパッケージやパッチには、-R オプションが正しく動作しないものもあります。このような状況では、chroot コマンドを使用する前に、仮の /etc/mnttab ファイルを /a ルートパスに作成しなければなりません。最も簡単な方法は、次の行を finish スクリプトに追加することです。


cp /etc/mnttab /a/etc/mnttab

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

finish スクリプトを使って、システムにインストールされたファイルをカスタマイズできます。たとえば、例 9-1 の finish スクリプトは、ルートディレクトリ内の .cshrc ファイルに情報を追加することによって、ルート環境をカスタマイズします。


例 9-1 finish スクリプトによるルート環境のカスタマイズ

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

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

Solaris ソフトウェアがシステムにインストールされると、そのシステムはリブートします。起動プロセス終了前に、システムはルートパスワードを入力するように求めてきます。これは、パスワードを入力するまで、システムは起動処理を終了できないことを意味します。

auto_install_sample ディレクトリには、ルートパスワードを設定する set_root_pw という名前の finish スクリプトを次に示します。このスクリプトを使えば、ルートパスワードの入力を待たずに、システムの最初の起動を終了できます。

	 #!/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 変数に、システムの /etc/shadow ファイルの既存のエントリから取得した暗号化されたルートパスワードを設定します。]  PASSWD=dKO5IBkSF42lw
	 #create a temporary input file
 [/a/etc/shadow の一時入力ファイルを作成します。]  cp /a/etc/shadow /a/etc/shadow.orig
 
	 mv /a/etc/shadow /a/etc/shadow.orig
 	nawk -F: '{
 [ $PASSWD をパスワードフィールドとして使用して、新しくインストールしたシステム用の /etc/shadow ファイルにあるルートエントリを変更します。]           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
 [一時的な /a/etc/shadow ファイルを削除します。]  #remove the temporary file
  rm -f /a/etc/shadow.orig
 [状態ファイルのエントリを 0 から 1 へ変更します。これによりユーザーはルートパスワードの入力を求められません。この状態ファイルには、SI_SYS_STATE 変数 (現在の値は /a/etc/.sysIDtool.state) を使用してアクセスします。(この値を変更することによってスクリプトで問題が発生しないようにするには、このファイルを参照するのに必ず $SI_SYS_STATE を使用してください。) ここで示す sed コマンドには、0 の後と 1 の後にタブ文字が入っています。 ]  # 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}

注 -

finish スクリプトを使用してルートパスワードを設定した場合は、finish スクリプトの暗号化されたパスワードからルートパスワードを解読されないようにしてください。


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

この節では、SPARC 搭載システム用の単一ディスク構成ファイルまたは複数ディスク構成ファイルを作成する方法について説明します。ディスク構成ファイルを使用すると、実際に Solaris ソフトウェアをインストールする前に、異なるディスク構成に対してプロファイルをテストできます。

SPARC: ディスク構成ファイルを作成する方法

ディスク構成ファイルを作成すると、単一のシステムから pfinstall を使用して、異なるディスク構成に対してプロファイルをテストできます。SPARC 搭載システム用の単一ディスク構成ファイルまたは複数ディスク構成ファイルを作成するには、次の手順に従ってください。

  1. テストするディスクを持つ SPARC 搭載システムを決定します。

  2. スーパーユーザーになります。

  3. 単一ディスク構成ファイルを作成するには、prtvtoc コマンドの出力をファイルに保存します。


    # prtvtoc /dev/rdsk/device_name > disk_config
    

    /dev/rdsk/device_name

    システムディスクのデバイス名。device_namecwtxdys2 または cxdys2 の形式でなければならない

    disk_config

    ディスク構成ファイル名 

  4. 複数のディスクへの Solaris ソフトウェアのインストールをテストする場合は、各単一ディスク構成ファイルを連結して、その出力を新しいファイルに保存します。


    # cat disk_file1 disk_file2 > multi_disk_config
    

    新しいファイルは、複数ディスク構成ファイルになります。たとえば、次のように入力します。


    # cat 104_disk2 104_disk3 104_disk5 > multi_disk_test
    
  5. 複数ディスク構成ファイルを作成したときに、ディスクデバイス名中のターゲット番号が固有でない場合は、このファイルを編集して、ターゲット番号を固有にしなければなりません。

    たとえば、2 つのディスク構成ファイルを連結したときに、それぞれがターゲット番号 t0 を持っていた場合は、次のように 2 番目のターゲット番号を t2 に変更してください。


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

次の手順

これで SPARC 搭載システム用のディスク構成ファイルが作成されました。ディスク構成ファイルを使用して、プロファイルをテストする方法については、「プロファイルのテスト」を参照してください。

次の例では、104M バイトのディスクを持つ 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 

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

この節では、x86 搭載システム用の単一ディスク構成ファイルまたは複数ディスク構成ファイルを作成する方法について説明します。ディスク構成ファイルを使用すると、実際に Solaris ソフトウェアをインストールする前に、異なるディスク構成に対してプロファイルをテストできます。

x86: ディスク構成ファイルを作成する方法

ディスク構成ファイルを作成すると、単一のシステムから pfinstall を使用して、異なるディスク構成に対してプロファイルをテストできます。x86 搭載システム用の単一ディスク構成ファイルまたは複数ディスク構成ファイルを作成するには、次の手順に従ってください。

  1. テストするディスクを持つ x86 搭載システムを決定します。

  2. スーパーユーザーになります。

  3. 単一ディスク構成ファイルを作成するには、まず fdisk コマンドの出力をファイルに保存します。


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

    disk_config

    ディスク構成ファイル名 

    /dev/rdsk/device_name

    ディスク全体の fdisk レイアウトのデバイス名。device_namecwtxdyp0 または cxdyp0 形式でなければならない

  4. prtvtoc コマンドの出力をディスク構成ファイルに追加します。


    # prtvtoc /dev/rdsk/device_name >> disk_config
    

    /dev/rdsk/device_name

    システムディスクのデバイス名。device_namecwtxdys2 または cxdys2 形式でなければならない

    disk_config

    ディスク構成ファイル名 

  5. 複数のディスクへの Solaris ソフトウェアのインストールをテストする場合は、個々の単一ディスク構成ファイルを連結して、その出力を新しいファイルに保存します。


    # cat disk_file1 disk_file2 > multi_disk_config
    

    新しいファイルは、複数ディスク構成ファイルになります。たとえば、次のように入力します。


    # cat 104_disk2 104_disk3 104_disk5 > multi_disk_test
    
  6. 複数ディスク構成ファイルを作成したときに、ディスクデバイス名中のターゲット番号が固有でない場合は、このファイルを編集して、ターゲット番号を固有にしなければなりません。

    たとえば、2 つのディスク構成ファイルを連結したときに、それぞれがターゲット番号 t0 を持っていた場合は、次のように 2 番目のターゲット番号を t2 に変更してください。


    * /dev/rdsk/c0t0d0p0 default fdisk table
    ...
    * /dev/rdsk/c0t2d0p0 default fdisk table

次の手順

これで x86 搭載システム用のディスク構成ファイルが作成されました。ディスク構成ファイルを使用してプロファイルをテストする方法については、「プロファイルのテスト」を参照してください。

次の例では、500M バイトのディスクを持つ 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 

サイト固有のインストールプログラムの使用

begin スクリプトと finish スクリプトを使用すると、特殊な条件を持つサイトが、独自のインストールプログラムにより Solaris ソフトウェアをインストールできます。プロファイルフィールドにマイナス記号 (-) が指定されているときには、begin スクリプトと finish スクリプトが、プロファイルや Solaris インストールプログラムの代わりに、システムのインストール方法を制御します。

たとえば次のルールに一致した場合は、begin スクリプト x_install.beg と finish スクリプト x_install.fin が、sherlock という名前のシステムをインストールします (Solaris インストールプログラムは使用しません)。

hostname sherlock  x_install.beg  -  x_install.fin