sysprep を利用した Windows deployment の一例

今回は自分のやった OEM 版 Windows XP Professional + open license 版 Office 2003 Standard をコピーして増やす手順を整理してみた。

※ お前ここおかしいぞってところがあったらツッコミお願いします。

実は Sysprep について必要な基本的な知識は Windows XP Professional と Office XP の効率的な展開と構成 にすべて書かれている。したがってこれを読み込めばこのエントリは必要ない。ただ1ページが長過ぎて読み手の気力を削いでしまう構成なのが惜しいところ。

そして、上の Microsoft の記事やこのエントリを読めば分かるが、sysprep はほんの一瞬しか出てこない。ほとんどは通常のセットアップと同じであり、ディスクイメージのコピーは sysprep を利用するしないに関わらず持っていると便利な知識であり道具である。あとはパーティションサイズの調整なんかもできた方がいい。これは最近よくブックマークされている[GIGAZINE

  • パーティションを操作できるフリーソフト「GParted Live CD」]2 などを参考にすればよいだろう。

Sysprep 前の段階

システムをコピーすることでセットアップに掛かる手間と時間を最大限節約するためには、まったく同じ構成の機械を揃えることがいちばんである。まぁ、Windows をコピーしたいということは、普通は何十台とか何百台とかいっぺんに導入しようとしているわけだから、バラバラに注文するなんてことはあり得ないと思うけど。

sysprep にはまったく同じ構成の機械同士でなければコピーに利用できないといった制限はないが、ここでは最も単純な例を扱う。というかこれ以外経験がないんで書きようがないのが正直なところ。どなたか詳しい人がいれば補足していただければありがたい。

不要なユーザーを削除して Administrator で作業開始

購入直後の Windows XP SP2 はユーザー作成を要求されるはずである。というか自分はそういう動作をする XP SP2 しかセットアップしたことがないのでその前提で話を進める。

この最初に作らなきゃいけないユーザー、邪魔。

Windows システムをコピーして大量のセットアップを行うわけだが、使う人はみんな違う名前である。もちろん user などの当たり障りのないユーザー名でセットアップしておいて全員そのアカウントを使うようにするというポリシーもあると思うんだけど、自分がそれをやられるとたぶん頭にくるので、今回は別な方法を採った。

まず、ユーザーを作成しないと先へ進まないのでとりあえずユーザーは作る。その後ログオフして Administrator でログオンし直し、[ マイコンピュータ ] の [ 管理 ] から先ほど作ったユーザーを削除する。通常、XP では Administrator アカウントを表に出さないために Administrator 以外の管理者カウントが必要であり、[ コントロールパネル ] の [ アカウント ] からは先ほど作った管理者アカウントを削除することはできない。しかし [ 管理 ] からは削除できる。1

Administrator アカウントの意味とかログオンの方法は @IT:Windows TIPS – Knowledge : Administratorとは? が分かりやすい。まぁ一言で言えばログオフして [ ctrl ] + [ alt ] + [ delete ] を2回叩けということである。

くり返すが、作成したユーザーの削除は必須ではないし、先にやっておかなければいけないものでもない。どういうセットアップをするかは(自分が管理者なら)自分で決めればよい。

というかプロファイルのコピーを行う場合は管理者カウントが Administrator を含めて2つ以上必要なので、この作業はあとでやった方がいいかもしれない。

アプリ、ドライバのインストール、アンインストール

この辺の作業は通常通り。プリンタの設定とかは mini-setup の辺りで自動化することができるらしいが、予め利用するプリンタをみんなインストールしておくという方法が採れるなら、この段階でインストールしてしまってよいと思う。

ユーザー向けの設定を保存する

Default User という隠し属性になっているユーザープロファイルがある。これにカスタマイズした設定を上書きしてやることで、次回以降はそのプロファイルに従って、予め設定された状態でユーザーは作成される。フォルダオプションやデスクトップのカスタマイズなどを毎回やり直す必要はない。

なお、セットアップ作業を Administrator でやっていた場合、ユーザー向けの設定も Administrator で行っていると思うが、ログオン中のユーザープロファイルをコピーすることはできないので、一度 Administrator 以外の管理者アカウントが必要になる。

