普段あまり意識はしないが、なかなかにややこしい。奥が深いというよりは、過去のしがらみを引きずりまくってグダグダな感がある(特に用語が)。でも、代替の無い大事な手順であるし、比較的資料も多いので、調べて学習するのはさほど苦痛ではない。
電源ON ==> BIOSが起動可能HDD見つけ、MBRに行く ==> MBR内コード実行し、起動すべきパーティションを判断し、そこのPBRに行く(OS非依存) ==> PBRでの指示に従う(OS依存)
とりあえずHDDの場合。OSが何であれ、MBRには適切な何かが必ず無くてはならない。つまり
まあ最近のOSだったらほっといても適切に判断してくれるのだろうけど
データ記録デバイスの主役はHDDなので、各種ブートの話もHDDの基礎知識があると何かと理解しやすい。
薄い円盤(ディスク、プラッタ)が積層した構造を持つ。稼動中はこれらが回転し、ヘッドは適宜動いて目当てのデータがある位置に到達しようとする。
トラックとは、円盤上のある円周である。
シリンダとは、積層されたトラック(円筒)である。
セクタとは、最小単位まで細切れにされたトラックの一部分を指す。UNIX界隈ではブロックとも呼ばれるそうである。読み書きはセクタ単位で行われる。通常1セクタの(記憶域としての)大きさは512byteであるが、これはいずれ4096byteになるそうである( HDD業界団体が標準セクター・サイズを4Kバイトに拡大,「Windows Vista」は対応予定)。
ひとつのHDDには、基本領域と呼ばれる領域を4つまで作成することができる。領域が4つまでで十分ならば、これ以降の知識は必要ない。
4つ以上の領域が欲しいなら
とする。拡張領域はコンテナに過ぎず、ひとつまでしか作れない。
HDDの最初のセクタである。
アドレス範囲(十進、byte) | 内容 |
0 - 445 | プログラムコード |
446 - 509 | パーティションテーブル |
510 - 511 | シグネチャ |
「プログラムコード」の部分に今後のブートの手続きが記されている。例えばWindowsをインストールすると「ブートストラップローダ」(固有名詞)が格納される(これを陽に行うには FDISK /MBR とすれば良い)。これの代わりにLILOやSystem Commanderなどのローダも格納できる。いずれもここに実際に格納されているのは「次の一手」を示すコードのみであり、残りはまた別な場所にある。
16x4=64byteの「パーティションテーブル」には、4つの基本(または拡張)領域の情報が格納されている。これらは具体的には下記のとおり。
「シグネチャ」は 0xAA55 でなくてはならない。
パーティションの最初の方のセクタである。起動を司る点で雰囲気がMBRに似ているが、基本的にOSやファイルシステムに依存した構造を取る点で大きく異なる。