Cargador de arranque


Un cargador de arranque, también escrito como cargador de arranque o llamado administrador de arranque y cargador de arranque, es una computadora programa que se encarga de arrancar una computadora.
Cuando se apaga un ordenador, su software —incluyendo sistemas operativos, código de aplicación y datos— permanece almacenado en memoria no volátil. Cuando el ordenador está encendido, normalmente no tiene un sistema operativo o su cargador en memoria de acceso aleatorio (RAM). El ordenador ejecuta primero un programa relativamente pequeño almacenado en memoria sólo lectura (ROM, y más tarde EEPROM, flash NOR) junto con algunos datos necesarios, para inicializar la RAM (especialmente en sistemas x86), para acceder al dispositivo no volátil (generalmente bloque dispositivo, p. ej. flash NAND) o dispositivos desde los que los programas y datos del sistema operativo pueden ser cargados en RAM.
Algunos sistemas informáticos anteriores, al recibir una señal de arranque de un operador humano o de un dispositivo periférico, podían cargar una cantidad muy pequeña de instrucciones fijas en la memoria en una ubicación específica, inicializar al menos una CPU y luego apuntar la CPU a las instrucciones e iniciar su ejecución. Estas instrucciones generalmente inician una operación de entrada desde algún dispositivo periférico (que el operador puede seleccionar mediante un interruptor). Otros sistemas pueden enviar comandos de hardware directamente a dispositivos periféricos o controladores de E/S que provocan que se lleve a cabo una operación de entrada extremadamente simple (como "leer el sector cero del dispositivo del sistema en la memoria a partir de la ubicación 1000"), cargando efectivamente una pequeña cantidad de instrucciones del cargador de arranque en la memoria; Luego se puede utilizar una señal de finalización del dispositivo de E/S para iniciar la ejecución de las instrucciones por parte de la CPU.
Las computadoras más pequeñas a menudo usan mecanismos de cargador de arranque menos flexibles pero más automáticos para garantizar que la computadora se inicie rápidamente y con una configuración de software predeterminada. En muchas computadoras de escritorio, por ejemplo, el proceso de arranque comienza con la CPU ejecutando el software contenido en la ROM (por ejemplo, el BIOS de una PC IBM o una PC IBM compatible) en una dirección predefinida (algunas CPU, incluida la serie Intel x86, están diseñados para ejecutar este software después del reinicio sin ayuda externa). Este software contiene una funcionalidad rudimentaria para buscar dispositivos elegibles para participar en el arranque y cargar un pequeño programa desde una sección especial (más comúnmente el sector de arranque) del dispositivo más prometedor, generalmente comenzando en un punto de entrada fijo, como el inicio del sector.
Cargador de arranque de primera etapa
Los cargadores de arranque pueden enfrentar limitaciones peculiares, especialmente en tamaño; por ejemplo, en las PC IBM anteriores y compatibles, un sector de arranque normalmente debería funcionar en solo 32 KiB (luego se redujo a 64 KiB) de memoria del sistema y solo usar instrucciones admitidas por los procesadores 8088/8086 originales. La primera etapa de los cargadores de arranque de PC (FSBL, cargador de arranque de primera etapa) ubicados en discos fijos y unidades extraíbles debe caber en los primeros 446 bytes del registro de arranque maestro para dejar espacio para la tabla de particiones predeterminada de 64 bytes con cuatro entradas de partición y la firma de arranque de dos bytes, que el BIOS requiere para un cargador de arranque adecuado, o incluso menos, cuando se incluyen características adicionales como más de cuatro entradas de partición (hasta 16 con 16 bytes cada una), una firma de disco (6 bytes), en algunos entornos también se debe admitir una marca de tiempo de disco (6 bytes), una partición activa avanzada (18 bytes) o cargadores de arranque múltiple especiales. En los registros de arranque de volúmenes de disquete y superfloppy, se ocupan hasta 59 bytes para el bloque de parámetros BIOS extendido en los volúmenes FAT12 y FAT16 desde DOS 4.0, mientras que el FAT32 EBPB introducido con DOS 7.1 requiere incluso 87 bytes, dejando solo 423 bytes para el cargador de arranque. al asumir un tamaño de sector de 512 bytes. Por lo tanto, los sectores de arranque de Microsoft tradicionalmente imponían ciertas restricciones en el proceso de arranque, por ejemplo, el archivo de arranque tenía que ubicarse en una posición fija en el directorio raíz del sistema de archivos y almacenarse como sectores consecutivos, condiciones de las que se ocupaba el
BIOS y UEFI no solo pueden cargar uno o más sistemas operativos desde un dispositivo no volátil, sino que también pueden inicializar el hardware del sistema para uno o más sistemas operativos.
Ejemplos de cargadores de arranque de primera etapa incluyen BIOS, UEFI, coreboot, Libreboot y Das U-Boot.
Cargador de arranque de segunda etapa
Los cargadores de arranque de segunda etapa, como GNU GRUB, rEFInd, BOOTMGR, Syslinux, NTLDR o iBoot, no son en sí mismos sistemas operativos, pero pueden cargar un sistema operativo correctamente y transferirle la ejecución; Posteriormente, el sistema operativo se inicializa y puede cargar controladores de dispositivos adicionales. El cargador de arranque de segunda etapa no necesita controladores para su propio funcionamiento, sino que puede utilizar métodos genéricos de acceso al almacenamiento proporcionados por el firmware del sistema, como BIOS o Open Firmware, aunque normalmente con funcionalidad de hardware restringida y menor rendimiento.
Se pueden configurar muchos cargadores de arranque para ofrecer al usuario múltiples opciones de arranque. Estas opciones pueden incluir diferentes sistemas operativos (para arranque dual o múltiple desde diferentes particiones o unidades), diferentes versiones del mismo sistema operativo (en caso de que una nueva versión tenga problemas inesperados), diferentes opciones de carga del sistema operativo (por ejemplo, arrancar en un rescate o modo seguro), y algunos programas independientes que pueden funcionar sin un sistema operativo, como probadores de memoria (por ejemplo, memtest86+), un shell básico (como en GNU GRUB) o incluso juegos (consulte la Lista de juegos de arranque de PC). Algunos cargadores de arranque también pueden cargar otros cargadores de arranque; por ejemplo, GRUB carga BOOTMGR en lugar de cargar Windows directamente. Por lo general, una opción predeterminada se preselecciona con un retraso de tiempo durante el cual un usuario puede presionar una tecla para cambiar la opción; Después de este retraso, la opción predeterminada se ejecuta automáticamente para que el arranque normal pueda ocurrir sin interacción.
El proceso de arranque se puede considerar completo cuando la computadora está lista para interactuar con el usuario o el sistema operativo es capaz de ejecutar programas del sistema o programas de aplicación.
Muchos sistemas integrados deben iniciarse inmediatamente. Por ejemplo, esperar un minuto para que se encienda un televisor digital o un dispositivo de navegación GPS es generalmente inaceptable. Por lo tanto, dichos dispositivos cuentan con sistemas de software en ROM o memoria flash para que el dispositivo pueda comenzar a funcionar de inmediato; Se necesita poca o ninguna carga, porque la carga se puede precalcular y almacenar en la ROM cuando se crea el dispositivo.
Los sistemas grandes y complejos pueden tener procedimientos de arranque que se desarrollan en múltiples fases hasta que finalmente el sistema operativo y otros programas están cargados y listos para ejecutarse. Debido a que los sistemas operativos están diseñados como si nunca se iniciaran ni se detuvieran, un cargador de arranque podría cargar el sistema operativo, configurarse como un mero proceso dentro de ese sistema y luego transferir irrevocablemente el control al sistema operativo. El gestor de arranque finaliza normalmente como lo haría cualquier otro proceso.
Arranque de red
La mayoría de las computadoras también son capaces de arrancar a través de una red informática. En este escenario, el sistema operativo se almacena en el disco de un servidor y ciertas partes del mismo se transfieren al cliente mediante un protocolo simple como el Protocolo trivial de transferencia de archivos (TFTP). Una vez transferidas estas partes, el sistema operativo asume el control del proceso de arranque.
Al igual que con el cargador de inicio de segunda etapa, el inicio de la red comienza utilizando métodos genéricos de acceso a la red proporcionados por la ROM de inicio de la interfaz de red, que generalmente contiene una imagen del entorno de ejecución previa al inicio (PXE). No se requieren controladores, pero la funcionalidad del sistema está limitada hasta que se transfieren e inician el kernel y los controladores del sistema operativo. Como resultado, una vez que se ha completado el arranque basado en ROM, es completamente posible arrancar en red en un sistema operativo que no tiene la capacidad de usar la interfaz de red.
Contenido relacionado
Tarjeta perforada
CPython
Arquitectura Harvard