sysprep とは, 一般化とは
sysprep (読み方:しすぷれっぷ) は、たくさんある Windows OS マシンに同じような設定を入れる時の展開作業効率化ツールです。
※展開とは : Windows を 1 台セットアップし、その設定情報を吸い上げて他の多数のマシンにコピーしていく作業のこと。
sysprep は『Windows 上のマシン固有情報を削除する』という意味で『sysprep を掛ける』と言ったりしますが、厳密には『sysprep を使って一般化する』が正解です。つまり一般化とは、マシン固有情報を削除することです。
具体的に削除される情報は「SID (Security ID)」や「OS のライセンス認証状態」、「イベントログ」、「デバイスやドライバのシリアル」等です。
SID というのはユーザアカウント (User-A, User-B 等) の識別子としてよく意識されますが、コンピュータアカウント (マシン自体) の識別子としても使われます。
例えば既に1台1台インストール済の複数の Windows OS に、同じような設定を入れていきたい場合は sysprep を一般化しないで使うこともあります。
ですが多くのシーンでは、クライアント OS (Windows10等) やサーバ OS (Windows2019等) イメージ展開時に、sysprep を使って固有情報を消してから展開する、という使い方をします。
構成パスとは
構成パスとは『どのような順番でどのようなセットアップをするか』というセットアップ過程のことです。sysprep を実行すると、オプションで指定された通りの構成パスを辿ってセットアップが進んでいきます。
以下に Windows Setup (初期インストール等) と Sysprep の構成パスを例示します。
sysprep の構成パスを見る前に、まずは Windows を初期インストールするときの構成パスを見てみましょう。
Windows を初期インストールするときの構成パス
1. WindowsPE (Windows Setup settings)
インストール時のこれ。
2. Offline Servicing
1. の最後の「更新プログラムをインストールしています」はこっちに含まれるらしい。その後、「応答ファイル」という無人インストール用の config ファイルがセットされていればその内容に沿ってセットアップが自動実行されます。(sysprep ではなく「展開サービス」の役割で使われる)
3. Specialize
Specialize とは "一般化"「Generalize」の対義語です。
マシンの固有情報を OS に保存します。記録される項目は以下です。
- コンピュータマシンの SID
- デバイスやドライバのシリアル
4. oobeSystem
oobe は Out-Of-Box Experience の略です。察するに、『買ってきたマシンを開梱して起動したときの体験をするよ』ということでしょうか。ロケール (日本とかアメリカとか) やユーザの ID パスワード設定とかを実施するフェーズです。
こんな感じです。次に、sysprep 実行時の構成パスを見てみましょう。
sysprep 実行時の構成パス
1. generalize
sysprep 実行時に GUI で「一般化する」にチェックを付けたり、CLI で /generalize オプションを付けた場合は generalize 構成パスから始まります。
この構成パスではマシンの固有情報を削除します。初期化される項目は以下です。
- コンピュータマシンのSID
- デバイスやドライバのシリアル
2. specialize
generalize が完了すると、次に起動するときは必ず specialize から始まります。前述の通り、specialize ではマシンの固有情報を OS に保存します。保存される項目は前述と同じです。
3. AuditSystem, AuditUser
これはGUI の「システムクリーンアップアクション」で「システム監査モードに入る」を選択したり、CLI で /audit オプションを付けた場合に動作します。
紛らわしいですが、監査ログ等を取るわけではなく、単に /unattend:[filename] オプションで指定された応答ファイル(answer file)の内容に沿って、システム起動時(AuditSystem)、およびユーザログイン時(AuditUser)にセットアップが自動実行されます。
4. oobeSystem
こちらは前述と同じです。
sysprep 実行のサンプル例
例えばドメイン参加した Windows の VM イメージファイルを単純コピーして他のサーバとして構築しようなんて考えた場合、SID を削除しないとドメインコントローラでエラーが出まくること請け合いです(試してはいない)。
まずは現状の確認としてコンピュータ固有情報の代表格 "SID" を確認します。whoami /user でユーザの SID が表示されますが、最後の - (ハイフン) 前まで (ピンク枠) がコンピュータのSIDです。
それでは sysprep を実行していきましょう。
Windowsキー +R で『ファイル名を指定して実行』を出し、"sysprep" と打ち Enter を押下します。
すると sysprep.exe が存在するフォルダーが開きますので sysprep.exe をダブルクリックすると sysprep (GUI) が起動します。
固有情報削除だけが目的であれば以下のようにオプションだけで十分です。
コマンドだと以下になります。
C:¥Windows¥System32¥Sysprep> sysprep.exe /generalize /oobe /shutdown
/mode:vm を使うと速くなるとかなんとか。
ともかく実行すると下記画面が表示され、
その後自動でシャットダウンされます。このイメージを複数コピーすれば、起動時には specialize 構成パスにより、固有情報が自動で割り当てられます。
下記のように SID が変わりました。
sysprep コマンドのオプション一覧
[ /quiet ] : 標準出力等、モニタへのフィードバックをしない
[ /generalize ] : generalize 構成パスから開始
[ /audit | /oobe ] : auditSystem/auditUser構成パスを経由するか、oobe構成パスに飛ぶか
[ /reboot | /shutdown | /quit ] : 再起動するかシャットダウンするか起動のままか
[ /unattend:<filename> ] : 無人setup用の応答ファイル(answer file)を指定
[ /mode:<mode> ] : VM の場合は vm モードの指定が可能。速くなる。
コメント