Arranque (informática)
En informática, el arranque o secuencia de arranque (en inglés: bootstrapping, boot o booting) es el proceso que inicia el gestor de arranque que es un programa ejecutado por el BIOS cuando se enciende una computadora. Se encarga de la inicialización del sistema operativo y de los dispositivos.[1]
Además de cargar un sistema operativo o una utilidad independiente, el proceso de inicio también puede cargar un programa de volcado de almacenamiento para diagnosticar problemas en un sistema operativo.
Boot es la abreviatura de bootstrap[2][3] o bootstrap load y deriva de la frase en inglés de to pull oneself up by one's bootstraps (trad. levantarse por medios propios).[4][5] El uso llama la atención sobre el requisito de que, si la mayoría del software se carga en un ordenador mediante otro software que ya se está ejecutando en el ordenador, debe existir algún mecanismo para cargar el software inicial del hardware.[6] Los primeros ordenadores usaban una variedad de métodos ad-hoc para obtener un pequeño programa en la memoria para resolver este problema. La invención de la memoria de solo lectura (ROM) de varios tipos resolvió esta paradoja al permitir que los ordenadores se vendían con un programa de inicio que no se podía borrar. El crecimiento de la capacidad de ROM ha permitido implementar procedimientos de puesta en marcha cada vez más elaborados.
Cargador de arranque
Un cargador o gestor de arranque (en inglés: bootloader) es un programa sencillo (que no tiene la totalidad de las funcionalidades de un sistema operativo) diseñado exclusivamente para preparar todo lo que necesita el sistema operativo para funcionar. Normalmente se utilizan los cargadores de arranque multietapas, en los que varios programas pequeños se suman los unos a los otros, hasta que el último de ellos carga el sistema operativo.
En las computadoras modernas (después de 1975), el proceso de arranque comienza con la CPU ejecutando los programas contenidos en la memoria ROM en una dirección predefinida (se configura la CPU para ejecutar este programa, sin ayuda externa, al encender la computadora).
Cargador de arranque de segunda etapa
Este programa contiene funcionalidades rudimentarias para buscar unidades que se puedan seleccionar para participar en el arranque, y cargar un pequeño programa desde una sección especial de la unidad más prometedora. El pequeño programa no es, en sí mismo, un sistema operativo sino, simplemente, un cargador de arranque de segundo nivel, como Lilo o Grub, que es capaz de cargar el sistema operativo propiamente dicho y, finalmente, transferirle el control. El sistema se auto-iniciará y puede cargar los controladores de dispositivos y otros programas que son necesarios para el normal funcionamiento del sistema operativo.
El proceso de arranque se considera completo cuando la computadora está preparada para contestar a los requerimientos del exterior. La típica computadora moderna arranca en, aproximadamente, un minuto (del cual, 15 segundos son empleados por los cargadores de arranque preliminares y, el resto, por el cargador del sistema operativo), mientras que los grandes servidores pueden necesitar varios minutos para arrancar y comenzar todos los servicios; para asegurar una alta disponibilidad, ofrecen unos servicios antes que otros.
La mayoría de los sistemas embebidos deben arrancar casi instantáneamente, por ejemplo, esperar un minuto para poder ver la televisión se considera inaceptable. Por ello, tienen el sistema operativo en la ROM o memoria flash, gracias a lo que pueden ser ejecutados de forma casi instantánea.
Bootsplash & Splashy
En Linux, durante el proceso de arranque se muestra por pantalla la secuencia de módulos y otros componentes del sistema operativo en modo texto. Por defecto se muestra así, pero un parche llamado splashy,[7] (sustituto de bootsplash[8]) permite ocultar esas líneas de texto (con la opción "quiet" y "splash" en las líneas de arranque), ofreciendo en su lugar una imagen más amigable, con una barra de progreso. No obstante se puede cambiar al modo "verbose" (detallado) pulsando la tecla F2, lo que nos mostrará de nuevo los mensajes propios del proceso de arranque. También dota a la consola de Linux de un fondo totalmente configurable.
Todo esto es posible gracias al framebuffer, que nos posibilita las consolas a resoluciones y profundidades de color altas.
Ordenadores personales (PC)
Dispositivos de arranque
El dispositivo de arranque es el dispositivo desde el que se carga el sistema operativo. El firmware UEFI o BIOS de una PC moderna admite el arranque desde varios dispositivos, generalmente una unidad de estado sólido o unidad de disco duro a través de la GPT o Master Boot Record (MBR) en dicha unidad o disco, una unidad de disco óptico (usando El Torito), un dispositivo de almacenamiento masivo USB (unidad flash basada en FTL, tarjeta SD o ranura para tarjeta multimedia, disco duro USB unidad de disco, unidad de disco óptico USB, etc.), o una tarjeta de interfaz de red (usando PXE). Los dispositivos de arranque BIOS más antiguos y menos comunes incluyen disquetes, Zip drives y LS-120.
Normalmente, el firmware del sistema (UEFI o BIOS) permitirá al usuario configurar un "orden de arranque". Si el orden de arranque se establece en "primero, la unidad de DVD; segundo, la unidad de disco duro", entonces el firmware intentará arrancar desde la unidad de DVD y, si esto falla (por ejemplo, porque no hay DVD en la unidad), intentará arrancar desde la unidad de disco duro local.
Por ejemplo, en una PC con Windows instalado en el disco duro, el usuario podría establecer el orden de inicio en el que se indicó anteriormente y luego insertar un Linux Live CD para probar Linux sin tener que instalar un sistema operativo en el disco duro. Este es un ejemplo de arranque dual, en el que el usuario elige qué sistema operativo iniciar después de que el ordenador haya realizado su autocomprobación de encendido (POST). En este ejemplo de arranque dual, el usuario elige insertar o quitar el DVD del ordenador, pero es más común elegir qué sistema operativo arrancar seleccionando desde un menú gestor de arranque en el dispositivo seleccionado, usando el teclado del ordenador para seleccionar desde un menú de arranque BIOS o UEFI, o ambos; el menú de inicio generalmente se ingresa presionando las teclas F8 o F12 durante el POST; la Configuración del BIOS generalmente se ingresa presionando las teclas F2 o DEL durante la POST.[9][10]
Hay varios dispositivos disponibles que permiten al usuario "arrancar rápidamente" en lo que suele ser una variante de Linux para varias tareas sencillas como el acceso a Internet; algunos ejemplos son Splashtop y Latitude ON.[11][12][13]
Secuencia de arranque
Imagen externa | ||
---|---|---|
Award Software BIOS de 2000 durante el arranque. | ||
Atención: este archivo está alojado en un sitio externo, fuera del control de la Fundación Wikimedia. |
Al iniciarse, la CPU x86 de un ordenador personal compatible con IBM, ejecuta en modo real, la instrucción ubicada en vector de reinicio (la dirección de memoria física FFFF0h en 16- procesadores bit x86[14] y FFFFFFF0h en procesadores x86 de 32 y 64 bits[15][16]), generalmente apunta al punto de entrada del firmware (UEFI o BIOS) dentro de la ROM. Esta ubicación de memoria normalmente contiene una instrucción de salto que transfiere la ejecución a la ubicación del programa de inicio del firmware (UEFI o BIOS). Este programa ejecuta una autoprueba de encendido (POST) para comprobar e inicializar los dispositivos necesarios, como la memoria principal (DRAM), el bus PCI y los dispositivos PCI (incluido el funcionamiento integrado ROM opcional). Uno de los pasos más complicados es configurar DRAM sobre SPD, lo que se complica aún más por el hecho de que en este punto la memoria es muy limitada.
Después de inicializar el hardware requerido, el firmware (UEFI o BIOS) pasa por una lista preconfigurada de dispositivos de almacenamiento no volátil ("secuencia de arranque de dispositivo") hasta que encuentre uno que sea de arranque. Un dispositivo MBR de arranque se define como uno que se puede leer y donde los dos últimos bytes del primer sector contienen la palabra little-endian AA55h,[nb 1] encontrada como secuencia de bytes 55h, AAh en el disco (también conocida como Firma de arranque MBR), o donde se establezca de otro modo que el código dentro del sector es ejecutable en PC x86.
Una vez que el BIOS ha encontrado un dispositivo de arranque, carga el sector de arranque en la dirección lineal 7C00h (normalmente segmento:offset 0000h:7C00h,[17][18]: 29 pero algunos BIOS usan erróneamente 07C0h:0000h) y transfieren la ejecución al código de arranque. En el caso de un disco duro, esto se denomina Master Boot Record (MBR). El código MBR convencional comprueba la tabla de particiones del MBR en busca de una partición configurada como "arrancable".[nb 2] (el que tiene el indicador activo establecido). Si se encuentra una partición activa, el código MBR carga el código sector de arranque de esa partición, conocido como Registro de arranque de volumen (VBR), y lo ejecuta. El código de inicio MBR suele ser específico del sistema operativo.
El código de sector de arranque es el cargador de arranque de primera etapa. Se encuentra en discos fijos y unidades extraíbles, y debe caber en los primeros 446 bytes del Master Boot Record para dejar espacio para la tabla de partición predeterminada de 64 bytes con cuatro entradas de partición y la firma de arranque de dos bytes, que requiere el BIOS para un cargador de arranque adecuado — o incluso menos, cuando 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 caregadores multi-boot también deben ser compatibles en algunos entornos. En floppy y superfloppy Volume Boot Records, hasta 59 bytes están ocupados para el Bloque de parámetros de 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 cuando se asume 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,[19][20] condiciones atendidas por el comando SYS
y ligeramente relajado en versiones posteriores de DOS.[20][nb 3] Luego, el cargador de arranque pudo cargar los primeros tres sectores del archivo en la memoria, que resultó contener otro cargador de arranque integrado capaz de cargar el resto del archivo en la memoria.[20] Cuando Microsoft agregó LBA y compatibilidad con FAT32, incluso cambiaron a un cargador de arranque que llegaba a "dos" sectores físicos y usaba instrucciones 386 por razones de tamaño. Al mismo tiempo, otros proveedores lograron incluir mucha más funcionalidad en un solo sector de arranque sin relajar las restricciones originales de solo una memoria disponible mínima (32 KB) y soporte de procesador (8088/8086).[nb 4] Por ejemplo, los sectores de arranque de DR-DOS pueden localizar el archivo de arranque en el sistema 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.[21][17][22][23][24][nb 5][nb 4]
El VBR suele ser específico del sistema operativo; sin embargo, su función principal es cargar y ejecutar el archivo del cargador de arranque del sistema operativo (como bootmgr
o ntldr
), que es el cargador de arranque de segunda etapa, desde una partición activa. Luego, el gestor de arranque carga el kernel del sistema operativo desde el dispositivo de almacenamiento.
Si no hay una partición activa, o el sector de inicio de la partición activa no es válido, el MBR puede cargar un cargador de inicio secundario que seleccionará una partición (a menudo a través de la entrada del usuario) y cargará su sector de inicio, que generalmente carga el kernel del sistema operativo correspondiente. En algunos casos, el MBR también puede intentar cargar cargadores de arranque secundarios antes de intentar arrancar la partición activa. Si todo lo demás falla, debería emitir un INT 18h[18][17] Llamada de interrupción del BIOS (seguido de un INT 19h en caso de que INT 18h regresara) para devolver el control al BIOS, que luego intentaría arrancar otros dispositivos, intentaría un arranque remoto a través de la red.[17]
Muchos sistemas modernos (Intel Macs y PC más nuevos) usan UEFI.[25][26]
A diferencia del BIOS, UEFI (sin Arranque heredado a través de CSM) no depende de los sectores de arranque, el sistema UEFI carga el gestor de arranque (archivo de Aplicación EFI en disco USB o en la Partición del sistema EFI) directamente,[27] y el kernel del sistema operativo es cargado por el gestor de arranque.
Notas
- La firma en el offset
+1FEh
en los sectores de arranque es55h AAh
, que es55h
en offset+1FEh
yAAh
en offset+1FFh
. Dado que la representación little-endian debe asumirse en el contexto de las máquinas compatibles con IBM PC, esto se puede escribir como una palabra de 16 bitsAA55h
en programas para procesadores x86 (tenga en cuenta el orden intercambiado), mientras que tendría que escribirse como55AAh
en programas para otras arquitecturas de CPU usando una representación big-endian. Dado que esto se ha mezclado varias veces en libros e incluso en documentos de referencia originales de Microsoft, este artículo utiliza la representación en disco basada en bytes basada en offset para evitar posibles interpretaciones erróneas. - La partición activa puede contener un cargador de arranque de segunda etapa, por ejemplo, OS/2 Boot Manager, en lugar de un sistema operativo.
- El manual de PC DOS 5.0 afirma incorrectamente que los archivos del sistema ya no necesitan ser contiguos. Sin embargo, para que el proceso de arranque funcione, los archivos del sistema aún deben ocupar las dos primeras entradas del directorio y los primeros tres sectores de IBMBIO.COM aún deben almacenarse de forma contigua. SYS sigue ocupándose de estos requisitos.
- Como ejemplo, mientras que la funcionalidad extendida de DR-DOS MBRs y sector de arranque en comparación con sus contrapartes MS-DOS/PC DOS aún podrían lograrse utilizando técnicas convencionales de optimización de código en lenguaje ensamblador hasta 7.05, para la adición de LBA, FAT32 y LOADER son compatibles con sectores 7.07 tuvieron que recurrir a código automodificable, opcode programación de nivel en lenguaje de máquina, utilización controlada de (documentado) lado efectos, datos/código multinivel superposición y técnicas algorítmicas folding para comprimir todo en un solo sector físico, ya que era un requisito para retrocompatibilidad cruzada con otros sistemas operativos en escenarios de arranque múltiple y carga en cadena.
- Hay una excepción a la regla de que VBR de DR-DOS cargará todo el archivo IBMBIO.COM en la memoria: si el archivo IBMBIO.COM es más grande que 29 KB, intentar cargar todo el archivo en la memoria daría como resultado que el cargador de arranque sobrescriba la pila y reubique 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 IBMBIO.COM para verificar esta condición y cargar el resto de el archivo en la memoria por sí mismo si es necesario. Esto no causa problemas de compatibilidad, ya que el tamaño de IBMBIO.COM nunca superó 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 tres primeros sectores del archivo en la memoria.
Referencias
- McKay, Dave (11 de junio de 2020). «Why Linux’s systemd Is Still Divisive After All These Years» [Por qué el systemd en Linux aún divide a los usuarios después de todos estos años] (html). How-To Geek (en inglés). Archivado desde el original el 11 de junio de 2020. Consultado el 11 de junio de 2020. «When you power on your computer, the hardware boots, and then (according to the type of boot sector your computer uses) either the master boot record (MBR) executes or the Unified Extensible Firmware Interface (UEFI) runs. The last action of both of these is to fire up the Linux kernel. The kernel is loaded into memory, decompresses itself, and initializes. A temporary file system is created in RAM, usually by a utility called initramfs or initrd. This allows the required drivers to be determined and loaded. This, in turn, allows the user-space file system to load and prepare to establish the user-space environment. »
- «bootstrap». Computer Dictionary of Information Technology.
- «Bootstrap». The Free Dictionary.
- «Pull oneself up by bootstraps». Idioms by The Free Dictionary. Consultado el 7 de octubre de 2019.
- «Bootstrap Definition». Tech Terms. Consultado el 2 de octubre de 2019.
- «Pull yourself up by your bootstraps». The Phrase Finder.
- «Welcome to the wiki of the Splashy Project» [Bienvenido a la Wiki del Proyecto Splashy] (html). Debian Org. (en inglés). 8 de marzo de 2010. Archivado desde el original el 27 de julio de 2010. Consultado el 11 de junio de 2020.
- «Welcome to the graphical world of Linux» [Bienvenido al mundo gráfico de Linux] (html). Bootsplash Org. (en inglés). 26 de julio de 2007. Archivado desde el original el 9 de junio de 2010. Consultado el 11 de junio de 2020.
- «List of PC brands with their corresponding hot-keys». www.disk-image.com. Archivado desde el original el 11 de noviembre de 2020. Consultado el 26 de septiembre de 2020.
- «How to Enter the BIOS on Any PC: Access Keys by Manufacturer | Tom's Hardware». www.tomshardware.com. Archivado desde el original el 20 de febrero de 2023. Consultado el 26 de septiembre de 2020.
- Brown, Eric (2 de octubre de 2008). «MontaVista Linux drives Dell's quick-boot feature». linuxdevices.com. Consultado el 20 de noviembre de 2010.
- Larabel, Michael (14 de junio de 2008). «SplashTop Linux On HP, Dell Notebooks?». Phoronix. Archivado desde el original el 5 de octubre de 2016. Consultado el 20 de noviembre de 2010.
- «Voodoo Envy's Instant-On IOS (powered by Splashtop)». YouTube. Archivado desde el original el 10 de marzo de 2023. Consultado el 20 de noviembre de 2010.
- «iAPX 286 Programmer's Reference Manual». Intel. 1983. Section 5.3 SYSTEM INITIALIZATION, p. 5-7. Archivado desde el original el 9 de octubre de 2022. Consultado el 23 de agosto de 2019. «Since the CS register contains F000 (thus specifying a code segment starting at physical address F0000) and the instruction pointer contains FFF0, the processor will execute its first instruction at physical address FFFF0H. »
- «80386 Programmer's Reference Manual». Intel. 1986. Section 10.2.3 First Instructions, p. 10-3. Archivado desde el original el 9 de octubre de 2022. Consultado el 3 de noviembre de 2013. «After RESET, address lines A31-20 are automatically asserted for instruction fetches. This fact, together with the initial values of CS:IP, causes instruction execution to begin at physical address FFFFFFF0H. »
- «Intel 64 and IA-32 Architectures Software Developer's Manual». Intel Corporation. May 2012. Section 9.1.4 First Instruction Executed, p. 2611. Archivado desde el original el 9 de octubre de 2022. Consultado el 23 de agosto de 2012. «The first instruction that is fetched and executed following a hardware reset is located at physical address FFFFFFF0h. This address is 16 bytes below the processor's uppermost physical address. The EPROM containing the software-initialization code must be located at this address. »
- Paul, Matthias R. (2 de octubre de 1997) [1997-09-29]. «Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT and BOOT.TXT - A short description of how OpenDOS is booted». Archivado desde el original el 4 de octubre de 2003. Consultado el 29 de marzo de 2009.
- Compaq Computer Corporation; Phoenix Technologies Ltd; Intel Corporation (11 de enero de 1996). «BIOS Boot Specification 1.01». Archivado desde el original el 9 de octubre de 2022. Consultado el 21 de diciembre de 2017.
- 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 (1988). The MS-DOS Encyclopedia: versions 1.0 through 3.2 (Completely reworked edición). Redmond, Washington, USA: Microsoft Press. ISBN 1-55615-049-0. LCCN 87021452. OCLC 16581341. (xix+1570 pages; 26 cm) (NB. This edition was published in 1988 after extensive rework of the withdrawn 1986 first edition by a different team of authors: «The MS-DOS Encyclopedia (1988)». PCjs Machines. Archivado desde el original el 14 de octubre de 2018.)
- Chappell, Geoff (January 1994). «Chapter 2: The System Footprint». En Schulman, Andrew; Pedersen, Amorette, eds. DOS Internals. The Andrew Schulman Programming Series (1st printing, 1st edición). Addison Wesley Publishing Company. ISBN 978-0-201-60835-9. (xxvi+738+iv pages, 3.5"-floppy ) Errata:
- Rosch, Winn L. (12 de febrero de 1991). «DR DOS 5.0 - The better operating system?». PC Magazine 10 (3): 241–246, 257, 264, 266. Archivado desde el original el 25 de julio de 2019. Consultado el 26 de julio de 2019. «[…] SYS has been improved under DR DOS 5.0 so you don't have to worry about leaving the first cluster free on a disk that you want to make bootable. The DR DOS system files can be located anywhere on the disk, so any disk with enough free space can be set to boot your system. […] ». (NB. The source attributes this to the SYS utility while in fact this is a feature of the advanced bootstrap loader in the boot sector. SYS just plants this sector onto the disk.)
- Paul, Matthias R. (17 de enero de 2001). «FAT32 in DR-DOS». opendos@delorie. Archivado desde el original el 6 de octubre de 2017. Consultado el 6 de octubre de 2017. «[…] The DR-DOS boot sector […] searches for the IBMBIO.COM (DRBIOS.SYS) file and then loads the *whole* file into memory before it passes control to it. […] ».
- Paul, Matthias R. (20 de febrero de 2002). «Can't copy». opendos@delorie. Archivado desde el original el 6 de octubre de 2017. Consultado el 6 de octubre de 2017. «[…] The DR-DOS boot sector loads the whole IBMBIO.COM file into memory before it executes it. It does not care at all about the IBMDOS.COM file, which is loaded by IBMBIO.COM. […] The DR-DOS boot sector […] will find the […] kernel files as long as they are logically stored in the root directory. Their physical location on the disk, and if they are fragmented or not, is don't care for the DR-DOS boot sector. Hence, you can just copy the kernel files to the disk (even with a simply COPY), and as soon as the boot sector is a DR-DOS sector, it will find and load them. Of course, it is difficult to put all this into just 512 bytes, the size of a single sector, but this is a major convenience improvement if you have to set up a DR-DOS system, and it is also the key for the DR-DOS multi-OS LOADER utility to work. The MS-DOS kernel files must reside on specific locations, but the DR-DOS files can be anywhere, so you don't have to physically swap them around each time you boot the other OS. Also, it allows to upgrade a DR-DOS system simply by copying the kernel files over the old ones, no need for SYS, no difficult setup procedures as required for MS-DOS/PC DOS. You can even have multiple DR-DOS kernel files under different file names stored on the same drive, and LOADER will switch between them according to the file names listed in the BOOT.LST file. […] ».
- Paul, Matthias R. (14 de agosto de 2017) [2017-08-07]. «The continuing saga of Windows 3.1 in enhanced mode on OmniBook 300». MoHPC - the Museum of HP Calculators. Archivado desde el original el 6 de octubre de 2017. Consultado el 6 de octubre de 2017. «[…] the DR-DOS FDISK does not only partition a disk, but can also format the freshly created volumes and initialize their boot sectors in one go, so there's no risk to accidentally mess up the wrong volume and no need for FORMAT /S or SYS. Afterwards, you could just copy over the remaining DR-DOS files, including the system files. It is important to know that, in contrast to MS-DOS/PC DOS, DR-DOS has "smart" boot sectors which will actually "mount" the file-system to search for and load the system files in the root directory instead of expecting them to be placed at a certain location. Physically, the system files can be located anywhere and also can be fragmented. […] ».
- «Intel Platform Innovation Framework for EFI». Intel. Archivado desde el original el 21 de agosto de 2011. Consultado el 7 de enero de 2008.
- «OpenBIOS - coreboot». coreboot.org. Archivado desde el original el 18 de marzo de 2013. Consultado el 20 de marzo de 2013.
- «UEFI - OSDev Wiki». wiki.osdev.org. Archivado desde el original el 12 de noviembre de 2020. Consultado el 26 de septiembre de 2020.