マスターブートレコード

マスターブートレコード（、略称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パーティションテーブル

Category:補助記憶装置
Category:ブート
Category:BIOS