BIOSはROM内にあり、製造元は「通常」、「アクティブ」ストレージデバイスの最初のセクターの最初のセクターまたはCHS(0,0,1)*物理およびCHS(0,0、 0)*パーティショニングの好みに基づいてMBRまたはVBRのいずれかである論理。
ブートセクター内のx86-CPU用のIBMPC互換ブートローダーの存在は、慣例により、ブートセクター(オフセット0x1FEおよび0x1FF)の最後にある2バイトの16進シーケンス0x55 0xAA(ブートセクター署名と呼ばれる)によって示されます。 。このシグニチャは、オペレーティングシステムを実際にロードできない場合でも、実行しても安全なダミーのブートローダーが少なくとも存在することを示します。
ブートシグネチャは、2バイトの16進シーケンスを使用してブートローダーを識別します、だから私は署名が同じセクターのオフセットでなければならないと思いますか?したがって、ブートローダーがこの同じセクターにある必要があると仮定しますか?
BIOSが起動するものを見つけようとしているときに発生する操作の基本的な順序は次のとおりです。
ブートシーケンスのOSDev wikiページ が役立つ場合があります。 MBRページ には、その最初のセクターのレイアウトを説明する便利な表もあります。ここでいくつか簡略化して再作成しました。
Offset | Size (bytes) | Description
0 | 436 | MBR Bootstrap (flat binary executable code)
0x1b4 | 10 | Optional "unique" disk ID
0x1be | 64 | MBR Partition Table, with 4 entries
0x1fe | 2 | (0x55, 0xAA) "Valid bootsector" signature bytes
BIOSは、必ずしもディスクIDやパーティションテーブルに注意を払ったり、認識したりするわけではないことに注意してください。
BIOSコードはROM(または最近はEEPROM)にあります。ディスクから最初のセクターをロードします(LBA表記では#0、CHS表記ではc = 0、h = 0、s = 1) 、最後の2バイトが0x55と0xAAであることを確認し、このセクターに制御を移します。
したがって、MBRは実際にはアドレス#0によって識別です。また、55 AA署名は検証専用です。最初のセクターがゼロで埋められている場合(新しいHDDの場合)、BIOSは55 AA署名がないことでこれを検出し、別のディスク、PXE、またはROM BASICなどから起動を試みます。
0x55 0xAAはMBRのオフセットではなく、実際のオフセットはゼロです。