BIOSブートローダはどのディスクを使用するのか、どうすればわかりますか?

BIOSブートローダはどのディスクを使用するのか、どうすればわかりますか?

私が理解したのは、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値に依存しなくなりました。ただし、まだ上記と同じドライブをロードします。

おすすめ記事