MED-V v2 の展開用パッケージ作成の事前作業についてまとめていきたいと思います。
# パッケージ作成まで書こうと思ったのですが、事前作業が意外に多かったのでパッケージ作成は別でまとめたいと思います。
パッケージを作成するには、MED-V Workspace Packager をホスト OS にインストールする必要があります。
ヘルプでは、[How to Install the MED-V Workspace Packager] に記載されている内容です。
■Workspace Packager のインストール
MED-V Workspace Packager のインストールには、[MED-V_Console_xxx.msi] を 実行します。
今回はホスト OS に Windows 7 Enterprise Edition x86 を使用しているので、[MED-V_Console_x86.msi] を実行して、32 ビット環境用の Workspace Packager をインストールします。
- [MED-V_Console_x86.msi] を実行します。
- [Next] をクリックします。
- [I accept the terms in the License Agreement.] を有効にして、[Next] をクリックします。
- Windows Update の設定をして、[Next] をクリックします。
今回は、[Use Microsoft Update when I Check for updates] を選択しています。
- [Next] をクリックします。
- [Install] をクリックして、MED-V Workspace Packager をインストールします。
- [Finish] をクリックしてインストールを完了します。
以上で、MED-V Workspace Packager のインストールは完了です。
スタートメニューから Workspace Packager を起動することが可能です。
この Workspace Packager を使用して、展開用のパッケージを作成します。
パッケージを作成する際には、前回の手順で作成したゲスト OS の VHD を指定するのですがここまでの手順で作成した VHD をしてしてパッケージを作成しようとすると以下のエラーが発生します。
パッケージ化をするためには、ゲスト OS 上に [sysprep.inf] が存在しいている必要があります。
# パッケージ化する際にゲスト OS の VHD をホスト OS 上にマウントしてファイルの存在を確認しているようです。
■sysprep.inf の作成
パッケージ化するためにゲスト OS 上で sysprep.inf を作成します。
sysprep.inf を作成するためには、前の投稿で展開をしたセットアップマネージャーを使用します。
ヘルプの [Configuring a Windows Virtual PC Image for MED-V] にサンプルの sysprep.inf が記載されていますのでこれを使っても良いかと思います。
# 英語環境をベースに記載されているので、そのまま使用するとキーボードの設定が英語になってしまいますが。
展開したフォルダの [setupmgr.exe] を実行します。
- setup.mgr を実行します。
- [次へ] をクリックします。
- [新しい応答ファイルを作成する] を選択し、[次へ] をクリックします。
- [Sysprep セットアップ] を選択して、[次へ] をクリックします。
- [Windows XP Professional] を選択して、[次へ] をクリックします。
- [はい、インストールを完全に自動化します] を選択し、[次へ] をクリックします。
あとは完全自動化で無応答セットアップができるように各項目を入力していきます。
ヘルプの sysprep.inf と合わせるようにするためには、以下の設定をします。
"wmic /namespace:\rootdefault path SystemRestore call Disable %SystemDrive%" "c:Program FilesMicrosoft Enterprise Desktop VirtualizationFtsCompletion.exe" |
設定が終了したら、[C:sysprepsysprep.inf] に応答ファイルを保存します。
今回、私が作成した応答ファイルは以下の内容になります。
AdminPassword / ProductKey / Joinomain / DomainAdmin / DomainAdminPassword は環境に応じて適切な値を設定してください。
# JoinWorkgroup は参考としてコメントアウトして記載しています。
;SetupMgrTag [UserData] [Identification] [Networking] [Branding] [Proxy] [Unattended] [GuiRunOnce] [sysprepcleanup] |
この後、sysprep をかけて展開用のイメージ化するのですが、sysprep をする前に Administrator のパスワードを設定なしの状態にしておきます。
ただし、パスワードなしだと再作業をしようとしたときにログオンできない状態になる可能性があるためこの辺の作業はスナップショットを取得しておいて慎重に実施しておいた方が良いかもしれません。
# 応答ファイルと同じパスワードでも大丈夫ですが、Sysprep 実行前はなしにするのが定番だと思います。
また、[FtsCompletion.exe] についてですが、これは First Time Setup のための実行ファイルになるようなのですが何度か試したところ、これを実行すると sysprep が永久ループされてしまい起動することができないという現象が発生してしまいました。 # sysprep の処理が完了する前に FtsCompletion でシャットダウンが発生して、再度 sysprep が実行されてしまいました…。
状況に応じて、[FtsCompletion.exe] の実行はしないように変更したほうが検証をしやすいかもしれません。
# このプログラムで具体的にどのようなことが行われるのかまでは掴めていません…。
2010/10/21 追記
FtsCompletion が完了せずに、sysprep が永久ループしていなかった件ですが、MED-V のゲスト OS の構成が適切でなかったため発生していたようです。
ゲスト OS が適切に構成されている場合、sysprep 後に FtsCompletion が実行され、MED-V のワークスペースの初期化が完了し、ログオンしているユーザーの差分ディスクが使用できる状態になります。
ワークスペースの初期化が正常に終了しない場合、MED-V は差分ディスクを新規に作成し、再度親ディスクの状態を使用しに行きますので、sysprep が永久に終わらないという状態が発生していたようです。
構成が適切でなかった原因なのですが、MED-V のゲスト OS をドメインに参加させるように応答ファイルを構成していなかったことに起因しているようです。
ドメインに参加させるように応答ファイルを構成したら MED-V ワークスペースの初期化も正常に完了し、MED-V Host Agent が起動されるたびに差分ディスクが再作成されるという現象は発生しなくなりました。
ヘルプのサンプル応答ファイルもドメイン参加するように構成されていますので、MED-V v2 ではホスト、ゲスト共にドメイン参加させる必要がありそうですね。
WORKGROUP で、ワークスペースの初期化を正常に完了させ sysprep の永久ループが発生しないようにするための方法は見つけられませんでした。
■VHD から不要なファイルを削除
ここまでの作業が完了すると sysprep を実行して展開用のイメージを作成できるのですが、[MED-V Evaluation.pdf] に、[Instructions for Compacting the VHD] という章があり、VHD から不要なファイルを削除してコンパクト化する手順が記載されています。
展開用のイメージは小さい方がネットワークトラフィックに負担もかけずに済みますので記載内容を実行して最適化をしておきたいと思います。
■DLL キャッシュのクリア
■不要ファイルの削除
- 以下のコマンドをコマンドプロンプトから実行して不要ファイルを削除します。
Delete all $<Name>$ files from the %windir% directory except $hf_mig$
# 修正プログラム適用時に作成される $NtUninstallxxxxxx$ を手動で削除します。
隠しフォルダなので表示されるようにフォルダオプションを変更する必要があります。
$hf_mig$ も削除しても大丈夫な気はするのですが今回は残してあります。DEL "%windir%ServicePackFiles*"
DEL "%windir%Driver Cachei386*"
DEL "%windir%System32wbemAutoRecover*"
DEL "%windir%webwallpaper*"
DEL "%windir%SoftwareDistributionDownload"
DEL "C:Documents And SettingsAll UsersDocumentsMy Music*"
DEL "C:Documents And SettingsAll UsersDocumentsMy Pictures*"
DEL "C:Documents And SettingsAll UsersDocumentsMy Videos*"
■システム復元の無効化
- [マイ コンピュータ] の [プロパティ] をクリックします。
- [システムの復元] タブを選択します。
- [システムの復元を無効にする] を有効にし、[OK] をクリックします。
- [はい] をクリックします。
■イベントログのサイズ調整
- [eventvwr.msc] を実行します。
- [アプリケーション] を右クリックし、[プロパティ] をクリックします。
- 以下の設定をして、[OK] をクリックします。
[最大ログ サイズ] : 512 KB
[必要に応じてイベントを上書きする] : 有効
- [アプリケーション] を右クリックし、[すべてのイベントを消去] をクリックします。
- [いいえ] をクリックします。
- 同様の作業を、[システム] [セキュリティ] に対して実行します。
■ディスククリーンアップの実行
■ページングファイルの設定
- [マイ コンピュータ] の [プロパティ] をクリックします。
- [詳細設定] タブを選択します。
- [パフォーマンス] の [設定] ボタンをクリックします。
- [詳細設定] タブをクリックします。
- [変更] をクリックします。
- [ページング ファイルなし] を選択し、[設定] をクリックします。
- [OK] をクリックします。
- [OK] をクリックします。
- ウィンドウをすべて閉じて再起動します。
■VHD の圧縮
- ゲスト OS をシャットダウンします。
- ホスト OS で [diskmgmt.msc] を実行します。
- [操作] → [VHD の接続] をクリックします。
- ゲスト OS の VHD を選択し、[OK] をクリックします。
- [dfrugui.exe] を実行します。
- 接続した VHD のドライブを選択し、[ディスクの最適化] をクリックして最適化を実行します。
- 最適化が終了したら、[C:Program FilesWindows Virtual PCIntegration Components] を開きます。
- [Precompact.iso] から [precompact.exe] を取り出します。
# ISO ファイルからのファイル取り出しなので、ISO を適当なゲスト OS でマウントしてファイルを取り出します。 - [precompact.exe] を実行します。
- [はい] をクリックして、縮小化前の事前処理を実行します。
- [OK] をクリックします。
- 接続していた VHD を右クリックして、[VHD の切断] をクリックします。
- [OK] をクリックします。
- [Windows Virtual PC] をクリックします。
- MED-V 用のゲスト OS を右クリックして、[設定] をクリックします。
- ハード ディスクを選択して、[変更] をクリックします。
- [仮想ハード ディスクの圧縮] をクリックします。
- [圧縮] をクリックします。
- [閉じる] をクリックします。
■sysprep の実行
実行しなくてもパッケージは作れるのですが、ヘルプの内容に従って展開用に sysprep を実行する場合の手順は以下の通りになります。
ただし、Web Redirect のように、ホストとMED-V のゲストを連携させるための機能を使用するためには、MED-V Host Agent 経由でゲスト OS を起動した後に FtsCompletion.exe を実行して、ワークスペースの初期化を完了させる必要があります。
今回、サンプルとして記載している sysprep には初期ログオン時に自動で実行するように設定をしていますが、sysprep を実行しないでパッケージ化した場合には、手動で実行をする必要があると思います。
- [sysprep.exe] を実行します。
- [OK] をクリックします。
- 以下の設定をして、[再シール] をクリックします。
[ライセンス認証の猶予期間をリセットしない] を有効
[Mini-Setup を使う] を有効
[シャットダウン モード] を [シャットダウン] に設定
- [OK] をクリックします。
今回は、検証の時間短縮のため sysprep は実行しないで作業を進めています。 sysprep 実行時は、MED-V のセットアップ実行後の初回ログオン時にsysprep による処理が実行されます。
2010/10/21 追記
ドメイン参加が必要になるようなので、sysyprep を実行して自動でドメイン参加するように設定をして検証をしました。
ここまでの作業が終わるとパッケージ作成の事前作業は完了です。
次の投稿でMED-V Workspace Packager を使用して、展開用のパッケージ作成についてまとめていきたいと思います。
[…] ヘルプの [MED-V 仮想ハード ディスクの圧縮] に書かれている作業を実施します。 MED-V 仮想ハード ディスクの圧縮 MED-V v2 Beta を検証 [展開用パッケージ作成の事前作業] […]
MED-V 2.0 用の Virtual PC イメージを作成 « SE の雑記
3 5月 11 at 23:24