【再掲】Windows 7 の無人インストール

この記事はWindows Live Spaceで掲載したものです。
最もページビューがあった記事だったことと、これから投稿しようと思っているSystem Center Virtual Machine Manager(SCVMM)でも、Windows AIK (WAIK)を前提知識とする情報があるので、ひとまず再掲をさせていただきます。
(一部加筆修正しています)


Windows OSの無人インストール(自動インストール)を行って、インストールを簡略化したいというケースがあります。
その場合、応答ファイル(通常はunattend.xmlというファイル名を設定する)と呼ばれるファイルを作成しておいて、
OSのインストール時に応答ファイルを使うことで、自動的にインストールが行われます。

以前は、メモ帳でも簡単に作れてしまう応答ファイルでしたが、
Windows VistaやWindows7の無人インストールには、XML形式の応答ファイルを作らなければならず、
Windows自動インストールキット(Windows AIK)に付属のWindows System Image Manager(Windows SIM)を
使うのが現実的になっています。

そこで、実際にWindows7のインストールを自動化するために、
どのような応答ファイル(unattend.xml)を作ればよいか、確認してみました。
(作った応答ファイルを使って、どのようにOSインストールを行うかについては別の機会に)

まず、Windows AIKをインストールし、Windows SIMが使える環境にしておきます。
次に、Windows7のイメージ(install.wimに付随するカタログファイル)を読み込ませ、
応答ファイルの作成を開始します。
(Windows AIKとWindows SIMの詳細は割愛します)

応答ファイルのセクションはComponentsとPackagesから構成されますが、
Packagesのセクションは、Windowsコンポーネントのインストールなどを指定する部分なので、
OSの無人インストールという基本的な作業に限って言えば、
Componentsのセクションに対するカスタマイズを行えば十分です。
さらに、Componentsセクションを開くと、WindowsPEからoobeSystemまでの7つのセクションがあるのですが、
これを見ても何を意味しているのか、さっぱりわからない!

そこで、まずはTechNetのサイトを拝見することにしました。
■TechNet 「構成パスの仕組み」
http://technet.microsoft.com/ja-jp/library/cc749307(WS.10).aspx

■ステップ バイ ステップ ガイド: IT プロ用 Windows の基本展開
http://technet.microsoft.com/ja-jp/library/dd349348(WS.10).aspx?win7lib

しかし、なかなか完全自動化というわけには、いかないですね。
TechNetのサイトを読んでも、何のために使われるか、よくわからないオプションも多いです。

一方、MCTの憂鬱 「Windows System Image Manager を使用して応答ファイルを作成する」 by 阿部さん
http://naonao71.spaces.live.com/blog/cns!420FC89E62EFB3B9!597.entry

阿部さんのサイト(←お世話になっています)では、
sysprepベースのものが掲載されていたので、こちらも参考させていただいたところ、
ある程度の自動化ができるようになってきたので、残りの部分を自力でがんばってみよう、ということで作ってみました。

ところが、、
阿部さんのサイトでも「手探りで…」とあるように、
私もトライアンドエラーを繰り返しながら、、なので、これが最適解だとは思っていません。
どんな作り方をするのがよいのか、ご自身でも試してみながら、
自分なりのベストプラクティスを見つけてみてください。

まず、Windows7に限らず、最近のOSはインストールが次の2つから構成されています。

1.DVD起動時に出てくる、インストールパーティションなどの指定を行う部分
(「初期セットアップ」と仮に名付けます)
2.sysprepを実行したときにも出てくる、「Windowsへようこそ」以降の指定を行う部分
(「oobeセットアップ」と仮に名付けます)

そのため、この2つに対する応答を応答ファイル(unattend.xml)として定義してあげればよいということになります。

初期セットアップ部分に関しては、
ComponentsのWindowsPE部分に、x86_Microsoft-Windows-Setup_neutralイメージをマッピングさせ、
oobeセットアップ部分に関しては、
ComponentsのoobeSystem部分に、x86_Microsoft-Windows-International-Core_neutralイメージと
x86_Microsoft-Windows-Shell-Setup_neutralイメージをマッピングさせると、必要な設定を行う事ができます。

実際に、各項目について見てみましょう。
まず、WindowsPE部分についてですが、
マッピングした、x86_Microsoft-Windows-Setup_neutralイメージを展開し、次の項目を設定します。

unattend0-1

上図の設定は、インストールするパーティションに関する設定です。パーティションを作ってインストールするときは、
どのようなパーティションを作成するか、指定しなければならないので、DisikConfigurationの下のDisk項目で
AddListItemの指定とパーティションを作成するディスク番号を指定します。
(ちなみに、Disk項目はDiskConfiguration項目を右クリックすると、新規作成できます)

