この章では、フラッシュアーカイブを作成する手順を説明します。手順には、マスターシステムにインストールし、その後そのマスターシステムからフラッシュアーカイブを作成する方法が含まれます。クローンシステムにアーカイブをインストール済みの場合、差分アーカイブを作成することも可能です。差分アーカイブの作成時に、更新前のマスターイメージと更新されたイメージの 2 つが比較されます。差分アーカイブでは、2 つのイメージの相違部分のみがインストールされます。さらに、アーカイブの再構成またはカスタマイズを実行するスクリプトの作成手順も示します。
表 18–2 作業マップ: フラッシュアーカイブを作成してクローンシステムを更新する
マスターシステムには、クローンシステムで行いたいソフトウェア構成と同じ構成でインストールします。クローンシステムに、初期インストールによりシステム上のすべてのファイルを上書きすることも、2 つのイメージの相違部分のみを更新することも可能です。初期インストールでは、任意の Solaris インストール方法を使用してマスターシステムに Solaris オペレーティング環境をインストールします。
アーカイブをクローンシステムにインストール済みの場合、差分アーカイブを使用してシステムの変更部分を更新できます。元のイメージへの変更は、パッチのインストールやパッケージの追加および削除により実行されます。差分アーカイブでは、アーカイブ内で指定されたファイルだけが上書きされます。元のマスターイメージを更新して、差分アーカイブを作成する手順については、マスターイメージの更新と差分アーカイブの作成を参照してください。
インストールしたいシステム構成を決定します。
Solaris のインストール方法のいずれかを使用して、マスターシステムに Solaris オペレーティング環境をインストールします。インストール方法の選択については、第 3 章「Solaris インストール方法の選択」を参照してください。
マスターシステムを次のいずれかの方法でカスタマイズします。
ソフトウェアを削除する
ソフトウェアを追加する
構成ファイルを変更する
クローンシステム上にある周辺装置のサポートを追加する
カスタムスクリプトを作成するか、flar create コマンドを使用してアーカイブを作成できます。
カスタムスクリプトの作成方法については、カスタムスクリプトの作成を参照してください。
アーカイブの作成方法については、フラッシュアーカイブの作成を参照してください。
スクリプトを使用して、アーカイブをカスタマイズできます。カスタムスクリプトは、次の目的で使用します。
作成前スクリプトは、作成時にアーカイブの妥当性検査を行い、後でカスタマイズできるようにアーカイブ (特に差分アーカイブ) の準備を行います。このスクリプトを使用して、アーカイブ内にユーザー定義セクションを作成することもできます。
配置前スクリプトは、インストール時にアーカイブの妥当性検査を行い、後でカスタマイズできるようにアーカイブの準備を行います。
配置後スクリプトは、クローンシステム上で新規システムイメージの再構成を行います。
再起動スクリプトは、システムの再起動後に最終的な再構成処理を実行します。
スクリプト作成のガイドラインについては、カスタムスクリプト作成のガイドラインを参照してください。
このスクリプトは、アーカイブの作成時に実行されます。このスクリプトには、さまざまな使用法があります。
ソフトウェアの内容および整合性を検証する。整合性に問題がある場合、スクリプトはアーカイブの作成に失敗する。
クローンシステム上での将来のカスタマイズに備えてプロダクトの準備を行う。
アーカイブの作成時に、他のインストールスクリプトを動的に登録する。
フラッシュ作成サマリーファイルにメッセージを追加する。メッセージは短いものでなければならず、スクリプトが起動および終了したこと、およびその結果のみを記録するものでなければならない。結果は、サマリーセクション内で確認できる。
作成前スクリプトを作成します。カスタムスクリプト作成のガイドラインに記されているガイドラインに従います。
スクリプトを /etc/flash/precreation ディレクトリに保存します。
以下の例は、作成前スクリプトからの抜粋です。
サマリーセクションに開始時刻を記録するには、次の例を使用します。
echo "MyApp precreation script started">> $FLASHDIR/summary
ソフトウェアの整合性をチェックするには、flcheck コマンドを使用します。このコマンドは、コマンド行では使用できません。このコマンドの構文は次のとおりです。
flcheck software component files and directories ...| - |
たとえば、ファイルおよびディレクトリの妥当性検査を実行するには、次の例を使用します。
flcheck software component files and directories If Not in selection - refuse creation echo "Myapp Integrity Damage">>$FLASHDIR/summary
また、予期しない新規ファイルおよびディレクトリを保持し、アーカイブの作成が失敗しないようにするには、次の例を使用します。
flcheck software component files and directories If Not in selection include by force flinclude software component
配置スクリプトおよびデータを登録するには、次の例を使用します。
ユーザー定義セクションにアプリケーション固有のデータを保存するには、次の例を使用します。
cp custom section $FLASHDIR/custom_sections/MyApp
サマリーセクションにインストールの成功を記録するには、次の例を使用します。
echo "product one flash preparation started.">>$FLASH_DIR/summary ... echo "product one flash preparation finished successfully">>$FLASH_DIR/summary
#!/bin/sh echo "Test precreation script started">> $FLASH_DIR/summary cat /opt/TestApp/critical_file_list | flcheck - if [ $? != 0 ]; then echo "Test precreation script failure">> $FLASH_DIR/summary exit 1 fi echo "Test precreation script started">> $FLASH_DIR/summary /opt/TestApplication/license_cloning $FLASH_DIR/predeployment/.TestApplicationLicenceTransfer \ $FLASH_DIR/custom_sections/TestApplicationLicenceCounter echo "Test precreation script finished">> $FLASH_DIR/summary exit 0
作成前スクリプトを使用して、アーカイブ内にユーザー定義セクションを作成し、アプリケーションに関する特定の情報を提供できます。このセクションの目的は、アーカイブの保守です。スクリプトは、$FLASH_DIR/sections ディレクトリに配置する必要があります。フラッシュアーカイブは、ユーザー定義セクションを処理しません。たとえば、このセクションには、アーカイブの説明や、アプリケーションの整合性をチェックするスクリプトなどを含めることができます。
ユーザー定義セクションでは、次の書式を使用する必要があります。
行単位で作成する必要がある
復帰改行 (ASCII 0x0a) 文字で終了させる必要がある
個々の行の長さに制限はない
base64 またはそれに類似したアルゴリズムを使用してバイナリデータにコード化する
このスクリプトは、アーカイブのインストール前に実行されます。スクリプトの目的がアーカイブの妥当性検査である場合、このスクリプトはアーカイブ内に保持されます。スクリプトの目的がクローンシステムのローカル構成を保存することである場合、このスクリプトはクローンシステム上に保持されます。このスクリプトは、将来のカスタマイズに必要なローカルデータの分析および収集も実行可能です。たとえば、クライアント固有の情報を、アーカイブから抽出されるファイルで上書きされる前に保存できます。この情報は、抽出後の最終段階で使用できます。
配置前スクリプトを作成します。カスタムスクリプト作成のガイドラインに記されているガイドラインに従います。
スクリプトを次のディレクトリのいずれかに保存します。
アーカイブの妥当性検査を実行するには、/etc/flash/predeployment ディレクトリに保存します。
作成前スクリプトを使用して参照を行う場合、$FLASH_DIR/preinstall ディレクトリに保存します。
クローンシステム上の構成を保持する場合、JumpStart プロファイル内の local_customization キーワードに、クローンシステムに保存されているスクリプトへのパスを指定します。
#!/bin/sh $FLASH_DIR/TestApplication/check_hardware if [ $? != 0 ]; then echo Unsupported hardware exit 1 fi $FLASH_DIR/TestApplication/check_licence_key if [ $? != 0 ]; then echo No license for this host exit 1 fi $FLASH_DIR/TestApplication/deploy_license_key \ $FLASH_DIR/TestApplication/.TestApplicationLicenceTransfer $FLASH_DIR/TestApplication/save_data_files $FLASH_DIR/flash exit 0
このスクリプトは、アーカイブ内またはクローンシステムのローカルディレクトリに格納され、インストール後に実行されます。スクリプトにより、クローンシステム上で新規システムイメージが再構成されます。スクリプトがアーカイブ内に格納されている場合、変更はすべてのクローンシステムに影響を及ぼします。スクリプトがクローンシステムのローカルディレクトリに格納されている場合、変更はそのクローンシステムにのみ影響します。たとえば、配置前スクリプトにより保存されたクライアント固有の情報をクローン環境に適用して、インストールを完了できます。
配置後スクリプトを使用して、アーカイブのインストール後にファイルを整理することも可能です。たとえば、/var/adm 内のログファイルなどを削除できます。
すべてのログファイルが、クリーンアップ用のスクリプトを必要とするわけではありません。/var/tmp 内のログファイルはアーカイブの作成時に自動的に削除されます。
配置後スクリプトを作成します。カスタムスクリプト作成のガイドラインに記されているガイドラインに従います。
スクリプトを次のディレクトリのいずれかに保存します。
すべてのクローンシステムを操作するには、スクリプトを /etc/flash/postdeployment ディレクトリに保存します。
ローカルのクローンシステムのみを操作する場合は、JumpStart プロファイル内の local_customization キーワードに、クローンシステムに保存されているスクリプトへのパスを指定します。
#!/bin/sh $FLASH_DIR/TestApplication/clone_reconfiguration $FLASH_DIR/TestApplication/restore_data $FLASH_DIR/flash
このスクリプトはアーカイブ内に格納され、システムの再起動後に実行されます。このスクリプトにより、システムの再構成後の最終構成がすべて実行されます。
クローンシステムにフラッシュアーカイブをインストールしたあと、ホスト固有のファイルがいくつか削除され、クローンマシン用として作成し直されます。インストールプログラムは、sys-unconfig(1M) コマンドと sysidtool(1M) プログラムを使用して、ホスト固有のネットワーク構成ファイルを削除して再作成します。再作成されるファイルは、/etc/hosts、/etc/defaultrouter、/etc/defaultdomain などです。再起動スクリプトを使用することで、任意の最終的な再構成処理を実行できます。
#!/bin/sh $FLASH_DIR/TestApplication/finalize_license
クローンシステムのファイルすべてを上書きする初期インストール用アーカイブを作成することも、指定された変更部分のみを上書きする差分アーカイブを作成することもできます。差分アーカイブの詳細は、更新用フラッシュ差分アーカイブの作成を計画するを参照してください。
マスターシステムにインストールした後で、他のシステムへのインストールに使用するフラッシュアーカイブを作成します。
マスターシステムをブートし、できるだけ静的な状態で稼働させます。
可能であれば、システムをシングルユーザーモードで実行してください。これが不可能な場合、アーカイブしたいアプリケーションおよび大量のオペレーティングシステムリソースを必要とするアプリケーションを停止します。
フラッシュアーカイブの作成は、マルチユーザーモードまたはシングルユーザーモードで稼動しているマスターシステム上で、あるいは次に示すメディアの 1 つからブートさせたシステム上で行うことができます。
Solaris DVD
Solaris SOFTWARE 1 of 2 CD
Solaris SOFTWARE のイメージ。CD メディアを使用している場合、イメージには必要に応じて Solaris LANGUAGES CD が含まれます。
flar create コマンドを使用して、アーカイブを作成します。
# flar create -n name options path/filename |
アーカイブに指定する名前です。指定する name は、content_name キーワードの値になります。
オプションの詳細は、flar createを参照してください。
アーカイブファイルを保存するディレクトリへのパスです。パスを指定しない場合、flar create によりアーカイブファイルを現在のディレクトリに保存します。
アーカイブファイルの名前です。
アーカイブの作成が正常に完了すると、flar create コマンドは終了コード 0 を返します。
アーカイブの作成が失敗すると、flar create コマンドは 0 以外の終了コードを返します。
アーカイブのコピーを作成して保存します。将来、クローンシステムを差分アーカイブで更新するときに、このコピーを使用できます。
ファイルシステムを複製する際、全く同じようにコピーすることも、カスタマイズしてディレクトリやファイルのいくつかを除外することもできます。異なるオプションを使用して、同じ結果を得ることも可能です。使用する環境に最も適したオプションを使用してください。
次の例に示すファイルシステムは、分かりやすくするために大幅に簡略化されています。これらの例では、マスターシステムのファイル構造は、/var、/usr、または /opt などのファイルシステム名の代わりに、次のようなファイル構造を使用します。
/aaa/bbb/ccc/ddd /aaa/bbb/fff /aaa/eee /ggg |
flar create のファイル除外オプションを指定する際は、注意が必要です。一部のディレクトリを除外する際、気づかずにシステム構成ファイルなどの他のファイルがアーカイブに残ってしまう場合があります。この場合、システムの整合性が損なわれるため、インストールが失敗してしまいます。ディレクトリやファイルの除外は、大規模なデータファイルなど、システムを破綻させることなく容易に削除可能なデータに対して行うのが最善です。
この例では、アーカイブの名前は archive1 です。これは、マスターシステムそのものがコピーされ、その後圧縮されます。アーカイブはマスターシステムの全く同一な複製で、archive1.flar に格納されます。
# flar create -n archive1 -c archive1.flar |
アーカイブのファイル構造を確認するには、以下のように入力します。
# flar info -l archive1.flar aaa aaa/bbb aaa/bbb/ccc aaa/bbb/ccc/ddd aaa/bbb/fff aaa/eee aaa/eee ggg |
この例では、アーカイブの名前は archive2 です。これは、マスターシステムからコピーされますが、同一のコピーではありません。/aaa ディレクトリ以下の内容はアーカイブから除外されますが、/aaa/bbb/ccc の内容はアーカイブに含まれます。
# flar create -n archive2 -x /aaa -y /aaa/bbb/ccc archive2.flar |
アーカイブのファイル構造を確認するには、以下のように入力します。除外されたディレクトリ (/aaa) であっても、コピーされたファイル (/aaa/bbb/ccc) が下位に存在する場合、そのディレクトリも表示されていますが、実際にアーカイブに含まれているのはコピーされたファイル ( /aaa/bbb/ccc) だけです。
# flar info -l aaa aaa aaa/bbb/ccc aaa/bbb/ccc/ddd aaa/bbb ggg |
この例では、アーカイブの名前は archive5 です。これは、マスターシステムからコピーされますが、同一のコピーではありません。
exclude ファイルには、次のリストが含まれています。
/aaa |
include ファイルには、次のリストが含まれています。
/aaa/bbb/ccc |
/aaa ディレクトリ以下の内容はアーカイブから除外されますが、/aaa/bbb/ccc の内容はアーカイブに含まれます。
# flar create -n archive5 -X exclude -f include archive5.flar |
アーカイブのファイル構造を確認するには、以下のように入力します。除外されたディレクトリ (/aaa) であっても、コピーされたファイル (/aaa/bbb/ccc) が下位に存在する場合、そのディレクトリも表示されていますが、実際にアーカイブに含まれているのはコピーされたファイル ( /aaa/bbb/ccc) だけです。
# flar info -l archive5.flar aaa aaa/bbb/ccc aaa/bbb/ccc/ddd aaa/bbb ggg |
オプション -x、-y、-X、および -f を組み合わせて使用できます。この例では、オプション -X および -y が組み合わせて使用されています。アーカイブの名前は、archive5 です。これは、マスターシステムからコピーされますが、同一のコピーではありません。
exclude ファイルには、次のリストが含まれています。
/aaa |
-y オプションにより、ディレクトリ /aaa/bbb/ccc がアーカイブに含まれます。次のコマンドにより、アーカイブが生成されます。
# flar create -n archive5 -X exclude -y /aaa/bbb/ccc archive5.flar |
アーカイブのファイル構造を確認するには、以下のように入力します。除外されたディレクトリ (/aaa) であっても、コピーされたファイル (/aaa/bbb/ccc) が下位に存在する場合、そのディレクトリも表示されていますが、実際にアーカイブに含まれているのはコピーされたファイル ( /aaa/bbb/ccc) だけです。
# flar info -l archive5.flar aaa aaa/bbb aaa/bbb/ccc aaa/bbb/ccc/ddd ggg |
この例では、アーカイブの名前は archive3 です。これは、マスターシステムからコピーされますが、同一のコピーではありません。選択するファイルおよびディレクトリが、filter1 ファイルに含まれます。ファイル内では、ディレクトリにプラス記号 (+) またはマイナス (-) 記号が付けられ、アーカイブから除外するかアーカイブに含めるかが示されます。この例では、ディレクトリ /aaa に除外されることを示すマイナス記号が、サブディレクトリ /aaa/bbb/ccc にアーカイブに含めることを示すプラス記号が付けられています。filter1 ファイルには、次のリストが含まれています。
- /aaa + /aaa/bbb/ccc |
次のコマンドにより、アーカイブが生成されます。
# flar create -n archive3 -z filter1 archive3.flar |
アーカイブのファイル構造を確認するには、以下のコマンドを入力します。除外されたディレクトリ (/aaa) であっても、コピーされたファイル (/aaa/bbb/ccc) が下位に存在する場合、そのディレクトリも表示されていますが、実際にアーカイブに含まれているのはコピーされたファイル ( /aaa/bbb/ccc) だけです。
# flar info -l archive3.flar aaa aaa/bbb aaa/bbb/ccc aaa/bbb/ccc/ddd ggg |
この例では、アーカイブの名前は archive4 です。これは、マスターシステムそのものがコピーされ、その後圧縮されます。アーカイブはマスターシステムの全く同一な複製で、archive4.flar に格納されます。-R オプションは、別のディレクトリツリーからアーカイブを作成する場合に使用します。
# flar create -n archive4 -c -R /x/yy/zz archive4.flar |
この例では、アーカイブの名前は archive3 です。このアーカイブは、マスターシステムそのものがコピーされ、その後圧縮されます。オプションで、アーカイブ識別セクションに説明を追加できます。この説明により、後でアーカイブを識別するのが容易になります。キーワード、およびその値と書式については、フラッシュのキーワードを参照してください。
# flar create -n archive3 -i 20000131221409 -m pumbaa \ -e "Solaris 8 Print Server" -a "Mighty Matt" -U "Internal Finance" \ -T server archive3.flar |
アーカイブの作成後に、詳細な説明を含む識別セクションにアクセスできます。識別セクションの例を、以下に示します。
section_begin=identification files_archived_method=cpio files_compressed_method=compress files_archived_size=259323342 files_unarchived_size=591238111 creation_date=20000131221409 creation_master=pumbaa content_name=Finance Print Server content_type=server content_description=Solaris 8 Print Server content_author=Mighty Matt content_architectures=sun4u,sun4m creation_node=pumbaa creation_hardware_class=sun4u creation_platform=SUNW,Sun-Fire creation_processor=sparc creation_release=5.9 creation_os_name=SunOS creation_os_version=s81_49 x-department=Internal Finance |
差分アーカイブを作成するには、更新前のマスターイメージと更新されたマスターイメージの 2 つが必要です。1 つのイメージは、変更が加えられていないマスターイメージです。このイメージはどこかに保存されていてアクセスできる必要があります。2 番目のイメージは、マイナーチェンジにより変更が加えられたマスターイメージです。このイメージのデフォルトの格納場所はルート (/) ファイルシステムですが、他の場所に格納された場合でもアクセスが可能です。2 つのイメージが用意できたら、2 つのイメージの差分だけを含む差分アーカイブを作成します。次に、更新前のマスターイメージを使用してインストールされたクローンシステムに差分アーカイブをインストールできます。
マスターシステムで変更の準備を行います。変更を加える前に、マスターシステムで元のアーカイブの複製を作成する必要があります。
更新前のマスターイメージのコピーが変更されないよう保護し、後でこのイメージをマウントできるようにしておく必要があります。
次のいずれかの変更に合わせて、更新前のマスターイメージを更新します。
パッケージを削除する
パッケージまたはパッチを追加する
構成ファイルを変更する
クローンシステム上にある周辺装置のサポートを追加する
(省略可能) カスタムスクリプトを作成します。カスタムスクリプトの作成を参照してください。
更新前のマスターイメージを、マウントポイントで参照できるようにします。
更新前のマスターイメージが非アクティブのブート環境に格納されている場合は、lumount コマンドを使用して参照可能にします。
# lumount BE_name mountpoint |
更新前のマスターイメージが格納されているブート環境の名前を指定します。
イメージの格納されたルート (/) ファイルシステムを指定します。
次の例では、非アクティブのブート環境の名前は unchanged_master1 です。マウントポイントは、マスターシステム上の /a ディレクトリです。
# lumount unchanged_master1 /a |
イメージがクローンに格納されている場合、NFS を使用してクローンをマウントします。
ufsdump コマンドを使用してイメージを保存した場合、ufsrestore コマンドを使用してコピーを取得します。これらのコマンドの使用方法については、『Solaris のシステム管理 (基本編)』の「UFS バックアップおよび復元コマンド (参照情報)」を参照してください。
差分アーカイブを作成します。
# flar create -n archive_name -A unchanged_master_image_dir\ options path/filename |
アーカイブに付ける名前を指定します。指定する archive_name は、content_name キーワード の値になります。名前は、アーカイブ識別セクションに記載されます。
新規システムイメージを unchanged_master_image_dir 引数で指定されたイメージと比較して、差分アーカイブを作成します。デフォルトでは、新しいシステムイメージはルート (/) です。-R オプションを使用してデフォルトを変更できます。unchanged_master_image_dir は、UFS、NFS、または lumount を使用して格納またはマウントされた更新前システムイメージの格納先ディレクトリです。
内容選択用のオプションを使用して、一部のファイルを含めることも除外することもできます。オプションの一覧は、flar createを参照してください。
オプションの詳細は、flar createを参照してください。
アーカイブファイルを保存するディレクトリへのパスを指定します。パスを指定しない場合、flar create によりアーカイブファイルを現在のディレクトリに保存します。
アーカイブファイル名を指定します。
差分アーカイブの作成が正常に完了すると、flar create コマンドは終了コード 0 を返します。
差分アーカイブの作成が失敗すると、flar create コマンドは 0 以外の終了コードを返します。
アーカイブのインストール手順については、フラッシュアーカイブをインストールする方法を参照してください。
次の例では、更新前のマスターイメージのディレクトリの名前は unchanged_master1 です。変更を含む新しいマスターイメージは、ルート (/) ディレクトリにおかれているものとします。新しいマスターイメージが更新前のマスターイメージと比較され、その後、生成された差分アーカイブが圧縮されます。差分アーカイブは、diffarchive1.flar ファイルに格納されます。アーカイブには、インストール時に削除、変更、または追加されるファイルが含まれます。
# flar create -n diffarchive1 -A /a/unchanged_master1 -c diffarchive1.flar |
次の例では、更新前のマスターイメージ unchanged_master1 が非アクティブブート環境に格納されており、ブート環境をマウントすることによりアクセス可能になります。新しいマスターイメージは、ルート (/) ディレクトリにおかれているものとします。新しいマスターイメージが更新前のマスターイメージと比較され、その後、生成された差分アーカイブが圧縮されます。アーカイブは、diffarchive4.flar 内に格納されます。アーカイブには、インストール時に削除、変更、または追加されるファイルが含まれます。
# lumount unchanged_master1 /a # flar create -n diffarchive4 -A /a -c diffarchive4.flar |