電源投入
↓
BIOSによるデバイス初期化
↓
ブートデバイスの決定
↓
ブートストラップローダのロード
↓
ブートローダの実行
↓
OSの起動
PCの電源を投入すると、マザーボードのROM中のBIOSが起動。
このBIOSの初期化プログラムが、PCに接続されている各種デバイスの初期化を行う。
この過程が POST(Power On Self Test)。(起動直後に画面表示されている)
各種デバイスの初期化が終了すると、BIOSは次の段階に入り、起動するためのドライブを探す。
起動ドライブとなるのは、HDD、 CD-ROM、USBフラッシュメモリなど。
BIOSは起動ドライブを見つけるとそのデバイスをファーストブートドライブとして起動を試みる。
HDDの起動を例にすると、
BIOSはそのブートドライブの先頭セクタのロードという段階に移る。
HDDの先頭セクタは MBR(Master Boot Record)といい、MBRは1台のHDDに1つだけ。
BIOSはこのMBRをメモリ上にロードし、MBR領域にあるプログラムに制御を移す。
このMBR領域にあるプログラムを、ブートストラップローダと呼ぶ。
ブートストラップローダは、パーティションテーブルから起動フラグのあるパーティションを探す。
パーティションテーブルとは、複数のパーティションに関する情報が保存されているMBR内の1つの領域。
この起動フラグのあるパーティションにブートストラップローダから制御が移行。
このとき、ブートストラップローダから呼び出されるのが各基本パーティションにあるブートセクタ。
ブートセクタは各基本パーティションの先頭セクタのことを指し、PBR(Partition Boot Record)と呼ばれる。
PBRに制御が移行すると、そのPBRのプログラムが動作することになる。
このPBRにあるプログラムコードが IPL(Initial Program Loader)で、OSを起動させるためのブートローダの残りの機能を呼び出す機能を持つ。
MBRやPBRは512バイトと非常に小さな領域しかなく、その中のIPLのデータサイズはさらに小さい。
この小さなデータサイズにOSを起動させるためのブートローダのプログラムを全て格納できない。
そのため、IPLはブートローダの一部のプログラムコードを持ち、ブートローダの残りに機能はPBRの後続セクタに置いている。
IPLから呼び出されたブートローダが後続のOSのファイルを読み込んでいき、最終的にOSが起動する。