Cargador de arranque

Software responsable de iniciar la computadora y cargar otro software en la memoria de la CPU
GNU GRUB, un popular gestor de arranque de código abierto
Cargador de arranque de Windows

Un gestor de arranque , también escrito como boot loader [1] [2] o llamado cargador de arranque , es un programa informático que se encarga de arrancar un ordenador. Si también ofrece un menú interactivo con múltiples opciones de arranque, se suele denominar gestor de arranque . [2]

Cuando se apaga una computadora, su software, incluidos los sistemas operativos, el código de aplicación y los datos, permanece almacenado en la memoria no volátil . Cuando se enciende la computadora, normalmente no tiene un sistema operativo ni su cargador en la memoria de acceso aleatorio (RAM). La computadora primero ejecuta un programa relativamente pequeño almacenado en la memoria de solo 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 dispositivo de bloque , p. ej., flash NAND) o dispositivos desde los cuales se pueden cargar los programas y datos del sistema operativo en la RAM.

Algunos sistemas informáticos anteriores, al recibir una señal de arranque de un operador humano o un dispositivo periférico, pueden 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 indicarle a la CPU las instrucciones e iniciar su ejecución. Estas instrucciones generalmente inician una operación de entrada desde algún dispositivo periférico (que puede ser seleccionable por el operador mediante un interruptor). Otros sistemas pueden enviar comandos de hardware directamente a dispositivos periféricos o controladores de E/S que hacen que se realice una operación de entrada extremadamente simple (como "leer el sector cero del dispositivo del sistema en la memoria comenzando en la ubicación 1000"), cargando efectivamente una pequeña cantidad de instrucciones del cargador de arranque en la memoria; luego, se puede usar una señal de finalización del dispositivo de E/S para iniciar la ejecución de las instrucciones por parte de la CPU.

Los ordenadores más pequeños suelen utilizar mecanismos de cargador de arranque menos flexibles pero más automáticos para garantizar que el ordenador se inicie rápidamente y con una configuración de software predeterminada. En muchos ordenadores de sobremesa, por ejemplo, el proceso de arranque comienza con la CPU ejecutando el software contenido en la ROM (por ejemplo, la BIOS de un IBM PC o un IBM PC compatible ) en una dirección predefinida (algunas CPU, incluidas las de la serie Intel x86 , están diseñadas para ejecutar este software tras el reinicio sin ayuda externa). Este software contiene una funcionalidad rudimentaria para buscar dispositivos aptos para participar en el arranque, y cargar un pequeño programa desde una sección especial (más habitualmente el sector de arranque ) del dispositivo más prometedor, normalmente empezando en un punto de entrada fijo como el inicio del sector.

Cargador de arranque de primera etapa

Un gestor de arranque de primera etapa es un programa compacto de 512 bytes que reside en el Registro de arranque maestro (MBR) y se ejecuta cuando se inicia una computadora. Se ejecuta en modo real de 16 bits en la dirección 0x7C00, realiza una inicialización mínima del hardware, configura un entorno de ejecución básico y ubica el gestor de arranque de segunda etapa. Su principal desafío radica en realizar estas tareas dentro de estrictas restricciones de tamaño y al mismo tiempo gestionar posibles fallas de hardware. El gestor de arranque debe navegar por las estructuras de disco, a menudo implementando compatibilidad con el sistema de archivos FAT , y administrar la delicada transición desde el estado de inicio del BIOS a un entorno estable para la siguiente etapa de arranque.

Los cargadores de arranque pueden enfrentar restricciones peculiares, especialmente en tamaño; por ejemplo, en las primeras IBM PC y compatibles, un sector de arranque normalmente debería funcionar con 510 bytes de código (o menos) y en solo 32 KiB [3] [4] (luego relajado a 64 KiB [5] ) de memoria del sistema y solo usar instrucciones compatibles con los procesadores 8088 / 8086 originales . La primera etapa de los cargadores de arranque de PC (FSBL, first-stage boot loader) ubicados en discos fijos y unidades extraíbles deben 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 también se deben admitir 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), una marca de tiempo de disco (6 bytes), una Partición Activa Avanzada (18 bytes) o cargadores de arranque múltiples especiales en algunos entornos.

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 volúmenes FAT12 y FAT16 desde DOS 4.0, mientras que el EBPB FAT32 introducido con DOS 7.1 requiere incluso 87 bytes, dejando solo 423 bytes para el cargador de arranque cuando se asume un tamaño de sector de 512 bytes. Los sectores de arranque de Microsoft, por lo tanto, tradicionalmente imponían ciertas restricciones al proceso de arranque. Por ejemplo, el archivo de arranque tenía que estar ubicado en una posición fija en el directorio raíz del sistema de archivos y almacenado dentro de sectores consecutivos, [6] [7] condiciones atendidas por el comando y ligeramente relajadas en versiones posteriores de DOS. [7] [nb 1] El cargador de arranque pudo entonces cargar los primeros tres sectores del archivo en la memoria, que contenía otro cargador de arranque integrado capaz de cargar el resto del archivo en la memoria. [7] Cuando Microsoft añadió soporte para LBA y FAT32, cambió a un cargador de arranque que alcanzaba más de dos sectores físicos, utilizando 386 instrucciones por razones de tamaño. Al mismo tiempo, otros proveedores lograron comprimir mucha más funcionalidad en un solo sector de arranque sin relajar las restricciones originales sobre la memoria mínima disponible (32 KiB) y el soporte del procesador (8088/8086). [nb 2] Por ejemplo, los sectores de arranque DR-DOS pueden localizar el archivo de arranque en los sistemas de archivos FAT12, FAT16 y FAT32, y cargarlo en la memoria como un todo a través de CHS o LBA, incluso si el archivo no está almacenado en una ubicación fija y en sectores consecutivos. [8] [3] [9] [10] [11] [nb 3] [nb 2]SYS

