Open1

SSD 2TB MBR を GPT に変換する方法と、Windows 10 Pro でのブートBCD更新手順

rohi motrohi mot

SSD 2TB MBR を GPT に変換する方法と、Windows 10 Pro でのブートBCD更新手順

このガイドは、2TBのSSDをMBR形式からGPT形式に変換し、Windows 10 Pro環境でのブートBCD(EFIブート構成)の修正方法について説明します。


1. MBR2GPT ツールを使用した自動変換 (推奨)

前提条件

  • Windows 10 バージョン 1703 以降
  • 変換対象のディスク番号を把握していること(例:ディスク0)

手順

  1. 管理者としてコマンドプロンプトを起動
  2. 以下のコマンドを実行して変換します(`/allowFullOS` オプションにより、通常OS上での作業が可能):
    mbr2gpt /convert /disk:0 /allowFullOS
    
  3. ツールは、ディスクをGPTに変換し、EFIシステムパーティション(ESP)の作成および必要なUEFIブートファイルの配置、ブートBCDの更新を自動で行います。

2. 手動でのブートBCD更新

自動変換以外の方法でGPT化を行った場合、以下の手順でブートBCDを修正します:

ステップ 1: EFIシステムパーティション (ESP) の確認または作成

  • GPTディスクには、UEFIブート用のESPが必要です(通常は100~300MB、FAT32)。
  • ESPが存在しない場合は、Disk Management や `diskpart` コマンドで新規に作成してください。

ステップ 2: ESP にドライブレターを割り当てる

  1. 管理者としてコマンドプロンプトを起動し、以下の手順を実行:
    diskpart
    list disk
    select disk 0         // 対象ディスクを選択(必要に応じて番号を変更)
    list partition
    select partition X    // ESPのパーティション番号を選択(Xは番号)
    assign letter=Z       // 使用されていないドライブレターを割り当て(例: Z)
    exit
    

ステップ 3: ブートファイルの再構築とBCDの更新

  • 以下のコマンドで、Windowsインストールディレクトリ(例: C:\Windows)のブートファイルをESPにコピーし、UEFIブート用の設定を行います:
    bcdboot C:\Windows /s Z: /f UEFI
    

ステップ 4: BIOS/UEFI設定の変更

  • 変換後、PCのファームウェア(BIOS/UEFI設定)に入り、起動モードを Legacy (CSM) から UEFI に切り替えてください。

重要な注意点

  • バックアップ: ディスク変換前に必ずデータのバックアップを取得してください。
  • 検証: 変換後、OSが正しくUEFIモードで起動するか、すべての機能が正常に動作するか十分に確認してください。
  • ファームウェア更新: お使いのマザーボードが古い場合、最新BIOS/UEFIファームウェアに更新すると、変換後の互換性や安定性が向上する可能性があります。

この手順に従うことで、GPTディスクへの変換とブートBCDの修正が可能となり、UEFI環境下での安定した起動が期待できます.


[2025/4/12 8:32:11] ask copilot

mbr disk (OS windows10) を `mbr2gpt` を使って GPT disk に変換しようとしています。
disk size は 2TB, partition 構成は以下のようになってます。

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ              578 MB  1024 KB
  Partition 2    プライマリ              106 GB   580 MB
  Partition 0    拡張                1192 GB   107 GB
  Partition 4    論理                  23 GB   107 GB
  Partition 5    論理                 150 GB   130 GB
  Partition 6    論理                 100 GB   280 GB
  Partition 7    論理                  80 GB   380 GB
  Partition 8    論理                 150 GB   460 GB
  Partition 9    論理                  89 GB   611 GB
  Partition 10   論理                 101 GB   700 GB
  Partition 11   論理                 200 GB   801 GB
  Partition 12   論理                 150 GB  1001 GB
  Partition 13   論理                 100 GB  1151 GB
  Partition 14   論理                  48 GB  1251 GB
  Partition 3    プライマリ              199 GB  1300 GB


format は NTFS、未割当領域は最後のほうに 407GB 程度あり。
Partition 1 に boot Bcd があります。

