ブートローダについて
ブートローダ概要
ブートローダとは
ブートローダとは、起動ディスクのMBR (Master Boot Record)領域に記録されたプログラムです。
PCの起動後、BIOSはMBR領域のデータをメモリ上(0x7C00の位置)にロードし、そのプログラムに制御を移します。
MBRでは1セクタ分のプログラムしか格納できないため、実行されたプログラムからさらに別のプログラムを呼び出して本格的なOSブート処理を行うという二重構造になっていることが一般的です。
なお、ブートローダは、ブートストラップ(自分のブーツを自分で脱ぐという意味)やIPL(Initial Program Loader)とも呼ばれます。
ブートローダの読み込む位置
BIOSは設定されたデバイスの最初のセクタからブートローダを読み込みます。
例えばフロッピーディスクなら1つのセクタは512バイトなので最初のセクタである512バイトを読み込みます。
CD-ROMであれば1つのセクタは2048バイト(2Kバイト)ですので、最初のセクタである2048バイトをメモリに読み込みます。
なお、セクタとは、フロッピーディスクやCD-ROMで扱うことができる最小データの単位です。
PCの電源投入からの処理
BIOSの起動
PCに電源が投入されると、「BIOS = Basic Input/Output System(基本的な入出力システム)」が読み込まれます。
BIOSは、PCを使用可能な状態にするために各種機器の初期化を行います。
POST(Power On Self Test)処理
BIOSが動き出すとPOST(Power On Self Test)と呼ばれる処理を行います。
POSTでは接続された周辺機器 (ビデオ、キーボード、メモリ、マウス、FDD、HDDなど) をチェックして、正常にPCを起動できるかどうかをチェックします。
起動ドライブ(ブートドライブ)の決定
BIOSは起動ドライブ(通常FDD、HDD、CD-ROMなど)を見つけると、そのデバイスをファーストブートドライブとして起動を試みます。
どのデバイスがブートドライブとして優先的に認識されるかはBIOSの設定によります。
ブートドライブが決定すると、BIOSはそのブートドライブの先頭セクタをロードします。
BIOSにより起動デバイスMBR読み込み
MBR (Master Boot Record)とは、コンピュータの起動に関わる各種記録を管理している仕組みです。
MBRは、ハードディスクドライブなど起動可能な機器の先頭セクタに保存されています。
BIOSはディスクドライブを見つけると、そのディスクの先頭セクタ末尾(フロッピディスクならば510バイト目)に「0xAA55」という記述があるかを調べます。
「0xAA55」というデータが見つかれば、そのディスクの先頭のセクターをメモリ上(0x7C00の位置)に読み込み、制御を移します。
このセクターをFDではブートセクター、HDDではマスターブートレコードと呼びます。
ブートローダの起動
BIOSはPCの起動準備が整うと、メモリ上(0x7C00の位置)に読み込んだプログラム「ブートローダ」を実行します。
ブートローダはOS(カーネル)を起動するための各種処理を実行します。