¿Cómo se accede a / etc / fstab antes de que se monte la raíz?


21

Estaba haciendo algunos cambios /etc/fstab, cuando se me ocurrió esta pregunta de huevo y gallina: si /etc/fstabcontiene las instrucciones para montar los sistemas de archivos, incluida la partición raíz, ¿cómo lee el sistema operativo ese archivo en primer lugar?

Respuestas:


18

Cuando el gestor de arranque llama al núcleo, le pasa un parámetro llamado root. Entonces, una vez que el kernel termine de inicializarse, continuará montando la partición raíz dada /y luego llamando /sbin/init(a menos que otros parámetros lo hayan anulado).

Luego, el initproceso inicia el resto del sistema cargando todos los servicios que están definidos para iniciarse en su nivel de ejecución predeterminado.

Dependiendo de su configuración y del sistema de inicio que utilice, puede haber varios otros pasos entre los que mencioné. Actualmente, los sistemas init más populares en Linux son SysVInit (el tradicional), Upstart y Systemd. Puede encontrar más detalles sobre el proceso de arranque en este artículo de Wikipedia .

Aquí hay un ejemplo simplificado de mi configuración de Grub. La parte importante para responder a su pregunta está en la penúltima línea, hay un root=/dev/sda3:

menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-40864544-2d0f-471a-ab67-edd7e4754dae' {
    set root='hd0,msdos1'
    echo    'Loading Linux 3.12.6-gentoo-c2 ...'
    linux   /kernel-3.12.6-gentoo-c2 root=/dev/sda3 ro  
}

En muchas configuraciones, el kernel se monta /en modo de solo lectura y el resto de las opciones están configuradas por defecto. En /etc/fstabpuede especificar los parámetros del sistema de archivos que luego se aplicarán una vez que init lo vuelva a montar.


2
La partición raíz está montada inicialmente solo para lectura por el núcleo. initLuego, un proceso monta las cosas /etc/fstabsegún los parámetros allí, lo que generalmente significa volver a montar la lectura-escritura de la partición raíz.
Ricitos de oro

1
Además, el núcleo se puede compilar con rutinas codificadas que buscan algunos archivos especiales en la partición activa que aún no están montados. El cargador de FreeBSD funciona de esa manera.
Kondybas

@Kondybas LILO en Linux también está codificado para cargar el núcleo en algunos números de bloque fijos
phuclv

3

Se fstabnecesita una entrada , si desea especificar algunas opciones de montaje no predeterminadas. Sin embargo, hoy en día systemd, un dispositivo kernel y un fstype correctos no fstabson necesarios. Puede reemplazar la entrada raíz con algo como:

#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 /            ext4        rw,relatime,data=ordered    0 1
dummy /             auto        rw,relatime,data=ordered,debug  0 1

y las opciones de montaje aún son respetadas por systemd.

Puede usar cualquier nombre de dispositivo incorrecto, por ejemplo /dev/sdz1, excepto el UUID incorrecto. Con un UUID incorrecto, el mensaje se imprimirá en el arranque: Failed to start Remount Root and Kernel File Systemspero el sistema se inicia de todos modos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.