ちょいと時間ができたので、この URL の内容を参考に、実際に試してみました。
Deploying Virtual Hard Disk Images (仮想ハードディスク イメージを展開する)
http://technet.microsoft.com/ja-jp/library/dd363560(WS.10).aspx
上記のドキュメントをよく読んで見てください。手順も分かり難いですし、どのようなものが出来上がるのかも想像できません (“どのようなもの”については次回 (その 2) で...)。
私の場合は、Windows 7 Enterprise x86 を VHD ファイルを用いて、PXE ブートしたベアメタル マシンに OS をイメージ展開し、OS の最終構成 (Sysprep イメージの Mini-Setup) を自動セットアップするというシナリオについて、次の手順で動作確認をしました。ちなみに VHD イメージの展開は、Windows 7 Enterprise 以上のエディション、および Windows Server 2008 R2 のみに使用できます。
(1) Windows Virtual PC (または Hyper-V) の仮想マシンに Windows 7 Enterprise を新規インストールし、コマンドプロンプトから Sysprep を実行ます。
cd C:\Windows\System32\Sysprep
sysprep /oobe /generalize /shutdown
インストール先の VHD ファイルは、容量可変タイプで 15 GB のサイズで作成しました。VHD のサイズは非常に重要です。展開先のベアメタル マシンには、15 GB 以上の空き領域 (15 GB 以上のサイズの物理ハードディスク) が必要になります。。
(2) Sysprep が完了すると、仮想マシンがシャットダウンして停止します。この仮想マシンから VHD を取り出し (単にコピーするだけです) ておきます。ここでは、win7ent15gb_sysprep.vhd というファイル名を使用します。これで、WDS によるイメージ展開で使用する VHD ファイル (win7ent15gb_sysprep.vhd) は完成です。
(3) Active Directory 環境と WDS の環境を準備します。OS 展開先のベアメタル クライアントを PXE ブートで起動するために、DHCP サーバーも必要です。DHCP は WDS と同じサーバーだと都合が良いようです。このあたりは、WDS の話ですので、次に進みます。
(3) WDS が扱える標準のイメージ形式は WIM ファイルであり、WDS の コンソール UI を使用する場合は、WIM ファイルしか選択できません。VHD はコマンドライン (WDSUTIL) でのみサポートされます。先ほどの VHD ファイルを WDS のサーバーのローカル ファイルシステムにコピーして、次のようなコマンドラインを実行します。
WDSUTIL /Add-ImageGroup /ImageGroup:”VHD Image Group”
WDSUTIL /Verbose /Progress /Add-Image /ImageFile:”(VHD ファイルへのローカルパス)\win7ent15gb_sysprep.vhd” /ImageType:Install /ImageGroup:"VHD Image Group" /UnattendFile:"(応答ファイルへのローカルパス)\unattend.xml"
1 行目のコマンドラインでイメージ グループを作成し、2 行目のコマンドラインでそのイメージ グループに対して VHD ファイルを応答ファイル (Unattend.xml) とともに登録しています。ここで指定する応答ファイルは、VHD ファイル内の Sysprep 済みイメージを自動構成するための応答ファイルになります。
指定した応答ファイルは、RemoteInstall(reminst共有)\Images\ImageGroupName\win7ent15g_sysprep (VHD 名)\Unattend\ImageUnattend.xml にアップロードされるので、ファイルのパスやファイル名 (Unattend.xml である必要なし) は気にしなくてかまいません。また、/UnattendFile オプションをコマンドラインで指定しなかった場合でも、WDS のコンソールでイメージ (WDSUTIL で登録した VHD のイメージはコンソールから操作できます) のプロパティを開き、「全般」タブの「ファイルの選択」で指定することもできます(イメージを無人モードでインストール可能にするもチェック)。
使用した Unattend.xml を、サンプルとして掲載しておきます。ドメイン参加設定 (CONTOSO) とローカル管理者 (localadmin) の作成を含む、Windows 7 の標準的な Unattend.xml です。Sysprep と Unattend.xml については、COMPUTERWORLD BLOG の投稿 「仮想マシンの準備は簡単 (その 1)」「仮想マシンの準備は簡単 (その 2)」を見ていただけるとうれしいです。恥ずかしながら私、Windows AIK の Windows システム イメージ マネージャーの使い方はいまいちわかりません。
[Unattend.xml (Sysprep 済み OS の自動構成用)]
<?xml version="1.0" ?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName>*</ComputerName>
<ProductKey>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</ProductKey>
</component>
<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Identification>
<JoinDomain>CONTOSO</JoinDomain>
<Credentials>
<Domain>CONTOSO</Domain>
<Username>administrator</Username>
<Password>P@ssword</Password>
</Credentials>
</Identification>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserAccounts>
<LocalAccounts>
<LocalAccount>
<Name>localadmin</Name>
<Password>
<Value>P@ssword</Value>
<PlainText>true</PlainText>
</Password>
<Group>Administrators</Group>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<TimeZone>Tokyo Standard Time</TimeZone>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<SkipUserOOBE>true</SkipUserOOBE>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>1</ProtectYourPC>
</OOBE>
</component>
<component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserLocale>ja-JP</UserLocale>
<SystemLocale>ja-JP</SystemLocale>
<InputLocale>0411:00000411</InputLocale>
<UILanguage>ja-JP</UILanguage>
</component>
</settings>
<cpi:offlineImage cpi:source="" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName>*</ComputerName>
<ProductKey>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</ProductKey>
</component>
<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Identification>
<JoinDomain>CONTOSO</JoinDomain>
<Credentials>
<Domain>CONTOSO</Domain>
<Username>administrator</Username>
<Password>P@ssword</Password>
</Credentials>
</Identification>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserAccounts>
<LocalAccounts>
<LocalAccount>
<Name>localadmin</Name>
<Password>
<Value>P@ssword</Value>
<PlainText>true</PlainText>
</Password>
<Group>Administrators</Group>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<TimeZone>Tokyo Standard Time</TimeZone>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<SkipUserOOBE>true</SkipUserOOBE>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>1</ProtectYourPC>
</OOBE>
</component>
<component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserLocale>ja-JP</UserLocale>
<SystemLocale>ja-JP</SystemLocale>
<InputLocale>0411:00000411</InputLocale>
<UILanguage>ja-JP</UILanguage>
</component>
</settings>
<cpi:offlineImage cpi:source="" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
※ (3) の手順は、ドキュメントの「仮想ハード ディスク イメージをサーバーに追加する > 仮想ハード ディスク イメージをサーバーに追加するには)」「仮想ハード ディスク イメージの無人インストールを構成する > イメージの無人セットアップ ファイル > イメージの無人セットアップ ファイルをイメージに関連付けるには」の部分に相当します。
(4) WDS への VHD イメージの登録は以上で完了。続いて、ベアメタル マシンを PXE ブートするための Windows PE (プリインストール環境) のブート イメージとして、Windows 7 Enterprise x86 DVD の Sources\Boot.wim を選択して WDS に登録します。この作業は、WDS のコンソール UI から行えます。
(5) 続いて、PXE ブートの方法や PXE ブート後の Windows PE のタスク自動化について設定します。さまざまな方法がありますが、話を簡単にするため、WDS サーバーの既定の動作として、すべての PXE ブート要求を受け付け、Windows 7 Enterprise x86 の Boot.wim でクライアントを起動し、自動化のための応答ファイル (先ほどのとは異なる Unattend.xml) を指定することにします。まず、WDS のコンソール UI でサーバーのプロパティを開き、「ブート」タブで「既定のクライアント」および「不明なクライアント」の両方で「常に PXE ブートを続行する」を選択し、「既定のブート イメージ (省略可能)」の「x86 アーキテクチャ」のところで、「参照」をクリックして (4) で登録した Boot.wim を選択します。
(6) 続いて、Windows PE 用の Unattend.xml を登録します。まず、「仮想ハード ディスク イメージを展開する > .vhd 展開用のクライアント無人セットアップ ファイルの例」を参考にテキスト ファイルを記述し、Unattend.xml というファイル名で保存します。この Unattend.xml ファイルは、WDS の RemoteInstall(reminst共有)\WDSClientUnattend フォルダーに格納しておきます。その上で、WDS のコンソール UI でサーバーのプロパティを開き、「クライアント」タブに切り替え、 「無人インストールを有効にする」をチェックし、「x86 アーキテクチャ」の横の「参照」ボタンをクリックして (WDSClientUnattend フォルダー内の) Unattend.xml を指定します。使用した Unattend.xml をサンプルとして掲載しておきます。太字斜体部分は、「クライアント無人セットアップ ファイルの例」との差分です。
[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>
<Size>30000</Size>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition>
<Order>1</Order>
<PartitionID>1</PartitionID>
<Letter>C</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 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>
<Size>30000</Size>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition>
<Order>1</Order>
<PartitionID>1</PartitionID>
<Letter>C</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 では、WDS の reminst 共有に接続するための資格情報 (<Credentials>~</Credentials>)、 展開イメージの選択 (<InstallImage>~</InstallImage>)、インストール先パーティションの指定 (<InstallTo>~</InstallTo>)、ディスクのパーティショニングとフォーマット (<DiskConfiguration>~</DiskConfiguration>) を設定しています。
この Unattend.xml を記述する際には、いくつか注意点があります。まず、展開イメージである VHD の指定部分は、イメージ名 (イメージ名は WDS のコンソールで確認のこと) とイメージ グループ名、VHD ファイル名を正しく記述することです。また、ディスクのパーティショニングの部分を「仮想ハード ディスク イメージを展開する > .vhd 展開用のクライアント無人セットアップ ファイルの例」のとおりに記述すると、右のようなエラーが発生してインストールが失敗してしまいます。私の場合は、<WillWipeDisk>true</WillWipeDisk> の指定と <CreatePartitions>~</CreatePartitions>の追加でエラーを回避することができました。
※ 私の Unattend.xml の例では、<Size>30000</Size> で30GBのパーティション作成を指示していますが、ディスク全体を 1 パーティションにするには <Size>30000</Size> の部分を <Extend>true</Extend> に置き換えます。なお、パーティションサイズは、VHD の割り当てサイズ (容量可変の場合は最大サイズ)より大きくすることが重要です。
※ (4) (5) (6) の手順は、ドキュメントの「仮想ハード ディスク イメージの無人インストールを構成する > Windows 展開サービス クライアント無人セットアップ ファイル」「仮想ハード ディスク イメージの無人インストールを構成する > Windows 展開サービス クライアント無人セットアップ ファイル > すべてのアーキテクチャに対してクライアント無人セットアップ ファイルを関連付ける」に相当します。
以上で VHD イメージを WDS でベアメタル マシンに展開する準備ができました。あとは、ベアメタル マシンの電源をオンにし、ネットワークから PXE ブートするだけで、Windows 7 Enterprise x86 のイメージ展開と無人インストール (ドメイン参加設定まで) が自動実行されるはずです。
次回 (その 2) に続く...
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。