MBR(Master Boot Record)は、ディスク先頭の起動コードとパーティション情報を含む領域です。MBR と Legacy BIOS を組み合わせる場合、先頭セクタの小さなコードから GRUB などの次の起動段階へ処理を渡します。

1. MBR の構造#
MBR の先頭セクタは、一般に次の構造を持ちます。
446 バイト:ブートコード
64 バイト:パーティションテーブル
2 バイト:起動シグネチャ 0x55AA- ブートコード:次の起動段階を探して読み込む小さなコードです。
- パーティションテーブル:従来のパーティションの位置や種類を記録します。
- 起動シグネチャ:BIOS が有効なブートセクタだと判断するための値です。
446 バイトだけでは、GRUB のような完全なブートローダーを保存できません。そのため、GRUB は MBR 後の埋め込み領域や、ファイルシステム上の core.img を利用して処理を続けます。
2. MBR とデュアルブート#
Linux と Windows を同じディスクにインストールする場合、どのブートローダーを BIOS が最初に実行するかが重要です。
- Windows のブートコードが MBR にある場合、通常は Windows の既定の起動処理へ進みます。
- GRUB を MBR にインストールすると、GRUB が起動メニューを表示し、Linux や Windows Boot Manager を選択できるようになります。
- MBR のブートコードが破損しても、パーティション内のデータが直ちに消えるわけではありません。ただし、Legacy BIOS からそのディスクを起動する経路は失われます。
GRUB が必ず他の OS を自動検出するとは限らないため、複数 OS の検出結果や os-prober の設定は、使用するディストリビューションの方針に従って確認してください。
3. MBR 後の埋め込み領域#
MBR と最初のパーティションの間には、パーティションの開始位置を 1 MiB などに揃えることで空き領域が存在する場合があります。GRUB はこの領域に core.img の一部を埋め込むことがあります。
ただし、空き領域の大きさや安全性はディスクの作成方法とパーティション配置によって異なります。古い説明にある「常に 1~63 セクタ」「必ず Stage 1.5 がある」という表現は一般化しすぎです。
BIOS
↓
MBR の boot.img / 小さな起動コード
↓
埋め込み領域などに置かれた core.img
↓
/boot/grub のモジュールと grub.cfg
↓
Linux カーネルと initramfs4. MBR の制限#
- 基本パーティションは最大 4 個です。論理パーティションを使う場合は拡張パーティションが必要です。
- パーティションのアドレス範囲には、セクタサイズやツールの実装に依存する制限があります。
- パーティションテーブルのバックアップや CRC による検証機能は GPT より限定的です。
- 大容量ディスクや UEFI を前提とする新規構成では、GPT の方が扱いやすい場合が多いです。
5. まとめ#
- MBR はパーティション方式であると同時に、Legacy BIOS の起動コードを置く場所でもあります。
- MBR の 446 バイトだけでは完全な GRUB を保存できません。
- MBR 後の埋め込み領域は、利用できる場合に
core.imgの保存場所として使われます。 - MBR のブートコードが空でも、UEFI + ESP の起動経路まで壊れるとは限りません。
- MBR、GPT、BIOS、UEFI の全体関係は、Linux の起動フロー:ファームウェア、パーティション、GRUB からカーネルまでで確認できます。


