MBR と GPT の概要と違い、比較
汎用コンピュータを電源 ON にするとマザーボードの SPI flash に格納された BIOS がメモリに展開され、そこを起点に OS まで起動されますが、BIOS には古くからある Legacy BIOS と UEFI の 2 種類があります。
Legacy BIOS の時代においては、HDD/SSD の先頭セクタに MBR (Master Boot Record) と呼ばれる 512 Bytes の特殊な領域があり、ここに「ディスクのパーティション情報」や「ブートストラップ (一次ブートローダー)」が格納されていました。
ですが MBR では 2TiB (≒ 2.2 TB) 以上のパーティションが読み込めない等の制約があり、各種課題をクリアするために GPT (GUID Partition Table) という方式が作られました。
GPT は一般に Legacy BIOS からは読み込めません。
MBR や GPT は一般に OS インストール時に作成されます。インストール CD を UEFI で起動していれば GPT 形式でインストールされ、Legacy BIOS で起動していれば MBR 形式でインストールされます。
MBR と GPT のレイアウトの比較を以下に示します。
GPT は先頭 512 Bytes は MBR との互換性を保っています。この 512 Bytes の領域を Protective MBR と呼びます。UEFI が GPT を読み込み起動する場合は Protective MBR は無視されます。Master Boot Code のところは下位互換 (Legacy Boot) のためのブートストラップを仕込んでも構いませんが、GPT でのブート前提なら無視されるので 0 bit 列でも構いません。
UEFI が GPT を読み込むと、パーティション情報を把握します。また、UEFI は汎用的なドライバが含まれているため、USB 等のデバイスも認識します。
UEFI は各デバイス (パーティションを含む場合は各パーティションも) の中から自身の優先順位 (Disk が優先か、USB が優先か、等) に従って中身を確認し、それが ESP (EFI System Partition) と呼ばれる領域であれば、その中に含まれるブートローダーを起動します。そのブートローダーは一般には Windows Boot Manager や grub 等です。
一方、Legacy BIOS や UEFI が MBR を読み込むと、MBR に含まれる 1 次ブートローダー (ブートストラップ) が起動し、起動可能パーティションの先頭セクタに含まれる 2 次ブートローダー (Windows Boot Manager や grub) を起動します。
MBR と GPT の特徴の比較を以下に示します。MBR は 1 次ブートローダーを含むのに対し、GPT はパーティションテーブルのみを含んでいます。
MBR | GPT | |
---|---|---|
サイズ | 512 Bytes | 16.5 KiB ~ (1 MiB の傾向) |
サポートする パーティションサイズ | 2 TiBまで | 8 ZiBまで |
サポートする パーティション数 | 4つ (拡張パーティションで追加可) | 制限なし |
含まれる情報 | 1次ブートローダ (ブートストラップ), MBRパーティションテーブル | GPTパーティションテーブル |
Legacy BIOS/UEFI に読み込まれた後 の処理 | MBR 内の 1次ブートローダ起動 ⇒PBR を起動しさらに grub や Windows Boot Manager 等の2次ブートローダ起動 ⇒OS起動 | ※Legacy BIOS は読込不可 GPT 外の ESP (EFI System Partition: /boot/efi 等) に含ま れる grub や Windows Boot Manager 等のブートローダ起動 ⇒OS起動 |
位置指定方式 (ブロックアドレス) | CHS (物理アドレス) | LBA (論理アドレス) |
GPT が強く求められるシーンとしては、搭載するディスクやボリュームの「パーティションサイズ」が 2 TiB (≒ 2.2 TB) 以上であることでしょう。最近のディスクの大容量化に伴い、MBR では対応できないようなケースがしばしば見られるようになりました。
MBR か GPT かの確認方法
Windowsの場合
Windows スタートボタンを右クリック⇒「ディスクの管理」を確認します。以下のように ESP (EFI システムパーティション) が見えれば、GPT であると推測できます。
正確に確認するには、diskpart コマンドを使います。コマンドプロンプトを管理者として起動し、以下のように実行します。
C:\WINDOWS\system32> diskpart Microsoft DiskPart バージョン 10.0.22000.1 Copyright (C) Microsoft Corporation. コンピューター: THREE-STARS DISKPART> list disk ディスク 状態 サイズ 空き ダイナ GPT ### ミック ------------ ------------- ------- ------- --- --- ディスク 0 オンライン 953 GB 0 B *
GPT の列に * アスタリスクが付いていれば、GPT 形式です。
この GPT パーティションにいくつのパーティションが作られているかを確認するには、ディスクを選択し、list partition と打ちます。
DISKPART> select disk 0 ディスク 0 が選択されました。 DISKPART> list partition Partition ### Type Size Offset ------------- ------------------ ------- ------- Partition 1 システム 100 MB 1024 KB Partition 2 予約済み 16 MB 101 MB Partition 3 プライマリ 952 GB 117 MB Partition 4 回復 904 MB 952 GB DISKPART>
上記では「ディスクの管理」で見た通り、Partition 1 として 100 MB の ESP 領域が確認できます。Partition 2 は Windows インストール時に勝手に作られる予約領域です。Partition 3 が Windows がインストールされている C ドライブになります。Partition 4 はリストア時に利用できる回復パーティションです。
Linux の場合
RedHat 系であれば df -hT コマンドで /boot/efi が確認できればこれが ESP 領域になりますので、GPT が使われていると推測できます。
[root@localhost ~]# df -hT
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 8.5M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rl-root xfs 40G 2.2G 38G 6% /
/dev/sda2 xfs 1014M 188M 827M 19% /boot
/dev/sda1 vfat 599M 5.8M 594M 1% /boot/efi
/dev/mapper/rl-home xfs 20G 170M 20G 1% /home
tmpfs tmpfs 373M 0 373M 0% /run/user/0
[root@localhost ~]#
GPT であることを確認するには fdisk -l コマンドを使います。
[root@localhost ~]# fdisk -l ディスク /dev/sda: 64 GiB, 68719476736 バイト, 134217728 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: gpt ディスク識別子: 2179CE5A-6A58-4EB8-9671-2055879298CF デバイス 開始位置 終了位置 セクタ サイズ タイプ /dev/sda1 2048 1230847 1228800 600M EFI システム /dev/sda2 1230848 3327999 2097152 1G Linux ファイルシステム /dev/sda3 3328000 134215679 130887680 62.4G Linux LVM
コメント