マスターブートレコード(、略称MBR)とは、PC/AT互換機において、単数または複数のパーティションに分けられたディスクのパーティション外に存在する先頭セクタであり、ブートセクタの一種である。コンピュータの起動に必要なプログラムや情報を記録した小さな領域であり、起動時の処理過程(ブートプロセス)で最初に読み込まれるMBR(マスターブートレコード)とは - 意味をわかりやすく - IT用語辞典 e-Words。

PC/AT互換機では、BIOSはセクタ長が512バイトで先頭1セクタのみのロードしか保証しないため、MBRのサイズは512バイトである。アドレス0(先頭)- 445(計446バイト)にブートストラップローダ、うちアドレス440 - 444(計4バイト)にディスクMBRシグネチャ (disk MBR signature)、アドレス446 - 509(計64バイト)にパーティションテーブル (partition table)、アドレス510 - 511(計2バイト)にブートシグネチャ (boot signature) があるBootsector of the IBM PC - Syslinux Wiki。

+ マスターブートレコードの構造 アドレス 内容 サイズ(バイト) Hex Dec 0000 0 ブートストラップローダ 446 01BE 446 第1パーティション パーティションテーブル(各16バイト) 64 01CE 462 第2パーティション 01DE 478 第3パーティション 01EE 494 第4パーティション 01FE 510 55h ブートシグネチャ; 0xAA55(リトルエンディアン) 2 01FF 511 AAh MBRサイズ 512

ブートストラップローダ ブートストラップローダは、マスターブートローダ、マスターブートコード、イニシャルプログラムローダ (IPL) などとも呼ばれる。この領域には、IBM PCでは、 自身をメモリ上へコピーし起動したのち、ブート可能フラグが立っているパーティション(これを「アクティブなパーティション」と称する)を探し、 そのパーティションブートセクタに含まれるブートストラップローダをロードし、それへ制御を渡す という単純な起動プログラムが入っており、このプログラムコードはIBMとマイクロソフトによって開発されたものであるが、どのオペレーティングシステム (OS) もデファクトスタンダードとして利用していた。

しかし、この方式では、違うパーティションに切り替えて起動する際には、OSをシャットダウンする前に、かならずそれぞれのOS内でユーティリティプログラムを実行してアクティブなパーティションを再設定しなければならず、不便であった。このため、起動時にメニュー方式で選択できる各種のプログラムがよく使われるようになった。

ブートストラップローダの動作詳細 以下はブートシーケンスのうちブートストラップローダが担う部分である。 パーティションテーブルを4つのテーブルエントリーの先頭から検査し、起動フラグが立っている基本領域(アクティブなパーティション)がないか探す。 起動フラグが立っている基本領域が見つかったらその領域の先頭位置をパーティションテーブルから取得する。 BIOSにその位置を示してメモリにロードしてもらい、IPLに制御を渡す。

パーティションテーブル パーティションに関する情報を記録している。4つのエントリがあり1つあたり16バイトである。各エントリにはそのパーティションの位置情報、種類、起動フラグが記録されている。 + 各エントリの構造 オフセット 内容サイズ Hex Dec 0x00 0 ブートフラグ(0x80 = ブート可, 0x00 = ブート不可) 1 0x01 1 パーティションの最初のセクタ。CHS 方式での値。 ヘッド 3シリンダの上位2ビットとセクタシリンダの下位8ビット 0x04 4 パーティションの種類(パーティション識別子)。 1 0x05 5 パーティションの最後のセクタ。CHS 方式での値。 ヘッド 3シリンダの上位2ビットとセクタシリンダの下位8ビット 0x08 8 パーティションの最初のセクタ。LBA 方式での値。 4 0x0C 12 パーティションの全セクタ数 4

パーティション識別子

+ パーティションの種類 格納値(16進値) ファイルシステム名 0x00 空のパーティション 0x01 / 0x11 FAT12(後者は隠し、以下0x01 - 0x0Fに対する0x11 - 0x1Fは同様) 0x04 / 0x14 FAT16(32MB以下) 0x05 / 0x15 拡張DOS領域 0x06 / 0x16 FAT16(32MBより大きい) 0x07 / 0x17 HPFS / NTFS / exFAT 0x0B / 0x1B FAT32 0x0C / 0x1C FAT32(LBA対応) 0x0E / 0x1E FAT16(LBA対応) 0x0F / 0x1F 拡張DOS領域(LBA対応) 0x13 超漢字のファイルシステム 0x39 Plan 9のファイルシステム 0x71 EOTAのSFSファイルシステム 0x81 MINIXファイルシステム / ext1 0x82 Linux スワップパーティション / Solaris 10以前のファイルシステム 0x83 ext2などのLinuxファイルシステム 0x85 Linux拡張領域 0xA0 サスペンド領域 0xA5 FreeBSD Unix File System (FFS/UFS1/UFS2) 0xA6 OpenBSD UFS 0xA9 NetBSD UFS 0xBE Solarisにおけるブート用パーティション(ミニルート) 0xBF Solarisのファイルシステム 0xC1 DR-DOSのファイルシステム 0xC4 DR-DOSのファイルシステム 0xC6 DR-DOSのファイルシステム(32Mより大きい) 0xEB BeOSのファイルシステム 0xEE GPT 0xEF EFIシステムパーティション (FAT12/FAT16/FAT32)

ブートシグネチャ ここには0xAA55という値がマジックナンバーとして必ず入っている(リトルエンディアンなのでアドレス順と格納される値に注意)。これはこのMBRが有効であるという署名で、これがない場合はこのMBRは無効として扱われる。

ブートレコードの復元 Windows NT、Windows 2000、Windows XPの場合 回復コンソールでfixmbrを実行すればよい。または、WindowsのCD-ROMで起動しRキーで修復すればよい。 DOS、Windows 95、Windows 98/98SE、Windows Meの場合 FDから起動し、fdisk /mbrを実行すればよい。

脚注

注釈

出典

関連項目 パーティション GUIDパーティションテーブル