`mbr2gpt` は boot BCDの更新を自動で行うそうですが、 Partition 1 に書き込むのでしょうか?
そうである場合、Partition 1 は fat32 に変換される?

もしくは、`mbr2gpt` は新規にブート用 partition を確保する?

copilot の返答


mbr2gptの動作とEFIシステムパーティションの確保について

mbr2gptツールは、MBRディスクをGPT形式に変換する際、既存のパーティションレイアウトを大きく変えずに変換しますが、UEFI起動に必要なEFIシステムパーティション(ESP)を新たに確保し、ブートBCDの更新も自動で行います。

具体的な動作は以下の通りです:

  1. パーティションテーブルの変換
    既存のMBRパーティションレイアウトをGPT形式に変換します。

  2. EFIシステムパーティション(ESP)の作成

    • 現在の環境では、Partition 1 (578MB) にブートBCDが配置されている可能性がありますが、これは通常NTFSでフォーマットされています。
    • UEFI起動にはESPとしてFAT32でフォーマットされたパーティションが必要です。
    • mbr2gptは、既存のNTFSパーティション(この場合、Partition 1)をFAT32に変換することは行いません。
    • したがって、十分な未割当領域(今回の場合、約407GBが存在するため)を利用して、新規に小さなESP(一般的には100~300MB程度)を作成します。
  3. ブートBCDの更新

    • 新たに作成されたESPに、UEFI用のブートファイルやブート構成データ(BCD)がコピー・配置され、システムがUEFIモードで正常に起動できるように設定が更新されます。

結論:
mbr2gptは、Partition 1に直接書き込んでESPとするのではなく、未割当領域から新規にEFIシステムパーティションを確保し、そこにUEFI用のブートBCDなど必要なブートファイルを配置します。結果として、既存のPartition 1はそのままNTFSのまま残ります。


mbr2gpt を実行

>mbr2gpt /convert /disk:0 /allowFullOS

MBR2GPT will now attempt to convert disk 0.
If conversion is successful the disk can only be booted in GPT mode.
These changes cannot be undone!

MBR2GPT: Attempting to convert disk 0
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
Disk layout validation failed for disk 0

mbr2gpt /convert /disk:0 /allowFullOS /logs:<log path>

mbr2gpt /convert /disk:0 /allowFullOS /logs:[some path]\pc-hard\mbr2gpt_logs.log
  • 上記の command は error になった -> Cannot initialize logs. Error: 0x00000000

    • -> copilot に聞く

ログ初期化エラーの原因と対策

このエラーメッセージ:

Cannot initialize logs. Error: 0x00000000

は、/logs オプションで指定したパスに原因がある可能性が高いです。以下の点を確認してみてください。

1. ログパスの形式

  • 原因:
    mbr2gpt の /logs オプションは、ログを格納する「ディレクトリ」のパスを指定する必要があります。
    ファイル名(例: mbr2gpt_logs.log)まで含めたパスを指定すると、ログファイルが正しく生成されず、エラーになる場合があります。

  • 対策:
    ファイル名を含めず、ログファイル用のフォルダのみを指定してください。
    例えば、

    mbr2gpt /convert /disk:0 /allowFullOS /logs:[some path]\pc-hard\
    

のように実行してみてください。

2. 書き込み権限の確認

  • 原因:
    指定したディレクトリに書き込み権限がない場合、ログファイルの作成に失敗します。

  • 対策:
    使用しているアカウントに、指定ディレクトリへの書き込み権限があるか確認してください。
    また、管理者権限でコマンドプロンプトを実行しているかも確認しましょう。

3. パスの存在確認

  • 原因:
    指定したディレクトリが存在しない場合、自動で作成されない可能性があります。

  • 対策:
    事前に指定したパスが存在することを確認してください。存在しない場合は、フォルダを作成してから実行するとよいでしょう。


補足:
エラーコード 0x00000000 は通常、成功を意味するコードですが、ここではログの初期化に失敗しているため、パス指定やアクセス権限の問題が疑われます。

上記の対策を試し、問題が解消されるか確認してください。


  • これらの copilot の応答を参考に、再度実行
