Articulo de referencia

Arranque

Diagrama de flujo del arranque de un PC compatible con IBM En informática , el arranque es el proceso de iniciar un ordenador mediante hardware , como un botón físico, o mediant...

Diagrama de flujo del arranque de un PC compatible con IBM

En informática , el arranque es el proceso de iniciar un ordenador mediante hardware , como un botón físico, o mediante un comando de software , descrito por primera vez en la década de 1950 como la "técnica de arranque". [ 1 ] Después de encenderse, la unidad central de procesamiento (CPU) del ordenador no tiene software en su memoria principal , por lo que algún proceso debe cargar software en la memoria antes de que pueda ejecutarse. Esto puede hacerse mediante hardware o firmware en la CPU, o mediante un procesador independiente en el sistema informático. En algunos sistemas, un reinicio al encender (POR) no inicia el arranque, y el operador debe iniciarlo después de que el POR se complete. IBM utiliza el término Carga Inicial de Programa ( IPL ) en algunas [ nb 1 ] líneas de productos.

Reiniciar un ordenador también se denomina reinicio , que puede ser «forzado», por ejemplo, después de que se desconecta la alimentación eléctrica de la CPU, o «suave», donde no se corta la alimentación. En algunos sistemas, un arranque suave puede, opcionalmente, borrar la RAM a cero. Tanto el arranque forzado como el suave pueden iniciarse mediante hardware, como pulsar un botón, o mediante un comando de software. El arranque se completa cuando se alcanza el sistema operativo en tiempo de ejecución , normalmente el sistema operativo y algunas aplicaciones, [ nb 2 ] .

El proceso de reactivar un ordenador desde el modo de suspensión no implica el arranque; sin embargo, su recuperación desde el estado de hibernación sí. En algunos sistemas embebidos , el arranque no requiere una secuencia perceptible para funcionar y, al encenderse, simplemente ejecuta programas operativos almacenados en la memoria de solo lectura (ROM). Todos los sistemas informáticos son máquinas de estados , y el reinicio puede ser el único método para volver a un estado inicial predeterminado desde un estado bloqueado no deseado.

Además de cargar un sistema operativo o una utilidad independiente, el proceso de arranque también puede cargar un programa de volcado de memoria para diagnosticar problemas en un sistema operativo.

Boot es la abreviatura de bootstrap [ 2 ] [ 3 ] y deriva de la frase "levantarse por las propias correas" [ 4 ] [ 5 ] . El uso llama la atención sobre el requisito de que, si la mayoría del software se carga en una computadora mediante otro software que ya se está ejecutando en ella, debe existir algún mecanismo para cargar el software inicial en la computadora [ 6 ] . Las primeras computadoras usaban una variedad de métodos ad hoc para introducir un pequeño programa (el "cargador de arranque" o "bootstrap") en la memoria para resolver este problema. La invención de la ROM de varios tipos resolvió esta paradoja al permitir que las computadoras se enviaran con un programa de inicio, almacenado en la ROM de arranque de la computadora, que no se podía borrar. El aumento en la capacidad de la ROM ha permitido implementar procedimientos de inicio cada vez más elaborados.

El primer uso registrado conocido de "boot" como forma abreviada de "bootstrap" es 1975. [ 7 ]

Historia

Interruptores y cables utilizados para programar ENIAC (1946)

Existen diversos métodos para cargar un programa inicial corto en una computadora. Estos métodos van desde la simple entrada física hasta el uso de medios extraíbles que pueden almacenar programas más complejos.

Ejemplos de ROM de circuitos preintegrados

Las primeras computadoras

Las primeras computadoras de las décadas de 1940 y 1950 fueron proyectos de ingeniería únicos que podían tardar semanas en programarse, y la carga de programas era uno de los muchos problemas que debían resolverse. Una de las primeras computadoras, la ENIAC , no almacenaba ningún programa en la memoria, sino que se configuraba para cada problema mediante una disposición de cables interconectados. El arranque automático no se aplicaba a la ENIAC, cuya configuración de hardware estaba lista para resolver problemas tan pronto como se encendía.

El sistema EDSAC , la segunda computadora de programa almacenado que se construyó, utilizaba interruptores de paso para transferir un programa fijo a la memoria al presionar su botón de inicio. El programa almacenado en este dispositivo, que David Wheeler completó a finales de 1948, cargaba instrucciones adicionales desde cinta perforada y luego las ejecutaba. [ 8 ] [ 9 ]

Primeros ordenadores comerciales

Las primeras computadoras programables para la venta comercial, como la UNIVAC I y la IBM 701 [ 10 ], incluían funciones para simplificar su funcionamiento. Por lo general, incluían instrucciones que realizaban una operación completa de entrada o salida. La misma lógica de hardware podía utilizarse para cargar el contenido de una tarjeta perforada (las más comunes) u otros medios de entrada, como un tambor magnético o una cinta magnética , que contenían un programa de arranque con solo pulsar un botón. Este concepto de arranque recibió diversos nombres en las computadoras IBM de los años 50 y principios de los 60, pero IBM utilizó el término "Carga Inicial del Programa" con la IBM 7030 Stretch [ 11 ] y posteriormente lo empleó en sus líneas de mainframes, comenzando con el System/360 en 1964.

Tarjeta perforada de carga de programa inicial para la IBM 1130 (1965)

El ordenador IBM 701 (1952-1956) tenía un botón de "Carga" que iniciaba la lectura de la primera palabra de 36 bits en la memoria principal desde una tarjeta perforada en un lector de tarjetas , una cinta magnética en una unidad de cinta o una unidad de tambor magnético, según la posición del interruptor selector de carga. La media palabra izquierda de 18 bits se ejecutaba entonces como una instrucción, que normalmente leía palabras adicionales en la memoria. [ 12 ] [ 13 ] A continuación, se ejecutaba el programa de arranque cargado, que, a su vez, cargaba un programa más grande desde ese medio en la memoria sin ayuda adicional del operador humano. Los IBM 704 , [ 14 ] IBM 7090 , [ 15 ] e IBM 7094 [ 16 ] tenían mecanismos similares, pero con diferentes botones de carga para diferentes dispositivos. El término "arranque" se ha utilizado en este sentido desde al menos 1958. [ 17 ]

Consola IBM System/3 de la década de 1970. El interruptor selector de carga de programas está en la parte inferior izquierda; el interruptor de carga de programas está en la parte inferior derecha.

Otros ordenadores IBM de esa época tenían características similares. Por ejemplo, el sistema IBM 1401 (1959) utilizaba un lector de tarjetas para cargar un programa desde una tarjeta perforada. Los 80 caracteres almacenados en la tarjeta se leían en las ubicaciones de memoria 001 a 080; a continuación, el ordenador saltaba a la ubicación de memoria 001 para leer su primera instrucción almacenada. Esta instrucción siempre era la misma: mover la información de estas primeras 80 ubicaciones de memoria a un área de ensamblaje donde la información de las tarjetas perforadas 2, 3, 4, etc., se podía combinar para formar el programa almacenado. Una vez que esta información se había movido al área de ensamblaje, la máquina saltaba a una instrucción en la ubicación 080 (leer una tarjeta) y se leía la siguiente tarjeta y se procesaba su información.

Otro ejemplo fue la IBM 650 (1953), una máquina decimal, que tenía un grupo de diez interruptores de 10 posiciones en su panel de operador que eran direccionables como una palabra de memoria (dirección 8000) y podían ejecutarse como una instrucción. Así, al configurar los interruptores en 7004000400 y presionar el botón correspondiente, se leía la primera tarjeta del lector de tarjetas en la memoria (código de operación 70), comenzando en la dirección 400 y luego saltaba a 400 para comenzar a ejecutar el programa en esa tarjeta. [ 18 ] Las IBM 7040 y 7044 tienen un mecanismo similar, en el que el botón Cargar hace que se ejecute la instrucción configurada en las teclas de entrada del panel frontal, y el canal que configura esa instrucción recibe una orden para transferir datos a la memoria comenzando en la dirección 00100; cuando esa transferencia termina, la CPU salta a la dirección 00101. [ 19 ]

Los competidores de IBM también ofrecían la carga de programas mediante un solo botón.

  • El CDC 6600 (c. 1964) tenía un panel de arranque en seco con 144 interruptores de palanca; el interruptor de arranque en seco introducía 12 palabras de 12 bits desde los interruptores de palanca a la memoria del procesador periférico ( PP ) 0 e iniciaba la secuencia de carga haciendo que el PP 0 ejecutara el código cargado en la memoria. [ 20 ] El PP 0 cargaba el código necesario en su propia memoria y luego inicializaba los demás PP.
  • El GE 645 (c. 1965) tenía un botón "SYSTEM BOOTLOAD" que, al pulsarlo, hacía que uno de los controladores de E/S cargara un programa de 64 palabras en la memoria desde una memoria de solo lectura de diodos y generara una interrupción para que ese programa comenzara a ejecutarse. [ 21 ]
  • El primer modelo del PDP-10 tenía un botón "LEER ENTRADA" que, al pulsarlo, reiniciaba el procesador e iniciaba una operación de E/S en un dispositivo especificado por interruptores en el panel de control, leyendo una palabra de 36 bits que proporcionaba una dirección de destino y un contador para las lecturas de palabras subsiguientes; cuando la lectura se completaba, el procesador comenzaba a ejecutar el código leído saltando a la última palabra leída. [ 22 ]

Una variante notable de esto se encuentra en el Burroughs B1700 , donde no hay ni una ROM de arranque ni una operación IPL cableada. En cambio, después de reiniciar el sistema, lee y ejecuta microinstrucciones secuencialmente desde una unidad de cinta de casete montada en el panel frontal; esto configura un cargador de arranque en la RAM, que luego se ejecuta. [ 23 ] Sin embargo, dado que esto no requiere muchas suposiciones sobre el sistema, también puede usarse para cargar cintas de diagnóstico (Rutina de prueba de mantenimiento) que muestran un código inteligible en el panel frontal incluso en casos de falla grave de la CPU. [ 23 ]

