2010/09/28

Windows 展開サービスの VHD 対応機能を試してみた (その 2)

前回は、 VHD ファイルを使用して WDS でベアメタル マシンの OS をイメージ展開するまでの準備作業を行いました。あとは、ベアメタル マシンの電源をオンにして、ネットワークから PXE ブートさせてあげればよいだけです。


PXE ブートすると、TFTP によって WDS サーバーから Boot.wim がダウンロードされ、ブート イメージの Windows PE が起動します。ブート イメージ (Boot.wim) に指定した応答ファイル (\\WDS サーバー\reminst\WDSClientUnattend\Unattend.xml) によって、ディスクのパーティショニングとフォーマット、イメージの展開が自動的に行われます。

OS のイメージ展開が完了すると、自動的に再起動し、今度はローカル ディスクに展開された Sysprep 済みの OS イメージから起動します。ここからは、インストール イメージ (VHD ファイル) に割り当てた応答ファイル (\\WDS サーバー\reminst\Images\イメージ グループ名\VHD 名\Unattend\ImageUnattend.xml) によって、Mini-Setup が自動化されます。


ログオン画面が表示されたら、OS のイメージ展開は完了です。

パーティション構成が ???

右のスクリーンショットは、VHD イメージを使用して WDS で展開したコンピューターのものです。Windows PE 用の Unattend.xml (前回の投稿を参照) でイメージのインストール先 (InstallTo) として指定したドライブ文字 C:、ボリュームラベル winboot、サイズ 30 GB のドライブがディスク 0 のパーティションに作成されています。

その他に、ディスク 1 にサイズ 100 MB の E: (システムで予約済み) ドライブと、約 15 GB の D: ドライブのパーティションが存在します。そして、元々の VHD イメージでは Windows 7 は C:\Windows にインストールされていましたが、展開後の物理マシンは D:\Windows で構成されてしまいました。→ 過去の投稿「D:\Windows で動く Windows 7」はこれのこと。

WDS の VHD 対応は、VHD ブート環境の展開

「ディスクの管理」スナップインのディスク 1 (および D: と E: のドライブ) のアイコン色が水色になっているところに注目してください。Windows 7 および Windows Server 2008 R2 以降は、VHD ファイルをローカル ディスクとしてマウントする機能があります。VHD ファイルをマウントした場合、アイコン色が水色になります。

もうお分かりかもしれませんが、WDS で VHD ファイルをイメージ展開すると、VHD ファイルの内容がターゲットのディスクに展開されるのではなく、VHD ファイルがそのままコピーされ、VHD ブート環境が構築されるのでした。実ドライブである C: ドライブの中身を見ると、C:\WindowsImages\000 というフォルダーに WDS に登録したのと同じファイル名の VHD ファイル (win7ent15g_sysprep.vhd) がコピーされているのがわかります。C: ドライブには、Windows Boot Manager (C:\Boot) も隠しフォルダーとして作成され、この中に VHD ブートのための構成を含む BCD ストア (ブート構成データ ストア) がインストールされます。

Windows PE の応答ファイルにより、ドライブ文字 C: が指定され、使用済みなので、VHD ファイルの Windows を含むドライブは次の D: ドライブになってしまったということです。E: ドライブは、VHD ファイルの作成時に仮想マシン環境で作成された、Windows Boot Manager を含む隠しドライブです。こちらの Windows Boot Manager と BCD ストアは、展開後の VHD ブートでは全く使用されていません (パーティションを削除しても問題ありません)。

ちょっと記事が古いですが、VHD ブートについてはこちらの記事を参考にしていただければと思います。

Windows 7の仮想ハードディスクがスゴイ!(COMPUTERWORLD.JP)
http://www.computerworld.jp/topics/win7/151010.html

※ このオンライン記事は、特別企画「お手軽 VHD ブートのススメ」(Windows Server World 2009年5月号)、連載「仮想化の教室 第11回 続・お手軽 VHD ブートのススメ」 (Windows Server World 2009年7月号)、連載「仮想化の教室 第11回 続々・お手軽 VHD ブートのススメ」 (Windows Server World 2009年8月号) を再構成したものです。Windows Server World 誌のバックナンバーをお持ちの方は、そちらでどうぞ。

マイクロソフトからも VHD ブートに関するドキュメントが出ています。マイクロソフトは、「ネイティブ ブート仮想ハード ディスク (ネイティブ ブート VHD) 」と呼んでいるみたいです。小難しい表現もありますが、VHD ブートの制約事項とかがまとまっています。

ネイティブ ブート仮想ハード ディスクとは
http://technet.microsoft.com/ja-jp/library/dd799282(WS.10).aspx



C:\Windows じゃないと気持ち悪い

