initramfsとinitrdが必要な理由

initramfsとinitrdが必要な理由

たとえば、ディスクに外部ファイルシステムがあり、システムをロードするには、ルートファイルシステムをマウントする必要があります。しかし、カーネルイメージに適切なドライバがないため、そうすることはできません。

kernel私がどのように理解したかを説明しますinitrd

  1. カーネルをコンパイルするときは、カーネルイメージに含める他のモジュール(ファイル)を選択できます。
  2. たとえば、私のルートファイルシステムは次のようになり、そのファイルシステムをreiserfs含めないようにカーネルを設定しました。module
  3. この場合、カーネルはそのようなファイルシステムをマウントする方法がわからないので、助けが必要です。 ->initramfsメモリにロードされます。
  4. ram fs(lib / modulesなど)で適切なモジュールを見つけます。
  5. このモジュールをカーネルにロードする
  6. これでカーネルはreiserfsそれをマウントし、占有メモリをアンマウント(解放)できるようになりました。ramfs

私は正しいですか?

ただし、initramfsほとんどの特定のドライバはすでにカーネルイメージ(単一ファイル)にあり、ファイルシステムはカーネルが起動したときにのみ必要です。他のドライバはインストール後にファイルシステムからロードできます。

それでは、これは本当にすべての展開で重要な部分でしょうか?

PS最も一般的に使用されるものは何ですか、initramfsそのinitrd理由は何ですか?

ベストアンサー1

モジュールをロードすることに加えて、できることから力が出ます。デフォルトでは、これはユーザースペースを提供し、できることをすべて実行する可能性を提供します。

例:暗号化されたルートファイルシステムを持つためにinitrdを使用します。これを設定するには、カーネルに不当なコードが必要です。

「基本」セクションinitrdに関するウィキペディアページより多くの例があります。

initramfsは同じアイデアの新しい(しかしまだかなり古い)実装ですが、initrdという名前は初期ユーザースペースとして使用されるイメージを参照するためによく使用されます。

私に起こったまったく異なる理由は、すべてを含むカーネルに対処するのに十分なメモリがない組み込みデバイスです。

おすすめ記事