Oracle® Solaris 11.2 カスタムインストールイメージの作成

印刷ビューの終了

更新: 2014 年 7 月
 
 

マニフェストの内容の変更

各マニフェストファイルのすべてのフィールドには、必要とする種類の ISO イメージを作成するためのデフォルト値が事前設定されています。マニフェストファイル内の事前設定フィールドを手動で編集することで、結果として生成されるイメージをさらにカスタマイズできます。

次の表で、サンプルマニフェストファイルの主な要素について説明します。

表 2-3  マニフェスト要素
要素
説明
<distro name="Oracle_Solaris_Text_X86"
add_timestamp="false">
オプションのタイムスタンプを使用してイメージ名を指定します
<boot_mods>
イメージ用の GRUB メニュー変更を指定します
<target>
イメージが構築される ZFS 構築データセットを定義します
<software name="transfer-ips-install" type="IPS">
インストールするソフトウェアパッケージのソースを指定します
<software_data action="install">
インストールするパッケージを一覧表示します
<software_data action="uninstall">
アンインストールするパッケージを一覧表示します
<software name="set-ips-attributes">
インストールが完了した後、IPS の各種属性を設定します
<software name="ba-init">
ブートアーカイブの内容を指定します

注意  -  注意して変更してください。ブートアーカイブが正しくない場合は、インストールされたシステムのブートに失敗します。

<execution stop_on_error="true">
<checkpoint name="transfer-ips-install"/>
構築チェックポイントを一覧表示します
<configuration name="pre-pkg-img-mod" type="sysconf"
 
source="/etc/svc/profile/generic_limited_net.xml">
構築中にメディアに適用される SMF サービスを指定します

注意  -  できるだけ変更しないでください。

イメージタイトルの指定

次の要素を使用して、構築するイメージのカスタム名またはデフォルト名を指定します。

<distro name="Oracle_Solaris_Text_X86" add_timestamp="false">

イメージの構築作業を続けて実行して複数の増分イメージを保持する場合、タイムスタンプ変数を「true」に変更すると、タイムスタンプが各イメージの名前に自動的に追加されます。

HTTP プロキシを指定する必要がある場合、プロキシ変数を含む distro name 要素のコメントを解除して、プロキシの場所を指定します。

ブートメニューの変更

このブートメニュー要素はイメージに適用されるブートメニューの変更を指定します。

次の例では、「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">

このソフトウェア名のセクション内にネストされているソース要素内で、パブリッシャー名要素と起点名要素を編集し、使用するパブリッシャーとパッケージリポジトリが存在する場所を指定します。リポジトリの場所は、NFS パスまたはローカルディレクトリとすることができます。複数のパブリッシャーを一覧表示できます。ディストリビューションコンストラクタがインストールするパッケージの検出を試みると、ここに一覧表示されている順序でパブリッシャーが検索されます。

パブリッシャーのミラーを指定する必要がある場合は、ミラー名要素をコメント解除して編集します。

次の例は、ソフトウェア名要素の内部で見られるサンプルソース要素を示します。

<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"/>
   </publisher>
   <publisher name="publisher3.org">
       <origin name="http://example3.com/dev"/>
   </publisher>
   <publisher name="publisher4">
       <origin name="file:///net/myserver/publisher4/repo"/>
   </publisher>
</source>

パブリッシャーの使用方法の詳細は、Oracle Solaris 11.2 ソフトウェアの追加と更新 を参照してください。

インストールするパッケージの一覧表示

install 属性を持つ software_data 要素は、使用しているマニフェストに応じて、特定の種類のイメージを構築するためにインストールされるパッケージのセットを一覧表示します。たとえば、dc_livecd.xml マニフェストは、ライブメディアイメージの構築に必要なパッケージを一覧表示します。各名前タグは、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>

注 - システム上の Oracle Solaris のリリースバージョンは、ディストリビューションコンストラクタで作成しようとしているイメージのリリースバージョンと同じである必要があります。

また、自動インストールサービスのマニフェストファイルでの指定に従って、競合するバージョンを持つ他のパッケージがインストールされている場合は、指定された特定のバージョンのパッケージがインストールされない可能性があります。Oracle Solaris 11.2 システムのインストール の第 9 章インストールのカスタマイズを参照してください。


