普段あまり意識はしないが、なかなかにややこしい。奥が深いというよりは、過去のしがらみを引きずりまくってグダグダな感がある(特に用語が)。でも、代替の無い大事な手順であるし、比較的資料も多いので、調べて学習するのはさほど苦痛ではない。

結論 *

電源ON ==> BIOSが起動可能HDD見つけ、MBRに行く
       ==> MBR内コード実行し、起動すべきパーティションを判断し、そこのPBRに行く(OS非依存)
       ==> PBRでの指示に従う(OS依存)

とりあえずHDDの場合。OSが何であれ、MBRには適切な何かが必ず無くてはならない。つまり

まあ最近のOSだったらほっといても適切に判断してくれるのだろうけど

link *

HDD *

データ記録デバイスの主役はHDDなので、各種ブートの話もHDDの基礎知識があると何かと理解しやすい。

機械的な構造 *

薄い円盤(ディスク、プラッタ)が積層した構造を持つ。稼動中はこれらが回転し、ヘッドは適宜動いて目当てのデータがある位置に到達しようとする。

トラックとは、円盤上のある円周である。

シリンダとは、積層されたトラック(円筒)である。

セクタとは、最小単位まで細切れにされたトラックの一部分を指す。UNIX界隈ではブロックとも呼ばれるそうである。読み書きはセクタ単位で行われる。通常1セクタの(記憶域としての)大きさは512byteであるが、これはいずれ4096byteになるそうである( HDD業界団体が標準セクター・サイズを4Kバイトに拡大,「Windows Vista」は対応予定)。

領域、パーティション *

ひとつのHDDには、基本領域と呼ばれる領域を4つまで作成することができる。領域が4つまでで十分ならば、これ以降の知識は必要ない。

4つ以上の領域が欲しいなら

  1. 拡張領域をひとつ作成
  2. 論理領域を、その拡張領域の中に作成(いくらでも作れる)

とする。拡張領域はコンテナに過ぎず、ひとつまでしか作れない。

MBR (Master Boot Record) *

HDDの最初のセクタである。

アドレス範囲(十進、byte)内容
0 - 445プログラムコード
446 - 509パーティションテーブル
510 - 511シグネチャ

「プログラムコード」の部分に今後のブートの手続きが記されている。例えばWindowsをインストールすると「ブートストラップローダ」(固有名詞)が格納される(これを陽に行うには FDISK /MBR とすれば良い)。これの代わりにLILOやSystem Commanderなどのローダも格納できる。いずれもここに実際に格納されているのは「次の一手」を示すコードのみであり、残りはまた別な場所にある。

16x4=64byteの「パーティションテーブル」には、4つの基本(または拡張)領域の情報が格納されている。これらは具体的には下記のとおり。

「シグネチャ」は 0xAA55 でなくてはならない。

PBR (Partition Boot Record) *

パーティションの最初の方のセクタである。起動を司る点で雰囲気がMBRに似ているが、基本的にOSやファイルシステムに依存した構造を取る点で大きく異なる。


Last-modified: Tue, 04 Jul 2006 02:50:52 JST