Introduction

古いシステムで VHD ブートさせたシステム (MBR の限界まで物理 OS が存在した) を移行することになったこれが本当に難儀した。

試したのは

  • MBR2GPT.exe
    • パーティションの数が合わないと言われ変換に失敗する
      • パーティションを自分で作ってみてもダメ
  • bcdedit で起動時に detect HAL を無効にする
    • 意味なし
  • Acronis Disk Director 12
    • MBR から GPT への変換ができない
      • OS に接続した VHD ディスクが使用中と言われ、変換中に失敗する
    • 昔から重宝していたが、まさかの失敗でショックだった

最終的に AOMEI Partition Assistant Pro Edition で変換ができた。
安くない買い物だったがよかった。

How to resolve?

最初は MBR の再構築など、VHD を修正する方向で考えていたが悉く失敗。

  • MBR から GPT への変換し、diskpart でブート領域を作成
    • VHD ブートで OS を認識しない
  • いっそ先頭のブート領域を削除してみる
    • 当然ダメ

諦めかけていた時にふと

「既に動いている VHD のシステム領域を、移行させたい VHD のシステム領域で上書きしたらいけんじゃね?」

と閃き、試してみたら成功した。

つまり、

  1. 移行元の VHD を MBR から GPT に変換 (以下ソース VHD)
  2. GPT 上で VHD ブートに成功している VHD ファイルをコピー (以下ターゲット VHD)
  3. ターゲット VHDのシステム領域を消去 (ブート領域は残す)
    • 未割り当て領域ができる
  4. ソース VHD のシステム領域をターゲット VHD の未割り当て領域にクローン
    • 必要に応じて VHD のリサイズを実施
  5. bcdedit でソース VHD を VHD ブートできるよう設定
    • HAL は有効にする

以上!