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

印刷ビューの終了

更新: 2017 年 3 月
 
 

初回ブートスクリプトが一度しか実行されないようにする方法

次の手順は、スクリプトが新規にインストールされたシステムの初回ブート時にのみ実行され、かつスクリプトが 1 度だけ実行されるようにする方法を示しています。

  1. スクリプトを実行するサービスを作成します。

    この単純なサービスを作成するもっとも簡単な方法は、svcbundle コマンドを使用することです (初回ブートスクリプトを含む SMF マニフェストファイルをマニフェスト作成ツールを使って作成するを参照)。

  2. スクリプトを実行する前に、スクリプト完了フラグを設定します。

    サービスマニフェストにブール型の完了プロパティーを定義し、その値を false に設定します。使用例 91のマニフェストに含まれる completed プロパティーを参照してください。

  3. スクリプトの最後でスクリプト完了フラグを設定します。

    スクリプトの最後で、svccfg コマンドを使用して completed プロパティーを true に設定します。svcadm コマンドを使用して、新しいプロパティー値でサービスをリフレッシュします。使用例 89のサンプルスクリプトの末尾を参照してください。

  4. スクリプトが完了した場合は、サービスを無効にします。

    サービスマニフェストで、デフォルトのサービスインスタンスが作成され、有効化されます。このサービスはスクリプトで無効化されます。初回ブートスクリプトを終了するときに、SMF_EXIT_TEMP_DISABLE 終了コードを使用してサービスの start メソッドを終了し、サービスを一時的に無効にします。サービスが無効になり、サービスの stop メソッドは実行されません。

    サービスをより簡単に再有効化できるため、サービスを永続的に無効にするより、サービスを一時的に無効にすることをお勧めします。状況によっては、実行された構成作業 (ゾーンのクローニングや移行) を更新するためにスクリプト (したがってサービス) を再実行する必要があります。サービスが永続的に無効になっている場合は、svcadm enable コマンドを実行してサービスを再有効化する必要があります。

    サービスをオンラインのままにせずに、やはりサービスを一時的に無効にすることをお勧めします。オンラインのサービスは、リブートのたびに作業を実行しているように見える場合があります。この例では、サービスの名前は site/first-boot-script-svc です。AI クライアントがブートされたあとで、サービスが disabled 状態になっていることがわかります。

    $ svcs first-boot-script-svc
    STATE          STIME    FMRI
    disabled        8:24:16 svc:/site/first-boot-script-svc:default