Linux (el núcleo) no le importa cuántas particiones de arranque tenga. Cargar el kernel desde el disco es el trabajo del gestor de arranque (p grub
. Ej . grub2
, lilo
) Y a estas herramientas tampoco les importa la cantidad de ubicaciones en las que se pueda ubicar un kernel. Solo les importa la ubicación específica.
Como ejemplo, mi partición de arranque es /dev/md1
, que es un espejo RAID mdadm respaldado por las particiones físicas /dev/sde1
y /dev/sdf1
. Puedo montarlos individualmente si quisiera y, como tal, técnicamente cuenta como tener dos particiones de arranque, aunque deberían contener los mismos datos.
Tener dos particiones para / boot para mí es un problema de disponibilidad, pero igualmente podrían ser particiones / boot diferentes. El siguiente paso es cómo sabe el gestor de arranque. Aquí es cómo:
menuentry 'Linux 3.10.17 (sde) kernel-3.10.17-g' {
root=hd0,1
linux /boot/kernel-3.10.17-g domdadm dolvm root=/dev/md3
initrd /boot/initrd-3.10.17-g
}
menuentry 'Linux 3.10.17 (sdf) kernel-3.10.17-g' {
root=hd1,1
linux /boot/kernel-3.10.17-g domdadm dolvm root=/dev/md3
initrd /boot/initrd-3.10.17-g
}
Este es un extracto de una grub2
configuración y notará que las únicas diferencias son root=hd0,1
y root=hd1,1
que establecen a qué partición de arranque hace referencia esa entrada.
Ahora para caminar a través de una bota para que pueda comprender lo que está sucediendo aquí.
- El BIOS lee el MBR del volumen de arranque y salta al cargador de arranque
- El gestor de arranque (por ejemplo
grub2
) está configurado para saber qué dispositivo y partición contiene su núcleo. Grub2 accede a esta partición directamente y carga su núcleo en la memoria.
- Su gestor de arranque luego salta al núcleo y el núcleo inicia su máquina.
Al gestor de arranque no le importa cuántas particiones de arranque tiene, solo le importa dónde están y debe decirle esa información.
Al núcleo no le importa cuántas particiones de arranque tenga, porque nunca necesita verlas (solo necesita tenerlo disponible para agregar nuevos núcleos, por ejemplo).
/boot
no se refiere a un directorio montado en la partición raíz?