Come hai detto, lo scopo di initramfs è di montare il "vero" filesystem di root (può fare anche altre cose, ma questo è il compito comune).
Senza un initramfs, il kernel normalmente monterà una partizione in sola lettura e quindi passerà il controllo a /sbin/init
. Un initramfs prende semplicemente questo compito dal kernel, di solito quando il filesystem di root non è una partizione normale (mdraid, lvm, crittografato, ecc.).
Ora, a parte lo sfondo di initramfs, il tuo /etc/fstab
risiede sul tuo filesystem di root. Come tale, quando viene avviato initramfs, quel filesystem di root non c'è, e quindi non riesce ad arrivare al fstab (problema di pollo e uova).
Invece, dobbiamo passare un parametro negli argomenti di avvio del kernel per l'utilizzo da parte di initramfs. Normalmente questo è qualcosa del genere root=/dev/sdX
. Tuttavia, potrebbe anche fare qualcosa per capire automaticamente dove si trova il tuo dispositivo root e quindi non ci sono parametri. Dal momento che è solo un software (generalmente uno script), può davvero fare tutto ciò che vuole per montare il dispositivo root.
Ora, come affermato in precedenza, il kernel monterà la radice reale in sola lettura. Initramfs dovrebbe fare esattamente questo. Una volta terminato initramfs, il sistema procede all'avvio esattamente come se non ci fossero affatto initramfs e si /sbin/init
avvia. Questo init avvia quindi tutti i normali script di avvio ed è compito di uno di questi script leggere /etc/fstab
, passare da root a lettura-scrittura e montare tutti gli altri filesystem.