unattend0-2

上図は、実際に作成するパーティションの設定項目です。先ほどのDisk項目の下に、CreatePartitionという項目があるので、
その下に項目を作って、上図のような設定をします。この設定は、一番左のパーティション(Order=1)として、
Primaryパーティションを50GBで作りなさい、という指定ですね。

unattend0-3

上図は、WindowsDeploymentServices-ImageSelection-InstallToという項目になります。ここでは、実際に
OSをインストールするパーティションを指定しています。ディスク番号とパーティション番号をそれぞれ指定しています。
(ディスク番号は0から、パーティション番号は1から始まる、ARCパスの指定方法ですね)
Windows7はインストールするときに「システムで予約済み」という領域をCドライブの前に自動的に作ります。
ただし、応答ファイルで作成するパーティションとインストールするパーティションを明示してしまうと、
「システムで予約済み」の領域が作られなくなりますので、注意してください。

unattend1

上図は、WindowsDeploymentServices-Login-Credentials項目で、Windows Deployment Servicesで
OSをインストールするときに、認証情報を求められるので、その部分を自動化させたい場合に使います。
誰でも勝手にインストールさせないために認証があるのでは?と思う人は、この設定を行わないでください。
ここまでで、初期セットアップ部分については、ほぼ終わりです。
ただし、私のところではひとつだけ自動化できない項目があって、それが、これです。

unattend0-4

この画面には、下図の設定を行ったのですが、自動化されませんでした。。

unattend0-5

また、わかりましたら、追記しておきます。

一方、oobeセットアップですが、マッピングしたx86_Microsoft-Windows-International-Core_neutralと
x86_Microsoft-Windows-Shell-Setup_neutralを展開し、次の設定を行います。

unattend2

上図では、x86_Microsoft-Windows-International-Core_neutralにUIの言語設定等を行っています。
日本語なら、ja-JPとなりますね。

unattend3

上図は、x86_Microsoft-Windows-Shell-Setup_neutralにタイムゾーンの設定を行っています。
Tokyo Standard Timeと指定すれば、GMT+9の設定になります。

unattend4

上図はx86_Microsoft-Windows-Shell-Setup_neutralの下のOOBE項目での設定です。
この項目がOOBEセットアップ部分で聞かれるほとんどの項目を網羅しています。
各項目については次のとおり。

・HomeEULAPage:使用許諾契約を表示しない(自動的に許諾するってことです)
・NetworkLocation:コンピュータの場所(家庭-Home、職場-Work、公共の場所-Other?)
・ProtectYourPC:自動更新の設定(推奨設定は1)
・SkipMachineOOBE:コンピュータ名の入力画面のスキップ
・SkipUserOOBE:デフォルトユーザー名の入力画面のスキップ

アバウトに書いていますが、正式な定義はTechNetで説明しています。
■TechNet OOBE
http://technet.microsoft.com/ja-jp/library/cc766165(WS.10).aspx

unattend5

上図は、x86_Microsoft-Windows-Shell-Setup_neutralの下のUserAccounts-Administrator Passwordの項目です。
Valueの欄にAdministratorのパスワードを入れておきます。
指定しなければ、パスワードなしということになります。
このとき、考えておかなければならないのが、
VistaやWindows7はデフォルトでAdministratorが無効になっているという点です。
ここまでの設定で、インストールの自動化はできるのですが、
実際に、これでインストールしてしまうと、ログオンできるユーザーがいない状態になります。
ですので、適当なユーザーをひとつ作っておかなければなりません。
それが、下図の設定です。

unattend6

上図の設定は、UserAccounts-LocalAccountsに新しく項目を追加し、ユーザーを作成する設定を行っています。
ActionにAddListItem、Nameにユーザー名、GroupにAdministratorsグループ(←これ大事)をそれぞれ入れておきます。

unattend7

指定したユーザーに対するパスワードは、ひとつ下の階層のPasswordという項目で設定します。
インストールしたマシンを最初からドメイン参加した状態にしておきたい場合は、
応答ファイルのComponents – 4 Specializeにx86amd64_Microsoft-Windows-UnattendedJoin_neutralをマッピングし、Identification – Credentialsの項目でドメイン参加時の認証情報を入れておけばOKです。

unattendjoin

以上で完成です。
これをXMLファイルとして保存し、Windows Deployment Servicesにインポートすれば、
(ほぼ)自動化されたインストールが完了します。
なお、OOBEセットアップ部分だけの設定したXMLファイルを作れば、sysprepにも応用できます。

2011年2月22日追記
TechNetマガジン「何でも屋:Windows7を展開する簡単な7つの手順」も参考になりそうですね。