2008/10/16(木)Linuxを使ってWindows環境を丸コピー

Windowsを使ってWindowsを丸移植

Windowsを80GBから1TBのHDDに移植(交換)する作業が必要になりました。よくやる手は、

  1. 新HDDの新しい区画(第1パーティション)を作成し、同じバージョンのWindowsを新規インストール。
  2. 全く関係ないHDDからWindowsを起動して、旧HDDのCドライブのファイルすべてを、新HDDのCドライブに丸コピー。*1
  3. 元のマシン(旧HDDが付いていたマシン)に新HDDのみを取り付け、起動。

注意点。

  • 新HDDの区画を旧HDDのOS上から決して認識させないこと。
  • 新HDDから初めて起動するとき、絶対に旧HDDを接続しないこと。
    • 新HDDがCドライブとして認識されるよう注意する。余計なドライブ類やUSBドライブなどがドライブレターとして先に認識されるようなら必ずオフにしておく。

今回もこの方法と行きたかったのですが、両方ともSATAのためできませんでした。原理的には問題ないのですが、家の環境では「SATAで稼働中のWindowsは1台しかない*2」ので無理でした。

*1 : 隠しファイルおよびシステムファイルも。

*2 : 今回HDDを置換するマシン以外にSATAの使えるマシンが存在しない

Linuxを使ってWindowsを丸移植

  • 旧HDD /dev/sda
  • 新HDD /dev/sdb

fdiskで旧HDDのパーティーションを確認。

/dev/sda1 1 2123 NTFS

新しいHDDに全く同じサイズのパーティーションを作成。

/dev/sdb1 1 2123 NTFS

ddコマンドで丸コピー。

# dd bs=64M if=/dev/sda1 of=/dev/sdb1

それで、新HDDを差して再起動。……起動しない。もちろん最初に書いた注意点は守ったのに。

ミスの詳細

そういえばMBRを書き込んでなかったと思って、Windows回復コンソールから

C:\>fixmbr

としてもダメ(HDDのブートセクタの復旧というやつです)。その後、色々試しても起動せず、FDからmbmを起動すれば一発解決だったのですが、FDドライブが付いてない。○時間経過。どうにもこうにも困り果てたところで、ふとLinuxを起動して、fdiskを叩いたところで原因発見。

 デバイス Boot Start   End
/dev/sda1         1   2123     Linux

区画番号がLinuxのままだった(汗)

fdiskから、「t」→「7」でNTFSに変更し、Windowsはアクティブ区画からじゃないと起動しないので、「a」→「1」でこの区画をアクティブ(ブートするパーティーション)として設定。

 デバイス Boot Start   End
/dev/sda1  *      1   2123     NTFS

無事、Windowsが起動したのでした。疲れた……(汗)

なぜ回復コンソールにfdiskが入ってないのか、小一時間問いつめたくなった。