やろうと思ったきっかけ、背景
仕事柄、日々大量の Windows 端末をセットアップする機会があります。
1台だけであれば大した作業ではありませんが、
初回起動時の OOBE 画面を数百台、数千台に対して
人手で操作するのは現実的ではありません。
「そもそも OOBE は完全にスキップできないのか?」
そう思ったのが今回の検証のきっかけでした。
今回やりたかったこと
OOBE の完全スキップの他に、以下のこともやりたいと思っていました。
- メーカー標準の初期 OS イメージの削除
⇒メーカー固有のアプリや設定が含まれており、標準化が難しいため - WinPE にて汎用的な Windows イメージ( install.wim )の適用
⇒メーカーに依存しない、いわば携帯でいう“ SIM フリー端末”のような状態にしたかったため - パーティションの事前分割
⇒ C ドライブと D ドライブを初期状態から分けて運用したかったため
全体の構成
- USBブート:WinPE 起動用
- WinPE:Diskpart / DISM 実行環境
- Diskpart:パーティション構成
- DISM Apply-Image:OS イメージ適用
- unattend.xml:OOBE 完全スキップ用ファイル
- install.wim:Windows 標準イメージファイル
- ApplyImage.bat:一連の処理をまとめたバッチ
全体的な流れ
USB を挿入
→ 電源投入
→ WinPE 起動
→ Diskpart で初期 OS 削除・パーティション再構築
→ DISM で install.wim を適用
→ unattend.xml をコピー
→ シャットダウン
→ USB を抜いて OS 起動
→ OOBE を一切表示せずデスクトップ表示
WinPE 環境の構築ポイント
-
展開およびイメージングツール環境( Windows ADK )
WinPE の作成およびイメージ操作に使用 -
startnet.cmd
WinPE 起動時に最初に実行されるスクリプト
ここに自動処理を記述することで無人実行が可能 -
boot.wim の mount / unmount
startnet.cmd を編集するために必要 -
USB 構成
UEFI ブート前提
FAT32 フォーマットのパーティションに WinPE 環境を配置 -
言語設定
WinPE はデフォルトで英語環境(必要に応じて日本語化)
本題:OOBE 完全スキップの方法
OOBE を完全にスキップするためには、
専用の応答ファイル( unattend.xml )を用意する必要があります。
この応答ファイルは、
Windows ADK に含まれる「Windows システム イメージ マネージャー」
を用いて作成します。
unattend.xml 作成時のポイント
- OOBE の挙動は、unattend.xml の oobeSystem フェーズで制御される
- 各種対話画面は Disable / Skip 系の設定で抑止する
- ユーザー作成も自動化し、初回起動時に一切の入力を要求しない状態にする
正しく構成できていれば、
キーボードやマウスに触れることなく、
初回起動時にそのままデスクトップが表示されるようになります。
そして、unattend.xml で最も重要なのは
「設定内容そのもの」よりも「配置場所」です。
Windows がインストールされているドライブの
Windows フォルダ直下に Panther フォルダを作成し、
その直下に unattend.xml を配置します。
C:\Windows\Panther\unattend.xml
実機で試してみた!
今回は仮想環境ではなく、実機( LAVIE HZ560/L )で検証してみました。
結果として、想定通り OOBE 画面は一切表示されず、
初回起動でそのままデスクトップが表示されました。
▼検証動画
https://youtu.be/8Nn03Z75808
注意点・ハマりどころ
- Diskpart の
cleanは全データ削除のため、誤って USB を選択しないよう注意 - sysprep を使った構成とは思想が異なる(用途に応じた使い分けが必要)
- ライセンス形態によっては適用可否に注意が必要
- BIOS の Storage 設定が
RAIDのままだと WinPE でストレージが見えない場合がある
→AHCIに変更するか、WinPE にドライバを追加 - USB が認識されないケースがある(UEFI / FAT32 周り)
- unattend.xml は ファイル名変更不可
- startnet.cmd 編集時の権限に注意
まとめ
WinPE + DISM + unattend.xml を組み合わせることで、OOBE 完全スキップ含め
メーカーや環境に依存しない Windows 初期セットアップの自動化が可能でした。
台数が増えるほど手作業が破綻しやすい領域だからこそ、
こうした仕組み化の効果は大きいと感じています。
本構成をベースにした PoC 支援なども行っているため、
興味があればプロフィールを参照ください。