Como você afirmou, o objetivo do initramfs é montar o sistema de arquivos raiz "real" (ele também pode fazer outras coisas, mas esta é a tarefa comum).
Sem um initramfs, o kernel normalmente montará uma partição como somente leitura e passará o controle para /sbin/init
. Um initramfs apenas assume essa tarefa do kernel, geralmente quando o sistema de arquivos raiz não é uma partição normal (mdraid, lvm, criptografada, etc).
Agora, além do histórico do initramfs, você /etc/fstab
reside no seu sistema de arquivos raiz. Assim, quando o initramfs é iniciado, o sistema de arquivos raiz não existe e, portanto, não pode chegar ao fstab (problema de galinhas e ovos).
Em vez disso, temos que passar um parâmetro para os argumentos de inicialização do kernel para o initramfs usar. Normalmente isso é algo parecido root=/dev/sdX
. No entanto, também pode fazer algo para descobrir automaticamente onde está o seu dispositivo raiz e, portanto, não há parâmetro algum. Como é apenas um software (geralmente um script), ele pode realmente fazer o que quiser para montar o dispositivo raiz.
Agora, como declarado anteriormente, o kernel montará a raiz real como somente leitura. O initramfs deve fazer exatamente isso. Depois que o initramfs é concluído, o sistema continua inicializando exatamente como se não houvesse initramfs e /sbin/init
inicia. Esse init inicia todos os seus scripts de inicialização normais, e é o trabalho de um desses scripts ler /etc/fstab
, alternar entre raiz e ler / escrever e montar todos os outros sistemas de arquivos.