たとえば、ディスクに外部ファイルシステムがあり、システムをロードするには、ルートファイルシステムをマウントする必要があります。しかし、カーネルイメージに適切なドライバがないため、そうすることはできません。
kernel
私がどのように理解したかを説明しますinitrd
。
- カーネルをコンパイルするときは、カーネルイメージに含める他のモジュール(ファイル)を選択できます。
- たとえば、私のルートファイルシステムは次のようになり、そのファイルシステムを
reiserfs
含めないようにカーネルを設定しました。module
- この場合、カーネルはそのようなファイルシステムをマウントする方法がわからないので、助けが必要です。 ->
initramfs
メモリにロードされます。 - ram fs(lib / modulesなど)で適切なモジュールを見つけます。
- このモジュールをカーネルにロードする
- これでカーネルは
reiserfs
それをマウントし、占有メモリをアンマウント(解放)できるようになりました。ramfs
私は正しいですか?
ただし、initramfs
ほとんどの特定のドライバはすでにカーネルイメージ(単一ファイル)にあり、ファイルシステムはカーネルが起動したときにのみ必要です。他のドライバはインストール後にファイルシステムからロードできます。
それでは、これは本当にすべての展開で重要な部分でしょうか?
PS最も一般的に使用されるものは何ですか、initramfs
そのinitrd
理由は何ですか?
ベストアンサー1
モジュールをロードすることに加えて、できることから力が出ます。デフォルトでは、これはユーザースペースを提供し、できることをすべて実行する可能性を提供します。
例:暗号化されたルートファイルシステムを持つためにinitrdを使用します。これを設定するには、カーネルに不当なコードが必要です。
「基本」セクションinitrdに関するウィキペディアページより多くの例があります。
initramfsは同じアイデアの新しい(しかしまだかなり古い)実装ですが、initrdという名前は初期ユーザースペースとして使用されるイメージを参照するためによく使用されます。
私に起こったまったく異なる理由は、すべてを含むカーネルに対処するのに十分なメモリがない組み込みデバイスです。