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、ルートを読み取り/書き込みに切り替え、他のすべてのファイルシステムをマウントします。

おすすめ記事