WAIK + SCVMMで注意したいこと

お引越し前のブログで紹介させていただきましたが、
2010年のTechEdでは「System Center Virtual Machine Manager 2008 R2の徹底活用方法」という
セッションを担当させていただくことになりました。
そこで、これから1か月にわたり、セッションの内容に連動して、いくつかのトピックをご紹介していこうと思います。
セッションの内容と合わせてご活用いただければと思います。

今回は、SCVMM(System Virtual Machine Manager)から新しい仮想マシンをインストールする
ために使用するunattend.xmlファイルをWAIKから作成する方法について紹介します。

 

SCVMMでは、OSを新規インストールすることで新しく仮想マシンを作成する方法のほか、
「プロファイルから仮想マシンを作成」とよく紹介される、あらかじめSysprepを実行した仮想マシンをベースに新しい仮想マシンを作成する方法があります。
プロファイルから仮想マシンを作成するときには、Sysprepが実行されるわけですが、単純にSysprerpを実行させるだけでなく、Sysprep実行の前後での挙動をカスタマイズするために、unattend.xmlファイルを埋め込むことができます。
ところが、unattend.xmlファイルの作り方を間違えると、仮想マシンの作成に失敗し、作った仮想マシンは起動しなくなります。
そのため、unattend.xmlファイルの作成と運用には、注意を払う必要があります。

そこで、unattend.xmlファイルを正しく作ることができるよう、WAIKの利用方法から、簡単に紹介しておきたいと思います。

まず、unattend.xmlファイルを作成するときは、WAIKの中に入っているWindows システム イメージ マネージャという
ツールを使います。
起動したら、左下ペインのWindowsイメージ欄にOSのセットアップDVDのsourcesフォルダのinstall.wimファイルを指定します。
sourceフォルダの内容はDVDから直接指定するのではなく、あらかじめsourcesフォルダごと、ハードディスク上のドライブにコピーしておかないとエラーになりますので注意してください。

一方、Windows システム イメージ マネージャの中央ペインにある、「応答ファイル」欄ですが、
Untitledの項目を右クリックして「新しい応答ファイル」を作成しておいてください。ちなみに、新しい応答ファイルを
指定しても、ファイルはこの時点で作られるわけではなく、あくまでも保存(フロッピーディスクマークをクリックすると保存です)
をしたときですので、注意してください。

ここまでができると、Windows システム イメージ マネージャは以下のような表示になります。
WAIK1

あとは、Windowsイメージ欄にあるコンポーネントを応答ファイルのコンポーネントのところへマッピング(ドラッグアンドドロップなどでマッピングができる)すると、応答ファイルの具体的な設定が右ペインのプロパティ欄で設定することができます。

ここで問題になるのは、 どのWindowsイメージと、どの応答ファイルの項目をマッピングさせればよいか、わからない!
ということです。項目がいろいろあって、さまざまなカスタマイズができることはわかるのですが、実際にどれを
使えばよいか、という点で頭を悩ませます。

解決策の一つとしては、unattend.xmlファイルの構成要素について確認しておくのがよいと思います。

■Microsoft TechNet 「構成パスの仕組み」
http://technet.microsoft.com/ja-jp/library/cc749307(WS.10).aspx

こちらのサイトにあるフローチャートを見ていただければわかりますが、
応答ファイルのGeneralize項目はSysprepを実行する時点で参照する項目です。SCVMMのプロファイルは、すでにSysprerpコマンドを実行済みのvhdファイルを使いますから、Generalize項目をカスタマイズしても、その設定が反映されることはありません。

また、OfflineServicing項目についても、主にデバイスドライバをインストールために利用する項目ですから、
以上のことを考えると、SCVMMのために利用する応答ファイルのコンポーネントとしては、
SpecializeとoobeSystemの2つになるのではないかと思います。
(これが正しいのかどうかは全部の項目を調べてみないといけませんが、そんな大変なことはできないですね..)

そして、SpecializeとoobeSystemのコンポーネントに対して、どのWindowsイメージのコンポーネントを割り当てればよいかということですが、ここではひとつだけ紹介します。

(8月17日追記)

ゲストOSプロファイルで定義されているコンピュータ名(ID情報)やプロダクトキーなどを入力する欄がありますが、これらはunattend.xml応答ファイルに含めてしまうことが可能です。面倒かもしれないけど、unattend.xmlファイルを作ってしまえば、設定が一元化されるので、設定を変更するときはunattend.xmlファイルをメンテナンスすればよくなります。ゲストOSプロファイルで指定可能なコンピュータ名(ID情報)やプロダクトキーなどの情報は、WAIKからSpecializeコンポーネントに、amd64_Microsoft-WIndows-Shell-Setup_neutralのWindowsコンポーネントをマッピングさせると下図のような画面から設定することができます。

unattend-shell-setup1
図 ComputerName欄にコンピュータ名を入力している様子

図を見ればわかるように、ComputerName以外にも、ProductKey欄でプロダクトキーの項目など、ゲストOSプロファイルでおなじみの項目がWIndows-Shell-Setup_neutralのWindowsコンポーネントから設定できます。
ただし、私が試した限りでは、TimeZoneはダメでしたね。

TimeZoneには、Tokyo Standard Time、235、(+09:00) 大阪、札幌、東京、、など色々試したのですが、
いずれもうまく動作しませんでした。
以下のPowerShellコマンドレットからは設定できたのですが…

Set-GuestOSProfile –GuestOSProfile $os –TimeZone 235

(8月17日追記 環境により動作しないことがありました)
仮想マシンを新規作成したときに、最初のログオン時にさまざまなスクリプトを実行させることで細かなカスタマイズを行うことがあります。その際、一般ユーザーではなく管理者ユーザーでログオンしないと実行できないスクリプトがあるので、最初のログオンだけは管理者ユーザーでログオンしてスクリプトを実行するという処理を自動的に行いたい場合、自動的にログオンする設定として、
unattend.xmlファイルを次のように設定すればよいでしょう。

autologon 

上図のように、Specializeコンポーネントに、amd64_Microsoft-WIndows-Shell-Setup_neutralのWindowsコンポーネントをマッピングすると、配下にあるAutologonで

■Enabled : true
■LogonCount : 1
■Username : administrator

ユーザーのパスワードはpassword欄で設定します。
これをファイルとして保存し、SCVMMのゲストOSプロファイルに設定すると、仮想マシンを新規作成するときに自動的に指定したユーザーとして自動的にログオンされるようになります。

ひとつは前回の投稿で紹介させていただいた、「Windows7の無人インストール」 の項目を参考にするとよいでしょう。