スクリプトを実行するサービスを定義した SMF マニフェストファイルを作成します。
サービスの start メソッドによって初回ブートスクリプトが実行されます。
この例では、multi-user 依存性を指定して、初回ブート後の起動シーケンスの終わりに初回ブートスクリプトが実行されるようにしています。初回ブートスクリプトの実行内容によっては、このような依存性は必要ない場合もあります。このような依存性を指定しなかった場合は、システムが適切に構成される前にスクリプトが実行される可能性があります。
completed プロパティーは false の値で定義されます。
svcbundle コマンドを使用して、有効なサービスマニフェストを生成できます。次の例では、デフォルトで、svcbundle コマンドによって生成されたマニフェストが一時的なサービスを指定し、multi-user 依存性を指定しています。
使用例 91 生成された SMF サービスマニフェスト次のコマンドでは、初回ブート時に実行するスクリプトの手動作成に示したスクリプトの名前が start-method の値として指定されています。スクリプトの名前は /opt/site/first-boot-script.sh として指定されていますが、これは、初回ブートスクリプトの IPS パッケージを作成および発行する方法で作成されるパッケージによって、first-boot-script.sh スクリプトが /opt/site/first-boot-script.sh にインストールされるからです。
次のコマンドでは、completed プロパティーが、プロパティーグループ名、プロパティー名、プロパティーのタイプ、およびプロパティーの初期値をコロンで区切ったリストで指定されています。
$ svcbundle -s service-name=site/first-boot-script-svc \ -s start-method=/opt/site/first-boot-script.sh \ -s instance-property=config:completed:boolean:false \ > first-boot-script-svc-manifest.xml
次に示す生成されたサービスマニフェストでは、初回ブートスクリプト /opt/site/first-boot-script.sh は start メソッドの exec 属性の値です。completed プロパティーは、このサービスのデフォルトインスタンス (first-boot-script-svc:default) を定義する instance 要素に指定されています。
<?xml version="1.0" ?>
<!DOCTYPE service_bundle
SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<!--
Manifest created by svcbundle (2014-Jan-14 16:39:30-0700)
-->
<service_bundle type="manifest" name="site/first-boot-script-svc">
<service version="1" type="service" name="site/first-boot-script-svc">
<!--
The following dependency keeps us from starting until the
multi-user milestone is reached.
-->
<dependency restart_on="none" type="service"
name="multi_user_dependency" grouping="require_all">
<service_fmri value="svc:/milestone/multi-user"/>
</dependency>
<exec_method timeout_seconds="60" type="method" name="start"
exec="/opt/site/first-boot-script.sh"/>
<!--
The exec attribute below can be changed to a command that SMF
should execute to stop the service. See smf_method(7) for more
details.
-->
<exec_method timeout_seconds="60" type="method" name="stop"
exec=":true"/>
<!--
The exec attribute below can be changed to a command that SMF
should execute when the service is refreshed. Services are
typically refreshed when their properties are changed in the
SMF repository. See smf_method(7) for more details. It is
common to retain the value of :true which means that SMF will
take no action when the service is refreshed. Alternatively,
you may wish to provide a method to reread the SMF repository
and act on any configuration changes.
-->
<exec_method timeout_seconds="60" type="method" name="refresh"
exec=":true"/>
<property_group type="framework" name="startd">
<propval type="astring" name="duration" value="transient"/>
</property_group>
<instance enabled="true" name="default">
<property_group type="application" name="config">
<propval type="boolean" name="completed" value="false"/>
</property_group>
</instance>
<template>
<common_name>
<loctext xml:lang="C">
<!--
Replace this comment with a short name for the
service.
-->
</loctext>
</common_name>
<description>
<loctext xml:lang="C">
<!--
Replace this comment with a brief description of
the service
-->
</loctext>
</description>
</template>
</service>
</service_bundle>