Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

MBRをGPTへ変換する手順 MBR2GPT

f:id:espio999:20210629214828p:plain
率直に言えば、今時BIOSモード(Legacyモード)で起動しているPCというのは、Windows 11のサポート対象外となる世代のPCに属している公算が高い。従って、MBRを変換し、起動モードをUEFIへ変更したところで、Windows 11に対応できるとは限らない。とはいえ、それでも試してみたい、という人たちは多そうだ。実際、

を含む検索キーワードで、ブログを訪問している人たちが存在する。

多くの人たちはTPMの対応に注目しているようだが、仮にTPM 2.0が搭載されていても、セキュアブートを有効とするには、UEFIでブートしなければならない。前提条件として、まずUEFIブートへ移行しなければならず、そのためにはMBRをGPTへ変換しなければならない。

この投稿では、MBR2GPTを利用してMBRをGPTへ変換する手順を紹介する。なお、紹介する手順では、次の手順を経ている。

  1. 検証
  2. 変換

何か問題があれば検証段階でエラーを確認できるのだが、私の環境は問題が無かったため、エラーを示すことはできない。そのため、この投稿では、エラーの対応方法には触れていない。

事前の注意

公式情報

docs.microsoft.com

Windows 10 1903以降の注意点

注意したいのは、Windows 10 1903以降から使い始めた場合だ。それはプリインストールされていた時の初期状態であることもあれば、OEMライセンスとして導入したタイミングが、そのバージョンだった場合もあるだろう。
何にせよ、この場合はMBR2GPTが必要とするファイルが不足している。1903以降のバージョンには、”ReAgent.dll”と関連ライブラリが含まれていないのだ。
該当する場合、公式情報末尾に掲載の「Known issue」に掲載されている手順を参照し、必要なファイルを入手すること。

回復ドライブ

GPTへの変換後、起動モードをBIOSモード (Legacyモード)からUEFIモードへ変更したにもかかわらず、PCが正常に起動しないリスクがある。正常に起動しない場合、回復ドライブで起動し「スタートアップ修復」を実行するか、マニュアル操作でブート領域を修復する対応が必要となる。
作業に先立ち、回復ドライブを作成しておくこと。

回復ドライブと、ブート時の障害対応に関する情報
docs.microsoft.com
docs.microsoft.com
impsbl.hatenablog.jp

MBT2GPT-検証

MBRからGPTへの変換が可能なのかを確認する。変換と同じく、コマンド”MBR2GPT”を用いる。注意したいのは、次の3点だ。

  • 管理者として実行すること
  • ログを出力するフォルダを作成しておくこと
  • 対象ドライブ中のパーティションが3つ以内であること。

単一のドライブでWindows 10を使用し、回復ドライブを作成済みの場合、そこには次のように4つの領域が作成されているはずだ。

f:id:espio999:20181229003251p:plain
未割当の領域はパーティションとして数えない。もし4つ以上のパーティションが存在する場合、MBR2GPTで変換することができない。MBR2GPTで変換する場合、作業を実施する前に、4つ目以降のパーティションを削除しておく必要がある。
MBRでは、最大4パーティションまで作成することができる。GPTへの変換に際し、EFI用のシステム領域のためにパーティションが一つ追加される。そのための余裕が必要なのだ。

ドライブに問題がなさそうならば、検証に着手する。次のコマンドを実行する。

mbr2gpt /validate /allowfullos /logs:"d:\user temp\20210629\m2glog"

実行結果-mbr2gpt /validate
f:id:espio999:20210629214307j:plain

オプション”/allowfullos”は、自作PCのように、Windows 10がプリインストールされていない環境で実行する場合に付与するオプションだ。プリインストールされていた環境では、このオプションを指定する必要はない。
私はログの出力先として、フォルダ”d:\user temp\20210629\m2glog”を指定した。このフォルダに次の4ファイルが出力される。

  • diagerr.xml
  • diagwrn.xml
  • setupact.log
  • setuperr.log

もしエラーがあれば、”setuperr.log”に情報が出力されるはずだ。私の場合、ファイルが出力されるのみで、何も記述はなかった。

なお、このコマンドでは、オプション”/disk:”でディスク番号を指定していない。未指定の場合、自動的にシステム・ディスクが対象となるからだ。もしディスク番号を特定し、指定番号に対して検証、変換を実施する場合、前述の公式情報に記載されている「Conversion example」を参照すること。

MBT2GPT-変換

変換可能であることが判明したら、次のコマンドを実行する。このコマンドを実行することによって、MBRがGPTへ変換される。

mbr2gpt /convert /allowfullos /logs:"d:\user temp\20210629\m2glog"

実行結果-mbr2gpt /convert
f:id:espio999:20210629214636j:plain

実行結果が示すように、私の環境では次の警告が表示されている。

MBR2GPT: Failed to update ReAgent.xml, please try to manually disable and enable WinRE.

同時に、diagerr、setuperrにもエラーが記録されている。どうやらWinRE(回復パーティション)の修復に失敗したようだ。とはいえ、変換はうまくいっているらしい。次の出力で締めくくられている。

MBR2GPT: Before the new system can boot properly you need to switch the firmware to boot to UEFI mode!

回復パーティションが破損したならば、Windowsを適切に復旧できないリスクがある。一方、ブート領域の修復だけならば、回復ドライブだけでも可能だ。ここではリスクを受容して、PCを再起動することにする。

忘れてはならないのは、再起動直後にUEFI画面を操作し、起動モードをUEFIモードへ変更しておくことだ。その操作方法はPCのモデルによって異なる。またモデルによっては、Legacy/UEFIモードの切り替えを自動認識で対応する場合もある。この場合、モードを切り替えるオプションは提供されていない。
何にせよ、使用しているモデルのマニュアルを、事前に確認することだ。

後始末

PCは無事に再起動した。変換後のディスクを確認すると、新しくEFI用のシステム領域が作成されているのが分かる。
f:id:espio999:20210629214828p:plain
MBR用のシステム領域のパーティションが残され、新たにドライブ・レターが割り当てられている。このパーティションは不要なので、削除して構わない。

変換時、回復パーティションの修復に失敗した旨のエラーが記録されていた。回復ドライブを再作成して、回復パーティションを作り直す必要があるだろう。