IBM System/360 y sus sucesores

En el IBM System/360 y sus sucesores, incluidas las máquinas con arquitectura z/ actuales , el proceso de arranque se conoce como Carga Inicial del Programa (IPL, por sus siglas en inglés).

IBM acuñó este término para el 7030 (Stretch) , [ 11 ] lo revivió para el diseño del System/360 y continúa usándolo en esos entornos hoy en día. [ 24 ] En los procesadores System/360, un IPL es iniciado por el operador de la computadora seleccionando la dirección del dispositivo de tres dígitos hexadecimales (CUU; C=Dirección del canal de E/S, UU=Unidad de control y dirección del dispositivo [ nb 3 ] ) seguido de presionar el botón LOAD . En los modelos System/360 de gama alta , la mayoría [ nb 4 ] System/370 y algunos sistemas posteriores, las funciones de los interruptores y el botón LOAD se simulan usando áreas seleccionables en la pantalla de una consola gráfica, a menudo [ nb 5 ] un dispositivo similar a IBM 2250 o un dispositivo similar a IBM 3270 . Por ejemplo, en el System/370 Modelo 158, la secuencia de teclado 0-7-X (cero, siete y X, en ese orden) produce un IPL desde la dirección del dispositivo que se introdujo en el área de entrada. Las CPU Amdahl 470V/6 y relacionadas admitían cuatro dígitos hexadecimales en aquellas que tenían instalada la unidad de segundo canal opcional, para un total de 32 canales. Posteriormente, IBM también admitiría más de 16 canales.

La función IPL en el System/360 y sus sucesores anteriores a IBM Z , y sus compatibles, como Amdahl, lee 24 bytes de un dispositivo especificado por el operador en la memoria principal, comenzando en la dirección real cero. El segundo y tercer grupo de ocho bytes se tratan como Palabras de Comando de Canal (CCW) para continuar cargando el programa de inicio (la primera CCW siempre es simulada por la CPU y consiste en un comando Read IPL, 02h , con encadenamiento de comandos y supresión de indicación de longitud incorrecta). Cuando se completan los comandos del canal de E/S, el primer grupo de ocho bytes se carga en la Palabra de Estado del Programa (PSW) del procesador y el programa de inicio comienza su ejecución en la ubicación designada por dicha PSW. [ 24 ] El dispositivo IPL suele ser una unidad de disco, de ahí la importancia especial del comando de tipo de lectura 02h , pero exactamente el mismo procedimiento también se utiliza para IPL desde otros dispositivos de tipo de entrada, como unidades de cinta o incluso lectores de tarjetas, de manera independiente del dispositivo, lo que permite, por ejemplo, la instalación de un sistema operativo en un ordenador nuevo desde una cinta magnética de distribución inicial del sistema operativo. Para los controladores de disco, el comando 02h también hace que el dispositivo seleccionado busque en el cilindro 0000h , cabezal 0000h , simulando un comando de búsqueda de cilindro y cabezal, 07h , y que busque el registro 01h , simulando un comando de búsqueda de ID igual, 31h ; las búsquedas y búsquedas no son simuladas por los controladores de cinta y tarjeta, ya que para estas clases de dispositivos un comando de lectura IPL es simplemente un comando de lectura secuencial.

El disco, la cinta o la unidad de tarjetas deben contener un programa especial para cargar el sistema operativo o la utilidad independiente en el almacenamiento principal, y para este propósito específico, el programa independiente DASDI (Inicialización del dispositivo de almacenamiento de acceso directo) o un programa equivalente que se ejecuta bajo un sistema operativo, por ejemplo, ICKDSF, coloca el "Texto IPL" en el disco, pero las cintas y unidades de tarjetas compatibles con IPL generalmente se distribuyen con este "Texto IPL" ya presente.

IBM introdujo algunos cambios evolutivos en el proceso IPL, modificando algunos detalles para System/370 Extended Architecture (S/370-XA) y versiones posteriores, y añadiendo un nuevo tipo de IPL para z/Architecture.

Minicomputadoras

Panel frontal del PDP-8/E que muestra los interruptores utilizados para cargar el programa de arranque.

Las minicomputadoras , comenzando con las PDP-5 y PDP-8 de Digital Equipment Corporation (DEC) (1965), simplificaron el diseño al usar la CPU para facilitar las operaciones de entrada y salida. Esto redujo costos, pero hizo que el arranque fuera más complejo que presionar un solo botón. Las minicomputadoras generalmente tenían algún método para cargar programas cortos mediante la manipulación de una serie de interruptores en el panel frontal . Dado que las primeras minicomputadoras usaban memoria de núcleo magnético , que no perdía su información al apagarse, estos cargadores de arranque permanecían en su lugar a menos que se borraran. El borrado a veces ocurría accidentalmente cuando un error de programa causaba un bucle que sobrescribía toda la memoria.

Otros miniordenadores con una forma de arranque tan sencilla incluyen la serie HP 2100 de Hewlett-Packard (mediados de la década de 1960), el Data General Nova original (1969) y los modelos PDP-4 (1962) y PDP-11 (1970) de DEC.

Dado que las operaciones de E/S necesarias para provocar una operación de lectura en un dispositivo de E/S de un miniordenador solían ser diferentes para los distintos controladores de dispositivo, se necesitaban diferentes programas de arranque para los distintos dispositivos.

Posteriormente, en 1971, DEC añadió una memoria opcional de solo lectura con matriz de diodos para el PDP-11 que almacenaba un programa de arranque de hasta 32 palabras (64 bytes). Consistía en una tarjeta de circuito impreso, la M792, que se conectaba al Unibus y contenía una matriz de 32 x 16 diodos semiconductores. Con los 512 diodos instalados, la memoria contenía todos los bits "uno"; la tarjeta se programaba desactivando cada diodo cuyo bit debía ser "cero". DEC también vendió versiones de la tarjeta, la serie BM792-Yx, preprogramadas para muchos dispositivos de entrada estándar simplemente omitiendo los diodos innecesarios. [ 25 ] [ 26 ]

Siguiendo el enfoque anterior, el PDP-1 anterior tiene un cargador de hardware, de modo que un operador solo necesita presionar el interruptor de carga para indicarle al lector de cinta de papel que cargue un programa directamente en la memoria principal. Los sucesores del PDP-4, el PDP-7 , [ 27 ] el PDP-9 , [ 28 ] y el PDP-15 , [ 29 ] tienen un botón Read-In adicional para leer un programa desde la cinta de papel y saltar a él. El Data General Supernova usaba interruptores en el panel frontal para hacer que la computadora cargara automáticamente instrucciones en la memoria desde un dispositivo especificado por los interruptores de datos del panel frontal, y luego saltara al código cargado. [ 30 ]

Ejemplos de cargadores de arranque de minicomputadoras antiguas

En un miniordenador con lector de cinta de papel, el primer programa que se ejecuta en el proceso de arranque, el cargador de arranque, leería en la memoria principal el cargador de arranque de segunda etapa (a menudo llamado cargador binario ) que podía leer cinta de papel con suma de comprobación o el sistema operativo desde un medio de almacenamiento externo. El pseudocódigo para el cargador de arranque podría ser tan simple como las siguientes ocho instrucciones:

  1. Establezca el registro P en 9.
  2. Compruebe que el lector de cinta de papel esté listo.
  3. Si no está listo, pase al paso 2.
  4. Lee un byte del lector de cinta de papel al acumulador.
  5. Almacenar el acumulador en la dirección del registro P.
  6. Si es el final de la cinta, salta al 9.
  7. Incrementar el registro P
  8. Saltar a 2

Un ejemplo similar se basa en un cargador para una minicomputadora de Nicolet Instrument Corporation de la década de 1970, que utiliza la unidad lectora y perforadora de cinta de papel de una teleimpresora Teletype Modelo 33 ASR . Los bytes de su cargador de segunda etapa se leen de la cinta de papel en orden inverso.

  1. Establezca el registro P en 106.
  2. Compruebe que el lector de cinta de papel esté listo.
  3. Si no está listo, pase al paso 2.
  4. Lee un byte del lector de cinta de papel al acumulador.
  5. Almacenar el acumulador en la dirección del registro P.
  6. Decrementar el registro P
  7. Saltar a 2

La longitud del cargador de segunda etapa es tal que el último byte sobrescribe la ubicación 7. Tras la ejecución de la instrucción en la ubicación 6, la ubicación 7 inicia la ejecución del cargador de segunda etapa. Este espera entonces a que la cinta, mucho más larga, que contiene el sistema operativo, se coloque en el lector de cintas. La diferencia entre el cargador de arranque y el cargador de segunda etapa radica en la adición de código de verificación para detectar errores de lectura de la cinta de papel, un problema frecuente en hardware de bajo coste y de uso ocasional, como el Teletype Modelo 33 ASR. (Las flexowriters Friden eran mucho más fiables, pero también comparativamente más caras).

El arranque de los primeros microordenadores

Los primeros microordenadores, como el Altair 8800 (lanzado por primera vez en 1975) y una máquina similar aún anterior (basada en la CPU Intel 8008), no tenían hardware de arranque propiamente dicho. [ 31 ] Al encenderse, la CPU accedía a una memoria que contenía datos aleatorios. Los paneles frontales de estas máquinas contaban con interruptores para introducir direcciones y datos, uno por cada bit de la palabra de memoria y del bus de direcciones. Unas sencillas modificaciones del hardware permitían cargar una ubicación de memoria a la vez desde esos interruptores para almacenar el código de arranque. Mientras tanto, se impedía que la CPU intentara ejecutar el contenido de la memoria. Una vez cargada correctamente, la CPU podía ejecutar el código de arranque. Este proceso, similar al utilizado en varios miniordenadores anteriores, era tedioso y debía estar libre de errores. [ 32 ]