やっぱり、D:\Windows だと気持ち悪いですよね。Windows の動作に問題はなくても、イメージ作成時に C: ドライブの環境でインストールされたアプリケーションには影響するかもしれません。展開後も C:\Windows にしたい場合は、WDS に登録するブート イメージ用の応答ファイル Unattend.xml で次のように C 以外のドライブ文字 (この例では W) を指定します。ついでに、前回は 30 GB のパーティションの作成を指示しましたが、この例ではドライブ全体を 1 パーティションで構成します (青字部分)。

[Unattend.xml (Windows PE 用)]
<?xml version="1.0" ?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
   <settings pass="windowsPE">
      <component name="Microsoft-Windows-Setup" publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS" processorArchitecture="x86">
         <WindowsDeploymentServices>
            <Login>
               <WillShowUI>OnError</WillShowUI>
               <Credentials>
                     <Username>administrator</Username>
                     <Domain>CONTOSO</Domain>
                     <Password>P@ssword</Password>
                  </Credentials>
               </Login>
            <ImageSelection>
               <WillShowUI>OnError</WillShowUI>
               <InstallImage>
                  <ImageName>Enterprise_6.1.7600</ImageName>
                  <ImageGroup>VHD Image Group</ImageGroup>
                  <Filename>win7ent15g_sysprep.vhd</Filename>
               </InstallImage>
                  <InstallTo>
                  <DiskID>0</DiskID>
                  <PartitionID>1</PartitionID>
               </InstallTo>
            </ImageSelection>
         </WindowsDeploymentServices>
         <DiskConfiguration>
            <WillShowUI>OnError</WillShowUI>
               <Disk>
                  <DiskID>0</DiskID>
                  <WillWipeDisk>true</WillWipeDisk>
                  <CreatePartitions>
                     <CreatePartition>
                        <Order>1</Order>
                        <Type>Primary</Type>
                        <Extend>True</Extend>
                     </CreatePartition>
                  </CreatePartitions>
                  <ModifyPartitions>
                     <ModifyPartition>
                        <Order>1</Order>
                        <PartitionID>1</PartitionID>
                        <Letter>W</Letter>
                        <Label>winboot</Label>
                        <Format>NTFS</Format>
                        <Active>true</Active>
                        <Extend>false</Extend>
                     </ModifyPartition>
                  </ModifyPartitions>
            </Disk>
         </DiskConfiguration>
      </component>
      <component name="Microsoft-Windows-International-Core-WinPE" publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS" processorArchitecture="x86">
            <SetupUILanguage>
                <UILanguage>ja-JP</UILanguage>
            </SetupUILanguage>
            <InputLocale>ja-JP</InputLocale>
            <SystemLocale>ja-JP</SystemLocale>
            <UILanguage>ja-JP</UILanguage>
            <UserLocale>ja-JP</UserLocale>
      </component>
   </settings>
</unattend>
Unattend.xml を修正して再度展開したものが、右のスクリーンショットです。W:\WindowsImages\000 フォルダーに VHD ファイルがコピーされ、この VHD ファイルが C: ドライブとしてマウントされました。Windows は、C:\Windows から起動しています。

この状態でも、100 MB の D: ドライブ (システムで予約済み) は残ってしまいます。「ディスクの管理」でパーティションを削除してしまえばよいのですが、ディスクの前方に未使用部分が出来てしまい、これもまた気持ち悪い人も多いでしょう。

余計なパーティション (100MB) を消したい

100 MB の余計なパーティションが作成されないようにするには、WDS で展開する VHD イメージにそのパーティションを含めないようにする必要があります。方法はいくつかあります。

その 1 つは、VHD イメージの作成時に (仮想マシンへの Windows 7 のインストール時に)、100 MB のパーティションを作成させずに、1 パーティションにインストールする方法です。しかし、Windows 7 のセットアップ UI で操作しても、なかなかそうさせてはくれません。勝手に 100 MB (システムで予約済み) のパーティションを作成しようとします。その理由については、こちらを参照のこと。

セットアップが提案するパーティションの後ろのほう (パーティション 2) を削除して、パーティション 1 を拡張することで、1 パーティション構成でのインストールができました
(DISKPART コマンドでパーティショニングとフォーマットを済ませてからインストールするという方法もあります)。

別の方法は、イメージ用の仮想マシンの C:ドライブのみを ImageX.exe ツールなどでキャプチャして、それを 1 パーティション構成の VHD ファイルに書き戻す方法です。Windows 7 や Windows Server 2008 R2 は、VHD ファイルをローカルにマウントできるので、仮想マシンを経由せず、VHD から直接 ImageX.exe でイメージを WIM ファイルにし、それを別のマウントした VHD ファイルに ImageX.exe で展開できます。WDS で展開されるのは VHD ブート環境なので、VHD ファイル内のパーティションはアクティブ パーティションである必要はありません。

0 件のコメント: