カーネルがGRUBからファイルシステム情報を継承しないのはなぜですか?

カーネルがGRUBからファイルシステム情報を継承しないのはなぜですか?

GRUBはファイルシステムを理解し、/bootを見てカーネルにアクセスできるので、カーネルをロードし、続いてinitrdの助けを借りてファイルシステムをマウントするためにいくつかのドライバをロードすることを読んでいます。

だから私の質問は:カーネルがファイルシステムをマウントしなければならないのはなぜですか?おそらく質問は実際にマウントの概念についてです。実際にはどういう意味ですか?ファイル階層とディスクアドレスの間の一種のマッピングですか?

答え1

GRUBの使命は、カーネル(およびinitrd)をロードし、いくつかのパラメータをカーネルに渡して開始することです。これを行うには、ディスクパーティションについて知り、ファイルシステムを読み取ることができる必要があります。ファイルシステムをマウントするには、カーネルにデータ構造を埋め、カーネルがファイル階層を追跡できるようにする必要があります。 GRUBはカーネルの一部ではなく、この階層について何も知りません。指定されたパーティションのファイルシステムで何かを見つけるように指示されますが、/bootカーネルがそれを呼び出すかマウントする場所はわかりません。 (まあ、カーネルに引数を渡すこともできますが、実際には「わかりません」)。

GRUBの使命は、「1つのことをうまく行うこと」です。 GRUBはLinuxカーネルを起動できる唯一のブートローダではなく、ほとんどのアーキテクチャでは利用できないため、カーネルはそれに依存できません。

答え2

ブートローダ(Grub)とオペレーティングシステム(Linux)の両方ドライバーファイルシステムの場合、これは「ファイルからデータを読み込む」などのコマンドを理解するコードの断片です。ブートローダがオペレーティングシステムをメモリにロードすると、ブートローダがメモリから削除されるため、オペレーティングシステムはブートローダのドライバを使用できません。 (また、ブートローダドライバはオペレーティングシステムよりもパフォーマンスが低下することが多いため、たとえば、Grubのファイルシステムドライバは読み取ることができ、書き込むことはできません。)

パスにファイルシステムをマウントすることは、パス/some/whereの下のファイルへのアクセスがそのファイルシステム/some/whereにルーティングされることを意味します。カーネルがファイル名のコマンド(開く、削除、名前変更など)を実行すると、ファイルパスを分析し、現在マウントされているファイルシステムのリストに基づいて、ファイルがどのファイルシステムにあるかを確認し、要求を渡します。適切なドライバに。インストールはオペレーティングシステム内で行われ、ハードウェアには何ら影響を与えないため、インストールステータスをブートローダからオペレーティングシステムに転送することはできません。

関連情報