サーバ大量構築時のキモ ~WDT(Windows Deployment Toolkit)を用いたWindows Server 2008 R2 自動インストールディスクの作成~

以前、Windows Server 2008(Widows 7)でsysprepを利用し、OSのクローンを行う手法について記述したが、今回のこれは応答ファイルを用いてOSのインストールを自動的に行うディスクを作成する、というもの。 CentOSのKickstartUbuntuのPreseedを用いた自動インストールディスクのWindows版のようなものだ。

さて、自動インストールには、sysprepの時と同様に応答ファイルを用いる必要がある。 このため、インストールディスクを作成するためのPCには、別途Windows ADKをインストールしておく必要がある。

今回は、Windows Server 2008 R2の自動インストールディスクの作成を行う。 Windows 7も手法は変わらないので、同じようにディスクの作成は可能だ。

1.応答ファイルの作成

さて、それでは実際に応答ファイルを作成してみよう。sysprep用の応答ファイルの作成と同様に、Windows ADKに含まれているWindows System Image Managerを用いて応答ファイルを作成する。 まずは、Windows Server 2008 R2のディスクからイメージカタログを取得。Windows System Image Managerで読み込みを行う。 [Windows イメージの選択]から、「source」ディレクトリ配下にある応答ファイルを作成するエディションのイメージカタログ(.cfgファイル)を読込む。

次に、Windows System Image Managerの左下から、それぞれの設定値を取り出して設定していく。

1-1.ロケール設定の自動化

標準のインストール時に表示される、上の画面での設定を自動化するため、応答ファイルに以下の設定を追加する。

設定値:amd64_Microsoft-Windows-International-Core-WinPE_6.1.7600.16385_neutral 構成パス:1 WindowsPE

  • InputLocale:0411:E0010411 (Windows インストールの既定の入力ロケールを指定する)
  • SystemLocale:ja-JP (Windows インストールの既定のシステム ロケールを指定する)
  • UILanguage:ja-JP (Windows インストールの既定の UI 言語を指定する)
  • UILanguageFallBack:ja-JP (コンピューターの既定の UI 言語が選択されたイメージに対して部分的にのみローカライズされている場合、使用する言語を指定する)
  • UserLocale:ja-JP (Windows インストールの既定のユーザー ロケールを指定する)
  • SetupUILanguage/UILanguage:ja-JP (Windows セットアップ時の言語を指定する)

1-2.インストールするエディション選択の自動化

インストールするエディションの選択画面を表示させないため、応答ファイルに設定を追加する。 このエディションの選択では、インストーラーで保持しているインデックス番号もしくはインデックス名を利用するため、事前に以下のコマンドで確認すると良いだろう。 名前はディスクの種類によって変動することはまず無いだろうが、インデックス番号は変動する可能性があるため、事前に確認することをおすすめする。

dism /Get-WimInfo /WimFile:"D:\sources\install.wim"
C:\Windows\system32>dism /Get-WimInfo /WimFile:"D:\sources\install.wim"

展開イメージのサービスと管理ツール
バージョン: 6.1.7600.16385

イメージの詳細: D:\sources\install.wim

インデックス: 1
名前: Windows Server 2008 R2 SERVERSTANDARD
説明: Windows Server 2008 R2 SERVERSTANDARD
サイズ: 10,740,190,091 バイト

インデックス: 2
名前: Windows Server 2008 R2 SERVERSTANDARDCORE
説明: Windows Server 2008 R2 SERVERSTANDARDCORE
サイズ: 3,695,201,858 バイト

インデックス: 3
名前: Windows Server 2008 R2 SERVERENTERPRISE
説明: Windows Server 2008 R2 SERVERENTERPRISE
サイズ: 10,740,833,321 バイト

インデックス: 4
名前: Windows Server 2008 R2 SERVERENTERPRISECORE
説明: Windows Server 2008 R2 SERVERENTERPRISECORE
サイズ: 3,695,175,939 バイト

インデックス: 5
名前: Windows Server 2008 R2 SERVERDATACENTER
説明: Windows Server 2008 R2 SERVERDATACENTER
サイズ: 10,740,940,492 バイト

インデックス: 6
名前: Windows Server 2008 R2 SERVERDATACENTERCORE
説明: Windows Server 2008 R2 SERVERDATACENTERCORE
サイズ: 3,695,214,106 バイト

インデックス: 7
名前: Windows Server 2008 R2 SERVERWEB
説明: Windows Server 2008 R2 SERVERWEB
サイズ: 10,749,512,194 バイト

インデックス: 8
名前: Windows Server 2008 R2 SERVERWEBCORE
説明: Windows Server 2008 R2 SERVERWEBCORE
サイズ: 3,693,823,080 バイト

操作は正常に完了しました。

C:\Windows\system32>

上記コマンドで得た情報を元に、以下の設定を応答ファイルに記述する。

