【Windowsは面倒】GPT変換備忘録:システムとデータでやり方が異なる件 | Raven's Articles

【Windowsは面倒】GPT変換備忘録:システムとデータでやり方が異なる件

この記事にはPRとスポンサーリンクが含まれます!

この記事の概要を簡単まとめ!

  • 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つある。

  1. GPTへの変換は原則データ削除を伴うフォーマットが必要である。
  2. Windows標準機能の”mbr2gpt.exe”はシステムディスクしか対応していない
  3. 一般的なクローンソフトではクローン先が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インストールディスクを作成し、そこから起動後コマンドプロンプトを呼び出して、次のコマンドを実行する。

この方法で確実にWindowsのインストールが認識される。これでインストールをブート一覧に追加すれば修復完了であり、GPTへ変換する準備が整う。

変換実行

準備ができたら再起動し、Windowsを通常起動する。その後はcmdを管理者権限で起動し、次のコマンドを実行する。

このように表示されれば完了である。ここで、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の切替に相当する。また、セキュアブートの有効化にも関わる部分である。

H370 Pro4 CSM無効
H370 Pro4の場合のレガシーBIOSとUEFIの切替。この場合はCSMを無効にすることにより、UEFIモードとして機能するようになる。GPTになればこれはもう使うことはない。

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に指定されていた。その後は以下のコマンドを入力して進めていく。

データディスクへgdisk64.exeを実行
データディスク(HDD)に対してgdisk64.exeを実行している状態。元々がGPTでフォーマットされたディスクに対してクローンした結果汚染が起き、追加の選択肢としてMBR、GPT、空のGPTの選択肢が追加された。基本的に画像の通りに進めれば問題なく変換される。

特に問題がなければ、その後の対象のディスクをディスクの管理やプロパティから確認すれば、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
RA管理人
RA管理人。名前は時にない。かつてこのサイトを管理していた前任者はどこかへ消えてしまった。


コメントを残す

メールアドレスが公開されることはありません。
名前は必須項目となります。記入をお願いいたします。

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Ads Blocker Image Powered by Code Help Pro

広告ブロックを検知しました。 | Ad block detected.

ブラウザのアドオン、及びブラウザに内蔵されているアドブロック機能により、広告ブロックが行われていることが検知されました。
本ブログは広告収入により運営されており、広告ブロックは正当な理由の下で配信されている広告をも阻害することとなり、運営が非常に困難になります。
この表示は広告ブロック機能の無効化、あるいはホワイトリストへの追加を行った上で、更新を行うことで消すことができます。または、広告ブロック機能のないブラウザで閲覧ください。
広告で嫌な思いをしたことがあるとは思いますが、一律に広告をブロックすることで失われるコンテンツも存在します。そのことへのご理解とご協力をお願いします。

We have detected that ad-blocking is being performed by browser add-ons and the browser’s built-in ad-blocking function.
This blog is operated by advertising revenue, and ad blocking will interfere with advertisements that are also being served under legitimate reasons, making it very difficult to operate.
This display can be removed by disabling the ad-blocking function or adding it to the white list and then updating it. Alternatively, please view the site with a browser that does not have an ad-blocking function.
We understand that you may have had bad experiences with advertisements, but there are some contents that are lost by uniformly blocking advertisements. We ask for your understanding and cooperation in this matter.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock