パソコン

mbr2gptでMBR→GPT変換|データを消さずにレガシーBIOSからUEFI起動へ移行する方法

古いPCで使っていたシステムSSDを、UEFI起動の別のPCに載せ替えたら起動しない——。その原因はパーティション方式(MBR/GPT)の違いです。この記事では、Windows標準ツール mbr2gpt を使い、データ・Windows・アプリを保持したまま MBR を GPT に変換し、レガシーBIOSからUEFI起動へ移行する手順を、実際にハマった「Cannot find OS partition(s)」の解決法まで含めて解説します。

なぜそのままでは起動しないのか

レガシー(BIOS)時代にセットアップされた Windows は MBR 形式のディスクに、BIOS用のブートローダーで入っています。一方、最近の UEFI 機は GPT 形式のディスクと、EFIシステムパーティション上の UEFI ブートローダーで起動します。方式が違うため、MBR のディスクを UEFI モードのPCに挿しても起動しません。

レガシー(BIOS) UEFI
パーティション方式 MBR GPT
ブートローダー bootmgr(BIOS) bootmgfw.efi(EFIシステムパーティション)

この変換をデータを残したままやってくれるのが mbr2gpt です。サードパーティ製ツールでもGPT化はできますが、EFIシステムパーティションの作成とUEFIブートファイルの設置まで自動で行うのが mbr2gpt の強みで、後からのブート修復が不要になります。

準備するもの

  • 変換したい MBRのシステムディスク(本体から外したSSD単体を想定)
  • USB↔SATA/M.2 変換アダプタ(ディスクを外付け接続するため)
  • 作業用の Windows PC 1台
  • Windows 10/11 インストールUSB(メディア作成ツールで作成。この中のWinPEを使う)
作業前に必ずバックアップ。 変換自体は非破壊ですが、ディスク番号やドライブ文字の取り違えは致命傷です。重要データは別の場所へ退避してから始めてください。

STEP 1|ディスクがMBRか確認する

ディスクをUSB変換アダプタで作業PCにつなぎ、「ディスクの管理」(diskmgmt.msc)を開きます。対象ディスク左端のラベル部分を右クリック →「プロパティ」→「ボリューム」タブ →「パーティションのスタイル」を確認。マスター ブート レコード (MBR) なら変換対象です(GPTなら変換不要)。

「ディスクの管理」→ プロパティ →「ボリューム」タブで、パーティションのスタイルが MBR であることを確認している画面

STEP 2|mbr2gptが通る構成に整える

mbr2gpt には制約があります。

  • パーティションは最大3つまで(変換時にEFIシステムパーティションを追加するため)
  • 論理ドライブ(拡張パーティション)は非対応

「システムで予約 / OS / 回復」の3つ程度なら問題ありませんが、パーティションが4つ以上ある、または「論理ドライブ」が含まれる場合は弾かれます。不要なもの(特に空の論理ドライブ)があれば、「ディスクの管理」でボリュームの削除 → 拡張パーティションの削除を行い、「未割り当て」にして、3パーティション・論理ドライブなしの状態へ整えます。

削除は必ず「対象ディスク・対象ボリューム」であることを二重確認してから。中身が必要なパーティションは絶対に消さないこと。
論理ドライブを削除し、「未割り当て」に整えた後の「ディスクの管理」の画面(パーティション3つ)

STEP 3|WinPE上でmbr2gptを実行する

なぜWinPEが必要か

稼働中のWindowsから外付けディスクに対して mbr2gpt /allowFullOS を実行しても、こうなります。

管理者: C:\Windows\system32\cmd.exe
─ ▢ ✕
C:\Windows\system32>mbr2gpt /validate /disk:2 /allowFullOS
MBR2GPT: Attempting to validate disk 2
MBR2GPT: Retrieving layout of disk
Cannot find OS partition(s) for disk 2

mbr2gpt は「現在の起動情報(BCD)」を手がかりにOSパーティションを探します。ところが外付けした別のWindowsは、いま動いているOSのBCDには載っていません。そのためフルOS上では、外付けした他ディスクのWindowsを認識できず失敗します。

そこで、WindowsインストールUSBに含まれるWinPE(回復環境)上で実行します。USBから起動し、最初の言語選択画面で Shift + F10 を押すとコマンドプロンプトが開きます。

ディスク番号を確認する

WinPEではドライブ文字が普段と変わります。まず対象ディスクの番号を厳密に特定します。

管理者: X:\Windows\system32\cmd.exe
─ ▢ ✕
X:\Sources>diskpart
DISKPART>list disk
DISKPART>list vol
DISKPART>exit

list disk で対象ディスクの番号を確認します(GPT列に * が無い=MBR=変換対象)。list vol で「OS本体のNTFSボリューム」がどのドライブ文字・どのディスクかも控えておきます。ここでは例として OS本体が F:、システムで予約が E:、対象がディスク2 として進めます。

