Windows XPを小容量ディスクへ引っ越す

今更ながらにXPの話。現在使っている環境は全てそのままで、XPを大容量のHDDから小さなHDDへ移し換えようという内容である。ソフトウェアの再インストールや再設定をしないで、HDDを小さくする。

手順に入る前にちょっと前置き。
なぜ、わざわざXPのHDDを小さなものに移し替えたいか。実は仮想マシンとして幾つかのXPを使っている。仮想マシンの場合、実マシンよりも利用期間が長くなると予想できるので、ついつい仮想ディスクのサイズを大きめに取ってしまっている。例えば32GBとか。勿論、それなりのソフトウェアをインストールするのであれば、それを収容するだけのHDD容量は確保する必要があるのだが、大抵はXPとOffice等で10GBもあれば足りる。XPだけであれば4GBでも問題なく動かせる。

一方、仮想マシンを動かすホストマシンのHDDのバックアップを取っているのだが、私の環境で100GBで約1時間かかる。最近、差分バックアップで100GB〜200GBをコピーすることになるのだが、そうすると1時間から2時間かかる。バックアップの内容を見てみると殆どが仮想マシンの仮想ディスクのコピーに費やされている。仮想ディスクの中のファイルが1つでも更新されると、ホストマシン上で仮想ディスクのファイル全体がバックアップの対象となる。更に、VMwareの場合は仮想マシンを一度も起動しなくても、Invntoryに登録しているだけで、仮想ディスクのファイルがアクセス時間が更新されてしまい、Inventoryにある全ての仮想マシンの仮想ディスクがバックアップの対象となる。

そこで、不用意に大きなディスクはバックアップの負担になるので運用上、好ましくないということになる。勿論、固定長の仮想ディスクではなく、必要に応じてサイズが大きくなる可変長の仮想ディスクにしているが、結局、仮想マシン上で作業用に一時ファイルを生成すると、その部分のサイズが確保され、ファイルを削除しても“ダーティ”な領域として残ってしまう。これを繰り返すと次第に仮想ディスクが“成長”して、ゲスト上では6GBしか使っていないのにホスト上では10GBを超えている、ということも多い。(勿論、仮想ディスクの圧縮をすれば再びコンパクトにすることは出来るのだが、頻繁に複数の仮想マシンのディスクに対して圧縮をかけるのも負担の大きい作業となる。)

で、結局、分かってきたのは、仮想マシン(=ゲストマシン)に必要なディスクのサイズはOSとを必要なソフトウェアをインストールする環境だけあればよく、その他のデータ領域(/homeやC:\Documents and Settings、C:\Usersも含めて)はファイルサーバ(多くの場合はホストマシン)をCIFS(samba)かNFSで利用すれば良い、ということである。ディスクを拡張するツールは、OSにバンドルされているものも含め、世の中に数多くあり、もし仮想ディスクが不足したら、より大きな仮想ディスクへ引っ越せばいい。

ということで、すでに運用ベースに入っている大きめの仮想ディスクを持つマシンの仮想ディスクを必要最小限に小さくすることにした。

Linuxは簡単である。rsyncでコピーしてgrubの再設定を行えば簡単に引っ越しできる。幸いにもVistaや7はこれからゲストで使い始めるところなので、まだない。問題はXPである。

XPのディスクの引っ越し方法

XPの小さなディスクへの引っ越しの方法がなかなか見つからない。仕方ないので試行錯誤でやってみた。Linuxと同様にXCOPYなどでファイルをコピーしてfixboot、fixmbrで何とかならないか、とやってみたがNGで、むりやり起動するところまで来てはいるが、100%前の環境が継承されているかちょっと不安もある(XCOPYでは完全にACLの内容をコピーできないため。システムファイルの幾つかはAdministratorでもアクセスできないものがある。)

そこでアプローチを変えて、バックアップを使う方法を考えてみた。ただ、今まで何回もバックアップツールでバックを取って来たのだが、そこから“システム全体”を元通りにする方法を知らない。ファイルから特定のファイルを取り出して元通りにする方法はあちこちで紹介されているのだが。

そこで、色々と試してみたのだが、多分次の方法が正解だと思う。(もっとスマートな方法があるのかもしれないが、私は“Windows野郎”ではないので、素人ながら、この方法に辿り着いた。)

CDからOSをインストールする途中のところまで行い、それにバックアップを上書きして復元する、という方法。以下に具体的な手順を書いておくが、手順の中で3つのHDDが必要になるので、次のように表現しておく。

HDD_ORIGN: オリジナルのディスク(約32GB)
HDD_SMALL: 引っ越し先の小容量ディスク(約8GB)
HDD_BCKUP: バックアップ保存用ディスク(約8GB)

