¿Utiliza initramfs /etc/fstab?

¿Utiliza initramfs /etc/fstab?

Según tengo entendido, initramfs es responsable de cargar el sistema de archivos raíz "real".

Ahora, hay dos lugares donde definimos esa raíz. Primero ponemos una entrada en /etc/fstab. En segundo lugar, colocamos el dispositivo en los comandos de arranque del kernel, por ejemplo root=/dev/sda1.

¿Cuál usa initramfs para determinar dónde está el sistema de archivos raíz? Si usa el parámetro del kernel raíz, ¿por qué tenemos una entrada en /etc/fstab? La segunda opción (dice /etc/fstab), es bastante ilógica porque el /etc/fstabarchivo está en el mismo dispositivo raíz que initramfs está intentando montar en primer lugar.

Cosas muy confusas.

Respuesta1

Como dijiste, el propósito de initramfs es montar el sistema de archivos raíz "real" (también puede hacer otras cosas, pero esta es la tarea común).

Sin initramfs, el kernel normalmente montará una partición como de solo lectura y luego pasará el control a /sbin/init. Un initramfs simplemente se hace cargo de esta tarea del kernel, generalmente cuando el sistema de archivos raíz no es una partición normal (mdraid, lvm, encriptada, etc.).

Ahora, aparte del fondo de initramfs, /etc/fstabreside en su sistema de archivos raíz. Como tal, cuando se inicia initramfs, ese sistema de archivos raíz no está allí y, por lo tanto, no puede acceder al fstab (problema del huevo y la gallina).
En lugar de eso, tenemos que pasar un parámetro a los argumentos de arranque del kernel para que lo utilice initramfs. Normalmente esto es algo así como root=/dev/sdX. Sin embargo, también podría hacer algo para descubrir automáticamente dónde está su dispositivo raíz, por lo que no hay ningún parámetro. Dado que es sólo software (generalmente un script), realmente puede hacer lo que quiera para montar el dispositivo raíz.

Ahora, como se indicó anteriormente, el kernel montará la raíz real como de solo lectura. El initramfs debería hacer exactamente esto. Una vez que initramfs finaliza, el sistema continúa arrancando exactamente como si no hubiera ningún initramfs y /sbin/initse inicia. Este inicio luego inicia todos los scripts de arranque normales, y el trabajo de uno de estos scripts es leer /etc/fstab, cambiar la raíz a lectura-escritura y montar todos los demás sistemas de archivos.

Respuesta2

Puede que sí o puede que no. Como Initramfs se puede construir de varias maneras (el kernel simplemente lo carga y lo ejecuta, /initque hace lo que sea). Sin embargo, usar un parámetro es más común, ya que permite más flexibilidad; es decir, si algo cambia, puede simplemente editar la entrada de inicio y todo seguirá funcionando. Con una raíz incorporada codificada, esto no sería necesariamente posible.

Es posible que la entrada fstab aún sea necesaria de cualquier manera, ya que también determina otras cosas, como las opciones de montaje (algunas de las cuales se pueden cambiar sobre la marcha) y fsckel orden. Además, incluso si fuera completamente superfluo (y si Initramfs lo maneja, puede funcionar sin él), aún mantendría la entrada allí simplemente para que esté completa.

Respuesta3

Puede considerar /etc/fstab como montaje estático, es solo una forma de realizar dicha tarea, pero no la única; de hecho, ejecute el comando mount y verá muchos sistemas de archivos que faltan en fstab. Servicios como udev y udisk administran gran parte del "montaje automático" ignorando el archivo /etc/fstab...

Entonces, si algo se monta o no con frecuencia, no tiene nada que ver con /etc/fstab.

initramfs es sólo un rootfs temporal que se utiliza durante el proceso de arranque hasta que se monta el rootfs "verdadero", entonces, ¿por qué debería estar initramfs en /etc/fstab?

información relacionada