- 技術 💻
MBRとGPTの違い|確認方法・2TBの壁・変換の注意を実機で
結論
MBR と GPT は「ディスクのどこに、どんなパーティションがあるか」を書き留める方式(パーティションテーブル)の名前です。MBR は 2TB までの 4 区画、BIOS 起動向け。GPT は 2TB 超・128 区画・予備の表つきで、UEFI 起動の Windows 11 や新しい PC はこちらです。迷ったら GPT、確認は Windows なら diskpart の list disk、Linux なら fdisk -l の Disklabel type です。
この記事でわかること
- MBR と GPT の違いの一覧と、2TB の壁・4 パーティション制限の根拠(バイト単位)
- Windows(ディスクの管理・diskpart・PowerShell)と Linux での確認方法
- ループデバイスで両方を実際に作り、壊し、変換した fdisk・gdisk・parted の原文
ディスクはそのままでは「大きな 1 枚の板」です。先頭に「どこからどこまでが C ドライブ、どこからが回復領域」という目次を書いて初めて OS が使えます。その目次の書き方が MBR と GPT の 2 通りで、PC のファームウェア(BIOS か UEFI か)とペアで決まります。
flowchart TD
F{PC のファームウェア} -->|BIOS<br>レガシ| M[MBR<br>先頭 512 バイトに目次<br>2TB・4 区画まで]
F -->|UEFI<br>Windows 11 の要件| G[GPT<br>先頭と末尾に目次<br>2TB 超・128 区画]
M --> W[Windows の起動には<br>BIOS + MBR]
G --> U[Windows の起動には<br>UEFI + GPT]
よく調べられることの答えを先にまとめます。
| 知りたいこと | 答え | 詳しい節 |
|---|---|---|
| MBR と GPT の違い | 容量 2TB/2TB 超、区画 4/128、予備の表なし/あり、BIOS/UEFI | MBR と GPT の違い(一覧表) |
| MBR GPT どっち | 新しく初期化するなら GPT。BIOS でしか起動できない PC だけ MBR | どちらを選ぶか(判断表) |
| GPT の確認方法(Windows) | diskpart の list disk、ディスクの管理の「パーティションのスタイル」、Get-Disk |
Windows で MBR か GPT か確認する方法 |
| GPT の確認方法(Linux) | fdisk -l の Disklabel type(dos か gpt) |
Linux で MBR か GPT か確認する方法 |
| 2TB の壁とは | MBR は開始位置と長さが 32 ビット × 512 バイト = 2TiB | 2TB の壁と 4 パーティションの根拠 |
| Windows 11 は GPT が必要か | 要件は「UEFI、セキュアブート対応」。UEFI で起動するディスクは GPT | UEFI・BIOS との関係 |
| MBR から GPT に変換 | Windows は mbr2gpt(条件あり)か、消してから convert gpt。Linux は gdisk |
MBR から GPT への変換 |
| 変換で消える? | ディスクの管理・diskpart・Initialize-Disk は消してから。mbr2gpt と gdisk は保持 | 変換時にやってはいけないこと |
確認環境:Ubuntu 24.04.5 LTS の上で、イメージファイル(1GiB・64MiB・3TiB のスパースファイル)をループデバイス(/dev/loop0〜3)に割り当て、fdisk 2.39.3(util-linux)・gdisk/sgdisk 1.0.10・parted 3.6・lsblk・blkid・wipefs で MBR と GPT の作成・読み取り・破壊・修復・相互変換を行いました。ディスクの中身は od でバイト単位に確かめ、ファイルシステムは ext4 を作ってマウントし、変換の前後で同じファイルが読めることを確かめています。ホストの物理ディスクには触れていません。Windows の diskpart・ディスクの管理・PowerShell・mbr2gpt・Windows 11 の要件・GPT の FAQ は Microsoft Learn、GPT の構造は UEFI 仕様 2.10 第 5 章で確かめました。図は mermaid で描画を確かめています(確認日 2026年10月29日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「MBRとGPTの違い|確認方法・2TBの壁・変換の注意を実機で」
MBRとGPTの違い(一覧表)
この節では、MBR と GPT が何を指し、どこがどう違うのかが一覧で分かります。
MBR(Master Boot Record)はディスクの先頭 512 バイトにパーティションの目次を置く方式、GPT(GUID Partition Table)は UEFI の仕様で決められた、先頭と末尾の両方に目次を置く方式です。 どちらも「パーティションテーブル(パーティションスタイル)」と呼ばれ、ファイルシステム(NTFS・ext4)とは別の層の話です。
| MBR | GPT | |
|---|---|---|
| 正式名 | Master Boot Record(fdisk では dos) | GUID Partition Table |
| 扱える大きさ | 2TiB(2^32 セクター × 512 バイト ≒ 2.2TB) | 2^64 セクター(Windows は 18EB、ファイルシステムは 256TB) |
| パーティション数 | 基本 4 つ(3 つ + 拡張の中に論理) | 既定 128 個(仕様上はほぼ無制限) |
| 目次の置き場所 | 先頭 1 セクターだけ | 先頭(LBA 1〜33)と末尾に同じものを 2 組 |
| 壊れたときの検出 | 無い(末尾 55 AA の印だけ) | CRC32 で検出し、予備から直せる |
| 区画の識別 | 1 バイトの種類 ID(83・07 など) | 種類 GUID + 固有 GUID + 36 文字の名前 |
| 起動との関係 | BIOS(レガシ)起動 | UEFI 起動。Windows 11 の要件は UEFI |
| Windows での表記 | パーティションのスタイル:MBR | パーティションのスタイル:GPT(GUID パーティション テーブル) |
MBR が向くとき
BIOS でしか起動できない PC で起動ディスクにする
以前の機器(レコーダー・カーナビなど)が MBR しか読めない USB メモリー
2TB 以下で、区画が 4 つ以内
GPT が向くとき
UEFI で起動する PC(Windows 11 はこれ)
2TB を超えるディスク・5 つ以上の区画
目次の破損に備えたい(予備の表と CRC)
MBRとは(構造と、fdiskで作った実物)
この節では、MBR の中身がバイト単位でどうなっているか、4 つを超えるとどうなるかが分かります。
MBR はディスクの先頭 512 バイト(セクター 0)そのものです。 先頭 446 バイトが起動コード、続く 64 バイトが 16 バイト × 4 のパーティションの目次、最後の 2 バイトが「55 AA」という印です。目次が 4 つ分しか無いので、基本(プライマリ)パーティションは 4 つまでです。
1GiB のイメージに fdisk で 100MiB の基本パーティションを 4 つ作り、5 つ目を作ろうとした原文です。
$ fdisk /dev/loop0
Device does not contain a recognized partition table.
Created a new DOS (MBR) disklabel with disk identifier 0x6bb06b2b.
Command (m for help): n
Partition type
p primary (3 primary, 0 extended, 1 free)
e extended (container for logical partitions)
Created a new partition 4 of type 'Linux' and of size 100 MiB.
Command (m for help): n
To create more partitions, first replace a primary with an extended partition.
書き込んだあと、セクター 0 の 440 バイト目からを od で見たものです。16 バイトの目次が 4 行並び、最後に 55 AA があります。
$ od -A d -t x1 -j 440 -N 72 /dev/loop0
0000440 2b 6b b0 6b 00 00 00 20 21 00 83 df 13 0c 00 08
0000456 00 00 00 20 03 00 00 df 14 0c 83 9f 06 19 00 28
0000472 03 00 00 20 03 00 00 9f 07 19 83 5e 38 26 00 48
0000488 06 00 00 20 03 00 00 5e 39 26 83 1e 2b 33 00 68
0000504 09 00 00 20 03 00 55 aa
| 位置(バイト) | 中身 | 上の原文で |
|---|---|---|
| 440〜443 | ディスク識別子(4 バイト) | 2b 6b b0 6b → fdisk の 0x6bb06b2b |
| 446〜461 | 1 つ目の目次(16 バイト) | 種類 83(Linux)、開始 00 08 00 00 = 2048 セクター、長さ 00 20 03 00 = 204800 セクター |
| 462〜509 | 2〜4 つ目の目次 | 同じ形が 3 つ |
| 510〜511 | ブートシグネチャ | 55 aa |
開始位置も長さも 4 バイト(32 ビット)です。これが次の節の「2TB の壁」の正体です。
5 つ以上にしたいとき:拡張パーティションと論理パーティション
4 つ目を「拡張(Extended、種類 05)」という入れ物にして、その中に論理パーティション(5 番以降)を作ります。3 つの基本 + 拡張 + 論理 3 つを作った結果です。
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 2048 206847 204800 100M 83 Linux
/dev/loop0p2 206848 411647 204800 100M 83 Linux
/dev/loop0p3 411648 616447 204800 100M 83 Linux
/dev/loop0p4 616448 2097151 1480704 723M 5 Extended
/dev/loop0p5 618496 823295 204800 100M 83 Linux
/dev/loop0p6 825344 1030143 204800 100M 83 Linux
/dev/loop0p7 1032192 1236991 204800 100M 83 Linux
lsblk で見ると、拡張パーティション p4 の大きさは 512B と出ます。入れ物そのものは目次の連鎖(EBR)でしかなく、データを置く場所ではないためです。Windows では「拡張パーティション」の中の「論理ドライブ」として見えます。
GPTとは(構造と、gdiskで作った実物)
この節では、GPT の中身と、128 個・GUID・予備の表がどう置かれているかが分かります。
GPT は UEFI 仕様の第 5 章で決められた方式で、セクター 0 に「保護 MBR」、セクター 1(LBA 1)にヘッダー、LBA 2〜33 に 128 バイト × 128 個の目次を置き、同じヘッダーと目次をディスクの末尾にも置きます。 仕様は「目次の領域に最低 16,384 バイトを確保する」「LBA は 32 ビットではなく 64 ビット」「各パーティションは 36 文字の人が読める名前を持つ」と定めています。
gdisk で UEFI 向けの構成(EFI システム・Microsoft 予約・データ・Linux・スワップ)を 6 つ作った結果です。128 個まで作れることと、先頭の使える位置が 34 セクター目からであることが出ています。
$ gdisk /dev/loop1
Command (? for help): n
Partition number (1-128, default 1):
Hex code or GUID (L to show codes, Enter = 8300): ef00
Changed type of partition to 'EFI system partition'
...
Command (? for help): p
Disk /dev/loop1: 2097152 sectors, 1024.0 MiB
Disk identifier (GUID): 416BD8D5-0198-41FF-B12D-CAC7D60591D3
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 2097118
Number Start (sector) End (sector) Size Code Name
1 2048 206847 100.0 MiB EF00 EFI system partition
2 206848 239615 16.0 MiB 0C01 Microsoft reserved
3 239616 444415 100.0 MiB 0700 Data
4 444416 649215 100.0 MiB 8300 Linux filesystem
5 649216 854015 100.0 MiB 8300 Linux filesystem
6 854016 1058815 100.0 MiB 8200 Linux swap
同じディスクをバイト単位で見ると、セクター 0 には種類 ee の目次が 1 つだけあり(保護 MBR)、セクター 1 と最後のセクターの先頭に「EFI PART」の文字があります。
$ od -A d -t x1 -j 446 -N 16 /dev/loop1 # 保護 MBR の目次 1 つ目
0000446 00 00 02 00 ee 8a 08 82 01 00 00 00 ff ff 1f 00
$ od -A d -t x1z -j 512 -N 16 /dev/loop1 # LBA 1 = GPT ヘッダー
0000512 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 >EFI PART....\...<
$ od -A d -t x1z -j $((2097151*512)) -N 16 /dev/loop1 # 最後のセクター = 予備のヘッダー
1073741312 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 >EFI PART....\...<
1保護 MBR(Protective MBR)
GPT を知らない以前のツールに「このディスクは種類 EE の区画で全部埋まっている」と見せ、空きと誤解して上書きされるのを防ぐ。Microsoft の FAQ も「すべての GPT ディスクは保護 MBR を含む」としている。
2ヘッダー(LBA 1 と末尾)
「EFI PART」の署名、自分の CRC32、目次の CRC32、使える範囲(First usable 34〜)、ディスクの GUID を持つ。末尾に同じものがある。
3目次(LBA 2〜33)
128 バイト × 128 個 = 16KiB。各行は種類 GUID・固有 GUID・開始/終了 LBA(64 ビット)・属性・名前(UTF-16 で 36 文字)。
sfdisk で目次を書き出すと、種類 GUID と名前が見えます。Windows の EFI システムパーティション・Microsoft 予約(MSR)・基本データの GUID は、Microsoft の FAQ にある値と一致しました。
$ sfdisk -d /dev/loop1
label: gpt
label-id: 416BD8D5-0198-41FF-B12D-CAC7D60591D3
first-lba: 34
last-lba: 2097118
/dev/loop1p1 : start=2048, size=204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=5D8C7AC2-..., name="EFI system partition"
/dev/loop1p2 : start=206848, size=32768, type=E3C9E316-0B5C-4DB8-817D-F92DF00215AE, uuid=11BA92B1-..., name="Microsoft reserved"
/dev/loop1p3 : start=239616, size=204800, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=984430C0-..., name="Data"
/dev/loop1p4 : start=444416, size=204800, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=D7E51897-..., name="Linux filesystem"
| 区画の種類 | MBR の ID | GPT の種類 GUID(gdisk のコード) |
|---|---|---|
| EFI システム(ESP) | EF | C12A7328-F81F-11D2-BA4B-00A0C93EC93B(EF00) |
| Microsoft 予約(MSR) | — | E3C9E316-0B5C-4DB8-817D-F92DF00215AE(0C01) |
| Windows の基本データ(NTFS・FAT) | 07・0C・06 | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(0700) |
| Linux ファイルシステム | 83 | 0FC63DAF-8483-4772-8E79-3D69D8477DE4(8300) |
| Linux スワップ | 82 | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F(8200) |
| 拡張パーティション | 05・0F | 無い(128 個あるので不要) |
| 保護 MBR | EE | — |
Microsoft の FAQ によると、UEFI で起動する Windows の起動ディスクには ESP・MSR・OS の入った基本データパーティションが要り、MSR はディスクを最初に区切るときに作られます(16GB 以上のディスクで 128MB)。ディスクの管理で見える「EFI システムパーティション」「回復パーティション」はこの決まりの表れです。
2TBの壁と4パーティション制限の根拠(3TBのディスクで試した)
この節では、MBR の 2TB の壁がどこから来るのかと、3TB のディスクで実際に何が起きるかが分かります。
MBR の目次は「開始セクター」と「セクター数」がそれぞれ 32 ビットなので、最大 2^32 = 4,294,967,296 セクター。1 セクター 512 バイトなら 2,199,023,255,552 バイト = 2TiB(約 2.2TB)が、1 つの区画で表せる上限です。 4 パーティションは、64 バイトの目次が 16 バイト × 4 しか無いためです。
3TiB のスパースイメージに fdisk で MBR を作ろうとした原文です。fdisk は作る前に警告し、区画の終わりは 2TiB で止まりました。
$ fdisk /dev/loop2
The size of this disk is 3 TiB (3298534883328 bytes). DOS partition table format
cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte
sectors. Use GUID partition table format (GPT).
Command (m for help): n
First sector (2048-4294967295, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-4294967295, default 4294967295):
Created a new partition 1 of type 'Linux' and of size 2 TiB.
Device Boot Start End Sectors Size Id Type
/dev/loop2p1 2048 4294967295 4294965248 2T 83 Linux
parted で全体を 1 区画にしようとすると、こちらはエラーで止まります。
$ parted -s /dev/loop2 mklabel msdos mkpart primary 1MiB 100%
Error: partition length of 6442448896 sectors exceeds the msdos-partition-table-imposed maximum of 4294967295
同じ 3TiB を GPT にすると、1 区画で全部使えました。
$ parted -s /dev/loop2 mklabel gpt mkpart primary ext4 1MiB 100% print
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 3299GB 3299GB ext4 primary
- 「2TB」は 10 進の 2,000,000,000,000 バイトではなく 2TiB = 2,199,023,255,552 バイトです。 市販の「2TB」と書かれた HDD(約 2,000GB)は MBR に収まり、「3TB」「4TB」は収まりません。
- セクターが 4096 バイトの「4Kn」ディスクでは 2^32 × 4096 = 16TiB まで MBR で表せます。ただし Windows の起動や互換性は別の話なので、新しく初期化するなら GPT にします。
- Linux では、開始位置が 2^32 未満なら 2 つ目の区画を 2TiB の先に置くことが技術的にはできます(parted と Linux カーネルは読めました)。Windows は MBR を 2TB 以下のディスク向けとしており、互換性の面で勧められません。
UEFI・BIOSとの関係(Windows 11はGPTが必要か)
この節では、MBR/GPT と BIOS/UEFI の組み合わせと、Windows 11 の要件が分かります。
Windows は「BIOS 起動なら MBR、UEFI 起動なら GPT」の組み合わせだけで起動します。 Microsoft の「Windows and GPT FAQ」は「UEFI に対応するシステムでは起動パーティションは GPT ディスクに無ければならない。ほかのディスクは MBR でも GPT でもよい」「Windows は MBR ディスクからの UEFI 起動(0xEF 区画)に対応しない」としています。
| ファームウェア | 起動ディスク | データ用ディスク |
|---|---|---|
| BIOS(レガシ・CSM) | MBR だけ | MBR・GPT どちらでも(OS が GPT を読めれば) |
| UEFI | GPT だけ(Windows の場合) | MBR・GPT どちらでも |
- Windows 11 の最小要件は「システム ファームウェア:UEFI、セキュアブート対応」「TPM 2.0」です(Microsoft Learn)。 UEFI で起動する以上、起動ディスクは GPT になります。Windows 10 を BIOS + MBR で使っていた PC が Windows 11 の「このPCは要件を満たしていません」になる理由の 1 つです。
- Microsoft の FAQ によると、Windows Vista/Server 2008 以降はすべてデータ用として GPT を読み書きでき、起動は UEFI の 64 ビット版だけです。32 ビットの Windows XP は保護 MBR しか見えず、GPT のディスクを使えません。
- Hyper-V の第 2 世代仮想マシンは UEFI で起動するため、ディスクは GPT です。関連記事「Hyper-Vとは|有効化・仮想マシン作成・仮想スイッチ・エラー対処」で扱っています。
今の PC が UEFI か BIOS かを見る
Windows では「システム情報(msinfo32)」に UEFI か Legacy かを示す項目(BIOS モード)があります(Microsoft のブログ)。Windows PE やセットアップ中は、Microsoft Learn の手順どおりレジストリで分かります。
reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType
0x1 = BIOS 0x2 = UEFI
Linux では /sys/firmware/efi があれば UEFI 起動です。この記事を書いた仮想マシンは BIOS 起動で、フォルダーがありませんでした。
$ ls -d /sys/firmware/efi
ls: cannot access '/sys/firmware/efi': No such file or directory
WindowsでMBRかGPTか確認する方法(diskpart・ディスクの管理・PowerShell)
この節では、Windows 10/11 で手元のディスクが MBR か GPT かを 3 通りで確かめる手順が分かります。いずれも Microsoft Learn の記述で確かめた範囲です。
ディスクの管理で見る
スタートで diskmgmt.msc と入力して Enter。下の一覧で「ディスク 0」のような欄を右クリック →「プロパティ」→「ボリューム」タブの「パーティションのスタイル」に「マスター ブート レコード (MBR)」か「GUID パーティション テーブル (GPT)」と出ます。
diskpart の list disk
管理者としてコマンドプロンプトを開き diskpart → list disk。Microsoft の説明では、この一覧に「ディスクが MBR か GPT か」が出ます。表の右端の「Gpt」列に * が付いたディスクが GPT、空欄が MBR です。見終わったら exit。
PowerShell の Get-Disk
管理者として PowerShell を開き Get-Disk。「Partition Style」列に MBR か GPT が出ます(Microsoft の変換手順でも、変換の確認にこの列を使っています)。
Get-Disk | Select-Object Number, FriendlyName, Size, PartitionStyle
diskpart は select disk → clean と続けると全部消えます。確認だけなら list disk で止め、select や clean を打たないようにします。PowerShell の書き方は関連記事「PowerShellコマンド一覧|用途別50選とbash対応表・実行例付き」で扱っています。
LinuxでMBRかGPTか確認する方法(fdisk・gdisk・parted・lsblk)
この節では、Linux で 5 つのコマンドがそれぞれ MBR/GPT をどう表示するかが、同じディスクで比べられます。
いちばん手軽なのは fdisk -l の「Disklabel type」で、dos なら MBR、gpt なら GPT です。 同じ MBR のディスク(loop0)と GPT のディスク(loop1)で、各コマンドの出力を並べました。
| コマンド | MBR のとき | GPT のとき |
|---|---|---|
fdisk -l /dev/sdX |
Disklabel type: dos・識別子 0x6bb06b2b |
Disklabel type: gpt・識別子が GUID |
gdisk -l /dev/sdX |
MBR: MBR only GPT: not present |
MBR: protective GPT: present |
parted /dev/sdX print |
Partition Table: msdos |
Partition Table: gpt |
blkid -p /dev/sdX |
PTTYPE="dos" |
PTTYPE="gpt" |
lsblk -o NAME,SIZE,PTTYPE |
dos |
gpt |
sfdisk -d /dev/sdX |
label: dos |
label: gpt・first-lba: 34 |
$ fdisk -l /dev/loop1
Disk /dev/loop1: 1 GiB, 1073741824 bytes, 2097152 sectors
Sector size (logical/physical): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 416BD8D5-0198-41FF-B12D-CAC7D60591D3
Device Start End Sectors Size Type
/dev/loop1p1 2048 206847 204800 100M EFI System
/dev/loop1p2 206848 239615 32768 16M Microsoft reserved
/dev/loop1p3 239616 444415 204800 100M Microsoft basic data
$ gdisk -l /dev/loop0 # MBR のディスク
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
$ parted -s /dev/loop1 unit MiB print
Partition Table: gpt
Number Start End Size File system Name Flags
1 1.00MiB 101MiB 100MiB EFI system partition boot, esp
2 101MiB 117MiB 16.0MiB Microsoft reserved msftres
3 117MiB 217MiB 100MiB Data msftdata
- lsblk の PTTYPE 列は udev の情報を使うため、udev が動いていないコンテナーや chroot では空欄になります。この環境でもそうなったので、
blkid -p(直接読む)で確かめました。 - gdisk で MBR のディスクを開くと「converting MBR to GPT format in memory」と出ますが、
wを打たない限り書き込まれません。見るだけなら-lを付けます。 - fdisk で GPT のディスクを
-t dosで開くと、保護 MBR の「種類 ee・サイズ 1024M」の 1 区画だけが見えます。GPT を知らないツールの見え方そのものです。
df・du でのディスクの使用量の見方は関連記事「Linuxメモリ・ディスク確認|free・df・du・vmstat・iostat見方」で扱っています。
壊れたときの違い(予備の表で直せるのはGPTだけ)
この節では、目次が壊れたときに MBR と GPT で何が起きるかを、実際に壊して確かめた結果で分かります。
GPT は末尾に同じ目次を持ち、CRC32 で壊れを検出するので、先頭が壊れても予備から戻せます。MBR には予備がありません。 GPT のディスクの LBA 1(ヘッダー)を 0 で潰したときの各ツールの反応です。
$ dd if=/dev/zero of=/dev/loop1 bs=512 seek=1 count=1 conv=notrunc
$ fdisk -l /dev/loop1
The primary GPT table is corrupt, but the backup appears OK, so that will be used.
Disklabel type: gpt
/dev/loop1p1 2048 206847 204800 100M EFI System
...(6 区画とも見える)
$ gdisk -l /dev/loop1
Caution: invalid main GPT header, but valid backup; regenerating main header
from backup!
Warning: Invalid CRC on main header data; loaded backup partition table.
Warning! One or more CRCs don't match. You should repair the disk!
Main header: ERROR
Backup header: OK
Main partition table: OK
Backup partition table: OK
$ parted -s /dev/loop1 print
Error: /dev/loop1: unrecognised disk label
gdisk の回復メニューで予備を書き戻すと直りました。
$ gdisk /dev/loop1
Command (? for help): r # recovery and transformation
Recovery/transformation command (? for help): b # use backup GPT header
Recovery/transformation command (? for help): w
Do you want to proceed? (Y/N): Y
The operation has completed successfully.
$ gdisk -l /dev/loop1
Found valid GPT with protective MBR; using GPT.
一方、MBR のディスクで目次の 64 バイトを 0 にすると、fdisk はパーティションを 1 つも表示しなくなり、戻す手がかりはディスク上にありません。sfdisk -d で先に書き出しておいた目次を sfdisk /dev/loop0 < mbr-table.txt で戻せたので、MBR のディスクはこの 1 行を習慣にします。
- 1目次を文字で控えるMBR・GPT とも
sfdisk -d /dev/sdX > table.txt。GPT はsgdisk -b table.bin /dev/sdXでもよい - 2警告の文言で原因を分ける「primary GPT table is corrupt, but the backup appears OK」は先頭だけの破損。「GPT PMBR size mismatch」はディスクが大きくなった
- 3直す前に読み取り専用で見る
gdisk -l・fdisk -l・sgdisk -vは書き込まない - 4セクター単位のコピーで GPT を複製しないMicrosoft の FAQ:ディスクと区画の GUID が重複する。ESP や基本データ区画の中身のコピーは可
バックアップの考え方そのものは関連記事「バックアップ設計の書き方|RPO・RTOの決め方と世代管理の計算例」で扱っています。
MBRからGPTへの変換(Windowsのmbr2gptの条件)
この節では、Windows で MBR のシステムディスクを GPT に変える mbr2gpt の条件・手順・戻り値が、Microsoft Learn の記述に沿って分かります。
mbr2gpt は、Windows 10/11 のシステムディスクをデータを保持したまま MBR から GPT に変える Microsoft 純正のツールです。 ただし条件が厳しく、変換後はファームウェアを UEFI 起動に切り替えないと起動しません。Microsoft Learn の内容をまとめます。
- 1PC が UEFI 起動に対応しているか確かめる変換後は GPT モードでしか起動できない。対応していなければ変換しない
- 2バックアップを取り、BitLocker は一時停止する暗号化されたボリュームがあると戻り値 6 で失敗。保護を中断していれば変換できる
- 3
mbr2gpt /validate /disk:0 /allowFullOS検証だけ。既定は Windows PE 向けで、通常の Windows から動かすには /allowFullOS が要る - 4
mbr2gpt /convert /disk:0 /allowFullOS「These changes cannot be undone!」と出る。元に戻せない - 5ファームウェアの設定を UEFI 起動に変えて再起動変えないと起動しない。セキュアブートも有効にできるようになる
| mbr2gpt の検証項目(Microsoft Learn) | 満たさないとき |
|---|---|
| ディスクが MBR である・システムディスクである | データ用ディスクは対象外。ディスクの管理などで消してから初期化する |
| 基本パーティションが 3 つ以下 | 4 つあると失敗(戻り値 7)。GPT の ESP を作る余地が要る |
| 拡張・論理パーティションが無い | 先に消すか、バックアップして作り直す |
| 先頭に 16KB + 2 セクター、末尾に 16KB + 1 セクターの空き | 予備の GPT を置く場所。末尾いっぱいまで区画があると失敗 |
| アクティブなシステムパーティションが 1 つ・BCD に既定の OS がある | 起動構成が壊れていると失敗 |
公式ページにある出力例です。
X:\> mbr2gpt.exe /validate /disk:0
MBR2GPT: Attempting to validate disk 0
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512
MBR2GPT: Validation completed successfully
X:\> mbr2gpt /convert /disk:0
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!
戻り値は 0 が成功、1 が取り消し、6 が暗号化されたボリュームあり、7 がディスクの配置が要件を満たさない、100 が「変換はできたが BCD の一部を戻せなかった」です。ログは %windir% の setupact.log・setuperr.log に残ります。
データ用ディスクを Windows で変換する
Microsoft Learn の手順は「ディスクの管理」「diskpart」「PowerShell」の 3 通りで、いずれも先にボリュームを全部消してから変換します。
diskpart
DISKPART> list disk
DISKPART> select disk 2 ← 番号を間違えない
DISKPART> clean ← この時点でデータは消える
DISKPART> convert gpt
Get-Disk
Clear-Disk -Number 2 -RemoveData -Confirm:$false # データが消える
Initialize-Disk -Number 2 -PartitionStyle GPT
Get-Disk # Partition Style 列で確認
ディスクの管理では、ボリュームをすべて「ボリュームの削除」で消したあと、ディスクを右クリックして「GPT ディスクに変換」です。消していないとこの項目は選べません。
LinuxでのMBR・GPT変換(gdisk/sgdiskでデータを保持)
この節では、Linux の gdisk・sgdisk でデータを保ったまま MBR と GPT を相互に変換した結果と、失敗する条件が分かります。
gdisk は MBR のディスクを開いた時点でメモリ上に GPT を作り、w で書き込むと変換されます。 区画の位置は変えないので、中のファイルシステムはそのまま使えます。MBR の 1 つ目の区画に ext4 を作ってファイルを置き、GPT に変換してから読めるかを確かめました。
$ mkfs.ext4 -q /dev/loop0p1 && mount /dev/loop0p1 /mnt && echo "hello mbr" > /mnt/hello.txt && umount /mnt
$ sfdisk -d /dev/loop0 > mbr-table.txt # 戻せるように目次を控える
$ sgdisk -g /dev/loop0 # MBR → GPT(sgdisk は gdisk の非対話版)
Found invalid GPT and valid MBR; converting MBR to GPT format in memory.
The operation has completed successfully.
$ blkid -p -o value -s PTTYPE /dev/loop0
gpt
$ mount /dev/loop0p1 /mnt && cat /mnt/hello.txt
hello mbr
GPT から MBR へ戻すのは、gdisk の回復メニューの g(GPT を MBR に変換)です。どの区画を基本にするか・論理にするかを確かめて書き込みます。
$ gdisk /dev/loop0
Command (? for help): r
Recovery/transformation command (? for help): g
MBR command (? for help): p
Number Boot Start Sector End Sector Status Logical Primary Code
1 2048 206847 primary Y Y 0x83
2 206848 411647 primary Y 0x83
3 411648 616447 primary Y 0x83
4 616448 821247 primary Y 0x83
MBR command (? for help): w
Converted 4 partitions. Finalize and exit? (Y/N): Y
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
$ mount /dev/loop0p1 /mnt && cat /mnt/hello.txt
hello mbr
失敗する条件:末尾に予備の GPT を置く場所が無い
MBR の区画がディスクの最後のセクターまで使っていると、予備の GPT(33 セクター)と重なるため、sgdisk は書き込みを止めます。mbr2gpt が「末尾に 16KB + 1 セクター」を求めるのと同じ理由です。
$ fdisk -l /dev/loop3 | tail -1
/dev/loop3p1 2048 131071 129024 63M 83 Linux ← 最後のセクター 131071 まで
$ sgdisk -g /dev/loop3
Warning! Secondary partition table overlaps the last partition by
33 blocks!
You will need to delete this partition or resize it in another utility.
Aborting write of new partition table.
$ echo $?
4
拡張パーティションの中に論理パーティション(5〜7 番)がある MBR を変換したときは、入れ物の 4 番が消え、5〜7 番がそのまま GPT の 5〜7 番になりました。番号が飛ぶだけで中身は変わりません。
変換時にやってはいけないこと(代わりにどうするか)
この節では、MBR/GPT の変換で取り返しがつかなくなる操作と、その代わりに何をするかが分かります。
起動ディスクを「ディスクの管理」や diskpart の clean で変換する
Microsoft Learn:変換できるのは区画もボリュームも無いディスクだけ
UEFI に対応しているか確かめずに mbr2gpt を実行する
「These changes cannot be undone!」
diskpart で select disk の番号を確かめずに clean
list disk だけなら何も変わらない
区画を末尾いっぱいまで使ったまま Linux で変換する
sfdisk -d で目次を控える予備の GPT は末尾 33 セクター(16.5KiB)
GPT のディスクを dd でセクターごと複製して 2 台つなぐ
sgdisk -G で GUID を振り直すWindows は重複を見つけると新しい GUID を振る
どちらを選ぶか(判断表)
この節では、新しいディスクやインストールで MBR と GPT のどちらにするかを、状況別に決められます。
| 状況 | 選ぶ | 理由 |
|---|---|---|
| Windows 11 を入れる・UEFI の PC | GPT | 要件が UEFI。UEFI 起動のディスクは GPT |
| 3TB 以上の HDD・SSD | GPT | MBR は 2TiB の先を表せない |
| 区画を 5 つ以上作る | GPT | MBR は拡張パーティションが要る。GPT は 128 個 |
| 外付け SSD・USB メモリー(新しい機器だけで使う) | GPT | Windows・macOS・Linux とも読める。予備の表がある |
| USB メモリー・メモリーカードを以前の機器(テレビ・カーナビ・BIOS 起動の PC)で使う | MBR | GPT を読めない機器がある。Microsoft も MBR を「32 ビットの PC・以前の PC・メモリーカードなどのリムーバブル」向けとしている |
| BIOS でしか起動できない PC に OS を入れる | MBR | Windows は BIOS 起動に MBR が要る |
| クラウドの仮想マシンのデータディスク | GPT | 2TB 超に広げられる。各社の手順も GPT が前提のものが多い |
| Linux の起動ディスク(UEFI) | GPT | ESP が要る。BIOS 起動でも GPT + BIOS boot partition で起動できる |
Windows で初期化
ディスクの管理で新しいディスクを右クリック →「ディスクの初期化」→ パーティションスタイルを選ぶ。既定は GPT(Microsoft Learn)。PowerShell は Initialize-Disk -Number N -PartitionStyle GPT。
一度初期化すると Clear-Disk しないと変えられない
Linux で GPT にする
parted -s /dev/sdX mklabel gpt か、fdisk の g、gdisk の o。
mklabel は目次を消す
Linux で MBR にする
parted -s /dev/sdX mklabel msdos か、fdisk の o。
fdisk は 2TiB 超で警告
目次を控える
sfdisk -d /dev/sdX > table.txt。戻すのは sfdisk /dev/sdX < table.txt。
MBR・GPT 両対応
SSD を新しく入れたときの寿命や容量の考え方は関連記事「SSDの寿命は何年?TBWの計算式と確認方法・前兆と長持ちのコツ」で扱っています。
よくあるエラー・つまずき(原文つき)
この節では、MBR/GPT まわりで出る文言と、それぞれの意味と対処が分かります。手元で出たものは原文、Windows のものは Microsoft Learn の記述です。
| 文言 | 意味 | 対処 |
|---|---|---|
DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes(fdisk) |
2TiB 超のディスクに MBR を作ろうとした | fdisk の g か parted の mklabel gpt で GPT にする |
To create more partitions, first replace a primary with an extended partition.(fdisk) |
MBR で基本パーティションが 4 つ埋まった | 4 つ目を拡張にして論理を作るか、GPT にする |
The primary GPT table is corrupt, but the backup appears OK(fdisk) |
先頭の GPT だけ壊れている | gdisk の r → b → w で予備から戻す |
GPT PMBR size mismatch (2097151 != 4194303) will be corrected by write./The backup GPT table is not on the end of the device.(fdisk) |
仮想ディスクを大きくしたあと、予備の GPT が途中に残っている | sgdisk -e /dev/sdX で予備を末尾へ移す(手元で last usable が 2097118 → 4194270 に増えた) |
Found valid GPT with corrupt MBR; using GPT and will write new protective MBR(gdisk) |
セクター 0 の保護 MBR が消えた | gdisk で w すると保護 MBR が作り直される |
Secondary partition table overlaps the last partition by 33 blocks!(sgdisk) |
MBR → GPT 変換で末尾の予備の置き場所が無い | 最後の区画を縮めてから変換する |
Re-reading the partition table failed.: Invalid argument(fdisk) |
書き込みは済んだが、カーネルが使用中の表を更新できなかった | partprobe /dev/sdX か再起動 |
| mbr2gpt の戻り値 7「ディスクのジオメトリとレイアウトが要件を満たしていない」 | 基本パーティションが 4 つ・拡張がある・末尾に空きが無い など | 検証項目の表を見て配置を直す。ログは setupact.log |
| mbr2gpt の戻り値 6「1 つ以上のボリュームが暗号化されている」 | BitLocker が有効 | 保護を一時停止してから変換し、変換後に保護を作り直す |
よくある質問
Q. MBR と GPT の違いを一言で言うと? A. どちらもディスクの区画の目次ですが、MBR は先頭 512 バイトに 4 区画・2TiB まで、GPT は先頭と末尾に 128 区画・2TiB 超を書けます。BIOS 起動は MBR、UEFI 起動は GPT と組になります。
Q. 自分のディスクが MBR か GPT か、Windows で確かめるには?
A. 管理者のコマンドプロンプトで diskpart → list disk を打ち、Gpt 列に * があれば GPT です。画面なら diskmgmt.msc でディスクのプロパティ →「ボリューム」タブの「パーティションのスタイル」。PowerShell なら Get-Disk の Partition Style 列です。
Q. Linux で確かめるには?
A. sudo fdisk -l /dev/sda の「Disklabel type」が dos なら MBR、gpt なら GPT です。lsblk -o NAME,SIZE,PTTYPE でも一覧で見られます。
Q. Windows 11 には GPT が必要ですか? A. Windows 11 の最小要件は UEFI(セキュアブート対応)と TPM 2.0 で、UEFI で起動するディスクは GPT です。Windows 10 を BIOS + MBR で使っている PC は、mbr2gpt で変換してから UEFI 起動に切り替えると要件の 1 つを満たせます(PC 自体が UEFI に対応している場合)。
Q. 2TB の壁とは何ですか? A. MBR の目次は区画の開始位置と長さを 32 ビットで持つので、512 バイトセクターでは 2^32 × 512 = 2TiB までしか表せません。3TiB のディスクに MBR を作ると、手元の fdisk では区画が 2TiB で止まり、parted はエラーになりました。
Q. MBR から GPT に変換するとデータは消えますか?
A. 手段によります。ディスクの管理・diskpart の convert gpt・PowerShell の Initialize-Disk は、区画を全部消してからでないと変換できません。mbr2gpt(システムディスク)と Linux の gdisk/sgdisk は区画の位置を変えずに変換するので、手元の実験では中のファイルがそのまま読めました。いずれもバックアップを取ってから行います。
Q. mbr2gpt が失敗します。
A. 基本パーティションが 4 つある、拡張パーティションがある、末尾に 16KB + 1 セクターの空きが無い、BitLocker が有効、のどれかが多いです。mbr2gpt /validate /disk:0 /allowFullOS の結果と %windir%\setupact.log を見ます。
Q. GPT のディスクは BIOS の PC でも使えますか? A. データ用なら、OS が GPT を読めれば使えます(Windows Vista 以降・Linux)。起動用は、Windows は UEFI が要ります。Linux は GPT に BIOS boot partition を置けば BIOS でも起動できます。
Q. USB メモリーは MBR と GPT のどちらにすべきですか? A. PC だけで使うなら GPT で困りません。テレビ・レコーダー・カーナビや、BIOS 起動専用の PC で使うなら MBR のほうが読める機器が多いです。
Q. GPT の「保護 MBR」とは何ですか? A. GPT のディスクのセクター 0 にある、種類 EE の 1 区画だけを書いた MBR です。GPT を知らない以前のツールに「ディスク全体が使用中」と見せ、空きと誤解して上書きされるのを防ぎます。
Q. fdisk に「GPT PMBR size mismatch」と出ます。
A. ディスク(仮想ディスクなど)を後から大きくしたときに出ます。予備の GPT が以前の末尾に残っているので、sgdisk -e /dev/sdX で末尾へ移すと消えます。
Q. ファイルシステム(NTFS・ext4)と MBR/GPT は何が違いますか? A. MBR/GPT は「どこからどこまでが区画か」の目次、ファイルシステムは各区画の中でファイルをどう置くかの決まりです。層が違うので、GPT の区画に NTFS も ext4 も作れます。
まとめ
- MBR は先頭 512 バイトに 16 バイト × 4 の目次。開始位置と長さが 32 ビットなので 2TiB・4 区画が上限。拡張パーティションで 5 つ以上にできる。
- GPT は保護 MBR + ヘッダー + 128 個の目次を先頭と末尾に持ち、CRC32 で破損を検出する。手元でヘッダーを潰しても fdisk・gdisk は予備から読め、gdisk の
r→bで直った。 - Windows の起動は BIOS + MBR か UEFI + GPT の組だけ。Windows 11 の要件は UEFI なので起動ディスクは GPT。
- 確認は Windows が diskpart の
list disk(Gpt 列の *)・ディスクの管理・Get-Disk、Linux がfdisk -lの Disklabel type。 - 変換は、Windows のシステムディスクは mbr2gpt(基本 3 つ以下・拡張なし・末尾に空き・BitLocker 停止、変換後は UEFI 起動へ)、データ用は消してから初期化。Linux は gdisk/sgdisk で保持したまま変換でき、末尾に 33 セクターの空きが要る。
WSL2 や仮想マシンでディスクを扱う前の準備は関連記事「WSL2環境構築|Ubuntu開発環境をコマンドだけで整える手順」で扱っています。
参考・出典
確認日はいずれも 2026年10月29日です。
- UEFI Forum「UEFI Specification 2.10 — 5 GUID Partition Table (GPT) Disk Layout」:https://uefi.org/specs/UEFI/2.10/05_GUID_Partition_Table_Format.html
- Microsoft Learn「Windows and GPT FAQ」:https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-and-gpt-faq
- Microsoft Learn「MBR2GPT.EXE」:https://learn.microsoft.com/ja-jp/windows/deployment/mbr-to-gpt
- Microsoft Learn「ディスクを GPT または MBR に変換する」(ディスクの管理・Diskpart・PowerShell):https://learn.microsoft.com/ja-jp/windows-server/storage/disk-management/change-disk-partition-scheme
- Microsoft Learn「list」(diskpart):https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/list
- Microsoft Learn「Initialize New Disks」(ディスクの初期化・パーティションスタイルの既定):https://learn.microsoft.com/en-us/windows-server/storage/disk-management/initialize-new-disks
- Microsoft Learn「Windows 11 requirements」:https://learn.microsoft.com/en-us/windows/whats-new/windows-11-requirements
- Microsoft Learn「Boot to UEFI Mode or Legacy BIOS mode」:https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/boot-to-uefi-mode-or-legacy-bios-mode
- Microsoft Learn(ブログのアーカイブ)「How to check in Windows if you are using UEFI」:https://learn.microsoft.com/en-us/archive/blogs/home_is_where_i_lay_my_head/how-to-check-in-windows-if-you-are-using-uefi
- util-linux「fdisk(8)」「sfdisk(8)」:https://man7.org/linux/man-pages/man8/fdisk.8.html
- GPT fdisk(gdisk・sgdisk):https://www.rodsbooks.com/gdisk/
- GNU Parted マニュアル:https://www.gnu.org/software/parted/manual/
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「MBRとGPTの違い|確認方法・2TBの壁・変換の注意を実機で」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。