使用例 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 要素は、個々のパッケージのアンインストールまたはグループパッケージ定義のアンインストールに使用できます。


注 - グループパッケージ定義は、そのグループ内の個々のパッケージすべてを、グループとしてのみ実行できる 1 つの単位に結合します。

アンインストール属性は、全部のグループパッケージをインストールするが、1 つ以上の個々のパッケージをそのグループから省略したい場合に特に便利です。アンインストール属性を使用して、最初にグループパッケージ定義を削除することができます。次に、グループパッケージの一部としてインストールされた個々のパッケージをアンインストールできます。

たとえば、ライブメディアインストールイメージを構築することを選択する場合があります。デフォルトのライブメディアインストールイメージには、デスクトップグループパッケージ内に Firefox ブラウザが含まれています。

    構築するイメージから Firefox ブラウザを省略する場合、次のことを実行します。

  1. 通常のライブメディアデスクトップ用のすべてのソフトウェアを含む solaris-desktop グループパッケージをインストールします。インストールするパッケージの一覧表示を参照してください。

  2. アンインストール属性を次のように使用して、solaris-desktop グループパッケージ定義をアンインストールします。

    <software_data action="uninstall">
       <name>pkg:/group/system/solaris-desktop</name>
    </software_data>

    注 - グループパッケージに対するアンインストールアクションは、グループパッケージ定義のみアンインストールします。そのグループ内の個々のパッケージは、最初のステップに従ってインストールされたままになります。
  3. これで個々のパッケージがグループ定義に結合されなくなったため、アンインストール属性を再度使用して Firefox パッケージをアンインストールできます。

    <software_data action="uninstall">
       <name>pkg:/web/browser/firefox</name>
    </software_data>

    また、ステップ 2 と 3 を次のようにして 1 つのエントリに組み合わせることもできます。

    <software_data action="uninstall">
    		<name>pkg:/group/system/solaris-desktop</name>
    		<name>pkg:/web/browser/firefox</name>
    </software_data>

アンインストールするパッケージをアンインストールセクションの終わりに追加します。

インストール対象システムのパブリッシャーの指定

ディストリビューションコンストラクタを使用して作成されたイメージでシステムがインストールされた後、software name 要素がシステムに影響を与えます。

<software name="set-ips-attributes">

ダウンロードおよびインストールする追加パッケージにインストール済みシステムがアクセスできる場所を指定するための、パブリッシャー名とオプションのミラー名のタグを提供します。

この要素では、IPS 属性も設定できます。pkg(1)のマニュアルページの IPS プロパティー情報を参照してください。

構築チェックポイントの設定

マニフェストの execution 要素は、イメージ作成処理中に実行される一連のチェックポイントを一覧表示します。チェックポイントは、このセクションに一覧表示された順序で実行されます。デフォルトのインストールイメージの構築に必要なデフォルトのチェックポイントは、各マニフェストに含まれています。

イメージ作成処理中、チェックポイントはマニフェストに指定されている構築領域の内容を変更します。

    構築領域には、次のディレクトリがあります。

  • ZFS dataset/build_data/pkg_image

  • ZFS dataset/build_data/boot_archive

ここで、ZFS dataset 変数は、マニフェストのターゲット要素で指定されます。

