マスターブートレコード(MBR)の詳細解説
マスター
ブートレコード(MBR)は、
PC/AT互換機|PC_AT互換機におけるストレージデバイス(ハードディスクやSSDなど)の先頭セクタに位置する、非常に重要な領域です。この領域は、
コンピュータの起動プロセス(
ブートプロセス)において最初に読み込まれ、システムを起動するために必要なプログラムや情報を格納しています。MBRは、ディスクが複数の
パーティションに分割されている場合でも、
パーティション外の先頭セクタに必ず存在します。
MBRの構造
MBRのサイズは512バイトで固定されています。これは、
PC/AT互換機|PC_AT互換機のBIOSが1セクタ(512バイト)のみのロードを保証しているためです。MBRの内部構造は以下のようになっています。
1.
ブートストラップローダ(446バイト):
アドレス0から445までの領域に格納され、コンピュータの起動時に最初に実行されるプログラムです。このローダは、アクティブなパーティションを特定し、そのパーティションのブートセクタを読み込む役割を担います。
2. ディスクMBRシグネチャ(4バイト):
アドレス440から444までの領域に格納される、MBRの識別子です。
3.
パーティションテーブル(64バイト):
アドレス446から509までの領域に格納され、ディスク上のパーティションに関する情報を記録しています。各パーティションのエントリは16バイトで、最大4つのパーティション情報を管理できます。
4. ブートシグネチャ(2バイト):
アドレス510から511までの領域に格納され、`0xAA55`というマジックナンバーが記録されています。このシグネチャは、MBRが有効であることを示す重要な役割を果たします。
ブートストラップローダの詳細
ブートストラップローダは、別名マスター
ブートローダ、マスター
ブートコード、イニシャルプログラムローダ(IPL)とも呼ばれます。このローダは、以下の手順で動作します。
1.
自己コピーと起動:
まず、自身をメモリ上にコピーし、実行を開始します。
2. アクティブなパーティションの検索:
パーティションテーブルを参照し、
ブート可能フラグ(アクティブフラグ)が設定された
パーティションを探します。このアクティブな
パーティションが、次に起動されるOSの含まれる
パーティションとなります。
3.
パーティションブートセクタのロード:
見つかったアクティブなパーティションのブートセクタ(各パーティションの先頭セクタ)に含まれるブートストラップローダをメモリにロードします。
4. 制御の移行:
ロードした
パーティションの
ブートストラップローダに制御を移します。
この仕組みは、
IBM PCとその互換機で標準的に採用されていましたが、異なる
パーティションにインストールされたOSを切り替える際には、OSをシャットダウンする前にユーティリティプログラムでアクティブな
パーティションを再設定する必要があり、不便でした。そのため、現在では、
ブートメニューからOSを選択できる
ブートローダーが利用されることが多くなっています。
パーティションテーブルは、ディスク上の
パーティションに関する情報を記録する重要なテーブルです。各
パーティションのエントリは16バイトで、以下の情報が含まれています。
パーティションの位置情報(開始セクタとサイズ)
パーティションの種類(ファイルシステムの種類など)
起動フラグ(アクティブなパーティションを示すフラグ)
パーティションテーブルには4つのエントリしかないため、MBRの方式では最大4つの基本パーティションしか作成できません。この制限を克服するために、拡張パーティションと論理ドライブが導入されました。
ブートシグネチャ(`0xAA55`)は、MBRが有効であるかを判断するための重要なマジックナンバーです。BIOSはMBRの先頭512バイトを読み込んだ後、このシグネチャをチェックし、正しくない場合はMBRを無効と判断します。
MBRの復元
MBRが破損した場合、コンピュータは正常に起動できなくなります。MBRを復元する方法は、OSによって異なります。
Windowsの場合:
回復コンソールから`fixmbr`コマンドを実行する。
Windowsのインストールメディアから起動し、修復オプションを選択する。
MS-DOS、Windows 95/98/Meの場合:
フロッピーディスクから起動し、`fdisk /mbr`コマンドを実行する。
これらの方法で、MBRを復元し、
コンピュータを正常に起動できるようにすることが可能です。
関連事項
パーティション: ディスクを論理的に分割した領域。
GUID[[パーティションテーブル]](GPT): MBRの後継となる、より新しい
パーティションテーブルの形式。