マスターブートレコード

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
マスターブートレコードの構造
アドレス 内容 サイズ
(バイト)
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

マスターブートレコード(Master Boot Record、略称MBR)とは、ブートセクタの一種で、複数のパーティションに分けられたディスクにおける、先頭セクタ(パーティション外である)にあるブートセクタのこと。PC/AT互換機の場合、ブートストラップローダの他にパーティションテーブルも含まれる。

PC/AT互換機では、セクタ長が512バイトで、BIOSによって先頭1セクタのみのロードしか保証されないため、長さ512バイトである。0(先頭)~445(446バイト)にブートストラップローダ、446~509(64バイト)にパーティションテーブル、510~511(2バイト)にブートシグニチャがある。

ブートストラップローダ[編集]

ブートストラップローダ(マスターブートローダ、マスターブートコード、イニシャルプログラムローダ(IPL)などとも)領域は、IBM-PCでは、昔は、自身をメモリ上でコピーした上で、ブート可能フラグが立っているパーティションのブートセクタをロードし、そのブートストラップローダを実行する、という単純な起動プログラムが入っており、IBMマイクロソフト製のこのコードをどのOSも共通に利用していた。

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

ブートストラップローダの内容[編集]

ブートシーケンスの一部)

  1. パーティションテーブルを4つのテーブルエントリーの先頭から検査し、起動フラグが立っている基本領域がないか探す。
  2. 起動フラグの立っている基本領域が見つかったらその領域の先頭位置をパーティションテーブルから取得する。
  3. BIOSにその位置を示してメモリにロードしてもらい、制御を受け渡す。

パーティションテーブル[編集]

パーティションに関する情報を記録している。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 Plan9のファイルシステム
0x71 EOTAのSFSファイルシステム[出典 1]
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のファイルシステム[出典 2]
0xC1 DR-DOSのファイルシステム
0xC4 DR-DOSのファイルシステム
0xC6 DR-DOSのファイルシステム(32Mより大きい)
0xEB BeOSのファイルシステム

ブートシグニチャ[編集]

ここには0xAA55という値がマジックナンバーとして必ず入っている。これはこのMBRが有効であるという署名のようなもので、これがない場合はこのMBRは無効なものとして扱われる。

ブートレコードの復元[編集]

Windows NTWindows 2000Windows XPの場合
回復コンソールでfixmbrと実行すれば良い。または、WindowsのCD-ROMで起動しRキーで修復すればよい。
MS-DOSWindows 95Windows 98/98SEWindows Meの場合
FDDから起動し、fdisk /mbr と実行すれば良い。

出典[編集]

  1. ^ EOTAのハードディスクへのインストール”. 2009年11月22日閲覧。
  2. ^ Solaris fdisk 識別子を変更する方法”. 2009年11月22日閲覧。

関連項目[編集]