ユーザープロファイルのコピー方法は上の Microsoft の解説記事の中ほどにある。

Sysprep

  1. factory モードで reseal する前の作業マスタを作成
    • これをどこか別な場所に保存
  2. setup manager でユーザー名とかプロダクトキーとか必要なものを設定。あるいは展開後のセットアップ時に指定するものは空白に。
  3. reseal

Sysprep を実行したディスクイメージのコピー方法

この部分は Sysprep 独自でもなんでもない。ファイルシステムに依存せず、ディスク上のデータをそのまま読み書きするツールがあればそれでよい。のような市販アプリでもよいし、Windows でも動く dd でもよいし、のような製品でもよい。基本的には Disk to Disk のコピーを行う2が、満足なスピードが出る構成ならネットワーク越しにコピーしてもいいかもしれない。

ちなみに手元で試した3限りでは dd は ibs=512 obs=65536 などのように差をつけず、bs=65536 固定の方がかなり速かった4。また USB2 のケースで繋いだディスクへの書き込みでは 10MB/s 弱、IDE 直結の場合は 40MB/s 弱という数字になった。調べたら USB 接続のケースは 10MB/s くらいで頭打ちになるというのはどうもよくある話らしい。

今回自分は USB CD でブートした Frenzy で dd を叩いた。NTFS も automount できるのでコピーするシステムの確認も一応できて便利。この辺は「得意な LiveCD を一つ確保しておく」といろいろ応用ができていいと思う。

シールしたシステムをセットアップ

これは設定にもよるしコピーしたシステムのバージョンにもよる。例えば OEM 版は

で、ほとんどやることはなくなる。(本来はプロダクトキーは機器固有なので入力が必要な気がするんだけど、OEM 版のためのアクティベーション情報の保存のために特殊なプロダクトキーを入れる必要があるので、本体のプロダクトキーを保存する場所ないよねぇ?)

Default User でユーザー設定をカスタマイズしてあれば、あとは使用するユーザーを作成するくらいで終わってしまう。6

メモ

ネットワークの設定はやり直し

sysprep で seal したシステムはネットワークコンポーネントのインストールをやり直す。そうするとインターフェイスに対して保存する項目を忘れてしまう。具体的には

  • 共有サービスをアンインストールしておいても復活する
  • DNS update の送信を抑制しても復活する

などである。この辺はスクリプト書いて自動的に設定するか、手で作業を加えるかどちらか。今回自分は面倒なのでここは手作業で対応した。上手に自動化できた人は方法教えてください。

Windows Media Player ショートカット

他の項目はカスタマイズした結果が保存されるんだけど、なぜか reseal した Windows ではデスクトップに Windows Media Player のショートカットアイコンが復活する。これ邪魔だけど消す方法が分からない。

アプリのプロダクトキー、アクティベーションは?

参考

もしかして sysprep 以外にも似たようなツールはあるのかも。

dd の Windows 版には以下のようなものがある。使ったことはないので具体的な操作などは分からないが、恐らく Un*x の dd と同じような動作をするはずである。書き込み先のディスクは予めアンマウントしておかないといけないと思うんだけど、Windows でそういう操作をした記憶がないので具体的には知らない。

  1. なんかものすごいバッドノウハウのかほり。この他にも XP にはホスト名と同じ名前のユーザーを作成できないという変な制限があるが、これはユーザーを先に作ってホスト名を後からそれに合わせるという超バッドなノウハウで回避可能。 

  2. つまりバラしの作業が必要なので、バラしやすい機械を導入することが大切。 

  3. 本体は Celeron 3GHz + UDMA 100 

  4. ただし、問題のありそうなディスクを読み込むときは ibs=512 の方がよい。今回はレスキューの場合じゃないので bs=65536 で ok. 

  5. 実際にはアクティベーションそのものを回避しているのではなく、アクティベーション情報を保存しておくことで、アクティベーションの操作を回避している。 

  6. 逆に固定されたユーザー名で予めユーザーを作ってあれば、ぶっちゃけやることはもうない。 

More