BIOS y UEFI no solo pueden cargar múltiples sistemas operativos desde un dispositivo no volátil, sino que también pueden inicializar el hardware del sistema para los sistemas operativos cargados.

Algunos 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 funcionan sin la estricta limitación de 512 bytes de sus contrapartes de primera etapa. Se ejecutan en un entorno más sofisticado, que generalmente varía de 8 KB a varios megabytes de tamaño. Este espacio expandido permite la implementación de características complejas que incluyen soporte para múltiples sistemas de archivos, configuración de tiempo de ejecución e interfaces de menú del cargador de arranque. Los cargadores de arranque de segunda etapa realizan una inicialización de hardware integral. Consultan y configuran varios componentes del sistema, incluidos controladores de memoria , controladores de interrupción y periféricos esenciales. Las implementaciones modernas a menudo manejan tablas ACPI , inicialización del controlador USB y configuración gráfica preliminar. 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; el sistema operativo posteriormente se inicializa a sí mismo y puede cargar controladores de dispositivo adicionales . El cargador de arranque de segunda etapa no necesita controladores para su propio funcionamiento, sino que puede utilizar métodos de acceso de almacenamiento genéricos proporcionados por el firmware del sistema, como el BIOS o Open Firmware , aunque normalmente con funcionalidad de hardware restringida y menor rendimiento. [12]

Las implementaciones de segunda etapa pueden incluir interfaces de usuario interactivas, que permiten la selección de opciones de arranque y la modificación de parámetros. Manejan la carga del núcleo, incluido el procesamiento de imágenes initrd/initramfs , y pueden pasar parámetros de arranque al núcleo . Muchos implementan diseños modulares que admiten módulos cargables para funcionalidad adicional. 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 modo de rescate o 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 Lista de juegos de PC Booter ). [13] 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, se preselecciona una opción predeterminada con un retraso de tiempo durante el cual un usuario puede presionar una tecla para cambiar la opción; Después de este retraso, se ejecuta automáticamente la opción predeterminada para que se pueda iniciar con normalidad sin interacción. También pueden gestionar la compresión, la verificación criptográfica y la carga en cadena de otros cargadores de arranque. 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.

Cargadores de arranque integrados y de múltiples etapas

Muchos sistemas integrados deben arrancar inmediatamente. Por ejemplo, esperar un minuto para que se inicie un televisor digital o un dispositivo de navegación GPS es generalmente inaceptable. Por lo tanto, estos dispositivos tienen sistemas de software en la memoria ROM o flash para que el dispositivo pueda comenzar a funcionar inmediatamente; se necesita poca o ninguna carga, porque la carga se puede calcular previamente y almacenar en la ROM cuando se fabrica el dispositivo.

Los sistemas grandes y complejos pueden tener procedimientos de arranque que se llevan a cabo en varias fases hasta que finalmente el sistema operativo y otros programas se cargan y están 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 puede cargar el sistema operativo, configurarse como un mero proceso dentro de ese sistema y luego transferir irrevocablemente el control al sistema operativo. El cargador de arranque luego finaliza normalmente como lo haría cualquier otro proceso.

Arranque de red

La mayoría de las computadoras también pueden 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 que se han transferido estas partes, el sistema operativo asume el control del proceso de arranque.

Al igual que con el cargador de arranque de segunda etapa, el arranque en red comienza utilizando métodos de acceso a red genéricos proporcionados por la ROM de arranque de la interfaz de red, que normalmente contiene una imagen de entorno de ejecución de prearranque (PXE). No se requieren controladores, pero la funcionalidad del sistema está limitada hasta que se transfieran e inicien el núcleo y los controladores del sistema operativo. Como resultado, una vez que se ha completado el arranque basado en ROM, es totalmente posible arrancar en red un sistema operativo que no tiene la capacidad de utilizar la interfaz de red.

