メインコンテンツへスキップ
  1. ノート/
  2. システム底层/

MBR パーティション方式

·1260 文字·3 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml
MBR(Master Boot Record)は、ディスク先頭の起動コードとパーティション情報を含む領域です。MBR と Legacy BIOS を組み合わせる場合、先頭セクタの小さなコードから GRUB などの次の起動段階へ処理を渡します。
LegacyBIOS

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 カーネルと initramfs

4. 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 からカーネルまでで確認できます。

関連記事


评论