ブートローダー

パソコンに電源が入るとまずBIOSというチップの中で毎回決められた仕事をします.その次にパソコンにある外部記憶装置を片っ端から読み込もうとします.そして大抵の場合、最初に読もうとするのはフロッピーディスクドライブです.パソコンの電源を付けたあとガガガガッとフロッピードライブから音がしたこと、あるでしょう?あれです.
BIOSはディスクの先頭512バイトを読み込みます.この512バイトをブートセクタと言います.そしてここに書かれるプログラムをブートローダなどと呼びます.*1よってOSを始め、全てのプログラムの動作の始点はこの512バイトからということになります.
このブートローダーは各OSで様々な記述がなされますが、512バイトで記述できる処理は大したことないので、追加でディスク(セカンドブートローダー)を読み込んで内容をメモリに格納し、そこにジャンプするみたいなことをしてます.


なので通常ブートセクタの中身をのぞくことはできません.OSに付属しているファイラーなんかでもブートセクタのファイルなんてものは存在しません.そのかわりWindowsに限って言うと、ルートディレクトリにある「IO.SYS」や「ntldr」という隠しファイルはブートセクタからジャンプして読み込まれるセカンドブートローダーです.
Linuxなんかでよく使うLILOGRUBはブートセクタを書き換えて、ディスクのどこかにあるプログラムでOSを選択後、選択したOSのセカンドブートローダーを呼び出すといった働きをしているようです.


といったちょっとしたOS開発からの小ネタ

*1:イニシャルプログラムローダー:IPL、マスターブートレコード:MBR など色んな呼び名があります.