[Windows] MBR パーティションの SSD を GPT へコピーする

Pocket

突然だが、超久々に自作 PC を組んだ。
前回は Windows 7 登場の 2009年に、 第1世代 Core i5 750 で組んだ時なので、約14年ぶりとなる。

ハードは一度、中古でもらった 第3世代 Core i7 3770 に置換えているのだが、その際もストレージや Windows 7 Pro のライセンスはそのまま流用していてる。
その後も、ストレージをクローンしたり「初期状態に戻す」で再インストールしながら、脈々と使い続けているものとなる。

このため今回も、 旧PCに入っている SATA SSD に入っている Windows 10 を、新PC の NVMe SSD にコピーして、その状態で起動させてから(ライセンスにハード構成覚えさせてから)、 Windows 11 に上げようと考えた。

ところが、 NVMe SSD で起動するのに結構苦戦したので、その解決策のメモ。

とりあえず最初に試したこと

Ventoy をインストールしたブータブル USB メモリに GParted live を入れ、 GParted を使い、

  • 新NVMe SSD をパーティションテーブル GPT で初期化
  • 旧SATA SSD から 新NVMe SSD へ雑にパーティションをコピー

を行った。

この状態で試したところ、 ブルースクリーンすら表示されず、 UEFI から何もブートできない。
USB メモリ内の Windows ISO からブートして、回復コンソールからスタートアップ修復などを試しても駄目だった。

根本的な原因

原因は言わずもがな、パーティション弄った際のお馴染みのトラブルである、ブートレコードまわりの問題だ。
今回は、パーティションテーブルの違い (MBR と GPT) もあって、少々ややこしいことになっていた。

この PC の系譜の元祖を組んだ 2009年 当時も UEFI は存在はしていたものの、当時サポートしていた M/B (マザボ) なんぞ殆どなく、そこから脈々とクローンしている旧 PC の SATA SSD のパーティションテーブルは MBR のままだ。

一応、 M/B には CSM Support という BIOS 互換モードの設定があるので、 新SSD も MBR でパーティション作り直し、 セキュアブートを無効にすれば起動はできるはず?
…とは思ったのだが…、

なんと最近の CPU, チップセット は Legacy BIOS のブートに対応しない方針らしい。

あまりに長いこと自作マシンから距離を置いていたせいで全然知らなかった…
パーティションテーブルが MBR なら Legacy BIOS ブート、 GPT なら UEFI ブートにしようみたいなところで知識が止まっていたぞ。

MBR でのブート対応しない Windows 11 に今後更新することを想定すれば、 GPT に変更しておくべきだろう。
どうせ今回は 旧SATA SSD から 新NVMe SSD へのパーティションのクローンもしなくてはならないので、 MBR から GPT への切替をしながらクローンを進める方向で考える。

ところが、 色々調べても MiniTool, EaseUS, AOMEI の広告記事の機械翻訳といったゴミ情報ばかりでなかなか情報にたどり着けず。
ChatGPT や "新しい Bing" に聞いてみても、残念ながらあんまり役に立つ回答が得られなかったし。

兎にも角にもクリーンインストール

UEFI ベースのデバイスに GUIDパーティションテーブル (GPT) の ファイルシステムで Windows を起動させる場合、 EFI システムパーティション (ESP) というものが必要になる。
こいつは MBR では存在しなかったものなので、別途作ってやらなければならない。

また、 Windows 側でパーティション管理しやすくするため、 Microsoft 予約パーティション (MSR) というものも必要らしい。

ちまちまパーティションを作るのは面倒なので、 新NVMe SSD の中身を綺麗さっぱり削除し、 Windows 10 のクリーンインストール → 旧SATA SSD の Windows パーティションで上書き ……という方法を取る。

  1. Ventoy に Windows 10 インストーラ ISO イメージを書き込んでブート
  2. 手順に従って、 Windows 10 を新規インストール
    • ココで入れた Windows はすぐ消すので、プロダクトキーは入れずに進めて良い
  3. 起動するパーティションを覚えさせるため、インストール完了後一度 Windows を起動させる
  4. 再び Ventory に入れた GParted をブート
  5. 旧SATA SSD の Windows パーティションを、 新NVMe SSD の Windows パーティションにコピー

    • コピーの方向逆にするとデータが全部飛ぶので要注意

うまく行けば、この状態で再起動すれば問題なく Windows が起動するだろう。

それでもブルースクリーンが出る場合

少なくとも、上記の手順で ESP はブートするはずなので、悪くてもブルースクリーンぐらいは出るはずだ。

ここでもしエラーコード 0xc000000e などが出ている場合、 ESP 内の Boot Configuration Data (BCD) や M/B の NVRAM にあるブートオプションが、次に起動する Windows パーティションを適切に指せていない可能性がある。

この場合、回復コンソール上で echo list volume | diskpart と実行して Windows が入っているとみられるパーティションのドライブレターを確認し、 (ラベルやサイズで判断する)

X:\Sources>echo list volume | diskpart

Microsoft DiskPart バージョン 10.0.19041.964

Copyright (C) Microsoft Corporation.

  Volume ###  Ltr Label        Fs     Type        Size     Status     Info
  ----------  --- -----------  -----  ----------  -------  ---------  --------
  Volume 0     C  Windows      NTFS   Partition    461 GB  Healthy          
  Volume 1        BOOT         FAT32  Partition    499 MB  Healthy          
  Volume 2        Recovery     NTFS   Partition   4881 MB  Healthy    Hidden

その結果例えばドライブレターが C であれば以下のように実行し、 「ブート ファイルは正常に作成されました。」 と結果が出れば OK なはずだ。

bcdboot C:\Windows /l ja-JP

なお、 GPT 同士でエラー無くクローンする手順や、 BCD まわりの修正の手順については、以下のページが詳しく、とても参考になる。

終わりに

以上が、 Windows メディアや OSS の無料のツールだけを使って、 MBR のディスクから GPT のディスクにパーティションをクローンする方法だ。

もう流石に、今後 MBR を触ることはないかな…

余談1 (Ventoy)

本文中にも出てくるが、 Ventoy: A New Bootable USB Solution が便利すぎる。

PC を構成しているとどうしても、パーティション弄るツールやインストールメディアなど、複数のブータブルメディアを使う羽目になってくる。
昔は種類ごとに CD/DVD を焼いたり、 USBメモリを焼き込んだりしていたもので、使い分ける際もいちいち本体に入れ直さなくてはならないなど、面倒この上なかった。

Ventoy をインストールした USBメモリ を一つ用意しておけば、そのメモリの exFAT パーティションに好きな iso ファイルを複数放り込んで、簡単にブート仕分けることができる。

ブートするツールを更新する際も、 iso ファイルを入れ替えれば良いので、最新のツールに更新する敷居も下がってとても良い。

余談2 (光ディスクの劣化)

Ventoy を使いだす前、昔焼いた ブータブルCD/DVD 使ってパーティション弄ろうとしていた。
しかし、流石に5年以上前にしかも安物のディスクに焼いたものだったので、ディスクのエラー率高くて時折ブートに失敗してしまう。

普通の色素系ディスクだとこれくらいの年月で駄目になってくるのねー、と実感してしまった。

長期とっときたいデータはやはり、選別や再エンコードなどして M-DISC とかに焼いとかないと駄目だなー

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください