たとえば、ディスクに外部ファイルシステムがあり、システムをロードするには、ルートファイルシステムをマウントする必要があります。しかし、カーネルイメージに適切なドライバがないため、そうすることはできません。
kernel
私がどのように理解したかを説明しますinitrd
。
- カーネルをコンパイルするときは、カーネルイメージに含める他のモジュール(ファイル)を選択できます。
- たとえば、私のルートファイルシステムは次のようになり、そのファイルシステムを
reiserfs
含めないようにカーネルを設定しました。module
- この場合、カーネルはそのようなファイルシステムをマウントする方法がわからないので、助けが必要です。 ->
initramfs
メモリにロードされます。 - ram fs(lib / modulesなど)で適切なモジュールを見つけます。
- このモジュールをカーネルにロードする
- これでカーネルは
reiserfs
それをマウントし、占有メモリをアンマウント(解放)できるようになりました。ramfs
私は正しいですか?
ただし、initramfs
ほとんどの特定のドライバはすでにカーネルイメージ(単一ファイル)にあり、ファイルシステムはカーネルが起動したときにのみ必要です。他のドライバはインストール後にファイルシステムからロードできます。
それでは、これは本当にすべての展開で重要な部分でしょうか?
PS最も一般的に使用されるものは何ですか、initramfs
そのinitrd
理由は何ですか?
答え1
モジュールをロードすることに加えて、できることから力が出ます。デフォルトでは、これはユーザースペースを提供し、できることをすべて実行する可能性を提供します。
例:暗号化されたルートファイルシステムを持つためにinitrdを使用します。これを設定するには、カーネルに不当なコードが必要です。
「基本」セクションinitrdに関するウィキペディアページより多くの例があります。
initramfsは同じアイデアの新しい(しかしまだかなり古い)実装ですが、initrdという名前は初期ユーザースペースとして使用されるイメージを参照するためによく使用されます。
私に起こったまったく異なる理由は、すべてを含むカーネルに対処するのに十分なメモリがない組み込みデバイスです。
答え2
以下に示すように、initramfsを使用するにはいくつかの理由があります。
- 別の/usr、/varが必要な場合、一部のディストリビューションは/のこれらのディレクトリによって異なります。
- /を暗号化したいが暗号化された/bootを持つことができないため、/bootをUSBスティックに保存したい場合
- カーネルに何かを組み込むのではなく、モジュールとして必要なものだけをロードし、これが初期ユーザー空間で行われる場合
- /でdmraidを使用している場合
- より詳細な制御が必要な場合、つまり暗号化されたリモートサーバーがある場合/今度は復号化して正常に起動を続行できるように、dropbear(小さなsshデーモン)と一緒に初期ユーザースペースでネットワークを設定する必要があります。
initramfsが必要な理由を引き続き説明できますが、最終的に "switch_root ..."以前に実行する必要があるソフトウェアがある場合は、initramfsが必要になります。
答え3
そうだと思う現代たとえば、ハードウェアは50MBのコアを気にしません。今、すべてを別々のモジュールにロードすることはそれほど重要ではないと主張することができます。
ただし、初期RAMシステムでは、カーネルで特別な処理を必要とせずに、可能なすべての構成を起動できます。カーネルコードを書くのは大変です。元のメモリシステムは正しい解決策でした。systemd
;-)のように、メインシステムに似たコードをたくさん使うことができます。
暗号化されたファイルシステムから起動するのが良い例です。カーネルはパスワードの入力を求める必要はありません。
一例すべて最新のインストールでは、UUID(またはLVMボリューム名)を使用してルートファイルシステムを見つけます。これは、関係のないパーティションを削除するとすべて番号が再割り当てされるため、起動が中断されるため便利です。または、コンピュータ間またはコンピュータ間でディスクを移動するとき。またはディスクがLive CDの場合。
なぜRAMファイルシステムが必要なのですか?なぜなら、私たちはファームウェア/ブートローダーと緊密に組み合わせることを望まないからです。データをメモリブロックに渡すと、操作は完了します。我々は、できるだけ簡単に開始プロセスを作成したいと思います。リリースは重要でありながら特別なケースです。複雑なインターフェイスは必要ありませんその他特別な状況ソフトウェア。 特にファームウェアケース。ファームウェアは特別なケースなので、残りの時間には気にしません。誰も気付かないバグでいっぱいです。そしてファームウェアは非常に重要なので、それを修正することは非常に危険です。以前はROMで、全くパッチできませんでした。