この記事の概要を簡単まとめ!
- Windowsは旧来からMBRを採用している
- Windows Vista以降に新形式のGPTが採用される
- 2TB以上のディスクはGPTのみ、MBRの場合は変換が必要
- しかしシステムとデータでやり方が異なるので1つずつ解説する
- システムはWindows標準、データはGPT fdiskを利用する
- うざいくらい出てくる有料のソフトウェアは全く必要ない
- Windows標準ができなければLinuxの力を借りるのが正解
PCでゲームが出来ることになったことで、高画質・高FPSでのプレイが容易になった反面で、1つのPCで扱うデータ量が大きく増えることになった。そのため、もはや1TBや2TBのHDDでは間に合わないので、それ以上のHDDをデータディスクとして導入する必要が出てきた。
しかしここで、ディスクのフォーマット形式が問題になる。従来のWindowsはMBRで管理していたが、これの制約として2.2TBまでしか容量を認識することができない。これを解決したのがレガシーBIOSに代わるUEFIと新形式のGPTだ。だが多くの人は習慣でMBRにしてしまっているであろう、使用するために変換が必要になる。そのやり方が面倒だったので、備忘録としてその過程をここに記した。
ひとっ飛びできる目次
Windows標準はやはり頼りない
2.2TB以上のディスク
従来形式のMBR
WindowsはPCの世界標準を決定した。したがってほとんどの人はWindowsを使用している。その際のハードディスクのフォーマット形式を意識している人は果たしてどれくらいいるのだろうか。特に意識していない場合、PC/AT互換機の時代から使用されているマスターブートレコード(Master Boot Record: MBR)でフォーマットしていることであろう。
MBRの構造は、1セクタの長さを512バイトとし、その中にブートストラップローダ、パーティションテーブル(最大4個で各16バイト)、ブートシグニチャ(マジックナンバー”0xAA55″が格納されている1)マジックナンバー”0xAA55″は固定であり、MBRが有効であることの署名として機能する。これがない場合、MBRは無効である。)が格納されている。このような構造になっているのは、PC起動後のBIOS(現在はレガシーBIOS)はセクタ長が512バイトで先頭1セクタのみのロードしか保証しないためである。ディスクはこれに合わせるために、MBRという規格になっているのである2)参照:マスターブートレコード – Wikipedia。
現在のPC事情を考慮すれば、レガシーBIOSを使用しているのは今もPC-98で動かさなければならないようなシステム程度であり、殆どが新規格であるUEFIに対応していることであろう。つまり、業務レベルで使用する以外には、もうレガシーBIOSを選ぶ理由がなくなっているのである。ラップトップの場合は画面構成が少し異なるが、それでもUEFIが使用可能になっていることは多く、OSも余程でなければ64bit版を使用するはずなので、UEFI以外はもう使っていないというのが現在の傾向である。
Windows Vista以降:GPTの登場
Windows Vistaという、Windowsの中ではあまり目立たなかった存在がある。このOSからディスクの形式にGUIDパーティションテーブル(GUID Partition Table: GPT)を扱うことができるようになった。ただしこの時期はまだデータディスクとしての利用のみ可能で、システムディスクをGPTにしても認識できず、起動することができなかったようである。
GPTはIntelの提唱するEFI標準の一部で、レガシーBIOSから使用されているMBRを置き換える意図がある。またこの関係で、レガシーBIOSからUEFI BIOSへの更新が進められるようになった。もっとも、レガシーBIOSよりもGUI形式で設定が可能な事、詳細な設定を行えることを考えれば、UEFIに更新されるのは当たり前の流れである。
GPTはEFIが持つ拡張機能を使ってブートローダによる起動を実行を実現しており、MBRのエントリがディスクの保護と互換性維持の目的で存在しているのに対して、GPTはパーティションテーブル・ヘッダーとしての役割を担っているとのことである。互換性のために従来のMBRも搭載しており、MBRを前提としたディスクユーティリティを利用した場合の事故の防止のためであるようだ。
GPTはパーティションテーブル・ヘッダーでは、ユーザが使用可能なディスクの範囲を定義し、これがWindowsでは最大128エントリ、サイズはそれぞれ128バイトと定義されている。また、GPTはCRC32チェックサムを持ち、不整合の場合はディスクへのアクセスが不可能になる。おそらくこの機能がWindows11を利用するための要件の1つである。なお、GPTで認識できる最大サイズは8ZiB3)一般に1GBは1000MBにように、基本的に容量は人間の読みやすいよう1000区切りになっている。しかしコンピュータは1B=8bitであるため、一般生活で使用するものとは別でコンピュータでの正確な値を示すものとして、1KB以降の値の単位に対してKiB, MiB, GiB, TiB, …, ZiBという単位が存在する。これらは1[103n]iB=1024[103n]B
の関係が必ず成り立つ。となっている4)参照:GUIDパーティションテーブル – Wikipedia。
フォーマット問題:GPTへの変更にはデータ削除が必要
現在のデスクトップの場合のディスク構成を考える。大抵の構成は、システムディスクをSSDで256GB~1TB、データディスクを1~2TBで構成していると思われる。その際、特に意識していなければ初期インストール時のディスクフォーマットを気にせずにインストールしていることが考えられる。BIOSモードをレガシーBIOSからUEFIに変更していないなどの場合、システムディスクはMBRのままインストールしていて、その流れでデータディスクもMBRでフォーマットしているということが多いであろう。
だがPCでゲームをすることが一般化した今、大量のデータを扱う機会が一般ユーザーでさえも当たり前になっている。その影響でデータディスクが1TBや2TBでは足りないという事態が発生し、ディスククローンによって拡張しようと考えるはずだ。しかしここで、Windows特有の融通が利かない問題が発生する。
従来形式であるMBRは、セクタサイズを512バイトに固定されている影響で最大2TiBのディスクしか認識することができない。つまり3TB以上のディスクを接続しても、フォーマットがMBRなら2TiB以降の部分は認識不可能ということである。したがって使いたければGPTに変更するしかないが、しかし問題はもう3つある。
- GPTへの変換は原則データ削除を伴うフォーマットが必要である。
- Windows標準機能の”mbr2gpt.exe”はシステムディスクしか対応していない。
- 一般的なクローンソフトではクローン先がGPTでも上書きする形でMBRクローンしてしまい、GPTクローンができない。
これらの問題のせいで、GPTへの移行が一筋縄ではいかない。私も4TBのHDDを導入したのでクローンしてGPTへ変更しようとした矢先にぶち当たったのである。しかし何とか、これらすべてを解決する方法を発見し、実行して問題なく解決できた。そこで、ここに備忘録としてその過程を記すことにした。
MBR卒業とGPT入門
MBRからGPTへ変更する際、システムディスクとデータディスクではその方法が大きく違う。そのためそれぞれに分けて解説を行う。なお、ここより先の内容は高度な知識を要求されるものであり、記載事項について実行し何らかの影響があったとしても、私は一切の責任を負いかねるものとする。
システムディスクをGPTにする
まずはシステムディスクをGPTにする。これについてはWindowsが無能なりにも標準機能として”mbr2gpt.exe“を用意してくれた。これを使用して特定のコマンドを入力することにより変換して、次回以降はGPTディスクとして運用できるようになる。これより手順を解説する。
下準備:エラー対応
しかしWindowsは馬鹿なので、Windows Updateのせいでmbr2gpt.exeのエラーを誘発することが多い。特にCannot find OS partition(s) for disk 0
というエラーが起きやすく、ブートセクタを自ら破壊する愚行を行っている。これの修復をまず行う必要がある。修正方法はUSBインストールディスクを作成し、そこから起動後コマンドプロンプトを呼び出して、次のコマンドを実行する。
1 2 3 4 5 6 7 8 9 10 11 |
X:\Sources>bootrec fixmbr X:\Sources>bootrec /rebuildbcd rem ここでインストールの認識が0の場合、次のコマンドを実行する。 rem 元々のBCDをバックアップする。 X:\Sources>bcdedit /export c:\bcdbackup rem BCDから読み取り専用、隠しファイル、システムファイルの属性を削除。 X:\Sources>attrib c:\boot\bcd -r -h -s rem 元々あるBCDを古いBCDとしてリネームする。 X:\Sources>ren c:\boot\bcd bcd.old rem この状態で再度BCDの再構築を行う。 X:\Sources>bootrec /rebuildbcd |
この方法で確実にWindowsのインストールが認識される。これでインストールをブート一覧に追加すれば修復完了であり、GPTへ変換する準備が整う。
変換実行
準備ができたら再起動し、Windowsを通常起動する。その後はcmdを管理者権限で起動し、次のコマンドを実行する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
rem 変換可能かどうかを確認する。 C:\Windows\System32>mbr2gpt /validate /disk:0 /allowFULLOS rem このときValidation completed successfully と表示されれば変換可能である。 rem コンバートを実行する。システムディスクは0に指定されるので、/disk:0を指定する。 C:\Windows\System32>mbr2gpt /convert /disk:0 /allowFULLOS MBR2GPT will now attempt to convert the default book disk. 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 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 Call WinReReapir to repair WinRE MBR2GPT: Failed to update ReAgent.xml, please try to manually disable and enable WinRE. MBR2GPT: Before the new system can boot properly you need to switch the firmware to boot to UEFI mode! C:\Windows\System32> |
このように表示されれば完了である。ここで、ReAgent.xmlについてのエラーが発生しているが、これは回復パーティションとの紐づけに使用されるものである。だが最近はUSBブートが容易になっているので、無くても問題ない。
なお、変換実行時にまれに”Cannot find room for the EFI system partition”というエラーが出るが、これは自動でEFI領域の100MB程度を確保できない場合に発生する。その場合はサードパーティのパーティション操作ソフトを使用して手動で容量を確保しなければならない。これについては方法は割愛する。
レガシーBIOSからUEFIへ変更する
最後に行うのがマザーボードのBIOSモードの変更である。これを忘れると起動できない。私が使用するのはH370 Pro4であり、起動時にF2でUEFIにアクセスできる。レガシーBIOSからUEFIへの変更はマザーボードのメーカーとその型番によって異なり、AsRockの場合はCSM(Compatibility Support Module)の切替がレガシーBIOSとUEFIの切替に相当する。また、セキュアブートの有効化にも関わる部分である。
GPTはEFIの拡張機能を利用しているので、レガシーBIOSからの起動は確定で不可能である。したがってシステムディスクをGPTにしたのであれば必ずUEFIにする必要があるということだ。この変更が完了すれば、今まで通り使用可能になる。また、セキュアブートも有効にしておくとWindows 11のアップデート要件を満たすことになり、Windows 10がいつサポート終了になっても対応できるようになる。ここまで行えば、システムディスクの変換は完了である。
データディスクをGPTにする
次にデータディスクをGPTにする。厄介なことにこれがシステムディスクよりも面倒で手がかかるものになっている。mbr2gpt.exeは何故かデータディスクに対しては変換を行ってくれず、MBRからGPTへのクローンはどうやってもMBRのクローンになってしまう。検索すればうざいくらいに有料ソフトウェアの情報しか出ない。だが解決策はLinuxにあった。
用意するもの
Linux系OSでは、パーティションテーブルの操作コマンドとしてfdiskがある。Linux系コマンドなので当然ながらLinuxでしか使用できないが、このコマンドをGPTディスクに対応させたものがgdiskとして存在する。さらにこのコマンドをWindowsで使用できるように調整したものがあり、SourceForgeにて配布中である。ZIP形式のこれの中から、64bit形式なのでgdisk64.exeを使用する。展開は任意の場所に行い、作業フォルダをそれが置かれている場所まで移動して実行するタイプとなる。
実行手順
実行対象はクローンしたHDDである。現在動作中のディスクに対して実行するよりも安全である。その上で、gdiskはディスクを番号で指定する必要があるため、まず実行対象のHDDの番号をdiskpartを使用して確認する。私の環境では2に指定されていた。その後は以下のコマンドを入力して進めていく。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
C:\gdisk-windows-1.0.9>gdisk64.exe 2: rem もしMBRと汚染GPTが存在すると言われた場合はGPTの番号を入力。 rem その後の対話には次のように答える。 Command (? for help): r Recovery/transformation command(? for help): f Warning! This will destroy the currently defined partitions! Proceed? (Y/N): y Recovery/transformation command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to \\.\physicaldrive2. Disk synchronization succeeded! The computer should now use the new partition table. The operation has completed successfully. C:\gdisk-windows-1.0.9> |
特に問題がなければ、その後の対象のディスクをディスクの管理やプロパティから確認すれば、GPTと認識されるはずである。これが確認できれば、全ての作業が完了となる。換装しても問題なく使えるであろう。これで解説は完了である。
Windows標準ができなければLinuxの力を借りるのが正解
MBRからGPTに変換したいと考えて検索する人は、その結果にうんざりしているのではないだろうか。というのも、「MBR GPT 変換」で検索した結果出てくるのが、有名なバックアップソフトウェアを販売しているところの記事ばかりで、Microsoft公式や個人で変換したという情報を全く得ることができない状況に陥るからである。もはやサジェスト汚染である。
だが私が実際に変換した結果から考えれば、自社製品を売りたいだけでまともな情報を書いてくれないゴミみたいなものより、Windows標準機能とLinuxのコマンドのWindows版を2つ使えば、簡単かつ完全無料でGPTに変換できるのである。操作は全てコマンドプロンプトで行うが、指示通りに行えば問題ないはずだ。
本当のところはWindowsが気を利かせて、Windows内で完結するように機能を提供すべきである。だが残念ながらmbr2gpt.exeの出来から考えるに、それは望めない話である。ならばとLinuxに目を向ければ、充実した機能とコマンドを提供してくれて、しかも一部は馬鹿なWindowsのために対応したコマンドを用意してくれている。やはり人類はLinuxに支えられているのだと感じた一面であった。
MBRからGPTに変換したいがどうしたらいいのかわからない、変換で困っている人がいたらこの記事を参考として投げつけてあげると喜ばれるはずだ。
以上、GPT変換備忘録:システムとデータでやり方が異なる件、であった。やり方とそのための道具と情報さえ揃っていれば、「詐欺」になんか遭わなくて済む。
KIBEKIN at 00:00 Aug. 20th, 2023
スポンサーリンク
脚注
本文へ1 | マジックナンバー”0xAA55″は固定であり、MBRが有効であることの署名として機能する。これがない場合、MBRは無効である。 |
---|---|
本文へ2 | 参照:マスターブートレコード – Wikipedia |
本文へ3 | 一般に1GBは1000MBにように、基本的に容量は人間の読みやすいよう1000区切りになっている。しかしコンピュータは1B=8bitであるため、一般生活で使用するものとは別でコンピュータでの正確な値を示すものとして、1KB以降の値の単位に対してKiB, MiB, GiB, TiB, …, ZiBという単位が存在する。これらは1[103n]iB=1024[103n]B の関係が必ず成り立つ。 |
本文へ4 | 参照:GUIDパーティションテーブル – Wikipedia |