ブートローダがロードするセクタの数を知っていますか?

ブートローダがロードするセクタの数を知っていますか?

それで、ブートローダがどのように機能するのかを調べていますが、答えが見つからないような質問を見つけました。ブートローダは、カーネル全体をロードするために読まなければならないセクタの数を正確にどのように知ることができますか?

ブートローダを作成していますが、正確なセクタ数を数えて読み取るセクタ数を手動で変更する必要があります。もちろん、このプロセスを自動化する方法はありますが、方法がわかりません。ファイルシステム、BPB、BDBについて聞いたことがありますが、これらすべてが混乱しています。全体のプロセスがどのように進むかを知りたいです。 Fat12は単純なファイルシステムですが、カーネル大きすぎるフロッピーディスクの場合?

どんな説明でも大歓迎です。

答え1

既存のブートローダはマルチレベルです。 MBRパーティションテーブルを持つシステムのフェーズ1ブートローダには、パーティションテーブルの直後に、パーティションテーブルと同じブロックにブートローダがあります。

このコードはパーティションテーブルを見て、起動可能フラグが設定されている(「アクティブ化された」)プライマリパーティションを見つけ、そのパーティションの最初のブロックでコードを実行します。その後、このコード(通常は最初のコードよりも複雑ではありません)は2番目のステップブートローダをロードします。 2番目のステップブートローダを見つけるには、トラックに残っているすべてのブロックを読み、そのトラックに書き込まれたブロックのリストを使用して特定のブロックをロードするなど、いくつかの手法が使用されます(LILOは後者のアプローチを使用します)。

フェーズ2ブートローダは、通常、ブートパーティションのファイルシステムでオペレーティングシステムの残りの部分を見つける方法を知るのに十分スマートです。

より近代的なシステムはUEFIを使用します。ファームウェア自体には、少なくともFAT形式のパーティションを読み取るのに十分なインテリジェントな小さなオペレーティングシステムがあり、FAT形式のEFIパーティションから標準形式のEFI実行可能ファイルをロードして確認できます。オペレーティングシステムの残りの部分をロードするためのオペレーティングシステムの特定のパーティション形式を理解します。

独自のオペレーティングシステムを作成する場合、この問題を解決する最も簡単な方法は、EFI形式の実行可能ファイルを作成することから始めることです。

関連情報