設定値:amd64_Microsoft-Windows-Setup_6.1.7600.16385_neutral/ImageInstall/OSImage/InstallFrom/MetaData 構成パス:1 WindowsPE

利用する情報ごとに、以下のように設定を記述する。

名前(「Windows Server 2008 R2 SERVERSTANDARD」など)でエディションを指定する場合

  • Key:/IMAGE/NAME
  • Value:名前 (「Windows Server 2008 R2 SERVERSTANDARD」など)

インデックス番号(「1」など)でエディションを指定する場合

  • Key:/IMAGE/INDEX
  • Value:インデックス番号 (「1」など)

1-3.EULA(End User License Agreement)設定の自動化

ライセンス認証の承認を自動化するため、応答ファイルに以下の設定を追加する。

設定値:amd64_Microsoft-Windows-Setup_6.1.7600.16385_neutral/UserData 構成パス:1 WindowsPE

  • AcceptEula:true

1-4.パーティション設定の自動化

パーティション設定の自動化を行うため、以下の内容を応答ファイルに記述する。 なお、環境によってパーティションが違う事もあると思うので、そこは読み替えて記述してもらいたい。

設定値:amd64_Microsoft-Windows-Setup_6.1.7600.16385_neutral/DiskConfiguration/Disk 構成パス:1 WindowsPE

  • DiskID:****
  • WillWipeDisk:true

上記設定後、作成中の応答ファイル側で「Disk[DiskID="0"]/CreatePartitions/」を右クリック > 「新しいCreatePartitionの挿入」を選択し、1つ目のパーティションの設定値を追加する。

応答ファイルのPATH: DiskConfiguration/Disk[DiskID="0"]/CreatePartitions/CreatePartition[Order="1"]

  • Extended:false
  • Order:1
  • Size:100
  • Type:Primary

また、「Disk[DiskID="0"]/ModifyPartitions/」でも右クリック > 「新しいModifyPartitionの挿入」を選択し、1つ目のパーティションの設定値を追加する。

応答ファイルのPATH: DiskConfiguration/Disk[DiskID="0"]/ModifyPartitions/ModifyPartition[Order="1"]

  • Active:true
  • Extended:<空白>
  • Format:NTFS
  • Label:システムで予約済み
  • Letter:<空白>
  • Order:1
  • PartitionID:1
  • TypeID:<空白>

次に、「Disk[DiskID="0"]/CreatePartitions/」を右クリック > 「新しいCreatePartitionの挿入」を選択し、2つ目のパーティションの設定値を追加する。

応答ファイルのPATH: DiskConfiguration/Disk[DiskID="0"]/CreatePartitions/CreatePartition[Order="2"]

  • Extended:true
  • Order:2
  • Size:<空白>
  • Type:Primary

「Disk[DiskID="0"]/ModifyPartitions/」で再度右クリック > 「新しいModifyPartitionの挿入」を選択し、2つ目のパーティションの設定値を追加する。

応答ファイルのPATH: DiskConfiguration/Disk[DiskID="0"]/ModifyPartitions/ModifyPartition[Order="2"]

  • Active:false
  • Extended:<空白>
  • Format:NTFS
  • Label:<空白>
  • Letter:<空白>
  • Order:2
  • PartitionID:2
  • TypeID:<空白>

上記設定後、以下の内容を応答ファイルに記述する。

設定値:amd64_Microsoft-Windows-Setup_6.1.7600.16385_neutral\ImageInstall\OSImage\InstallTo 構成パス:1 WindowsPE

  • DiskID:****
  • PartitionID:2

1-5.管理者パスワード設定の自動化

インストール完了後、初回ログイン時に管理者パスワードの設定をしなくてもいいよう、以下の設定を応答ファイルに追記する。

設定値:amd64_Microsoft-Windows-Shell-Setup_6.1.7601.17514_neutral\UserAccounts\AdministratorPassword 構成パス:7 oobeSystem

  • Value:管理者パスワード(平文)

なお、Windows Serverの場合ある程度複雑なパスワード(大文字や数字、記号を含むなど)を設定する必要があるので注意。

2.自動インストールISOファイルの作成

さて、先ほど作成した応答ファイルを利用して、自動インストール用のISOファイルを作成する。 事前に、Windows Server 2008 R2のインストールディスクをISO化しておき、WinRARなどでISOファイルを任意のディレクトリに解凍する。

解凍したディレクトリの直下に、作成した応答ファイルを配置する。 応答ファイルの名称は『AutoUnattend.xml』とする。

最後に、スタートメニューから[Microsoft Windows AIK] > [Deployment ツールのコマンド プロンプト]を開き、以下のコマンドを実行する。

oscdimg -b"C:\program Files\Windows AIK\Tools\PETools\x86\Boot\etfsboot.com" -m -u1 ISO化するディレクトリPATH ISOファイルの出力先PATH

これで、自動インストール用のISOファイルが作成出来た。 後はそのインストールディスクから起動させることで、自動的にWindows Server 2008 R2がインストールされる。