mbr2gpt /convert /disk:0 /allowFullOS /logs:[some path]\pc-hard\
  • すると、以下の log file, xml file が吐き出された.
setupact.log
setuperr.log
diagerr.xml
diagwrn.xml
  • そのことを copilot に報告してみると

作成されたログファイルの概要

mbr2gpt ツールは、ディスクの変換プロセス中に詳細な動作記録を残すため、以下のようなログファイルやXMLファイルを生成します:

  • setupact.log
    変換プロセスにおける各種アクションや操作の履歴が記録されます。

  • setuperr.log
    変換中に発生したエラーの詳細情報が記録されています。問題の原因を特定する際に役立ちます。

  • diagerr.xml
    システム診断用のエラー情報がXML形式で出力され、より詳細なエラー解析が可能です。

  • diagwrn.xml
    警告情報がXML形式で記録され、今後の問題予防や改善の参考となります。

これらのファイルは、変換プロセスやその後のトラブルシューティング時に非常に有用です。特に、エラーや警告が記録されている場合は、その内容を精査することで、変換の各ステップで何が起こったのかを把握し、必要な対策を講じることができます。


  • さらに、setupact.logedit.log で size reduce し、copilot に読んでもらった!

このログの解説

このログは、mbr2gpt ツールがディスクのパーティションレイアウトを取得・検証中に出力した内容の一部です。主なポイントは以下の通りです:

  1. パーティションの一覧表示:

    • 各パーティションについて、番号、タイプ、ブートフラグ、認識状態、オフセット(開始位置)、長さ、ボリューム情報、ドライブ文字、NTパスなどが表示されています。
  2. タイプと認識状態:

    • Type: 7 は標準のプライマリパーティションを示しており、例えば Partition 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 などは「Recognized: Yes」として正常に認識されています。
    • Type: 5 は拡張パーティションを示します。このログでは、拡張パーティションとして扱われるべき領域が「Recognized: No」となり、かつ「Error:0x00000012」としてエラーが出ています。
      • これは、mbr2gpt が拡張パーティション(およびそこに内包される論理パーティション)の構造を認識・サポートしていないために発生しています。
  3. エラーとその影響:

    • 拡張パーティション(Type: 5)のエントリは複数見られ、その結果としてレイアウト検証に失敗している(「ValidateLayout: Unrecognized partition found, index 3」とのエラー)。
    • mbr2gpt は、変換処理に進むためにはシンプルなプライマリパーティション構成であることを要件としており、拡張パーティションを含んだレイアウトはサポート外となります!!!
  4. まとめ:

    • このログは、ディスクが複雑なMBRレイアウト(拡張パーティションと多数の論理パーティションを含む状態)であるため、mbr2gpt のレイアウト検証が失敗している状態を示しています。
    • 変換を実行するには、まずディスクのパーティション構成を見直し、拡張パーティションを削除またはプライマリパーティションに再構成する必要があると考えられます。

以上の内容から、今回の変換失敗は主に拡張パーティションが原因であるため、ディスクレイアウトの整理が必要です。


なるほど、原因はわかりました。

では、AOMEI Partition Assistant 10.8.0 の MBR を GPT に変換する機能を使えば、 拡張 partition も変換できることがわかっているので、
Partition Assistant で変換後、 手動で、 boot partition を作成することは可能ですよね?

はい、その通りです。

AOMEI Partition Assistant 10.8.0 の MBR → GPT 変換機能は、拡張パーティションを含む複雑なディスクレイアウトも GPT に変換できるようになっています。そのため、Partition Assistant で変換を実施した後、従来の拡張パーティション構成は解消され、シンプルなプライマリパーティション構成となる可能性が高いです。

変換後には、UEFI 起動に必要な EFI システムパーティション(ESP)を手動で作成して、ブートパーティションとして設定することが可能です。以下の手順で作業を進めることができます:

  1. ESP の作成

    • Disk Management や diskpart を使用して、100~300 MB 程度のパーティションを新たに作成してください。
    • このパーティションは FAT32 でフォーマットしてください。
  2. ESP にドライブレターの割り当て

    • たとえば、作成した ESP に「Z:」などの未使用のドライブレターを割り当てます。
  3. ブートファイルの配置

    • 管理者権限のコマンドプロンプトを開き、以下のコマンドを実行します:

      bcdboot C:\Windows /s Z: /f UEFI
      
    • このコマンドは、Windows のブートファイルを ESP(ここでは Z:)にコピーし、UEFI 起動用のブート構成を作成します。

