ハードディスクの先頭には、MBR (Master Boot Recode) と呼ぶ特別なセクタが設けられる。
MBR には、アクティブ パーティションを検索して起動するためのプログラムコード (Boot Strap Loader) と、パーティションの情報を格納するパーティション テーブルが置かれる。
MBR のサイズは 1 セクタ (512バイト) であり、その構成は次の通り。
位置 (offset) | 適用 | サイズ (バイト) |
0x0000 | Boot Strap Loader | 446 |
0x01BE | パーティション テーブル1 | 16 |
0x01CE | パーティション テーブル 2 | 16 |
0x01DE | パーティション テーブル 3 | 16 |
0x01EE | パーティション テーブル 4 | 16 |
0x01FE | boot signature | 2 |
- Boot Strap Loader
BIOS から起動される最初のプログラム。
パーティション テーブルを参照して起動可能なパーティションの先頭セクタ (ブートセクタ)をメモリ上にロードし、そこに書かれている IPL (Initial Program Loader) に制御を渡す。
- パーティション テーブル
16 バイト構成のテーブルが 4 エントリー分用意される。
このテーブルの数が基本領域数の制限となる。
- boot signature
MBR が正当なものであることの署名 (0x55AA) が書かれている。
この位置に、この値がないと MBR は無効なものとして扱われ、BIOS による起動処理が行われない。
MBR に 4 つあるパーティション テーブルは、それぞれ 16 バイトであり、その構成は次の通り。
位置 (offset) | 適用 | サイズ (バイト) |
0x00 | 起動 (アクティブ) フラグ | 1 |
0x01 | パーティション開始位置 (CHS方式) | 3 |
0x04 | パーティション タイプ | 1 |
0x05 | パーティション終了位置 (CHS方式) | 3 |
0x08 | 開始セクタ番号 (LBA方式) | 4 |
0x0C | パーティション サイズ (LBA方式) | 4 |
- 起動 (アクティブ) フラグ
当該パーティションからの起動の可否。 値によって次の意味になる。
0x00:起動不可, 0x80:起動可。
起動フラグが 0x80 の状態のことを「アクティブである」という。
- パーティション開始位置
パーティションの開始位置を、Cylinder, Head, Sector で指定する。 3 バイトをビット分割し、右図のように割り当てる。
右図の例では、Cylinder=0, Head=1, Sector=1 が指定されている。
- パーティションタイプ
パーティションタイプはシステム ID、OS インジケータとも呼ばれ、そのパーティションを使用している OS の種類、またはファイル システム等を数値で表す。
主なパーティションタイプを以下に示す。
値 | タイプ | 値 | タイプ |
0x00 | 空き | 0x63 | UNIX SystemX |
0x01 | FAT12 (DOS) | 0x82 | Linux Swap, Solaris |
0x04 | FAT16 (32MB 以下) | 0x83 | Linux 基本 (ext2) |
0x05 | 8GB 以前の位置に終始する拡張領域 | 0x85 | Linux 拡張パーティション |
0x06 | FAT16 (32MB 以上) | 0x86 | NTFS RAID の第2区画以降 |
0x07 | NTFS, HPFS (OS/2) | 0x87 | NTFS RAID の第1区画 |
0x0B | FAT32 | 0xA5 | Free BSD |
0x0C | FAT32X (LBA) | 0xA6 | Open BSD |
0x0E | FAT16X (LBA) | 0xA7 | NextStep |
0x0F | 0x05 に該当しない拡張領域 | | |
- パーティション終了位置
パーティションの終了位置を、Cylinder, Head, Sector で指定する。 詳細はパーティション開始位置と同じ。
- 開始セクタ番号 (LBA 方式)
パーティションの開始位置を、LBA 方式のセクタ番号で指定する。
- パーティション サイズ (LBA 方式)
当該パーティションの総セクタ数。 LBA 方式時に参照される。
▼ 限界を超えたパーティションの場合、実際のパーティション開始位置の値は 0xFE 0xFF 0xFF が設定され
ている。 これはそれぞれの最大値で、Cylinder=1023, Head=254, Sector=63 を意味するが、実際には無意
味な値となっている。