構築プロセス中、最終的なイメージに含められるすべての内容は、pkg_image ディレクトリに追加されます。異なる boot_archive ディレクトリ内にあるファイルは構築プロセス中に使用されてブートアーカイブファイルが作成され、これも pkg_image ディレクトリに追加されます。

    次の一覧表示は、ほとんどのマニフェストでチェックポイントが実行される順に、デフォルトの各チェックポイントの簡単な説明を提供します。

  • transfer-ips-install – このチェックポイントでは、ディストリビューションコンストラクタは IPS のパブリッシャーと連絡を取り、マニフェストの software_data 要素に一覧表示されているパッケージをイメージに追加します。

  • set-ips-attributes – このチェックポイントでは、コンストラクタはインストール対象システムによって使用されるパブリッシャーを設定します。このチェックポイントによって設定される値は、自動インストールイメージを作成する場合は関係ありません。

  • pre-pkg-img-mod – このチェックポイントでは、コンストラクタはマニフェストの configuration 要素で指定された SMF サービスファイルをイメージにインポートします。また、コンストラクタはイメージを最適化するために一部のファイルを変更します。

    このチェックポイントまでのすべての変更は、構築されるイメージと、ルートアーカイブの両方に含められます。カスタムスクリプトからの変更が、ルートアーカイブとイメージの両方に組み込まれていることを確認する場合は、この pre-pkg-img-mod チェックポイントの前か直後にカスタムスクリプト用の新規チェックポイントを追加するようにします。

  • ba-init - このチェックポイントでは、コンストラクタはマニフェストの ba-init セクションに一覧表示されているファイルをルートアーカイブに取り込みます。これらのファイルは pkg_image 領域から root_archive 領域にコピーされます。

  • ba-config – このチェックポイントでは、コンストラクタはルートアーカイブにコピーされたファイルに追加の変更を実行します。コンストラクタはルートアーカイブのサイズを最小限に抑えるために、ブートプロセスの後半まで不要な他のファイルへのシンボリックリンクを作成します。

  • ba-arch – このチェックポイントでは、コンストラクタはルートアーカイブをパックし、pkg_image ディレクトリ内でルートアーカイブをファイルとして作成します。またコンストラクタは、構築されるシステムの種類に固有となるルートアーカイブへのすべての最適化を適用します。このチェックポイント以降では、ルートアーカイブはすでにパックされているため、カスタムスクリプトによるブートアーカイブ指定への変更はルートアーカイブに組み込まれません。

  • boot-setup - このチェックポイントでは、コンストラクタはマニフェストの boot_entry セクションで指定されるエントリに基づいて、GRUB2 メニューを設定します。このチェックポイントは、x86 システムのイメージにのみ適用されます。

  • pkg-img-mod – このチェックポイントでは、コンストラクタは構築されるイメージのメインアーカイブを作成し、pkg_image 領域を最適化します。コンストラクタは pkg_image ディレクトリ内のファイルを移動し、イメージ用のアーカイブを作成します。pkg_image ディレクトリに含まれるすべての内容がイメージに含められます。このチェックポイント以降のすべての追加はイメージに含められません。

  • create-iso - このチェックポイントは、pkg_image ディレクトリに含まれるすべての内容を含む .iso ファイルを作成します。

  • create-usb – このチェックポイントは、生成された .iso ファイルから .usb ファイルを構築します。

各チェックポイントセクションに含まれている特定のフィールドを見ると、各チェックポイント名のタグにはチェックポイントスクリプトの場所を指定する 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>
    <publisher/>
      <origin name="/path/to/packages"/>
    </publisher>
   </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 にインストールされます。

最後に、この新しいチェックポイントは実行セクションで参照されます。チェックポイントには任意の文字列を指定できますが、この例では、checkpoint_class は TransferSVR4 である必要があります。

<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」です。

使用例 2-3  メディアのハッシュの作成

このチェックポイントを指定すると、distro_const が、DC マニフェストのチェックサムチェックポイントを使用して、メディアのハッシュを自動生成するようにできます。

    <checkpoint name="checksums" 
      desc="Checksum calculation for media" 
      mod_path="solaris_install/distro_const/checkpoints/checksums"
      checkpoint_class="Checksums"> 
      <kwargs> 
        <arglist name="algorithms"> 
          <argitem file_path="/tmp/md5sums.txt">md5</argitem> 
          <argitem>sha1</argitem> 
          <argitem>sha224</argitem> 
          <argitem>sha256</argitem> 
          <argitem>sha384</argitem> 
          <argitem>sha512</argitem> 
        </arglist> 
      </kwargs> 
    </checkpoint>
  

arglist リストには、生成されたメディアのハッシュを生成するために使用されるすべてのアルゴリズムが含まれます。各 argitem はアルゴリズムを指定します。有効なアルゴリズムを確認するには /usr/bindigest -l を実行します。各 argitem には、そのアルゴリズムによって生成されるハッシュの末尾に追加される、追加ファイルの絶対パスを指定する path 属性を指定できます。アルゴリズムを指定しない場合、デフォルトは md5 です。

イメージの構築中、アルゴリズムごとに、各メディアのチェックサムが格納されたファイルが生成されます。