まとめると、AOMEI Partition Assistant で MBR を GPT に変換した後、手動で EFI システムパーティションを作成し、上記の手順に従ってブートパーティションを構築することは十分可能です。これにより、UEFI 環境での正常起動が実現されます。


変換する MBR disk には 2 つの winodws 10 が入っているので、

OS 毎に上記の手順を行えばよいでしょうか?

Dual-Boot 環境での手動による EFI システムパーティションの設定

変換後のディスクで 2 つの Windows 10 がインストールされている場合、1 つの ESP (EFI システムパーティション) を共有して、両方の OS のブートファイルを格納する必要があります。
そのため、各 OS 毎にブートファイルを ESP に配置するコマンド (bcdboot) を実行する必要があります。

例えば、以下のような手順になります:

  1. ESP の作成とドライブレターの割当

    • Disk Management や diskpart を使用して、100~300 MB 程度のパーティションを FAT32 で作成し、例としてドライブレター「Z:」を割り当てます。
  2. 各 Windows に対して bcdboot を実行

    • それぞれの OS のインストールパーティションが、例えば OS1 が C:\Windows、OS2 が D:\Windows にあるとします。
    • OS1 用に以下を実行:
      bcdboot C:\Windows /s Z: /f UEFI
      
    • OS2 用に以下を実行:
      bcdboot D:\Windows /s Z: /f UEFI
      

    これにより、ESP に両方の OS のブートエントリが追加され、UEFI ブートマネージャでどちらかを選択できるようになります。

まとめると、1 つの ESP を共有しながら、各 OS 毎にブートファイルを配置するための手順を実行すれば、双方向の起動が可能になります。


bcdboot C:\Windows /s Z: /f UEFI は windows 10 上で実行可能ですか?


はい、Windows 10 に内蔵されている bcdboot コマンドを利用しているため、このコマンドは管理者権限で実行すれば問題なく動作します。
具体的には、ESP に既にドライブレター (例えば Z:) を割り当てた状態で、

bcdboot C:\Windows /s Z: /f UEFI  

を実行することで、C:\Windows のブートファイルが指定された ESP にコピーされ、UEFI 用のブートエントリが生成されます。

なお、成功のためには以下の点を確認してください:

  • コマンドプロンプトを「管理者として実行」していること。
  • 指定した ESP (ここでは Z:) が FAT32 でフォーマットされていること。
  • Windows ディレクトリ (この例では C:\Windows) が正しく存在していること。

この条件が整っていれば、Windows 10 上でこのコマンドは正常に実行可能です。


今起動している windows 10 から見える 2つの OS drive letter は C:(boot, active) と O: に install されています。

  1. windows 10 上で、Partition Assistant の MBR → GPT 変換 を実行

  2. そのまま ESP 領域を Partition Assistant で確保 (ex: 500MB fat32 drive letter Z:)

  3. run bcdboot C:\Windows /s Z: /f UEFI

  4. run bcdboot O:\Windows /s Z: /f UEFI

  5. 再起動時に、p8z68-v/gen3 UEFI bios で GPT boot を有効にする.

  6. さらに再起動、この時 2 つの OS から起動可能になっている.

この activity は正しく完了しますか?


手順の妥当性について

