initramfsは/etc/fstabを使用しますか?

initramfsは/etc/fstabを使用しますか?

私が理解しているように、initramfsは「実際の」ルートファイルシステムをロードする役割を担っています。

次に、このルートを2つの場所で定義します。まず、項目をに入れます/etc/fstab。次に、カーネルブートコマンド(たとえば)にデバイスを挿入しますroot=/dev/sda1

initramfsは、ルートファイルシステムの場所を決定するためにどれを使用しますか?ルートカーネルパラメータを使用している場合、エントリがあるのはなぜですか/etc/fstab? 2番目のオプション(read)は、ファイルがinitramfsが最初にマウントしようとするルートデバイスにある/etc/fstabため、非常に非論理的です。/etc/fstab

とても混乱した内容です。

答え1

あなたが言ったように、initramfsの目的は「実際の」ルートファイルシステムをマウントすることです(他の作業も実行できますが、これは一般的な作業です)。

initramfsが存在しない場合、カーネルは通常パーティションを読み取り専用でマウントし、.initramfsに制御を渡します/sbin/init。通常、ルートファイルシステムが通常のパーティション(mdraid、lvm、暗号化など)ではない場合、カーネルはこの操作を置き換えます。 。

これで、initramfsの背景に加えて、/etc/fstabルートファイルシステムにも存在します。したがって、initramfsが起動すると、ルートファイルシステムが存在しないため、fstabにアクセスできません(鶏と卵の問題)。
代わりに、initramfsが使用するカーネルブートパラメータにパラメータを渡す必要があります。通常、これはroot=/dev/sdXルートデバイスの位置を自動的に把握するため、パラメータはまったくありません。これはソフトウェア(通常はスクリプト)なので、実際にデバイスをルーティングするために必要なすべての操作を実行できます。

前述のように、カーネルは実際のルートを読み取り専用としてマウントします。 initramfsはこれを行う必要があります。 initramfsが完了すると、システムはinitramfsがまったく存在しないかのように起動し/sbin/init続けます。その後、この初期化はすべての一般的な起動スクリプトを起動します。そのうちの1つは読み取り/etc/fstab、ルートを読み取り/書き込みに切り替え、他のすべてのファイルシステムをマウントします。

答え2

そうかもしれないし。 Initramfsはさまざまな方法で構築できます(カーネルはそれをロードして実行して目的の/initタスクを実行します)。ただし、パラメータを使用すると柔軟性が向上するため、より一般的です。つまり、変更がある場合は、開始項目を編集して作業を続行できます。組み込みのハードコーディングされたルートを使用すると、これは必ずしも可能ではありません。

それにもかかわらず、fstabエントリはマウントオプション(一部はいつでも変更される可能性があります)や順序などのfsck他のものも決定するため、依然として必要になる場合があります。また、完全に重複していても(Initramfsが処理している場合はそうではないかもしれません)、完全性のためにその項目を残しておきます。

答え3

/etc/fstabを静的マウントとして考えることができます。これはこれらのタスクを実行する唯一の方法ですが、実際にmountコマンドを実行する唯一の方法ではなく、fstabに多くのファイルシステムがないことがわかります。 udevやudiskなどのサービスは/etc/fstabファイルを無視し、ほとんどの「自動マウント」を管理します。

したがって、何かがインストールされたり頻繁にインストールされていない場合、これは/ etc / fstabとは何の関係もありません。

initramfsは、「実際の」rootfsがマウントされるまで起動中に使用される一時rootfsです。しかし、なぜinitramfsは/ etc / fstabにあるのですか?

関連情報