私が理解したのは、BIOSシステムのGRUBブートローダー(および他のほとんどのブートローダー)は3つの部分で構成されています。最初の部分(ステップ1)は最初の448
バイトに格納され、後でメモリに配置されたいわゆるステップ1.5に制御を渡すのに役立ちます。このステップでは、最終的に /boot フォルダからステップ 2 をロードし、制御権をそのステップに転送します。
ステップ1では、ステップ1.5がどのディスクにあるのかをどうやって知ることができますか?ステップ1のコードの実行が開始されると、どのディスクからロードされたのかわかりません(この情報が何らかの方法でステップ1に渡されるか、BIOS自体がステップ1.5をメモリにロードしない限り)。
ステップ1.5〜2の場合ステップ1.5では、/bootディレクトリがどのディスク(およびどのパーティション)にあるのかをどうやって知ることができますか?
ベストアンサー1
GRUBのソースコードを見ると、ここ、stage1が実際に定義されていることがわかりますgrub/grub-core/boot/i386/pc/boot.S
。
設定されている場合は、フロッピー起動を実行できます。構成されたハードドライブから起動し、どのC / H / S stage1.5をロードする必要があるかを知る必要があります。唯一の自動機能は、ブートセクタがロードされているドライブを確認することです(他に設定されていない場合)。動作しているBIOSは、コントロールをstage1に渡す前にこの値をDLにロードします。場合によっては、グラブは最初のハードドライブに置き換えられます。
stage1.5はすでにパーティションとファイルシステムを理解しているため、C / H / S値に依存しなくなりました。ただし、まだ上記と同じドライブをロードします。