Windows.FAQ - 基礎講座:PC の起動する仕組みは?マスターブートレコード (MBR) やブートセクターって何?

このページでは、PC が起動する仕組みと、起動に必要なマスターブートレコード (MBR) やブートセクターについて解説します。
複数 OS を導入する場合や、起動トラブルを理解するために、理解しておくことをお勧めします。

なお、このページでは Windows を念頭に解説するため、Linux や OS/2 などでは一部当てはまらない表現をすることがあることを、あらかじめご了承ください。

■ PC が起動する仕組み

HDD からオペレーティングシステムを起動する場合、次のようなステップが実行されています。
  1. POST (Power-on Self Test) が実行されます。
  2. BIOS がブートデバイスを検索します。
  3. 最初のブートデバイスの MBR をメモリー上にロードし、制御を渡します。
    (ブートデバイスがフロッピーディスクの場合はブートセクターに制御を渡します。)
  4. MBR のブートストラップコードは、パーティションテーブルを検索し、ブート識別子がアクティブ (0x80) なパーティションのブートセクターをメモリー上にロードして制御を渡します。
  5. ブートセクターに記録されたプログラムは、OS ローダーをメモリー上にロードし、制御を渡します。
    (DOS/Windows の場合は IO.SYS が、Windows NT/2000 の場合は NTLDR がロードされます。)
  6. OS の起動が開始されます。
単純化すると以下のようになります。

■ マスターブートレコード (MBR) とは?

マスターブートレコード (MBR) とは、ハードディスクの最初のセクタ (512 バイト) です。 このセクターには次のようなものが記録されています。
開始オフセット内容
0x0000ブートストラップコード
0x01B8署名 (Windows NT/2000/XP のディスクマネージャやディスクの管理が使用)
0X01BAパーティションテーブル(x4)
パーティションテーブルは 446 バイト目から始まり、16 バイトづつの 4 レコードが記録されます。
各レコードには次の情報が記録されています。

パーティションテーブルは最大 4 レコードなので、PC は 1 つのハードディスクに作成できる最大パーティション数は 4 になります。
パーティションには、次の 2 つの種類があります。

起動ドライブとして使うことができるのは基本パーティションだけです。また、5 個以上のドライブを作りたい場合は、1 つを拡張パーティションとして定義し、この中に論理ドライブを複数作成する必要があります。
拡張パーティションの中で論理ドライブを定義するために使われるのが、拡張ブートレコード (EBR) です。
EBR は MBR のパーティションレコード部分と同じ構成です。パーティションレコードの最初の 2 レコードだけが使用され、第一レコードは自分のドライブのブートセクターの位置を、第二レコードは次のドライブの EBR の位置を示しています。

■ マスターブートレコード (MBR) が壊れたら?

何らかの理由で MBR が破損して PC が起動しなくなった場合、次のような手順で MBR を再作成することができます。
ただし、ウィルスに感染して MBR が破壊されたり、乗っ取られた場合にこのような手順で MBR を書き換えると、ウィルスが保管したデータも消滅して被害が拡大することもあります。 以下のプログラムは MBR の 446 バイトまでを上書きするので、パーティションテーブルは一切変更されません。

注:Window NT/2000/XP を起動する場合でも、FDISK /MBR コマンドで MBR を復旧できます。

■ ブートセクターとは?

各ドライブの最初のセクターです。ここには OS に依存する実行プログラムが記録され、IO.SYS や NTLDR などのオペレーティングシステムローダーを起動します。
Windows9x が導入された PC に Windows NT/2000 を導入すると、既存のブートセクターが bootsect.dos というファイルにコピーされます。(当然の結果として、bootsect.dos ファイルのサイズは 512 バイトです。) NTLDR の表示する起動選択画面で Microsoft Windows を選択すると bootsect.dos がロードされて制御が渡され、これが IO.SYS (Windows9x の起動プログラム) を起動します。

ブートセクターには以下のものが記録されています。

開始オフセット内容
0x00JUMP 命令
0x03OEM ID
0x0BBIOS パラメータブロック (BPB)
0x24拡張 BIOS パラメータブロック (BPB)
0x3E(54)ブートストラップコード
0x1FE終了識別子 (0x55AA)

トップページに戻る