era de la memoria de solo lectura de circuitos integrados

Un chip EPROM Intel 2708 en una placa de circuito impreso

La introducción de la memoria de solo lectura (ROM) de circuito integrado, con sus numerosas variantes, incluyendo las ROM programables mediante máscara , las ROM programables (PROM), las ROM programables borrables (EPROM) y la memoria flash , redujo el tamaño físico y el costo de la ROM. Esto permitió que los programas de arranque del firmware se incluyeran como parte del ordenador.

Minicomputadoras

Los Data General Nova 1200 (1970) y Nova 800 (1971) tenían un interruptor de carga de programa que, en combinación con opciones que proporcionaban dos chips ROM, cargaba un programa en la memoria principal desde esos chips ROM y saltaba a él. [ 30 ] Digital Equipment Corporation introdujo las memorias ROM basadas en circuitos integrados BM873 (1974), [ 33 ] M9301 (1977), [ 34 ] M9312 (1978), [ 35 ] REV11-A y REV11-C, [ 36 ] MRV11-C, [ 37 ] y MRV11-D [ 38 ] , todas utilizables como ROM de arranque. Los modelos PDP-11/34 (1976), [ 39 ] PDP-11/60 (1977), [ 40 ] PDP-11/24 (1979), [ 41 ] y la mayoría de los modelos posteriores incluyen módulos de ROM de arranque.

Un ordenador de conmutación telefónica italiano, denominado "Gruppi Speciali", patentado en 1975 por Alberto Ciaramella , investigador del CSELT , [ 42 ] incluía una ROM (externa). A partir de 1975, Gruppi Speciali era una máquina que arrancaba con un solo botón, accediendo al sistema operativo desde una memoria ROM compuesta de semiconductores, no de núcleos de ferrita. Aunque el dispositivo ROM no estaba integrado de forma nativa en el ordenador de Gruppi Speciali, debido al diseño de la máquina, también permitía el arranque con un solo botón en máquinas no diseñadas para ello (por lo tanto, este "dispositivo de arranque" era independiente de la arquitectura), por ejemplo, el PDP-11. También se almacenaba el estado de la máquina tras el apagado, otra característica crucial en el ámbito de la conmutación telefónica. [ 43 ]

Algunos miniordenadores y superminiordenadores incluyen un procesador de consola independiente que inicia el procesador principal. El PDP-11/44 tenía un Intel 8085 como procesador de consola; [ 44 ] el VAX-11/780 , el primer miembro de la línea VAX de superminiordenadores de 32 bits de Digital, tenía un procesador de consola basado en LSI-11 , [ 45 ] y el VAX-11/730 tenía un procesador de consola basado en 8085. [ 46 ] Estos procesadores de consola podían iniciar el procesador principal desde varios dispositivos de almacenamiento.

Algunos otros superminicomputadores, como el VAX-11/750, implementan funciones de consola, incluida la primera etapa de arranque, en microcódigo de CPU. [ 47 ]

Microprocesadores y microcomputadoras

Normalmente, un microprocesador, tras un reinicio o encendido, realiza un proceso de arranque que suele consistir en "iniciar la ejecución del código que se encuentra a partir de una dirección específica" o "buscar un código multibyte en una dirección específica y saltar a la ubicación indicada para iniciar la ejecución". Un sistema construido con ese microprocesador tendrá la ROM permanente ocupando estas ubicaciones especiales para que el sistema siempre comience a funcionar sin la intervención del operador. Por ejemplo, los procesadores Intel x86 siempre comienzan ejecutando las instrucciones que empiezan en F000:FFF0, [ 48 ] [ 49 ] mientras que para el procesador MOS 6502 , la inicialización comienza leyendo una dirección vectorial de dos bytes en $FFFD (byte MS) y $FFFC (byte LS) y saltando a esa ubicación para ejecutar el código de arranque. [ 50 ]

El primer ordenador de Apple Computer , el Apple 1 , presentado en 1976, incorporaba chips PROM que eliminaban la necesidad de un panel frontal para el proceso de arranque (como ocurría con el Altair 8800) en un ordenador comercial. Según el anuncio de Apple, «No más interruptores, no más luces... el firmware en las PROM permite introducir, visualizar y depurar programas (todo en hexadecimal) desde el teclado». [ 51 ]

Debido al elevado coste de la memoria de solo lectura en aquel entonces, el Apple II arrancaba sus sistemas operativos de disco mediante una serie de pasos incrementales muy pequeños, cada uno de los cuales transfería el control a la siguiente fase del proceso de arranque, que se volvía cada vez más complejo. (Véase Apple DOS: Cargador de arranque ). Dado que el sistema operativo de disco dependía muy poco de la ROM, el hardware también era extremadamente flexible y admitía una amplia gama de mecanismos personalizados de protección contra la copia de discos . (Véase Cracking de software: Historia ).

Algunos sistemas operativos, sobre todo los Macintosh de Apple anteriores a 1995 , están tan estrechamente integrados con su hardware que resulta imposible arrancar de forma nativa un sistema operativo distinto al estándar. Este es el extremo opuesto al escenario con conmutadores mencionado anteriormente; es muy inflexible, pero relativamente a prueba de errores y de fallos, siempre que todo el hardware funcione correctamente. Una solución común en estos casos es diseñar un gestor de arranque que funcione como un programa del sistema operativo estándar, que se apropia del sistema y carga el sistema operativo alternativo. Esta técnica fue utilizada por Apple para su implementación de A/UX Unix y copiada por varios sistemas operativos gratuitos y BeOS Personal Edition 5 .

Algunas máquinas, como el microordenador Atari ST , eran de "encendido instantáneo", con el sistema operativo ejecutándose desde una ROM. De este modo, se eliminaba la recuperación del sistema operativo desde la memoria secundaria o terciaria como una de las operaciones características del arranque. Para permitir la carga automática de personalizaciones del sistema, accesorios y otro software de soporte, la unidad de disquete del Atari se leía en busca de componentes adicionales durante el proceso de arranque. Existía un retardo de tiempo que permitía insertar manualmente un disquete mientras el sistema buscaba los componentes adicionales. Esto podía evitarse insertando un disco en blanco. El hardware del Atari ST también se diseñó para que la ranura de cartuchos pudiera proporcionar ejecución de programas nativos para fines de juego, como un vestigio de la tradición de Atari en la fabricación de videojuegos; al insertar el cartucho Spectre GCR con la ROM del sistema Macintosh en la ranura de juegos y encender el Atari, podía "arrancar de forma nativa" el sistema operativo Macintosh en lugar del propio TOS de Atari .

El IBM Personal Computer incluía un firmware basado en ROM llamado BIOS ; una de las funciones de este firmware era realizar una autocomprobación al encender el equipo y, posteriormente, leer el software desde un dispositivo de arranque y ejecutarlo. El firmware compatible con el BIOS del IBM Personal Computer se utiliza en los ordenadores compatibles con IBM PC . La UEFI fue desarrollada por Intel, originalmente para máquinas basadas en Itanium , y posteriormente también se utilizó como alternativa al BIOS en máquinas basadas en x86 , incluyendo los Apple Mac con procesadores Intel .

Las estaciones de trabajo Unix originalmente tenían firmware basado en ROM específico del fabricante. Sun Microsystems desarrolló posteriormente OpenBoot , más tarde conocido como Open Firmware, que incorporaba un intérprete de Forth , y gran parte del firmware estaba escrito en Forth. Fue estandarizado por el IEEE como estándar IEEE 1275-1994 ; el firmware que implementaba dicho estándar se utilizó en Macs basados ​​en PowerPC y algunas otras máquinas basadas en PowerPC, así como en las computadoras SPARC de la propia Sun. La especificación Advanced RISC Computing definió otro estándar de firmware, que se implementó en algunas máquinas basadas en MIPS y Alpha , y en las estaciones de trabajo SGI Visual Workstation basadas en x86.

Cargadores de arranque modernos

Cuando un ordenador está apagado, su software —incluidoslos sistemas operativos, el código de las aplicaciones y los datos— permanecealmacenado en la memoria no volátil . Cuando el ordenador está encendido, normalmente no tiene un sistema operativo ni su cargador en la memoria de acceso aleatorio (RAM). El ordenador ejecuta primero un programa relativamente pequeño almacenado en la memoria de solo lectura (ROM, y posteriormente EEPROM, memoria flash NOR ) que admite la ejecución en el lugar , para inicializar la CPU y la placa base, para inicializar la memoria (especialmente en sistemas x86), para inicializar y acceder al almacenamiento (normalmente un dispositivo direccionado por bloques, por ejemplo, disco duro , memoria flash NAND , unidad de estado sólido ) desde el que se pueden cargar los programas y datos del sistema operativo en la RAM, y para inicializar otros dispositivos de E/S.

El pequeño programa que inicia esta secuencia se conoce como cargador de arranque o cargador de arranque . A menudo, se utilizan cargadores de arranque de varias etapas, durante los cuales varios programas de complejidad creciente se cargan uno tras otro en un proceso de carga en cadena .

