ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
カスタム Oracle Solaris 11 インストールイメージの作成 Oracle Solaris 11 Information Library (日本語) |
ディストリビューションコンストラクタは、マニフェストファイルと呼ばれる XML ファイルに指定された設定に基づいてイメージを作成します。マニフェストファイルには、ディストリビューションコンストラクタを使用して作成する ISO イメージの内容およびパラメータの仕様が記述されています。distribution-constructor パッケージは、カスタム LiveCD、x86 または SPARC AI ISO イメージ、x86 または SPARC テキストインストールイメージを作成する際に使用できるサンプルマニフェストを提供します。
各マニフェストファイルの要素には、必要とする種類の ISO イメージを作成するためのデフォルト値が事前設定されています。マニフェストファイル内の事前設定要素を手動で編集することで、結果として生成されるイメージをカスタマイズできます。また、カスタムスクリプトを作成すれば、さらにイメージを変更できます。次に、マニフェストファイルで新しいスクリプトを参照してください。
distribution-constructor パッケージは、次のサンプルマニフェストファイルを提供します。
表 2-2 サンプルマニフェスト
|
パッケージマネージャーツールを使用して、必要なパッケージをインストールできます。パッケージマネージャーは、Oracle Solaris オペレーティングシステムのデスクトップのメニューバーから利用できます。メニューバーで、「システム」>「システム管理」>「パッケージマネージャー」の順に選択します。
または、次のような IPS コマンドを使用してこのパッケージをインストールしてください。
# pkg install distribution-constructor
distro_const コマンドを使用してイメージを作成するときに、このマニフェストファイルの名前を指定します。
注 - 元のマニフェストファイルおよびデフォルトのスクリプトをコピーするときは、その前に必ずバックアップを作成してください。
たとえば、マニフェストのターゲット要素を編集すれば、イメージを構築できる構築領域に別の場所を指定できます。さらに、パブリッシャーをチェックして、イメージの構築に必要なパッケージをダウンロードすることについて、システムがそのパブリッシャーに連絡できることを確認します。必要に応じて、ソフトウェア名要素を編集して、別のパブリッシャーおよびリポジトリの場所を指定できます。
詳細は、「マニフェストの内容の変更」および dc_manifest(4) のマニュアルページを参照してください。
新しいスクリプトを作成する場合は、マニフェストファイル内の実行セクションのスクリプト参照を更新します。
詳細は、「カスタムスクリプトの作成と使用」を参照してください。
手順については、第 3 章イメージの構築を参照してください。
各マニフェストファイルのすべてのフィールドには、必要とする種類の ISO イメージを作成するためのデフォルト値が事前設定されています。マニフェストファイル内の事前設定フィールドを手動で編集することで、結果として生成されるイメージをさらにカスタマイズできます。
選択したサンプルマニフェストに応じて、主要な要素は次のようになります。
表 2-3 マニフェスト要素
|
次の要素を使用して、構築するイメージのカスタム名またはデフォルト名を指定します。
<distro name="Oracle_Solaris_Text_X86" add_timestamp="false">
イメージの構築作業を続けて実行して複数の増分イメージを保持する場合、タイムスタンプ変数を「true」に変更すると、タイムスタンプが各イメージの名前に自動的に追加されます。
HTTP プロキシを指定する必要がある場合、プロキシ変数を含む配布名要素のコメントを解除して、プロキシの場所を入力します。
このブートメニューは、イメージに適用されるブートメニュー変更を指定します。
次の例では、「boot1」というタイトルの特殊なブートメニューがイメージに適用されます。タイムアウト属性は、デフォルトのブートエントリが自動的に有効にされるまでの時間を指定します。
<boot_mods title="boot1" timeout="5">
新しいエントリごとに boot_entry 要素を追加することで、ブートメニューエントリを個別に追加できます。エントリは、各ブートエントリの「start」または「end」の insert_at 属性値に基づいた順序でブートメニューに順次追加されます。
注 - 新しいエントリは、既存の「with magnifier」エントリの前に追加します。
個々の boot_entry 要素については、次の例を参照してください。
<boot_entry> <title_suffix>with screen reader</title_suffix> <kernel_args>-B assistive_tech=reader</kernel_args> </boot_entry>
詳細は、dc_manifest(4) のマニュアルページを参照してください。
target 要素はカスタマイズできます。この要素は、構築に使用する ZFS 構築データセットを定義します。このデータセットは、イメージが作成される場所です。有効なデータセットの場所を入力する必要があります。システムで保持する必要がある内容が構築によって破棄されないように、デフォルトの構築領域をチェックする必要があります。必要に応じて、構築領域を変更します。
注 - ファイルシステム名には、zpool という名前を含めないでください。
次の例を参照してください。
<target> <logical> <zpool action="use_existing" name="rpool"> <dataset> <filesystem name="dc/sample-dataset-location" action="preserve"/> </dataset> </zpool> </logical> </target>
次の要素には、イメージ構築のためにダウンロードおよび使用するパッケージをディストリビューションコンストラクタが取得できるパブリッシャーを指定します。
<software name="transfer-ips-install">
このセクションのソース要素で、パブリッシャー名要素と起点名要素を編集し、使用するパブリッシャーとパッケージリポジトリが存在する場所を指定します。複数のパブリッシャーを一覧表示できます。ディストリビューションコンストラクタがインストールするパッケージの検出を試みると、ここに一覧表示されている順序でパブリッシャーが検索されます。
パブリッシャーのミラーを指定する必要がある場合は、ミラー名要素をコメント解除して編集します。
次の例を参照してください。
<source> <publisher name="publisher1"> <origin name="http://example.oracle.com/primary-pub"/> <mirror name="mirror.example.com"/> </publisher> <publisher name="publisher2"> <origin name="http://example2.com/dev/solaris"></origin> </publisher> <publisher name="publisher3.org"> <origin name="http://example3.com/dev"></origin> </publisher> </source>
パブリッシャーの使用の詳細は、『Oracle Solaris 11 ソフトウェアパッケージの追加および更新』を参照してください。
install 属性を持つ software_data 要素は、使用しているマニフェストに応じて、特定の種類のイメージを構築するためにインストールされるパッケージのセットを一覧表示します。たとえば、dc_livecd.xml マニフェストは、Live CD イメージの構築に必要なパッケージを一覧表示します。各名前タグは、1 つのパッケージの名前、または多数のパッケージを含む 1 つのグループパッケージの名前を一覧表示します。
<software_data action="install"> <name>pkg:/group/system/solaris-desktop</name> <name>pkg:/system/install/gui-install</name> <name>pkg:/system/install/media/internal</name> </software_data>
イメージに追加するパッケージがある場合、パッケージごとに名前タグを追加することによってパッケージ名を追加します。
デフォルトでは、指定されたリポジトリで利用できる最新のパッケージバージョンがインストールされます。他のバージョンが必要な場合、次の形式を使用してパッケージ参照にバージョン番号を追加します。
<name>pkg:/group/system/solaris-desktop@0.5.11-0.build#</name>
注 - 競合するバージョンがインストールされている他のパッケージが存在する場合は、特定のバージョンが指定されたパッケージがインストールされない可能性があります。詳細は、pkg(5) のマニュアルページを参照してください。
例 2-1 パッケージおよび追加パブリッシャーの追加
この例では、mypublisher という 2 番目のパブリッシャーが指定されます。さらに、mypackage1 および mypackage2 という追加パッケージも指定されます。
構築プロセス中に、パブリッシャーは一覧表示される順序でチェックされます。1 番目のパブリッシャーでパッケージが見つからない場合は、次のパブリッシャーで指定されたパッケージが検索されます。
<software name="transfer-ips-install" type="IPS"> <destination> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="/usr/share/distro_const/lang_facets.xml"/> </destination> <source> <publisher name="solaris"> <origin name="http://pkg.oracle.com/solaris/release"/> </publisher> <publisher name="mypublisher"> <origin name="http://mypublisher.company.com"/> </publisher> </source> <software_data action="install"> <name>pkg:/group/system/solaris-large-server</name> <name>pkg:/system/install/text-install</name> <name>pkg:/system/install/media/internal</name> <name>pkg:/mypackage1</name> <name>pkg:/mypackage2</name> </software_data> </software>
アンインストール属性を持つ software_data 要素は、個々のパッケージのアンインストールまたはグループパッケージ定義のアンインストールに使用できます。
次の例で、solaris-desktop は、多数の個別パッケージを含むグループパッケージの名前です。
<software_data action="uninstall"> <name>pkg:/group/system/solaris-desktop</name> </software_data>
グループパッケージはアンインストールできます。グループパッケージをアンインストールしても、実際にアンインストールされるのはグループ定義だけです。そのグループの一部として以前にインストールされた個々のパッケージはアンインストールされません。ただし、グループパッケージをアンインストールせずに、それらの個々のパッケージをアンインストールできます。グループパッケージを保持すると、参照を継続する場合に役立つ可能性があります。また、名前タグを使用して個々のパッケージをアンインストールすることもできます。アンインストールするパッケージをアンインストールセクションの終わりに追加します。
ディストリビューションコンストラクタを使用して作成されたイメージでシステムがインストールされたあと、次の要素がシステムに影響を与えます。
<software name="set-ips-attributes">
ダウンロードおよびインストールする追加パッケージにインストール済みシステムがアクセスできる場所を指定するための、パブリッシャー名とオプションのミラー名のタグを提供します。
この要素では、IPS 属性も設定できます。IPS プロパティーの詳細は、pkg(1) のマニュアルページを参照してください。
マニフェストの実行要素は、イメージ作成処理中に実行される一連のチェックポイントを一覧表示します。チェックポイントは、このセクションに一覧表示された順序で実行されます。デフォルトのインストールイメージの構築に必要なデフォルトのチェックポイントは、各マニフェストに含まれています。
各チェックポイント名タグには、チェックポイントスクリプトが存在する場所を指定する mod-path 属性が含まれています。
一部のデフォルトチェックポイントタグには、デフォルト値を持つ引数が含まれています。dc_ai_sparc.xml サンプルマニフェストの次のチェックポイント例では、イメージ構築のためのブートアーカイブを作成し、そのタスクを実行するスクリプトを指定します。チェックポイント例には、引数ごとに特定の値が指定された引数フィールドも含まれています。
<checkpoint name="ba-arch" desc="Boot Archive Archival" mod_path="solaris_install/distro_const/checkpoints/ boot_archive_archive" checkpoint_class="BootArchiveArchive"> <kwargs> <arg name="size_pad">0</arg> <arg name="bytes_per_inode">0</arg> <arglist name="uncompressed_files"> <argitem>etc/svc/repository.db</argitem> <argitem>etc/name_to_major</argitem> <argitem>etc/minor_perm</argitem> <argitem>etc/driver_aliases</argitem> <argitem>etc/driver_classes</argitem> <argitem>etc/path_to_inst</argitem> <argitem>etc/default/init</argitem> <argitem>etc/nsswitch.conf</argitem> <argitem>etc/passwd</argitem> <argitem>etc/shadow</argitem> <argitem>etc/inet/hosts</argitem> </arglist> </kwargs> </checkpoint>
この例で示すように、<kwargs> 要素には、構築中にチェックポイントに渡す必要があるキーワード引数が含まれています。<kwargs> 要素には、チェックポイントに渡される個々のキーワードを指定する際に使用可能な <arg name> 要素が含まれています。さらに、<arglist> 要素には、チェックポイントに渡される複数の<argitem> 値の一覧も含まれています。この例には、<arglist> 要素の未圧縮ファイルの一覧が含まれています。
各 <kargs> 一覧項目は二重引用符で囲まれています。二重引用符が使用されていない場合、または文字列全体が 1 組の二重引用符で囲まれている場合は、スペースおよび改行を含む文字列全体が 1 つの引数と解釈されます。引数をコンマで区切らないでください。
イメージの構築中に使用されるカスタムスクリプトを作成する場合、スクリプトの場所を指し示すチェックポイント要素を追加する必要があります。カスタムスクリプトのチェックポイントには、カスタムスクリプトの場所を示す <args> 要素のみが必要です。詳細および例については、「カスタムスクリプトの作成と使用」を参照してください。
特定のチェックポイントで構築処理の一時停止と再開を制御するには、distro_const コマンドオプションを使用します。「段階的にイメージを構築する方法」を参照してください。
例 2-2 SVR4 パッケージの追加
この例では、新しいチェックポイントがマニフェストに追加されます。この新しいチェックポイントは、イメージに追加される SVR4 パッケージとその場所を一覧表示します。その後、この新しいチェックポイントは実行セクションで参照されます。
最初に、新規 software 要素を追加することによって、新しいチェックポイントが作成されます。このチェックポイントには、ソフトウェアタイプとして SVR4、パッケージを検索する場所、およびパッケージをインストールする場所を指定します。
さらに、software_data 要素には、インストールされる特定の SVR4 パッケージが一覧表示されます。
<software name=transfer-svr4-install type="SVR4"> <destination> <dir path={PKG_IMAGE_PATH}/> </destination> <source> <dir path="/path/to/packages"/> </source> <software_data action="install"> <name>SUNWpackage1</name> <name>SUNWpackage2</name> </software_data> </software>
PKG_IMAGE_PATH および BOOT_ARCHIVE の値は、チェックポイントに含まれる場合、distro_const ユーティリティーによって、それぞれ <ZFS Dataset>/build_data/pkg_image および <ZFS Dataset>/build_data/boot_archive に置き換えられます。この例では、SVR4 パッケージが <ZFS Dataset>/build_data/pkg_image にインストールされます。
最後に、この新しいチェックポイントは実行セクションで参照されます。
<execution stop_on_error="true"> <checkpoint name="transfer-ips-install" desc="Transfer pkg contents from IPS" mod_path="solaris_install/transfer/ips" checkpoint_class="TransferIPS"/> <checkpoint name="set-ips-attributes" desc="Set post-install IPS attributes" mod_path="solaris_install/transfer/ips" checkpoint_class="TransferIPS"/> <checkpoint name="transfer-svr4-install" desc="Transfer pkg contents from SVR4 packages" mod_path="solaris_install/transfer/svr4" checkpoint_class="TransferSVR4"/>
ソフトウェア名はチェックポイント名と一致する必要があることに注意してください。この例では、どちらも「transfer-svr4–install」です。
ディストリビューションコンストラクタでは、構築するイメージの種類に基づいてカスタマイズするために使用する追加スクリプトを指定できます。マニフェストファイルはスクリプトを示し、スクリプトは汎用イメージをメディア固有の配布用に変換します。これらのスクリプトは、マニフェストファイルの実行セクションで参照されます。カスタムスクリプトチェックポイントはいくつでも指定できます。
注 - スクリプトのサポートは、アプリケーションパッケージに付属している、変更されていないデフォルトのスクリプトに限定されます。デフォルトのスクリプトをカスタマイズする場合は、まず、元のスクリプトのバックアップを作成してください。
始める前に
独自のカスタムスクリプトを作成する場合は、次の点に注意してください。
スクリプトには、Python プログラム、シェルスクリプト、またはバイナリを使用できます。
スクリプトは、マニフェストファイルの実行セクションに記載されている順に実行されます。
スクリプト (シェルと Python の両方のモジュール) 内で実行されるコマンドの標準出力 (stdout) およびエラー出力 (stderr) が、構築の完了時または試行時に報告するログファイルで取得されます。
root 役割を引き受けるユーザーがこれらのスクリプトを実行できることを確認してください。
スクリプトには必ずフルパスを指定してください。チェックポイントは、マニフェストの実行セクションに記載されている順に実行されます。
マニフェストファイルの完了セクションに新しいスクリプトの参照を追加するときには、そのスクリプトのタスクの実行前または実行後にイメージ構築を一時停止するのに使用するチェックポイント名を指定する必要があります。必要に応じて、チェックポイント名に関連付けたカスタムメッセージを指定することもできます。このメッセージを省略すると、スクリプトのパスがデフォルトのチェックポイントメッセージとして使用されます。構築プロセス中にチェックポイントが実行されると、チェックポイントメッセージが表示されます。
注 - チェックポイント名には、番号ではなく、意味のある名前を使用してください。新しいスクリプトが追加された場合に、新しいスクリプトの新しいチェックポイントが使われるため、番号を使用したチェックポイントの秩序は乱れます。
次のチェックポイントの例では、「my-script」という名前のカスタムスクリプトが参照されます。
<checkpoint name="my-script" desc="my new script" mod_path="solaris_install/distro_const/checkpoints/custom_script" checkpoint_class="CustomScript"> <args>/tmp/myscript.sh</args> </checkpoint>
ここで、引数セクションの構築パラメータとして {PKG_IMAGE_PATH} が指定されます。
<checkpoint name="my-script" desc="my new script" mod_path="solaris_install/distro_const/checkpoints/my_script" checkpoint_class="CustomScript"> <args>/tmp/myscript.sh {PKG_IMAGE_PATH}</args> </checkpoint>
PKG_IMAGE_PATH および BOOT_ARCHIVE の値は、チェックポイントに含まれる場合、distro_const ユーティリティーによって、それぞれ <ZFS Dataset>/build_data/pkg_image および <ZFS Dataset>/build_data/boot_archive に置き換えられます。
イメージは 1 ステップで構築できます。または、構築の状態をチェックするために、さまざまなチェックポイントで構築を停止および再開できます。
手順については、第 3 章イメージの構築を参照してください。
構築出力には、ログファイルの場所が表示されます。