Los protocolos de arranque y los formatos ejecutables son cruciales para el proceso de inicio de una computadora. Permiten que el firmware (BIOS/UEFI) encuentre, cargue y ejecute el cargador de arranque del sistema operativo.
¿Para qu茅 sirven?
- Localizaci贸n del cargador de arranque: Los protocolos de arranque definen c贸mo el firmware busca los cargadores de arranque en los diferentes dispositivos de almacenamiento (discos duros, SSDs, unidades USB, etc.).
- Interpretaci贸n de la estructura del disco: Permiten al firmware entender la estructura de las particiones del disco (MBR o GPT en UEFI) para localizar la partici贸n de arranque.
- Carga del cargador de arranque: Los protocolos especifican c贸mo se lee el cargador de arranque desde el dispositivo de almacenamiento a la memoria.
- Ejecuci贸n del cargador de arranque: Una vez cargado, el firmware transfiere la ejecuci贸n al cargador de arranque, que es responsable de cargar el kernel del sistema operativo.
- Estandarizaci贸n: En el caso de UEFI, los protocolos proporcionan una interfaz estandarizada para que el firmware y el cargador de arranque interact煤en con el hardware, lo que facilita la compatibilidad entre diferentes sistemas operativos y hardware.
Estructura o C贸digos de los Protocolos de Arranque:
La "estructura o c贸digos" de los protocolos de arranque no se refieren a un c贸digo fuente espec铆fico que se pueda mostrar directamente. M谩s bien, se definen mediante especificaciones y est谩ndares que los fabricantes de firmware y los desarrolladores de cargadores de arranque deben implementar.
En el contexto de BIOS:
- No hay protocolos estandarizados complejos: El BIOS sigue un proceso m谩s simple y menos formalizado. Busca un sector de arranque (MBR) en un dispositivo de arranque seg煤n el orden configurado y ejecuta el c贸digo que encuentra all铆. La "estructura" se limita a la expectativa de que los primeros bytes del sector de arranque contengan c贸digo ejecutable.
En el contexto de UEFI:
UEFI define un conjunto de protocolos que proporcionan interfaces de software entre diferentes m贸dulos de firmware y las aplicaciones de arranque (cargadores de arranque, herramientas de diagn贸stico, etc.). Algunos protocolos de arranque importantes incluyen:
-
EFI Boot Services: Un conjunto de servicios
proporcionados por el firmware UEFI que las aplicaciones de
arranque pueden utilizar durante la fase de pre-arranque. Esto
incluye servicios para:
- Gesti贸n de dispositivos: Encontrar y controlar dispositivos de hardware.
- Gesti贸n de archivos y sistemas de archivos: Acceder a archivos en particiones formateadas (principalmente FAT32 para la ESP).
- Gesti贸n de memoria: Asignar y liberar memoria.
- Carga de im谩genes: Cargar archivos ejecutables (como cargadores de arranque) en la memoria.
- Salida de texto y gr谩ficos: Mostrar informaci贸n en la pantalla.
- Entrada: Recibir entrada del teclado.
- EFI Runtime Services: Servicios que siguen estando disponibles despu茅s de que el sistema operativo ha comenzado a ejecutarse (por ejemplo, acceso al reloj en tiempo real, gesti贸n de variables NVRAM).
- Device Path Protocol: Describe la ubicaci贸n de un dispositivo de hardware en el sistema.
- Block I/O Protocol: Proporciona una interfaz para leer y escribir datos en dispositivos de almacenamiento.
- File System Protocol: Permite acceder a los sistemas de archivos.
- Loaded Image Protocol: Representa una imagen ejecutable que ha sido cargada en la memoria.
Formatos Ejecutables:
Los formatos ejecutables definen la estructura de los archivos que el firmware y los cargadores de arranque pueden cargar y ejecutar.
- BIOS: El c贸digo de arranque en el MBR es un c贸digo binario plano, sin un formato de archivo complejo. El BIOS simplemente carga y ejecuta este c贸digo directamente.
-
UEFI: Las aplicaciones de arranque UEFI
(incluidos los cargadores de arranque) deben estar en el
formato
PE/COFF (Portable Executable/Common Object File
Format), que tambi茅n es el formato utilizado para los ejecutables
(.exe y .dll) en Windows. Este formato tiene una estructura
bien definida que incluye:
- Cabecera PE: Contiene informaci贸n sobre el tipo de archivo, la arquitectura, los puntos de entrada, las secciones, etc.
- Secciones: Contienen el c贸digo ejecutable, los datos, las importaciones, las exportaciones y otra informaci贸n necesaria para la ejecuci贸n.
- Tabla de Direcciones de Reubicaci贸n: Informaci贸n para ajustar las direcciones de memoria si la imagen se carga en una direcci贸n diferente a la preferida.
- Tabla de Importaci贸n: Lista de bibliotecas y funciones que la aplicaci贸n necesita de otros m贸dulos.
En resumen, los protocolos de arranque son las reglas y las interfaces que el firmware sigue para encontrar, cargar y ejecutar el c贸digo de arranque, especialmente en sistemas UEFI. Los formatos ejecutables definen la estructura de los archivos que se pueden cargar y ejecutar durante este proceso. Mientras que el BIOS utiliza un enfoque m谩s simple basado en la ubicaci贸n f铆sica, UEFI introduce un sistema m谩s sofisticado basado en protocolos y un formato de archivo ejecutable est谩ndar (PE/COFF) para las aplicaciones de arranque.