Algunos sistemas informáticos antiguos, al recibir una señal de arranque de un operador o un dispositivo periférico, podían cargar un número muy reducido de instrucciones fijas en la memoria, en una ubicación específica, inicializar al menos una CPU y, a continuación, indicarle a la CPU la ubicación de dichas instrucciones e iniciar su ejecución. Estas instrucciones solían iniciar una operación de entrada desde algún dispositivo periférico (que el operador podía seleccionar mediante un interruptor). Otros sistemas podían enviar comandos de hardware directamente a los dispositivos periféricos o controladores de E/S, lo que provocaba la ejecución de una operación de entrada extremadamente sencilla (como «leer el sector cero del dispositivo del sistema en la memoria a partir de la ubicación 1000»), cargando así un pequeño número de instrucciones del gestor de arranque en la memoria; posteriormente, una señal de finalización del dispositivo de E/S podía utilizarse para que la CPU iniciara la ejecución de las instrucciones.

Los ordenadores más pequeños suelen utilizar mecanismos 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 ) en una dirección predefinida (algunas CPU, incluidas las de la serie Intel x86, están diseñadas para ejecutar este software después del reinicio sin ayuda externa). Este software contiene una funcionalidad básica para buscar dispositivos aptos para participar en el arranque y cargar un pequeño programa desde una sección especial (normalmente el sector de arranque ) del dispositivo más prometedor, generalmente comenzando en un punto de entrada fijo , como el inicio del sector.

Los cargadores de arranque pueden enfrentarse a limitaciones particulares, especialmente en cuanto al tamaño; por ejemplo, en el IBM PC y compatibles, el código de arranque debe caber en el Registro de Arranque Maestro (MBR) y el Registro de Arranque de Partición (PBR), que a su vez están limitados a un solo sector; en el IBM System/360 , el tamaño está limitado por el medio IPL, por ejemplo, el tamaño de la tarjeta o el tamaño de la pista.

En sistemas con esas limitaciones, el primer programa cargado en la RAM puede no ser lo suficientemente grande como para cargar el sistema operativo y, en su lugar, debe cargar otro programa más grande. El primer programa cargado en la RAM se denomina cargador de arranque de primera etapa, y el programa que carga se denomina cargador de arranque de segunda etapa. En muchas CPU integradas, la ROM de arranque integrada de la CPU, a veces llamada cargador de arranque de etapa cero, [ 52 ] puede encontrar y cargar cargadores de arranque de primera etapa.

Cargadores de arranque de primera etapa

Ejemplos de cargadores de arranque de primera etapa (etapa de inicialización de hardware) incluyen BIOS, UEFI, coreboot , Libreboot y Das U-Boot . En el IBM PC, el cargador de arranque en el Master Boot Record (MBR) y el Partition Boot Record (PBR) fue codificado para requerir al menos 32  KB [ 53 ] [ 54 ] (posteriormente ampliado a 64  KB [ 55 ] ) de memoria del sistema y solo usar instrucciones compatibles con los procesadores 8088 / 8086 originales.

Cargadores de arranque de segunda etapa

Los cargadores de arranque de segunda etapa (etapa de inicialización del SO), como shim, [ 56 ] GNU GRUB , rEFInd , BOOTMGR , Syslinux y NTLDR , no son sistemas operativos en sí mismos, pero pueden cargar un sistema operativo correctamente y transferirle la ejecución; el sistema operativo posteriormente 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 la BIOS, UEFI u Open Firmware , aunque normalmente con una funcionalidad de hardware restringida y un rendimiento inferior. [ 57 ]

Muchos cargadores de arranque (como GNU GRUB, rEFInd, BOOTMGR de Windows, Syslinux y NTLDR de Windows NT/2000/XP) se pueden configurar para dar 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 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 (ver Lista de juegos de PC Booter ). [ 58 ] 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 retardo de tiempo durante el cual un usuario puede presionar una tecla para cambiar la opción; Tras este retraso, la opción predeterminada se ejecuta automáticamente para que el arranque normal se produzca sin interacción.

El proceso de arranque se considera completo cuando el ordenador está listo para interactuar con el usuario, o cuando el sistema operativo es capaz de ejecutar programas del sistema o programas de aplicación.

Cargadores de arranque de primera y segunda etapa

Algunos gestores de arranque, como Das U-Boot e iBoot , incluyen funciones de arranque tanto de primera como de segunda etapa.

Cargadores de arranque integrados y multietapa

Muchos sistemas embebidos deben arrancar inmediatamente. Por ejemplo, esperar un minuto para que se inicie un televisor digital o un dispositivo de navegación GPS suele ser inaceptable. Por lo tanto, estos dispositivos cuentan con sistemas de software en memoria ROM o flash para que puedan comenzar a funcionar de inmediato; se requiere poca o ninguna carga, ya que esta se puede precalcular y almacenar en la ROM durante la fabricación del 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 se cargan y están listos para ejecutarse. Dado que los sistemas operativos están diseñados como si nunca se iniciaran ni se detuvieran, un gestor de arranque podría cargar el sistema operativo, configurarse como un simple proceso dentro de ese sistema y, a continuación, transferir irrevocablemente el control al sistema operativo. El gestor de arranque finaliza entonces de forma normal, como cualquier otro proceso.

Arranque de red

La mayoría de los ordenadores también pueden arrancar a través de una red informática . En este caso, el sistema operativo se almacena en el disco de un servidor y ciertas partes se transfieren al cliente mediante un protocolo sencillo como el Protocolo de Transferencia de Archivos Trivial (TFTP). Una vez transferidas estas partes, el sistema operativo toma el control del proceso de arranque.

Al igual que con el cargador de arranque de segunda etapa, el arranque por red comienza utilizando métodos genéricos de acceso a la red proporcionados por la ROM de arranque de la interfaz de red, que normalmente contiene una imagen del Entorno de Ejecución Previo al Arranque (PXE). No se requieren controladores, pero la funcionalidad del sistema es limitada hasta que se transfieren e inician el núcleo del sistema operativo y los controladores. Por lo tanto, una vez completado el arranque basado en la ROM, es totalmente posible arrancar por red en un sistema operativo que no tenga la capacidad de usar la interfaz de red.

Ordenadores personales (PC) compatibles con IBM

Dispositivos de arranque

Unidad flash de arranque Windows To Go , un ejemplo de Live USB .

El dispositivo de arranque es el dispositivo de almacenamiento desde el que se carga el sistema operativo. El firmware UEFI o BIOS de un PC moderno admite el arranque desde varios dispositivos, normalmente una unidad de estado sólido o un disco duro local a través de la tabla de particiones GPT o el registro de arranque maestro (MBR) de dicha unidad o disco, una unidad de disco óptico (mediante El Torito ), un dispositivo de almacenamiento masivo USB ( unidad flash USB , lector de tarjetas de memoria , disco duro USB, unidad de disco óptico USB, unidad de estado sólido USB, etc.) o una tarjeta de interfaz de red (mediante PXE ). Entre los dispositivos de arranque BIOS más antiguos y menos comunes se incluyen las unidades de disquete , las unidades Zip y las unidades LS-120 . Los PC compatibles con IBM son ejemplos que utilizan hardware integrado horizontalmente y firmware UEFI/BIOS.

Normalmente, el firmware del sistema (UEFI o BIOS) permite al usuario configurar el orden de arranque . Si el orden de arranque se establece en "primero, la unidad de DVD; segundo, el disco duro", el firmware intentará arrancar desde la unidad de DVD y, si falla (por ejemplo, porque no hay ningún DVD en la unidad), intentará arrancar desde el disco duro local.

Por ejemplo, en un PC con Windows instalado en el disco duro, el usuario podría configurar el orden de arranque como se indica arriba y luego insertar un Live CD de Linux 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 autodiagnóstico de encendido (POST). En este ejemplo de arranque dual, el usuario elige insertando o extrayendo el DVD del ordenador, pero es más común elegir qué sistema operativo iniciar seleccionándolo desde un menú de gestor de arranque en el dispositivo seleccionado, utilizando el teclado del ordenador para seleccionar desde un menú de arranque BIOS o UEFI, o ambos; normalmente se accede al menú de arranque pulsando las teclas o durante el POST; normalmente se accede a la configuración del BIOS pulsando las teclas o durante el POST. [ 59 ] [ 60 ]F8F12F2DEL

Existen varios dispositivos que permiten al usuario iniciar rápidamente lo que suele ser una variante de Linux para diversas tareas sencillas, como el acceso a Internet; ejemplos de ello son Splashtop y Latitude ON . [ 61 ] [ 62 ] [ 63 ]

Secuencia de arranque

Un volcado hexadecimal del MBR boot0 de FreeBSD
Software de BIOS Award desde 2000 durante el arranque

Al arrancar, la CPU x86 de un ordenador personal compatible con IBM ejecuta en modo real la instrucción ubicada en el vector de reinicio (la dirección de memoria física FFFF0h en procesadores x86 de 16 bits [ 64 ] y FFFFFFF0h en procesadores x86 de 32 y 64 bits [ 65 ] [ 66 ] ), que normalmente 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 (incluidas las ROM de opciones integradas en ejecución ). Uno de los pasos más complejos es configurar la DRAM sobre SPD , lo que se complica aún más por el hecho de que, en este punto, la memoria es muy limitada.

Tras inicializar el hardware necesario, el firmware (UEFI o BIOS) recorre una lista preconfigurada de dispositivos de almacenamiento no volátil ("secuencia de dispositivos de arranque") hasta que encuentra uno que sea arrancable.

BIOS

Una vez que la BIOS ha encontrado un dispositivo de arranque, carga el sector de arranque en la dirección lineal 7C00h (normalmente segmento : desplazamiento 0000h : 7C00h , [ 53 ] [ 55 ] : 29 , pero algunas BIOS usan erróneamente 07C0h : 0000h ) y transfiere la ejecución al código de arranque. En el caso de un disco duro, esto se denomina Registro de Arranque Maestro (MBR). El código MBR convencional comprueba la tabla de particiones del MBR para una partición configurada como arrancable [ nb 6 ] (la que tiene el indicador activo establecido). Si se encuentra una partición activa , el código MBR carga el código del sector de arranque de esa partición, conocido como Registro de Arranque de Volumen (VBR), y lo ejecuta. El código de arranque MBR suele ser específico del sistema operativo.

