initramfs制作とbzImage制作との間に特別な関係はありますか?

initramfs制作とbzImage制作との間に特別な関係はありますか?

私の初期の質問システムがinitramfsシェルによってブロックされました。後、通信会社そしてトムYanは、ドライバーの欠落とその後のドライバーのバージョンの不一致が原因で私の問題が発生したことを発見しました。だから私は彼らのアドバイスに従って問題を解決しました。

しかし、カーネルのコンパイルオプションをあまりにも修正しました。代わりに、システムの起動時に再び停止することをmaking clean直接発見しました。問題を解決するために、ドライバがカーネルにコンパイルされたかどうかを修正して確認しました。make bzImageinitramfsrootdealy

渡すこの回答、私はカーネルが実行されたとおりに再コンパイルしてインストールしました。ただし、ハードドライブまたはカーネルのバージョンは変更せず、カーネル設定オプションのみを変更しました。では、initramfsとの生産の間には何らかの関係があるようですbzImage

私の質問::

ここに画像の説明を入力してください。

答え:

ここに画像の説明を入力してください。

答え1

理論的な答えは「状況によって異なります」です。

実際、私はinitramfsがカーネルから独立している可能性がある状況を意図的に見たことがありません。 (私が知る限り)ほとんどのシステムはコアごとにinitramfsを生成します。

initramfsの実際のユースケースは、カーネルモジュールをロードすることです。今後ルートファイルシステムをマウントします。これは、ルートファイルシステムにカーネルに静的にコンパイルされていない特別なドライバが必要な場合に発生する鶏と卵の問題を解決します。これを行うには、initramfsにロードするカーネルモジュールのコピーを含める必要があります。

コンパイルされたカーネルモジュールはカーネルの設定によってバイナリの違いがある可能性があるため、設定を変更するには新しいカーネルモジュールをコンパイルしてからinitramfsにパッケージ化する必要があります。

同様に、一部のモジュールを静的にコンパイルまたは動的にロードできる場合は、モジュールを動的にロードするように構成を変更するには、そのモジュールをinitramfsに追加する必要があります。

静的にコンパイルされた正しいモジュールを含むカーネルがあるとしましょう。これにより、カーネルを再コンパイルするたびに Initramfs を変更する必要がなくなります。上記のように、私は実際にこれが起こっているのを見たことがありません。

関連情報