マスターブートレコード(英: Master Boot Record、略称MBR)とは、PC/AT互換機において、単数または複数のパーティションに分けられたディスク[注釈 1]のパーティション外に存在する先頭セクタであり、ブートセクタの一種である。コンピュータの起動に必要なプログラムや情報を記録した小さな領域であり、起動時の処理過程(ブートプロセス)で最初に読み込まれる[1]。
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) がある[2][注釈 2]。
マスターブートレコードの構造
アドレス
|
内容
|
サイズ(バイト)
|
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
|
パーティション識別子
ブートシグネチャ
ここには0xAA55という値がマジックナンバーとして必ず入っている(リトルエンディアンなのでアドレス順と格納される値に注意)。これはこのMBRが有効であるという署名で、これがない場合はこのMBRは無効として扱われる。
ブートレコードの復元
- Windows NT、Windows 2000、Windows XPの場合
- 回復コンソールで
fixmbr
を実行すればよい。または、WindowsのCD-ROMで起動しRキーで修復すればよい。
- MS-DOS、Windows 95、Windows 98/98SE、Windows Meの場合
- FDから起動し、
fdisk /mbr
を実行すればよい。
脚注
注釈
出典
関連項目