Un dispositivo MBR de arranque se define como aquel del que se puede leer, y donde los dos últimos bytes del primer sector contienen la palabra little-endian AA55h , [ nb 7 ] que se encuentra como la secuencia de bytes 55h , AAh en el disco (también conocida como la firma de arranque MBR ), o donde se establece de otro modo que el código dentro del sector es ejecutable en PC x86.

El código del 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 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 la BIOS requiere para un cargador de arranque adecuado , o incluso menos, cuando en algunos entornos 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 los registros de arranque de volumen de disquetes y superdisquetes , 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. Por lo tanto, los sectores de arranque de Microsoft 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 como sectores consecutivos, [ 67 ] [ 68 ] condiciones que se manejan con el comando y se relajan ligeramente en versiones posteriores de DOS. [ 68 ] [ nb 8 ] El cargador de arranque podía entonces cargar los primeros tres sectores del archivo en la memoria, que casualmente contenía otro cargador de arranque integrado capaz de cargar el resto del archivo en la memoria. [ 68 ] Cuando Microsoft añadió soporte para LBA y FAT32, incluso cambió a un cargador de arranque que abarcaba más de dos sectores físicos y utilizaba 386 instrucciones por razones de tamaño. Al mismo tiempo, otros proveedores lograron integrar mucha más funcionalidad en un único sector de arranque sin flexibilizar las restricciones originales de memoria mínima disponible (32 KB) y soporte de procesador ( 8088/8086 ). [ nb 9 ] Por ejemplo, los sectores de arranque de 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.SYS o LBA, incluso si el archivo no está almacenado en una ubicación fija y en sectores consecutivos. [ 69 ] [ 53 ] [ 70 ] [ 71 ] [ 72 ] [ nb 10 ] [ nb 9 ]

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 bootmgro ntldr), que es el cargador de arranque de segunda etapa, desde una partición activa. A continuación, el cargador de arranque carga el núcleo del sistema operativo desde el dispositivo de almacenamiento.

Si no hay partición activa, o el sector de arranque de la partición activa no es válido, el MBR puede cargar un cargador de arranque secundario que seleccionará una partición (a menudo mediante la entrada del usuario) y cargará su sector de arranque, que normalmente carga el núcleo 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 una llamada de interrupción de la BIOS INT 18h [ 55 ] [ 53 ] (seguida de una INT 19h por si acaso INT 18h devolviera un valor) para devolver el control a la BIOS, que entonces intentaría arrancar desde otros dispositivos, intentar un arranque remoto a través de la red. [ 53 ]

UEFI

Muchos sistemas modernos ( Macs Intel y PCs más recientes ) utilizan UEFI . [ 73 ] [ 74 ]

A diferencia de BIOS, UEFI (no el arranque heredado a través de CSM) no depende de sectores de arranque, el sistema UEFI carga el cargador de arranque ( archivo de aplicación EFI en disco USB o en la partición del sistema EFI ) directamente, [ 75 ] y el kernel del sistema operativo es cargado por el cargador de arranque.

SoC, sistemas embebidos, microcontroladores y FPGA

Un gestor de arranque desbloqueado de un dispositivo Android , que muestra opciones adicionales disponibles.

Muchos procesadores, SoC y microcontroladores modernos (por ejemplo, TI OMAP ), e incluso algunos procesadores de señales digitales (DSP), pueden tener una ROM de arranque integrada directamente en su silicio. De esta forma, el procesador puede realizar una secuencia de arranque simple por sí solo y cargar programas de arranque (firmware o software) desde fuentes como la memoria flash NAND o la eMMC. Es difícil cablear toda la lógica necesaria para gestionar estos dispositivos, por lo que se utiliza una ROM de arranque integrada. Además, una ROM de arranque puede cargar un gestor de arranque o un programa de diagnóstico a través de interfaces serie como UART , SPI , USB , etc. Esta función se utiliza a menudo para la recuperación del sistema, o también para la programación inicial de la memoria no volátil cuando aún no hay software disponible en ella. Muchos microcontroladores modernos (por ejemplo, el controlador de memoria flash en las unidades flash USB ) tienen una ROM de firmware integrada directamente en su silicio.

Algunos diseños de sistemas embebidos también pueden incluir un paso intermedio en la secuencia de arranque. Por ejemplo, Das U-Boot puede dividirse en dos etapas: la plataforma cargaría un pequeño SPL (Cargador de Programa Secundario), que es una versión simplificada de U-Boot, y el SPL realizaría alguna configuración inicial del hardware (por ejemplo, inicialización de DRAM usando la caché de la CPU como RAM) y cargaría la versión más grande y completa de U-Boot. [ 76 ] Dichos sistemas embebidos pueden usar hardware y software altamente personalizados e integrados verticalmente , y sus programas de arranque pueden ser más simples. [ 77 ] Algunas CPU y SoC pueden no usar la caché de la CPU como RAM en el proceso de arranque, sino que usan un procesador de arranque integrado para realizar alguna configuración de hardware para reducir costos. [ 78 ]

También es posible tomar el control de un sistema mediante una interfaz de depuración de hardware como JTAG . Dicha interfaz puede utilizarse para escribir el programa del cargador de arranque en una memoria no volátil de arranque (por ejemplo, flash) instruyendo al núcleo del procesador para que realice las acciones necesarias para programar la memoria no volátil. Alternativamente, la interfaz de depuración puede utilizarse para cargar algún código de diagnóstico o de arranque en la RAM y, a continuación, iniciar el núcleo del procesador e instruirlo para que ejecute el código cargado. Esto permite, por ejemplo, la recuperación de sistemas embebidos donde no queda software en ningún dispositivo de arranque compatible y donde el procesador no tiene ninguna ROM de arranque integrada. JTAG es una interfaz estándar y popular; muchas CPU, microcontroladores y otros dispositivos se fabrican con interfaces JTAG ( a partir de 2009) .).

Algunos microcontroladores ofrecen interfaces de hardware especiales que no permiten controlar arbitrariamente un sistema ni ejecutar código directamente, sino que facilitan la inserción de código de arranque en memoria no volátil de arranque (como la memoria flash) mediante protocolos sencillos. Posteriormente, durante la fase de fabricación, estas interfaces se utilizan para inyectar el código de arranque (y posiblemente otro código) en la memoria no volátil. Tras el reinicio del sistema, el microcontrolador comienza a ejecutar el código programado en su memoria no volátil, al igual que los procesadores convencionales utilizan ROM para el arranque. Esta técnica se emplea principalmente en los microcontroladores Atmel AVR , entre otros. En muchos casos, estas interfaces se implementan mediante lógica cableada. En otros casos, pueden crearse mediante software que se ejecuta en la ROM de arranque integrada en el chip a través de los pines GPIO .

La mayoría de los DSP tienen un arranque en modo serie y un arranque en modo paralelo, como por ejemplo la interfaz del puerto host (arranque HPI).

En el caso de los DSP, suele haber un segundo microprocesador o microcontrolador en el diseño del sistema, responsable del comportamiento general del sistema, el manejo de interrupciones, el procesamiento de eventos externos, la interfaz de usuario, etc., mientras que el DSP se dedica exclusivamente al procesamiento de señales. En estos sistemas, el DSP puede ser arrancado por otro procesador, a veces denominado procesador anfitrión (que da nombre a un puerto anfitrión). Este procesador también se conoce como maestro , ya que normalmente arranca primero desde su propia memoria y luego controla el comportamiento general del sistema, incluido el arranque del DSP, y posteriormente controla el comportamiento del DSP. El DSP a menudo carece de memoria de arranque propia y depende del procesador anfitrión para obtener el código necesario. Los sistemas más notables con este diseño son los teléfonos móviles, módems, reproductores de audio y vídeo, etc., donde coexisten un DSP y una CPU/microcontrolador.

Muchos chips FPGA cargan su configuración desde una ROM de configuración externa, normalmente una EEPROM serie, al encenderse.

Seguridad

Se han implementado diversas medidas para mejorar la seguridad del proceso de arranque. Algunas son obligatorias, mientras que otras pueden ser activadas o desactivadas por el usuario . Tradicionalmente, el arranque no utilizaba criptografía . La seguridad podía eludirse desbloqueando el gestor de arranque , lo cual podía o no estar autorizado por el fabricante. Los gestores de arranque modernos utilizan la concurrencia, lo que significa que pueden ejecutar varios núcleos de procesador e hilos simultáneamente, lo que añade complejidad al arranque seguro.

Matthew Garrett argumentó que la seguridad de arranque sirve a un objetivo legítimo, pero al hacerlo elige valores predeterminados que son hostiles para los usuarios. [ 79 ]

Medidas

  • Arranque seguro UEFI [ 80 ]
  • Arranque verificado de Android
  • Samsung Knox
  • Arranque medido con el Módulo de plataforma segura, también conocido como "arranque seguro".
  • Intel BootGuard
  • Cifrado de disco
  • Contraseñas de firmware

Bucle de arranque

Consola UART de un router TP-Link con OpenWrt que se encuentra en un bucle de arranque.

Al depurar un sistema de sistemas concurrente y distribuido , un bucle de arranque (también escrito boot loop o boot-loop ) es una condición de diagnóstico de un estado erróneo que ocurre en los dispositivos informáticos; cuando esos dispositivos fallan repetidamente al completar el proceso de arranque y se reinician antes de que finalice una secuencia de arranque, un reinicio puede impedir que un usuario acceda a la interfaz normal.