ただし、HDD_BCKUPは必ずしもHDDである必要はなく、実マシン環境であればテープでもDVDでもOK。(私の場合は仮想環境での引っ越しなのでHDDを使った方が簡単だった、だけである。)

システムのバックアップ

まず、HDD_BCKUPを追加した状態でブートする。HDD_ORIGNはCドライブ、HDD_BCKUPはEドライブとなる。(HDD_BCKUPが未フォーマットであれば、初期化&フォーマットと行う。)その状態でCドライブのバックアップを取る。
[スタート]⇒[すべてのプログラム]⇒[アクセサリ]⇒[システムツール]⇒[バックアップ]
“このコンピュータにある情報すべて”を選択し、バックアップ先としてEドライブ(E:\Backup)を指定する。フロッピーのデータも仮想フロッピー(ホストマシン上のイメージファイル)に取っておく。
バックアップが終わったらシャットダウンする。

引っ越し先のシステムの初期化

HDD_ORIGNとHDD_BCKUPをマシンから取り外し、HDD_SMALLだけを接続する。HDD_SMALLがCドライブとなる。CDドライブにはXPのインストールCDを入れる。(HDD_ORIGNをインストールしたのと同じ種類のXPを使う。)
電源を入れ、HDD_SMALLにXPをインストールする。ただし、インストールを最後まで完了するのではなく、2度目のリブート(次の画面の後のリブート)時に強制的にシャットダウンする。(CDからインストールを開始すると、インストールに必要なファイルをHDDへコピーした段階で1回目のリブートがあり、システム設定が終了するところで2度目のリブートがある。)

リブートして立ち上がろうとBIOS画面が出たところで電源をOFFにする。2度目のリブート時にタイミング良く電源断するために、予め、BIOSでHDDよりCDドライブからのブートの優先度を高めておき、CDドライブをブート時に接続状態(通常のマシンであればCDを入れた状態)にしておくといい。リブートがかかった時に“CDからブートするには何かキーを押してください”といった趣旨のメッセージが5秒程出るので、その間に電源断する。
なお、XPのインストールの過程でプロダクトキーの入力があるが、勿論、オリジナルのXPと同じものを使う。ここでプロダクトキーを入力しても、次のステップでオリジナルXPを復元後は“認証済み”となっているので改めて認証する必要はない。
Administratorのパスワード、コンピュータ名の入力もあるが、これもオリジナルのものと同じにしておいた方が無難だろう。

バックアップの復元

HDD_SMALLに加えてHDD_BCKUPを接続する。HDD_SMALLがCドライブ、HDD_BCKUPがEドライブとなる。パワーオンして[F8]キーを連打して“セーフモード”に入る。(ここでは予めBIOSでCDドライブよりHDDからのブートの優先度を高くしておく、もしくはCDドライブCDを入れない状態にしておく。そうしないとF8を押すとCDからのブートになってしまう。)セーフモードで起動するとAdministratorのパスワードを入力しログオン。(偏執狂的な人は、必要に応じてMFTの拡張などを行っておく。“ MFTの最適化”などを参照。)
まず、C:\WINDOWS\system32\dllcacheの下にあるファイルを削除する。
次に、バックアップルーツを起動する。
バックアップツールではバックアップファイルとしてE:\Backupを指定する。復元する項目としてCドライブ(2項目)とシステムの状態を指定する。更に[詳細設定]で復元場所は“元の場所”、“既存のファイルを置き換える”を指定する。
バックアップ終了時に再起動するかたずねられるが、ここでは“いいえ”を選んで、再起動ではなくシャットダウンする。シャットダウンしたらHDD_BCKUPを取り外す。

再起動後の調整

再起動すると通常通りにXPが利用できるようになる。特段の調整も必要ないが、クリーンインストールの状態に最新の状態(既にアップデートを重ね、クリーンインストール時からファイルを削除している)を上書きしているので、幾つかは不要なファイルが存在する。私の場合、オリジナルのHDDよりも1.5GB近く多くなっていた。心当たりのありそうなディレクトリ(C:\WINDOWS\Downloaded Program Files、C:\WINDOWS\SoftwareDistribution\Download、C:\WINDOWS\Temp等など)と“システムの復元”の古いものを削除などして大分減ったが、それでも800MB程多い。色々と調べて原因は、C:\System Volume Informationの下に“インストール前のシステム復元の情報”が入っていたため。これを削除すると使用領域はほぼオリジナルのHDDと同じになった。(詳細は、“System Volume Informationのクリーンアップ”を参照)

なお、再インストール途中でプロダクトキーを入力しているが、バックアップを復元した状態では“認証済み”でアクティベートされている状態に戻るので、再認証の必要はなかった。

また、“副作用”として、システム関連ファイルも再度クリーンインストールできるので、defragでもデフラグできないファイルが殆ど無い状態になる。スッキリ!