お示しいただいた手順は、基本的には正しいアプローチと言えます。以下、各ステップの検証と注意事項を簡単にまとめます。

  1. MBR → GPT 変換 (Partition Assistant 使用)

    • AOMEI Partition Assistant の機能を使ってディスクのパーティションテーブルを MBR から GPT に変換することで、拡張パーティションの問題も内部で処理され、シンプルなプライマリパーティション構成に整えられます。
  2. ESP 領域の確保

    • 500MB の FAT32 パーティション (ESP) を Partition Assistant で新規に作成し、ドライブレター(ここでは Z:)を割り当てることで、UEFI 起動に必要な領域が用意されます。
  3. bcdboot コマンドの実行

    • 各 OS インストール先(C:\Windows と O:\Windows)に対して、以下のコマンドを管理者権限のコマンドプロンプトで実行することで、ESP にそれぞれのブートファイルとブートエントリが作成されます。
      • bcdboot C:\Windows /s Z: /f UEFI
      • bcdboot O:\Windows /s Z: /f UEFI

    ※ これにより、ESP は両方の Windows 起動ファイルを保持し、UEFI ブートマネージャで両 OS の起動が可能になります。

  4. UEFI ブートの有効化

    • BIOS (p8z68-v/gen3 UEFI) 設定で GPT 起動(UEFI モード)を有効にすることで、システムは ESP を利用した UEFI 起動に切り替わります。
  5. 最終確認

    • 再起動後、UEFI ブートメニューから2 つの OS の選択が可能になっていれば、手順は正しく完了したことになります。

注意点:

  • 変換やパーティション操作の前に、必ずデータのバックアップを行ってください。
  • 変換中に予期せぬエラーが発生する場合もあるため、各ステップを慎重に実施し、設定内容(特に ESP のフォーマットとブートエントリの確認)を再度チェックしてください。
  • 複数 OS 間で ESP を共有する設定は、通常 Windows の UEFI 双方向ブートでは一般的な構成です。

まとめると、手順どおりに進めれば、2 つの Windows 10 を GPT / UEFI 環境下でデュアルブートする構成は正しく実現可能です。


実際作業に入ると、以下のような activity となった


今起動している windows 10 から見える 2つの OS drive letter は C:(boot, active) と O: に install されています。

  1. windows 10 上で、Partition Assistant の MBR->GPT 変換 を実行

    -> 起動 OS 上で作業を行おうとしたので、再起動が必要 と言われ再起動をかける (Partition Assistant 製 Windows PE で変換作業)

    • くるくる画面... (module loading?)

    • file の断片化が酷いと怒られ、 defrag を実行しなければ変換作業が実行されないのかと思い、起動していた deflag UI から deflag を実行 (すべての partition)

    • ところが、すでに GPT disk への変換が終わっていたことを defrag 完了後に知る (くるくる画面 中に変換が行われた模様、defrag は必要なく、trim で良いはず)

    • ここで deflag UI を終了すると再起動がかかった (6 へ遷移)

    MBR->GPT 変換中に行われたであろう作業内容:

    • MBR disk 時の boot partition が FAT32 に変換され、ESP として有効になる

    • 2 つの Windows 10 OS C:, O: が BCD に登録される (bcdboot (C|O):\Windows [/s Z:] /f UEFI 相当?)

  2. そのまま ESP 領域を Partition Assistant で確保 (ex: 500MB fat32 drive letter Z:)

    • この作業は、Partition Assistant MBR->GPT 変換により必要なくなった.
  3. run bcdboot C:\Windows /s Z: /f UEFI

    • この作業は、Partition Assistant MBR->GPT 変換により必要なくなった.
  4. run bcdboot O:\Windows /s Z: /f UEFI

    • この作業は、Partition Assistant MBR->GPT 変換により必要なくなった.
  5. 再起動時に、p8z68-v/gen3 UEFI bios で GPT boot を有効にする.

    • GPT boot を有効にする 表現は正しくなく、実際には何も設定を変更することなく起動することが可能だった.

    • しかし、GPT disk による起動が全く初めてだったので、しばらく右往左往する...

    • 今日まで、MBR disk からの起動しか知らなかったので、てっきり起動 device 選択で disk(今回の SSD は Hanye Q60) を選択するものだと思い込んでいたためで、
      そういえば、Hanye Q60 以外の選択肢が出来ていることに気が付き、それを最優先起動 device として選択.

      -> これで 7 へ遷移することが出来るようになる(!ほんとに些細な事だが、ググってもググっても, このことについて触れられている記事に全く出会えなかった...org)

  6. さらに再起動、この時 2 つの OS から起動可能になっている.


お疲れ様です、これでめでたく MBR disk から GPT disk への変換作業が完了です!