A medida que aumenta la complejidad de los productos actuales, los proyectos individuales, los departamentos individuales o incluso las empresas individuales ya no pueden desarrollar productos completos, lo que da lugar a un desarrollo concurrente y distribuido. Hoy en día, y en todo el mundo, las industrias se enfrentan al desarrollo de productos complejos y a su amplia gama de problemas asociados, relacionados con la organización del proyecto, el control del proyecto y la calidad del producto. Muchos procesos también se distribuirán. El proceso de detección de defectos, tan importante para medir y, en última instancia, lograr la calidad del producto, suele ser uno de los primeros en experimentar problemas causados ​​por la naturaleza distribuida del proyecto. La distribución de las actividades de detección de defectos entre varias partes introduce riesgos como la revisión inadecuada de los productos de trabajo, la aparición de "puntos ciegos" con respecto a la cobertura de las pruebas o el sobrediagnóstico de los componentes. Por lo tanto, se necesita una coordinación de la detección de defectos a lo largo de todo el ciclo de vida para garantizar la eficacia y la eficiencia de las actividades de detección de defectos. —JJM Trienekens; RJ Kusters. (2004) [ 81 ]

Detección de un estado erróneo

El sistema podría mostrar su estado erróneo, por ejemplo, en un bucle de arranque explícito o una pantalla azul de la muerte , antes de que se indique la recuperación. [ 82 ] La detección de un estado erróneo puede requerir un almacén de eventos distribuido y una plataforma de procesamiento de flujo para el funcionamiento en tiempo real de un sistema distribuido.

Recuperación de un estado erróneo

Un estado erróneo puede provocar bucles de arranque; este estado puede deberse a una configuración incorrecta tras operaciones que antes funcionaban correctamente. Los intentos de recuperación desde ese estado erróneo implican un reinicio, en un intento por volver a un estado correcto. En el sistema operativo Windows, por ejemplo, el procedimiento de recuperación consistía en reiniciar el sistema tres veces, los reinicios necesarios para volver a un menú utilizable. [ 83 ] [ 84 ] [ 82 ]

Política de recuperación

La recuperación puede especificarse mediante el lenguaje de marcado de aserción de seguridad (SAML), que también puede implementar el inicio de sesión único (SSO) para algunas aplicaciones; en el modelo de seguridad de confianza cero , la identificación, la autorización y la autenticación son aspectos separables en una sesión SSO. Cuando se indica la recuperación de un sitio (por ejemplo, se muestra una pantalla azul de la muerte en la pantalla de una terminal de aeropuerto) [ a ] podrían ser necesarias visitas personales al sitio para remediar la situación. [ 81 ]

Ejemplos

Véase también

Notas

  1. 1 2 CrowdStrike revirtió la actualización de contenido a las 05:27 UTC, [ 93 ] Esto dejó a las máquinas atascadas en un bucle de arranque o en modo de recuperación . [ 94 ] y los dispositivos que arrancaron después de la reversión no se vieron afectados. [ 84 ] [ 95 ]
  1. Por ejemplo, System/360 a través de IBM Z , RS/6000 y System/38 a través de IBM Power Systems.
  2. Incluyendo demonios .
  3. UU solía tener la forma Uu, donde U=dirección de la unidad de control y u=dirección del dispositivo, pero algunas unidades de control solo conectaban 8 dispositivos; otras conectaban más de 16. De hecho, el controlador DASD 3830 ofrecía direccionamiento de 32 unidades como opción.
  4. Excluyendo los modelos 370/145 y 370/155, que utilizaban una máquina de escribir de consola 3210 o 3215.
  5. Solo el S/360 usaba el 2250; los modelos 360/85 , 370/165 y 370/168 usaban un dispositivo de teclado/pantalla que no era compatible con ningún otro.
  6. 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.
  7. La firma en el desplazamiento+1FEhen los sectores de arranque es55h AAh, es decir,55hen el desplazamiento+1FEhyAAhen el desplazamiento+1FFh. Dado que se debe asumir la representación little-endian en el contexto de las máquinas compatibles con IBM PC , esto se puede escribir como una palabra de 16 bitsAA55hen programas para procesadores x86 (nótese el orden intercambiado), mientras que tendría que escribirse como55AAhen programas para otras arquitecturas de CPU que utilizan una representación big-endian . Dado que esto se ha confundido numerosas veces en libros e incluso en documentos de referencia originales de Microsoft,este artículo utiliza la representación en disco byte a byte basada en desplazamiento para evitar cualquier posible interpretación errónea.
  8. El manual de PC DOS 5.0 afirma erróneamente 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 tres primeros sectores de IBMBIO.COM deben almacenarse de forma contigua. SYS continúa encargándose de estos requisitos.
  9. 1 2 Como ejemplo, mientras que la funcionalidad extendida de los MBR y sectores de arranque de DR-DOS en comparación con sus contrapartes de MS-DOS / PC DOS aún se podía lograr utilizando técnicas convencionales de optimización de código en lenguaje ensamblador hasta la versión 7.05 , para la adición desoporte para LBA , FAT32 y LOADER, los sectores de la versión 7.07 tuvieron que recurrir a código automodificable , programación a nivel de código de operación en lenguaje máquina , utilización controlada de efectos secundarios (documentados), superposición de datos/código de varios nivelesy técnicas de plegado algorítmico para comprimir todo en un solo sector físico, ya que era un requisito para la retrocompatibilidad y compatibilidad cruzada con otros sistemas operativos en escenarios de arranque múltiple y carga en cadena .
  10. Hay una excepción a la regla de que los VBR de DR-DOS cargarán todo elarchivo IBMBIO.COM en la memoria: si el archivo IBMBIO.COM es mayor que unos 29 KB, intentar cargar todo el archivo en la memoria resultaría en que el cargador de arranque sobrescribiera la pila y la tabla de parámetros de disco reubicada (DPT/FDPB). [A] Por lo tanto, un VBR de DR-DOS 7.07 solo cargaría los primeros 29KB 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 del archivo en la memoria por sí mismo si fuera 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. [A] Combinado con una estructura de doble entrada, 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.  

