Go to main content
Oracle® Solaris 11.3 システムのインストール

印刷ビューの終了

更新: 2017 年 3 月
 
 

初回ブート時に実行するスクリプトの手動作成

スクリプトに使用可能なソースを知るには、初回ブート時にどのツールが AI クライアントにインストールされているかを知る必要があります。デフォルトでは、solaris-large-server パッケージがインストールされています。そのグループパッケージをインストールした場合は、Python、bashksh、およびその他のツールが初回ブート時に使用可能です。solaris-large-server グループパッケージに含まれるパッケージの完全なリストについては、Oracle Solaris 11.3 ソフトウェアの追加と更新 の グループパッケージ内のすべてのインストール可能なパッケージの一覧表示で説明されているように、pkg contents コマンドを使用します。solaris-large-server パッケージに用意されていないソースをスクリプトに使用する場合は、必要なパッケージを特定し、それを AI マニフェストに指定します。インストールする可能性があるほかのパッケージの名前を検索する方法については、Oracle Solaris 11.3 ソフトウェアの追加と更新を参照してください。


ヒント  - 
  • 異なるスクリプト内のそれぞれのコマンドが互いに競合しないようにするため、使用する初回ブートスクリプトは 1 つのみにしてください。
  • 初回ブートスクリプト内ではリブートしないでください。

    すべての初回ブートスクリプトに次のテキストを含めるようにしてください。

  • 初回ブートスクリプトでは、SMF メソッドの終了コードなどの定義を使用するために /lib/svc/share/smf_include.sh を読み込む必要があります。

  • スクリプトでは、前のブートですでに実行されたかどうかを検査するようにしてください。completed プロパティーがすでに true に設定されている場合、スクリプトは start メソッドを終了し、サービスを一時的に無効にすべきです。

    スクリプトの次の行は、site/first-boot-script-svc:default サービスインスタンスの config プロパティーグループ内の completed プロパティーの値を取得し、その値をローカルの completed 変数に割り当てます。

    completed=`svcprop -p config/completed site/first-boot-script-svc:default`

    completed 変数が true に設定された場合、スクリプトの次の行は、SMF_EXIT_TEMP_DISABLE 終了コードとともに、終了の簡単な理由として method_completed を、終了の理由を示す長い説明として "Configuration completed" を、サービスの start メソッドに送ります。

    smf_method_exit $SMF_EXIT_TEMP_DISABLE script_completed "Configuration completed"
  • 初回ブートスクリプトでは、AI インストールによって作成されたばかりのブート環境 (BE) のコピーを保存するようにしてください。初回ブートスクリプトで変更される前に BE のコピーを保存しておくと、スクリプトによって何らかの問題が発生した場合に、保存された BE にブートするだけで簡単に回復できます。次のテキストは、beadm list 出力の R フラグによって実行中の BE を特定したあと、その BE をコピーします。

    bename=`beadm list -Hd|nawk -F ';' '$3 ~ /R/ {print $1}'`
    beadm create ${bename}.orig
    echo "Original boot environment saved as ${bename}.orig"
  • スクリプトでは、その作業が完了したときに、completed プロパティーの値を true に設定し、新しいプロパティー値でサービスをリフレッシュし、start メソッドを終了してサービスを一時的に無効にする必要があります。svccfg コマンドを使用して completed プロパティーを true に設定し、svcadm コマンドを使用してサービスをリフレッシュします。これにより、以降のリブート時にスクリプトが再実行されないようになります。

    smf_method_exit $SMF_EXIT_TEMP_DISABLE script_completed "Configuration completed"
使用例 89  テンプレート初回ブートスクリプト

デフォルトでは shksh93 であることを覚えておいてください。

#!/bin/sh

# Load SMF shell support definitions
. /lib/svc/share/smf_include.sh

# If nothing to do, exit with temporary disable
completed=`(svcprop -p config/completed site/first-boot-script-svc:default`
[ "${completed}" = "true" ] && \
    smf_method_exit $SMF_EXIT_TEMP_DISABLE completed "Configuration completed"

# Obtain the active BE name from beadm: The active BE on reboot has an R in
# the third column of 'beadm list' output. Its name is in column one.
bename=`beadm list -Hd|nawk -F ';' '$3 ~ /R/ {print $1}'`
beadm create ${bename}.orig
echo "Original boot environment saved as ${bename}.orig"

# Place your one-time configuration tasks here

# Record that this script's work is done
svccfg -s site/first-boot-script-svc:default setprop config/completed = true
svcadm refresh site/first-boot-script-svc:default

smf_method_exit $SMF_EXIT_TEMP_DISABLE method_completed "Configuration completed"

ヒント  -  スクリプト内の構文エラーをチェックするには、–n オプションを使用します。
$ ksh -n first-boot-script.sh

使用例 90  複数の IP インタフェースを構成する初回ブートスクリプト

この例は、2 つの IP インタフェースのアドレスを構成し、デフォルトルートを追加する first-boot-script.sh という名前の初回ブートスクリプトを示しています。

#!/bin/sh

# Load SMF shell support definitions
. /lib/svc/share/smf_include.sh

# If nothing to do, exit with temporary disable
completed=`svcprop -p config/completed site/first-boot-script-svc:default`
[ "${completed}" = "true" ] && \
    smf_method_exit $SMF_EXIT_TEMP_DISABLE completed "Configuration completed"

# Obtain the active BE name from beadm: The active BE on reboot has an R in
# the third column of 'beadm list' output. Its name is in column one.
bename=`beadm list -Hd|nawk -F ';' '$3 ~ /R/ {print $1}'`
beadm create ${bename}.orig
echo "Original boot environment saved as ${bename}.orig"

# Create and configure addresses on two IP interfaces
/usr/sbin/ipadm create-ip net0
/usr/sbin/ipadm create-ip net1
/usr/sbin/ipadm create-addr -a 10.153.125.222/24 net0
/usr/sbin/ipadm create-addr -a 169.254.182.77/24 net1

# Add a default route with net0 as the gateway
/usr/sbin/route add default 10.153.125.1 -ifp net0

# Record that this script's work is done
svccfg -s site/first-boot-script-svc:default setprop config/completed = true
svcadm refresh site/first-boot-script-svc:default

smf_method_exit $SMF_EXIT_TEMP_DISABLE method_completed "Configuration completed"

初回ブートスクリプトの別の適切な使用方法は、useradd コマンドを使用して複数のユーザーをシステム上に構成する方法です。