WinPEで list disk / list vol を実行し、対象ディスクの番号とOSボリュームを確認している画面

「Cannot find OS partition(s)」がWinPEでも出たら → BCDを作り直す

ディスク単体で持ち出した場合、システムパーティション上のBCDがOSの場所を正しく指しておらず、WinPEでも同じエラーが出ることがあります。その場合は bcdboot でBCDを作り直します。

管理者: X:\Windows\system32\cmd.exe
─ ▢ ✕
X:\Sources>bcdboot F:\windows /s E: /f BIOS
ブート ファイルは正常に作成されました。
  • F:\windows … OS本体の場所
  • /s E: … ブート情報を書き込むシステムパーティション(システムで予約)
  • /f BIOS … 現状はまだMBRなのでBIOS用として作成
タイプミス注意: 日本語キーボードだと /f\F(¥キー=バックスラッシュ)で打ちがち。フラグは /s と同じスラッシュ「/」です。間違えると認識されずヘルプが出るだけです。

検証 → 変換を実行

BCDを立て直したら、改めて検証し、変換します。

管理者: X:\Windows\system32\cmd.exe
─ ▢ ✕
X:\Sources>mbr2gpt /validate /disk:2
MBR2GPT: Attempting to validate disk 2
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
MBR2GPT: Validation completed successfully

X:\Sources>mbr2gpt /convert /disk:2
MBR2GPT will now attempt to convert disk 2.
If conversion is successful the disk can only be booted in GPT mode.
These changes cannot be undone!

MBR2GPT: Attempting to convert disk 2
MBR2GPT: Trying to shrink the OS partition
MBR2GPT: Creating the EFI system partition
MBR2GPT: Installing the new boot files
MBR2GPT: Performing the layout conversion
MBR2GPT: Migrating default boot entry
MBR2GPT: Fixing drive letter mapping
MBR2GPT: Conversion completed successfully
WinReRepair Succeeded
MBR2GPT: Before the new system can boot properly you need to
switch the firmware to boot to UEFI mode!

X:\Sources> 

mbr2gpt がOS領域の縮小・EFIシステムパーティションの作成・UEFIブートファイルの設置・GPTへの変換・回復環境の修復まで一気に処理します。これでディスクはUEFI起動専用のGPTディスクになりました。

STEP 4|ファームウェアをUEFIに切り替えて起動

  1. 作業PCをシャットダウンし、ディスクを取り外して目的のPCに装着する
  2. PC起動直後にセットアップ画面(BIOS)へ入る(多くは F2 / Del)
  3. 設定を変更:起動モード=UEFI / CSM=無効 / Secure Boot=一旦オフ(起動確認後に有効化してOK)
  4. 起動デバイスに現れる Windows Boot Manager を最優先に
  5. 保存して再起動 → 元のWindowsがそのままUEFIで起動
BIOS(セットアップユーティリティ)で UEFI起動 / CSM無効 / Secure Boot を設定している画面
変換直後、外付けUSBのまま試しに起動してもWindowsは立ち上がり、変換成功の確認になります。ただし本番は内蔵スロットで使いましょう。

起動後にやること

  • ライセンス認証:設定 →「更新とセキュリティ」→「ライセンス認証」を確認。メーカー製PCはファームウェアにOEMキーが埋め込まれていることが多く、その本体で起動すると自動認証されるケースがあります。
  • ドライバ:世代の違う機種へ載せ替えた場合、デバイスマネージャーで「!」の付いたデバイスがないか確認し、Windows Updateやメーカー公式ドライバで対応します。
UEFIで無事に起動したWindowsのデスクトップ、または「ライセンス認証されています」の画面

まとめ|詰まりどころチェックリスト

  • ☑ ディスクが MBR か確認(GPTなら変換不要)
  • ☑ mbr2gpt の条件へ:パーティション3つ以下・論理ドライブなしに整える
  • ☑ フルOSでは外付けディスクを変換できない → WinPE(インストールUSB+Shift+F10)で実行
  • ☑ list disk で対象ディスク番号を厳密に確認(他ディスクを絶対に触らない)
  • ☑ 「Cannot find OS partition(s)」→ bcdboot でBCDを再構築
  • ☑ /f のスラッシュを ¥(バックスラッシュ)で打たない
  • ☑ 変換成功後、BIOSを UEFI / CSM無効 / Secure Boot へ切り替える
  • ☑ 起動後にライセンス認証とドライバを確認

ポイントは 「WinPEで実行」+「事前にbcdbootでBCDを立て直す」 の2点。ここさえ押さえれば、データを一切消さずにレガシーBIOSからUEFIへ移行できます。

※ 本手順は自己責任で。作業前のバックアップ、そしてディスク番号・ドライブ文字の確認だけは、どれだけ慎重にしても足りません。

-パソコン