Referencias

  1. «bootstrap». Oxford English Dictionary . Vol.  II (2.ª  ed.). Oxford: Clarendon Press. p.  407. 1953. Una técnica a veces llamada «técnica bootstrap»...
  2. "bootstrap" . Diccionario informático de tecnología de la información . Archivado del original el 5 de agosto de 2019. Consultado el 5 de agosto de 2019 .
  3. "Bootstrap" . The Free Dictionary . Archivado del original el 27 de agosto de 2006. Consultado el 27 de agosto de 2008 .
  4. "Levantarse por mérito propio" . Modismos de The Free Dictionary . Archivado del original el 5 de octubre de 2018. Consultado el 7 de octubre de 2019 .
  5. "Definición de Bootstrap" . Términos técnicos . Archivado del original el 10 de mayo de 2020. Consultado el 2 de octubre de 2019 .
  6. "Levántate por tus propios medios" . The Phrase Finder . Archivado del original el 17 de abril de 2012. Consultado el 15 de julio de 2010 .
  7. "boot". Oxford English Dictionary . Vol. II (2.ª ed.). Oxford: Clarendon Press. p. 405. 1975... El código de superposición de arranque se superpondrá a las dos primeras instrucciones del cargador.   
  8. Campbell-Kelly, Martin (1980). "Programación del EDSAC". IEEE Annals of the History of Computing . 2 (1): 7– 36. doi : 10.1109/mahc.1980.10009 .
  9. Wilkes, Maurice V. ; Wheeler, David J. ; Gill, Stanley (1951). The Preparation of Programs for an Electronic Digital Computer . Addison-Wesley . Archivado del original el 20 de febrero de 2023 . Recuperado el 25 de septiembre de 2020 .
  10. Buchholz, Werner (1953). "El diseño del sistema del ordenador IBM tipo 701" (PDF) . Actas del IRE . 41 (10): 1273. Archivado (PDF) del original el 9 de octubre de 2022.
  11. 1 2 "IBM 7619 Exchange". Manual de referencia del sistema de procesamiento de datos 7030 (PDF) . IBM. Agosto de 1961. págs. 125–127 . A22-6530-2. Archivado (PDF) del original el 9 de octubre de 2022. 
  12. Principios de funcionamiento del tipo 701 y equipos asociados (PDF) . IBM. 1953. pág. 26. Archivado (PDF) del original el 9 de octubre de 2022. Consultado el 9 de noviembre de 2012 . 
  13. Jeremy M. Norman (2005). De Gutenberg a Internet . Norman. pág. 436. ISBN  0-930405-87-0.
  14. 704 Electronic Data-Processing Machine Manual of Operation(PDF). IBM. pp. 14–15. Archived(PDF) from the original on 2022-10-09.
  15. Operator's Guide for IBM 7090 Data Processing System(PDF). IBM. p. 34. Archived(PDF) from the original on 2022-10-09.
  16. IBM 7094 Principles of Operation(PDF). IBM. p. 146. Archived(PDF) from the original on 2022-10-09.
  17. Oxford English Dictionary. Oxford University. 1939.
  18. 650 magnetic drum data-processing machine manual of operation(PDF). IBM. 1955. pp. 49, 53–54. Archived(PDF) from the original on 2022-10-09.
  19. Operator's Guide for IBM 7040-7044 Systems(PDF). IBM. p. 10. A22-6741-1. Archived(PDF) from the original on 2022-10-09.
  20. CONTROL DATA 6600 Computer System Reference Manual(PDF) (Second ed.). Control Data Corporation. August 1963. p. 53. Archived(PDF) from the original on 2022-10-09.
  21. GE-645 System Manual(PDF). General Electric. January 1968. Archived(PDF) from the original on 2022-10-09. Retrieved 2019-10-30.
  22. PDP-10 System Reference Manual, Part 1(PDF). Digital Equipment Corporation. 1969. pp. 2–72. Archived(PDF) from the original on 2022-10-09. Retrieved 2012-11-09.
  23. 12Burroughs B 1700 Systems Reference Manual(PDF). Burroughs Corporation. November 1973. p. 1-14. Archived(PDF) from the original on 2022-10-09.
  24. 12z/Architecture Principles of Operation(PDF). IBM. September 2005. pp. Chapter 17. Archived(PDF) from the original on 2022-10-09. Retrieved 2007-04-14.
  25. Memoria de solo lectura BM792 y cargador de arranque MR11~DB (PDF) . Digital Equipment Corporation . Enero de 1974. DEC-II-HBMAA-ED. Archivado (PDF) del original el 9 de octubre de 2022.
  26. Manual de periféricos del PDP-11 (PDF) . Digital Equipment Corporation . 1976. págs. 4-25 . Archivado (PDF) del original el 9 de octubre de 2022 . 
  27. Manual del usuario del procesador de datos programado-7 (PDF) . Digital Equipment Corporation . 1965. pág. 143. Archivado (PDF) del original el 9 de octubre de 2022. 
  28. Manual del usuario de la PDP-9 (PDF) . Digital Equipment Corporation . Enero de 1968. pág. 10-3 . Archivado (PDF) del original el 9 de octubre de 2022 . 
  29. Manual de referencia del sistema PDP-15 (PDF) . Digital Equipment Corporation . Agosto de 1969. pág. 10-3 . Archivado (PDF) del original el 9 de octubre de 2022 . 
  30. 1 2 Cómo usar las computadoras Nova (PDF) . Data General . Abril de 1971. págs. 2-30 . Archivado (PDF) del original el 9 de octubre de 2022 . 
  31. "Oldcomputers: Altair 8800b" . Archivado del original el 3 de enero de 2020. Consultado el 10 de diciembre de 2019 .
  32. Holmer, Glenn. Altair 8800 carga BASIC 4K desde cinta de papel . Archivado del original el 30-07-2019 . Recuperado el 02-05-2016 .
  33. Reinicio/cargador BM873 (PDF) . Digital Equipment Corporation . Abril de 1974. DEC-11-H873A-BD. Archivado (PDF) del original el 9 de octubre de 2022.
  34. Manual de mantenimiento y operación del módulo de arranque/terminación M9301 (PDF) . Digital Equipment Corporation . Junio ​​de 1977. EK-M9301-TM-OO1. Archivado (PDF) del original el 9 de octubre de 2022.
  35. Manual técnico del módulo de arranque/terminación M9312 (PDF) . Digital Equipment Corporation . Marzo de 1981. EK-M9312-TM-OO3. Archivado (PDF) del original el 9 de octubre de 2022.
  36. Manual de interfaces de microcomputadoras (PDF) . Digital Equipment Corporation . 1981. pág. 17. Archivado (PDF) del original el 9 de octubre de 2022. 
  37. "Módulo de memoria de solo lectura 10 MRV11-C". Manual de productos de microcomputadoras (PDF) . Digital Equipment Corporation . 1985. Archivado (PDF) del original el 24/10/2022 . Consultado el 12/06/2022 .
  38. "11 MRVll·D Memoria de solo lectura programable universal". Manual de productos de microcomputadoras (PDF) . Digital Equipment Corporation . 1985. Archivado (PDF) del original el 24/10/2022 . Consultado el 12/06/2022 .
  39. Manual de usuario del sistema PDP-11/34 (PDF) . Digital Equipment Corporation . Julio de 1977. págs. 1–5 , 2-1–2-12 . EK-11034-UG-001. Archivado (PDF) del original el 9 de octubre de 2022 . 
  40. Manual de instalación y funcionamiento del PDP-11/60 (PDF) . Digital Equipment Corporation . Febrero de 1979. págs. 1–10 , 2-29–2-34 , 3-1–3-6 . EK-11060-OP- 003 . Archivado (PDF) del original el 9 de octubre de 2022 . 
  41. Manual técnico del sistema PDP-11/24 (PDF) . Digital Equipment Corporation . Junio ​​de 1981. págs. 1-6 . EK-11024-TM-001. Archivado (PDF) del original el 9 de octubre de 2022. 
  42. Ciaramella, Alberto . Dispositivo para la carga automática de la memoria central de procesadores electrónicos. Patente estadounidense n.º 4.117.974. 3 de octubre de 1978. (Presentada en 1975).
  43. Alberto Ciaramella racconta il brevetto del boostrap dei computer concepito in CSELT [ Alberto Ciaramella analiza la patente para computadoras de arranque concebidas en CSELT ] (en italiano). Archivado desde el original el 13 de noviembre de 2021.
  44. Manual técnico del sistema PDP-11/44 (PDF) . Digital Equipment Corporation . Febrero de 1979. págs. 6-57 . EK-KD11Z-TM-001. Archivado (PDF) del original el 9 de octubre de 2022. 
  45. Guía del usuario del hardware VAX-11/780 (PDF) . Digital Equipment Corporation . Febrero de 1979. 2.3 ARRANQUE y 3.6.1 Comando de arranque (B). EK-11780-UG-001. Archivado (PDF) del original el 9 de octubre de 2022.
  46. Descripción técnica de la unidad central de procesamiento VAX-11/730 (PDF) . Digital Equipment Corporation . Mayo de 1982. págs. 1-9 . EK-KA730-TD-001. Archivado (PDF) del original el 9 de octubre de 2022. 
  47. Guía de instalación de software VAX-11/750 (PDF) . Digital Equipment Corporation . Diciembre de 1982. págs. 1-2 – 1-4 , B-1 – B-8 , C-1 – C-2 . AA-K410C-TE. Archivado (PDF) del original el 9 de octubre de 2022. 
  48. Osborne, Adam ; Kane, Gerry (1981). Manual del microprocesador de 16 bits de Osborne (PDF) . OSBORNE/McGraw-Hill. págs. 5–27 . ISBN  0-931988-43-8. Archivado (PDF) del original el 09-10-2022 . Recuperado el 23-08-2019 .
  49. Manual del desarrollador de software para arquitecturas Intel 64 e IA-32, volumen 3 (3A, 3B, 3C y 3D): Guía de programación del sistema (PDF) . Archivado (PDF) del original el 9 de octubre de 2022.
  50. Osborne, Adam ; Kane, Gerry (1981). Manual de microprocesadores de 4 y 8 bits de Osborne . Osborne/McGraw-Hill. págs. 10–20 . ISBN  0-931988-42-X.
  51. Anuncio de Apple, Interface Age, octubre de 1976
  52. "Introducción al flujo de arranque de RISC-V" (PDF) . Consultado el 4 de septiembre de 2024 .
  53. 1 2 3 4 5Paul, Matthias R. (1997-10-02) [1997-09-29]. "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 del original el 4 de octubre de 2003. Recuperado el 29 de marzo de 2009 .
  54. Sakamoto, Masahiko (13 de mayo de 2010). "¿Por qué la BIOS carga el MBR en 7C00h en x86?" . Glamenv-Septzen.net . Archivado del original el 24 de agosto de 2017 . Recuperado el 22 de agosto de 2012 .
  55. 1 2 3 Compaq Computer Corporation; Phoenix Technologies Ltd; Intel Corporation (1996-01-11). "Especificación de arranque de BIOS 1.01" (PDF) . Archivado (PDF) del original el 2022-10-09 . Recuperado el 2017-12-21 .
  56. Equipo de cargador de arranque de Red Hat. "Cargador UEFI shim" . GitHub . Consultado el 28 de octubre de 2023 .
  57. "Capítulo 6 - Solución de problemas de inicio y de disco" . Kit de recursos de Windows NT Server . Microsoft. Archivado del original el 15 de mayo de 2007.
  58. "Tint" . coreboot. Archivado del original el 28-12-2010 . Recuperado el 20-11-2010 .
  59. "Lista de marcas de PC con sus teclas de acceso rápido correspondientes" . www.disk-image.com . Archivado del original el 11/11/2020 . Consultado el 26/09/2020 .
  60. "Cómo acceder a la BIOS en cualquier PC: Teclas de acceso por fabricante | Tom's Hardware" . www.tomshardware.com . Archivado del original el 20 de febrero de 2023. Consultado el 26 de septiembre de 2020 .
  61. Brown, Eric (2 de octubre de 2008). "MontaVista Linux impulsa la función de arranque rápido de Dell" . The LinuxDevices Archive . linuxdevices.com . Consultado el 20 de noviembre de 2010 .
  62. Larabel, Michael (14 de junio de 2008). "¿SplashTop Linux en portátiles HP y Dell?" . Phoronix . Archivado del original el 5 de octubre de 2016. Consultado el 20 de noviembre de 2010 .
  63. "Voodoo Envy's Instant-On IOS (con tecnología Splashtop)" . YouTube. 16 de julio de 2008. Archivado del original el 13 de noviembre de 2021. Consultado el 20 de noviembre de 2010 .
  64. "Manual de referencia del programador iAPX 286" (PDF) . Intel . 1983. Sección 5.3 INICIALIZACIÓN DEL SISTEMA, pág. 5-7. Archivado (PDF) del original el 09/10/2022 . Recuperado el 23/08/2019 . Dado que el registro CS contiene F000 (especificando así un segmento de código que comienza en la dirección física F0000) y el puntero de instrucciones contiene FFF0, el procesador ejecutará su primera instrucción en la dirección física FFFF0H.
  65. "Manual de referencia del programador del 80386" (PDF) . Intel. 1986. Sección 10.2.3 Primeras instrucciones, pág. 10-3. Archivado (PDF) del original el 09/10/2022 . Recuperado el 03/11/2013 . Después del RESET, las líneas de dirección A31–20 se activan automáticamente para la búsqueda de instrucciones. Este hecho, junto con los valores iniciales de CS:IP, hace que la ejecución de instrucciones comience en la dirección física FFFFFFF0H.
  66. "Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32" (PDF) . Intel Corporation . Mayo de 2012. Sección 9.1.4 Primera instrucción ejecutada, pág. 2611. Archivado (PDF) del original el 9 de octubre de 2022. Recuperado el 23 de agosto de 2012. La primera instrucción que se obtiene y ejecuta después de un reinicio de hardware se encuentra en la dirección física FFFFFFF0h. Esta dirección está 16 bytes por debajo de la dirección física más alta del procesador. La EPROM que contiene el código de inicialización del software debe estar ubicada en esta dirección.
  67. 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 ; Perez, 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 de 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 revisada ). Redmond, Washington, EE. UU.: Microsoft Press . ISBN  1-55615-049-0LCCN 87-21452 . OCLC 16581341 .​  (xix+1570 páginas; 26  cm) (NB. Esta edición se publicó en 1988 después de una extensa revisión de la primera edición de 1986, que fue retirada, por un equipo diferente de autores: "The MS-DOS Encyclopedia (1988)" . PCjs Machines . Archivado del original el 14 de octubre de 2018.)
  68. 1 2 3 Chappell, Geoff (enero de 1994). «Capítulo 2: La huella del sistema». En Schulman, Andrew; Pedersen, Amorette (eds.). DOS Internals . The Andrew Schulman Programming Series (1.ª impresión, 1.ª ed.). Addison Wesley Publishing Company . ISBN  978-0-201-60835-9.(xxvi+738+iv páginas, disquete de 3,5")) Erratas:
  69. Rosch, Winn L. (1991-02-12). "DR DOS 5.0 - ¿El mejor sistema operativo?" . PC Magazine . Vol. 10, n.º 3. págs. 241–246, 257, 264, 266. Consultado el 26-07-2019 . […] SYS se ha mejorado en DR DOS 5.0, por lo que no es necesario preocuparse por dejar libre el primer clúster en un disco que se quiera hacer arrancable. Los archivos del sistema DR DOS pueden ubicarse en cualquier parte del disco, por lo que cualquier disco con suficiente espacio libre puede configurarse para arrancar el sistema. […]    {{cite magazine}}: CS1 maint: servicio de archivado obsoleto ( enlace )(Nota: La fuente atribuye esto a la utilidad SYS, cuando en realidad se trata de una característica del cargador de arranque avanzado en el sector de arranque. SYS simplemente coloca este sector en el disco).
  70. Paul, Matthias R. (17 de enero de 2001). "FAT32 en DR-DOS" . opendos@delorie . Archivado del original el 6 de octubre de 2017. Consultado el 6 de octubre de 2017. [ …] El sector de arranque de DR-DOS […] busca el archivo IBMBIO.COM ( DRBIOS.SYS ) y luego carga el archivo *completo* en la memoria antes de cederle el control. […]
  71. Paul, Matthias R. (2002-02-20). "No se puede copiar" . opendos@delorie . Archivado del original el 06-10-2017 . Recuperado el 06-10-2017 . […] El sector de arranque de DR-DOS carga todo el archivo IBMBIO.COM en la memoria antes de ejecutarlo. No le importa en absoluto el archivo IBMDOS.COM , que es cargado por IBMBIO.COM. […] El sector de arranque de DR-DOS […] encontrará los […] archivos del kernel 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 kernel al disco (incluso con un simple COPY ), y tan pronto como el sector de arranque sea un sector de DR-DOS, los encontrará y cargará. Por supuesto, es difícil incluir todo esto en solo 512 bytes, el tamaño de un solo sector, pero esto supone una gran mejora en cuanto a comodidad al configurar un sistema DR-DOS, y también es clave para el funcionamiento de la utilidad DR-DOS multi-OS LOADER . Los archivos del kernel de MS-DOS deben residir en ubicaciones específicas, pero los archivos de DR-DOS pueden estar en cualquier lugar, por lo que no es necesario intercambiarlos físicamente cada vez que se inicia el otro sistema operativo. Además, permite actualizar un sistema DR-DOS simplemente copiando los archivos del kernel sobre los antiguos, sin necesidad de SYS ni de procedimientos de configuración complejos como los que se requieren para MS-DOS/ PC DOS . Incluso se pueden tener varios archivos del kernel de DR-DOS con nombres diferentes almacenados en la misma unidad, y LOADER alternará entre ellos según los nombres de archivo que figuren en el archivo BOOT.LST . […]
  72. Paul, Matthias R. (14-08-2017) [07-08-2017]. "La saga continua de Windows 3.1 en modo mejorado en OmniBook 300" . MoHPC - el Museo de Calculadoras HP . Archivado del original el 06-10-2017 . Recuperado el 06-10-2017 . [...] el DR-DOS FDISK 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 dañar accidentalmente el volumen incorrecto y no hay necesidad de FORMAT /S o SYS . Después, podría 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 cuenta con sectores de arranque "inteligentes" que "montan" el sistema de archivos para buscar y cargar los archivos del sistema en el directorio raíz, en lugar de esperar que se encuentren en una ubicación específica. Físicamente, los archivos del sistema pueden estar ubicados en cualquier lugar y también pueden estar fragmentados. […]
  73. "Marco de innovación de plataforma Intel para EFI" . Intel. Archivado del original el 21 de agosto de 2011. Consultado el 7 de enero de 2008 .
  74. "OpenBIOS - coreboot" . coreboot.org. Archivado del original el 18 de marzo de 2013. Consultado el 20 de marzo de 2013 .
  75. "UEFI - OSDev Wiki" . wiki.osdev.org . Archivado del original el 12/11/2020 . Consultado el 26/09/2020 .
  76. "Descripción general: las cuatro etapas del gestor de arranque" . ti.com . Texas Instruments . 5 de diciembre de 2013. Archivado del original el 23 de diciembre de 2014. Consultado el 25 de enero de 2015 .
  77. Nnamdi Ajah. "ARRANQUE EN BITE-SIZED PARA SISTEMAS EMBEBIDOS ARM" . Gist . Consultado el 3 de septiembre de 2025 .
  78. "Documentación del proceso de arranque de rxos ​​1.0rc1" . Consultado el 25 de octubre de 2015 .
  79. "mjg59 | Boot Guard y PSB tienen configuraciones predeterminadas hostiles para el usuario" . mjg59.dreamwidth.org . Consultado el 30 de noviembre de 2022 .
  80. "Microsoft bloquea los gestores de arranque UEFI que permiten eludir el arranque seguro de Windows" . BleepingComputer . Consultado el 11 de diciembre de 2022 .
  81. 1 2 J.JM Trienekens; RJ Kusters (19–21 de septiembre de 2003). Taller: detección de defectos en el desarrollo de software distribuido . Undécimo Taller Internacional Anual sobre Tecnología de Software y Práctica de Ingeniería. doi : 10.1109/STEP.2003.40 .
  82. 1 2 Tim Warren (23 de julio de 2024). "Dentro de los 78 minutos que dejaron fuera de servicio a millones de máquinas Windows" . The Verge .
  83. Joe Tidy (2024-07-20). "La interrupción del servicio informático de CrowdStrike afectó a 8,5 millones de dispositivos Windows, según Microsoft" . BBC News .
  84. 1 2 Piet Kerkhofs (19 de julio de 2024). "Actualizaciones sobre el problema de la pantalla azul de CrowdStrike Falcon y Microsoft" . Eye Security . Recuperado el 19 de julio de 2024 .
  85. Ruley, John D.; David Methvin; Tom Henderson; Martin Heller (1997). Networking Windows NT 4.0: Workstation and Server . Wiley. p. 257. ISBN  978-0-471-17502-5 vía Google Libros.
  86. Shultz, Gregory (febrero de 2001). "Deshabilitar el reinicio automático evita un posible bucle de reinicio" . Windows Professional . 6 (2). Element K Journals: 9. ProQuest 191083238 . 
  87. "Las nuevas actualizaciones de Windows Server provocan bucles de arranque de DC y dañan Hyper-V" . BleepingComputer . Consultado el 17 de mayo de 2022 .
  88. Paul Wagenseil (21/01/2021). "Actualización de Windows 10 que provoca un ciclo de arranque infinito en los PC: ¿Qué hacer?" . Tom's Guide . Consultado el 20/05/2022 .
  89. Hollister, Sean (19 de octubre de 2021). "Google lo ha intentado todo menos crear el mejor teléfono" . The Verge . Consultado el 17 de mayo de 2022 .
  90. "«Fue involuntario», dice el creador del fondo de pantalla «maldito» para Android . The Week . Consultado el 19 de mayo de 2022 .
  91. Hager, Ryne (1 de junio de 2020). "Google cree haber resuelto el misterio del fondo de pantalla que provocaba el bucle de arranque maldito" . Android Police . Consultado el 19 de mayo de 2022 .
  92. Peckham, James (29 de marzo de 2022). "Google Nest Hub recibe una nueva interfaz de usuario tan novedosa que podría provocar un bucle de reinicio en tu pantalla inteligente" . Android Police . Consultado el 19 de mayo de 2022 .
  93. "Declaración sobre la actualización de contenido de Falcon para hosts de Windows" . crowdstrike.com . Consultado el 19 de julio de 2024 .
  94. Baran, Guru (19 de julio de 2024). "Actualización de CrowdStrike provoca que las máquinas Windows entren en un bucle de pantalla azul" . Noticias de ciberseguridad . Consultado el 19 de julio de 2024 .
  95. "Una actualización de seguridad fallida daña Windows en todo el mundo, causando pantallas azules de la muerte y bloqueos" . Neowin . 19 de julio de 2024. Consultado el 19 de julio de 2024 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Booting&oldid=1360436176 "