あなたが述べたように、initramfsの目的は、「実際の」ルートファイルシステムをマウントすることです(他のこともできますが、これは一般的なタスクです)。
initramfsがない場合、カーネルは通常パーティションを読み取り専用としてマウントし、制御をに渡し/sbin/init
ます。通常、ルートファイルシステムが通常のパーティション(mdraid、lvm、暗号化など)でない場合、initramfsはカーネルからこのタスクを引き継ぎます。
これで、initramfsの背景/etc/fstab
は別として、ルートファイルシステムに常駐します。そのため、initramfsを起動すると、そのルートファイルシステムは存在しないため、fstabに到達できません(鶏と卵の問題)。
代わりに、initramfsが使用するカーネルブート引数にパラメーターを渡す必要があります。通常、これは次のようなものですroot=/dev/sdX
。ただし、ルートデバイスがどこにあるかを自動的に把握するために何かを行う場合もあるため、パラメーターはまったくありません。それは単なるソフトウェア(通常はスクリプト)であるため、ルートデバイスのマウントに必要なことは何でも実行できます。
さて、前述のように、カーネルは実際のルートを読み取り専用としてマウントします。initramfsはこれを正確に行う必要があります。initramfsが完了すると、システムはinitramfsがまったく存在しないかのようにブートを続行し、/sbin/init
起動します。このinitは通常のブートスクリプトをすべて起動します。これらのスクリプトの1つは、読み取り/etc/fstab
、rootの読み取り/書き込みへの切り替え、および他のすべてのファイルシステムのマウントを行います。