Véase también

Notas

  1. ^ El manual de PC DOS 5.0 afirma incorrectamente que los archivos del sistema ya no necesitan estar contiguos. Sin embargo, para que el proceso de arranque funcione, los archivos del sistema aún deben ocupar las primeras dos entradas del directorio y los primeros tres sectores de IBMBIO.COMaún deben almacenarse de manera contigua. SYScontinúa ocupándose de estos requisitos.
  2. ^ ab Como ejemplo, mientras que la funcionalidad extendida de los MBR y sectores de arranque DR-DOS en comparación con sus contrapartes MS-DOS / PC DOS aún se podía lograr utilizando técnicas de optimización de código convencionales hasta 7.05 , para la adición de soporte LBA , FAT32 y LOADER, los sectores 7.07 tuvieron que recurrir a código automodificable , programación a nivel de código de operación , utilización controlada de efectos secundarios , superposición de datos/código de múltiples niveles y técnicas de plegado algorítmico para comprimir todo en un solo sector físico, ya que era un requisito para la compatibilidad con versiones anteriores y cruzadas con otros sistemas operativos en escenarios de arranque múltiple y carga en cadena .
  3. ^ Hay una excepción a la regla de que los VBR de DR-DOS cargarán el archivo completo en la memoria: si el archivo es más grande que unos 29 KB, intentar cargar el archivo completo en la memoria haría que el cargador de arranque sobrescribiera la pila y reubicara la tabla de parámetros del disco (DPT/FDPB). Por lo tanto, un VBR de DR-DOS 7.07 solo cargaría los primeros 29 KB del archivo en la memoria, confiando en otro cargador integrado en la primera parte de para verificar esta condición y cargar el resto del archivo en la memoria por sí mismo si fuera necesario. Esto no causa problemas de compatibilidad, ya que el tamaño de nunca excedió este límite en versiones anteriores sin este cargador. Combinado con una estructura de entrada dual, esto también permite que el sistema sea cargado por un VBR de PC DOS , que cargaría solo los primeros tres sectores del archivo en la memoria.IBMBIO.COMIBMBIO.COMIBMBIO.COMIBMBIO.COM

