lunes, 30 de septiembre de 2019

01 - Esquema MBR. Arranque BIOS

A la hora de dar formato a un disco duro, el estilo de tablas de particiones más conocido es MBR. Este estilo de formato lleva más de 30 años funcionando en la mayor parte de SO. Una de las principales limitaciones de MBR es el tamaño máximo de partición con el que puede trabajar: 2 TB. Además el número de particiones primarias que se pueden crear está limitado a 4. Si se quiere aumentar la cantidad de particiones debemos recurrir a una estrategia lógica denominada partición extendida.

Registro maestro de arranque (MBR)


Cada disco duro tiene un sector inicial de 512 bytes conocido como MBR que contiene varias piezas fundamentales: Tabla de particiones, Código de arranque rudimentario y Firma de arranque.



SECTOR 0 DEL DISCO


Tabla de particiones


Es un conjunto de registros (máximo 4) de 16 bytes cada uno, ubicada en el MBR, cuya función es definir las posibles particiones primarias, almacenando información esencial: Sistema de ficheros, Tamaño, Sector de arranque, Marca de arranque etc. Sólo una partición debe tener la marca de arranque.


Bootstrap


Pequeña porción de código (440 bytes) que se encarga de buscar la partición activa en la tabla de particiones (sólo puede haber una activa). Una vez que la encuentra, busca al principio de dicha partición otra porción de código denominada sector de arranque y la carga en memoria.



SECTOR DE ARRANQUE DE PARTICIÓN ACTIVA

El código de arranque del MBR lo podemos considerar como cargador de arranque de etapa 1 mientras que el código de arranque del sector de arranque de la partición activa, cargador de arranque de etapa 2

Firma de arranque


Son los dos bytes finales del MBR que la BIOS usa para saber si la unidad de arranque seleccionada es realmente arrancable o no. En un disco que contiene un código de arranque válido, los dos últimos bytes del MBR siempre deben ser 0x55 0xAA. Si no es así, asume que el disco no es arrancable y continúa con el siguiente dispositivo en la lista de orden de arranque que tenga configurada.

Si ningún dispositivo de la lista tiene la firma de inicio correcta, la BIOS muestra error "No hay ningún dispositivo de inicio disponible" o "Reiniciar y seleccionar el dispositivo de inicio adecuado".

El sector de arranque de la partición activa tiene también al final una comprobación de sector de arranque válido similar a la firma del MBR.

Proceso de arranque BIOS/MBR



  • Se ejecuta el POST, unas rutinas almacenadas en BIOS que hacen un testeo para verificar e inicializar el hardware: placa, procesador, gráfica, RAM, teclado, etc. Justo después es posible el acceso a la BIOS.
  • La BIOS comprueba las unidades de almacenamiento disponibles y se selecciona una unidad de arranque (suele ser una unidad de disco).
  • Se carga el MBR de la unidad de arranque en memoria.
  • Se ejecuta el cargador de arranque del MBR (etapa 1) que se encarga de consultar la tabla de particiones y localizar la partición activa.
  • Se carga el sector de arranque de dicha partición en memoria.
  • Se ejecuta el cargador de arranque del sector de arranque de la partición (etapa 2).
  • Se carga la configuración del cargador de arranque que suele estar almacenada en una base de datos.
  • El cargador de arranque muestra un menú con la lista de SO que pueden lanzarse (si es que hay varios).
  • El cargador de arranque localiza y carga el núcleo del SO y se inicia el sistema de forma desatendida.


Windows Bootmgr


Cada SO tiene su propio gestor de arranque, diseñado específicamente para leer su sistema de archivos y localizar el núcleo que debe cargarse para que se ejecute. Bootmgr es el gestor de arranque utilizado actualmente en Windows en versiones desktop y server. Es un gestor de arranque autónomo especialmente diseñado para ser compatible con las funcionalidades más nuevas de los SO modernos, como el arranque EFI y el particionado GPT.

Almacena su configuración en un archivo llamado BCD, abreviatura de Boot Configuration Database, una base de datos binaria que no se puede abrir y editar a mano pero si a través de comandos como bcdedit.exe y utilidades GUI fáciles de usar como EasyBCD para leer y modificar la lista de SO.

Casi todos los gestores de arranque, como Bootmgr o GRUB2, separan el ejecutable real del gestor de su configuración (base de datos que contiene información sobre los SO a cargar). De esta forma ofrecen soporte para cargar múltiples SO, un proceso conocido como "arranque dual" o "arranque múltiple".