Referencias

  1. ^ "GNU GRUB - Proyecto GNU - Free Software Foundation (FSF)". www.gnu.org . Consultado el 27 de septiembre de 2021 .
  2. ^ ab "systemd-boot". www.freedesktop.org . Consultado el 27 de septiembre de 2021 .
  3. ^ desde Paul, Matthias R. (2 de octubre de 1997) [29 de septiembre de 1997]. «Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT y BOOT.TXT - Una breve descripción de cómo se inicia OpenDOS». Archivado desde el original el 4 de octubre de 2003. Consultado el 29 de marzo de 2009 .[1]
  4. ^ Sakamoto, Masahiko (13 de mayo de 2010). "¿Por qué BIOS carga MBR en 7C00h en x86?". glamenv-septzen.net . Consultado el 22 de agosto de 2012 .
  5. ^ Compaq computer corporation; Phoenix Technologies ltd; Intel corporation (11 de enero de 1996). «BIOS boot Specification 1.01» (PDF) . Consultado el 21 de diciembre de 2017 .
  6. ^ Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Reuben; Borman, Rob; Butler, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Farmer, Rick; Gates, Bill ; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W.; Kermaani, Kaamel; King, Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc ; McKinney, Bruce; Martin, Pascal; Mathers, Estelle; Matthews, Bob; Melin, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim ; Pérez, Gary; Peters, Chris; Petzold, Charles ; Pollock, John; Reynolds, Aaron; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Short, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Asesores técnicos". La enciclopedia MS-DOS: versiones 1.0 a 3.2 . Por Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom; Kyle, Jim; Letwin, Gordon ; Petzold, Charles ; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, Van; Wong, William; Woodcock, JoAnne (edición completamente reelaborada). Redmond, Washington, EE. UU.: Microsoft Press . ISBN 1-55615-049-0. LCCN  87-21452. OCLC  16581341.(xix+1570 páginas; 26 cm) (NB: Esta edición fue publicada en 1988 después de una extensa reelaboración de la primera edición retirada de 1986 por un equipo diferente de autores. [2])
  7. ^ abc Chappell, Geoff (enero de 1994). "Capítulo 2: La huella del sistema". En Schulman, Andrew; Pedersen, Amorette (eds.). DOS Internals . La serie de programación de Andrew Schulman (1.ª impresión, 1.ª ed.). Addison-Wesley . ISBN 978-0-201-60835-9.(xxvi+738+iv páginas, disquete de 3,5" [3][4]) Erratas: [5][6][7]
  8. ^ Rosch, Winn L. (12 de febrero de 1991). "DR DOS 5.0 - ¿El mejor sistema operativo?". PC Magazine . Vol. 10, no. 3. págs. 241–246, 257, 264, 266. Archivado desde el original el 25 de julio de 2019. Consultado el 26 de julio de 2019. […] se ha mejorado en DR DOS 5.0, por lo que no tiene que preocuparse por dejar el primer clúster libre en un disco que desea convertir en arrancable. Los archivos del sistema DR DOS se pueden ubicar en cualquier lugar del disco, por lo que cualquier disco con suficiente espacio libre puede configurarse para arrancar su sistema. […]SYS(NB. La fuente atribuye esto a la SYSutilidad mientras que, de hecho, se trata de una característica del cargador de arranque avanzado en el sector de arranque. SYSSimplemente coloca este sector en el disco).
  9. ^ Paul, Matthias R. (17 de enero de 2001). «FAT32 en DR-DOS». opendos@delorie . Archivado desde el original el 6 de octubre de 2017 . Consultado el 6 de octubre de 2017 . […] El sector de arranque de DR-DOS […] busca el archivo ( DRBIOS.SYS ) y luego carga el archivo *completo* en la memoria antes de pasarle el control. […]IBMBIO.COM
  10. ^ Paul, Matthias R. (20 de febrero de 2002). "No se puede copiar". opendos@delorie . Archivado desde el original el 6 de octubre de 2017 . Consultado el 9 de octubre de 2017 . […] El sector de arranque de DR-DOS carga el archivo completo en la memoria antes de ejecutarlo. No le importa en absoluto el archivo, que es cargado por . […] El sector de arranque de DR-DOS […] encontrará los […] archivos del núcleo siempre que estén almacenados lógicamente en el directorio raíz. Su ubicación física en el disco, y si están fragmentados o no, no le importa al sector de arranque de DR-DOS. Por lo tanto, puede simplemente copiar los archivos del núcleo al disco (incluso con un simple ), y tan pronto como el sector de arranque sea un sector de DR-DOS, los encontrará y los cargará. Por supuesto, es difícil poner todo esto en sólo 512 bytes, el tamaño de un solo sector, pero esto es una mejora importante en cuanto a conveniencia si tiene que configurar un sistema DR-DOS, y también es la clave para que funcione la utilidad DR-DOS multi-OS LOADER . Los archivos del núcleo MS-DOS deben residir en ubicaciones específicas, pero los archivos DR-DOS pueden estar en cualquier lugar, por lo que no tiene que intercambiarlos físicamente cada vez que inicia el otro sistema operativo. Además, permite actualizar un sistema DR-DOS simplemente copiando los archivos del núcleo sobre los antiguos, sin necesidad de procedimientos de configuración difíciles como los requeridos para MS-DOS/ PC DOS . Incluso puede tener múltiples archivos del núcleo DR-DOS con diferentes nombres de archivo almacenados en la misma unidad, y LOADER cambiará entre ellos de acuerdo con los nombres de archivo que aparecen en el archivo BOOT.LST . […]IBMBIO.COMIBMDOS.COMIBMBIO.COMCOPYSYS
  11. ^ Paul, Matthias R. (14 de agosto de 2017) [7 de agosto de 2017]. "La saga continua de Windows 3.1 en modo mejorado en OmniBook 300". MoHPC - el museo de las calculadoras HP . Archivado desde el original el 6 de octubre de 2017. Consultado el 6 de octubre de 2017. […] el DR-DOS no solo particiona un disco, sino que también puede formatear los volúmenes recién creados e inicializar sus sectores de arranque de una sola vez, por lo que no hay riesgo de estropear accidentalmente el volumen equivocado y no hay necesidad de o . Después, puede simplemente copiar los archivos DR-DOS restantes, incluidos los archivos del sistema. Es importante saber que, a diferencia de MS-DOS / PC DOS , DR-DOS tiene sectores de arranque "inteligentes" que realmente "montarán" el sistema de archivos para buscar y cargar los archivos del sistema en el directorio raíz en lugar de esperar que se coloquen en una ubicación determinada. Físicamente, los archivos del sistema pueden estar ubicados en cualquier lugar y también pueden estar fragmentados. […] FDISKFORMAT /SSYS
  12. ^ "Capítulo 6: Solución de problemas de arranque y de disco". Kit de recursos del servidor Windows NT . Microsoft. Archivado desde el original el 15 de mayo de 2007.
  13. ^ "Tint". coreboot . Consultado el 20 de noviembre de 2010 .
  • Cargador de arranque - Wiki OSDev
Obtenido de "https://es.wikipedia.org/w/index.php?title=Cargador de arranque&oldid=1256568409"