En informática , el arranque es el proceso de iniciar una computadora . Puede iniciarse mediante hardware , como presionar un botón, o mediante un comando de software . Una vez que se enciende, la unidad central de procesamiento (CPU) de una computadora no tiene software en su memoria principal , por lo que algunos procesos deben cargar software en la memoria antes de que se pueda ejecutar. Esto puede realizarse mediante hardware o firmware en la CPU o mediante un procesador independiente en el sistema informático.
Reiniciar una computadora también se llama reinicio , lo que puede ser "difícil", por ejemplo, después de que la energía eléctrica a la CPU se apaga y enciende, o "suave", donde no se corta la energía. En algunos sistemas, un arranque suave puede borrar opcionalmente la RAM a cero. Tanto el arranque duro como el suave se pueden iniciar mediante hardware, como presionar 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 1] .
El proceso de devolución de un equipo desde un estado de sueño (suspensión) no implica el arranque; sin embargo, restaurarlo de un estado de hibernación sí lo hace. Como mínimo, algunos sistemas integrados no requieren una secuencia de inicio notable para comenzar a funcionar y, cuando se encienden, pueden simplemente ejecutar programas operativos que están almacenados en la ROM. Todos los sistemas informáticos son máquinas de estado , y un reinicio puede ser el único método para volver a un estado cero designado desde un estado bloqueado no intencionado.
Además de cargar un sistema operativo o una utilidad independiente, el proceso de arranque también puede cargar un programa de volcado de almacenamiento para diagnosticar problemas en un sistema operativo.
Boot es la abreviatura de bootstrap [1] [2] o bootstrap load y se deriva de la frase para levantarse a sí mismo por los propios bootstraps . [3] [4] El uso llama la atención sobre el requisito de que, si la mayor parte del software se carga en una computadora mediante otro software que ya se está ejecutando en la computadora, debe existir algún mecanismo para cargar el software inicial en la computadora. [5] Las primeras computadoras usaban una variedad de métodos ad-hoc para guardar 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 las computadoras se enviaran 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.
Historia
Hay muchos métodos diferentes disponibles para cargar un programa inicial corto en una computadora. Estos métodos van desde una entrada física simple hasta medios extraíbles que pueden contener programas más complejos.
Ejemplos de ROM de circuitos preintegrados
Primeros ordenadores
Las primeras computadoras en las décadas de 1940 y 1950 fueron esfuerzos de ingeniería únicos que podían tardar semanas en programarse y la carga de programas era uno de los muchos problemas que tenían que resolverse. Una de las primeras computadoras, ENIAC , no tenía ningún programa almacenado en la memoria, pero se configuraba para cada problema mediante una configuración de cables de interconexión. Bootstrapping no se aplicó a ENIAC, cuya configuración de hardware estaba lista para resolver problemas tan pronto como se aplicó la energía.
El sistema EDSAC , la segunda computadora con programa almacenado que se construyó, utilizó interruptores de pasos para transferir un programa fijo a la memoria cuando se presionó el botón de inicio. El programa almacenado en este dispositivo, que David Wheeler completó a fines de 1948, cargó más instrucciones de la cinta perforada y luego las ejecutó. [6] [7]
Primeras computadoras comerciales
Los primeros ordenadores programables para la venta comercial, como el UNIVAC I y el IBM 701 [8], incluían funciones para simplificar su funcionamiento. Por lo general, incluían instrucciones que realizaban una operación de entrada o salida completa. La misma lógica de hardware podría usarse para cargar el contenido de una tarjeta perforada (las más típicas) u otros medios de entrada, como un tambor magnético o cinta magnética , que contuviera un programa de arranque presionando un solo botón. Este concepto de arranque recibió varios nombres para las computadoras IBM de la década de 1950 y principios de la de 1960, pero IBM usó el término "Carga de programa inicial" con IBM 7030 Stretch [9] y luego lo usó para sus líneas de mainframe, comenzando con System / 360 en 1964.
La computadora IBM 701 (1952-1956) tenía un botón "Cargar" 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 , dependiendo de la posición del interruptor selector de carga. La media palabra de 18 bits de la izquierda se ejecutó luego como una instrucción, que generalmente lee palabras adicionales en la memoria. [10] [11] Luego se ejecutó el programa de arranque cargado, que, a su vez, cargó un programa más grande desde ese medio en la memoria sin más ayuda del operador humano. El término "bota" se ha utilizado en este sentido desde al menos 1958. [12]
Otras computadoras IBM de esa época tenían características similares. Por ejemplo, el sistema IBM 1401 (c. 1958) utilizó un lector de tarjetas para cargar un programa desde una tarjeta perforada. Los 80 caracteres almacenados en la tarjeta perforada se leyeron en las ubicaciones de memoria 001 a 080, luego la computadora se ramificaría a la ubicación de memoria 001 para leer su primera instrucción almacenada. Esta instrucción era siempre la misma: mover la información en estas primeras 80 ubicaciones de memoria a un área de ensamblaje donde la información en las tarjetas perforadas 2, 3, 4, etc., podría combinarse para formar el programa almacenado. Una vez que esta información se moviera al área de ensamblaje, la máquina se bifurcaría a una instrucción en la ubicación 080 (leer una tarjeta) y se leería la siguiente tarjeta y se procesaría su información.
Otro ejemplo fue el 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. Por lo tanto, establecer los interruptores en 7004000400 y presionar el botón apropiado leería la primera tarjeta en el lector de tarjetas en la memoria (código de operación 70), comenzando en la dirección 400 y luego saltando a 400 para comenzar a ejecutar el programa en esa tarjeta. [13]
Los competidores de IBM también ofrecían carga de programas con un solo botón.
- El CDC 6600 (c. 1964) tenía un panel de arranque muerto con 144 interruptores de palanca; el interruptor de arranque muerto ingresó 12 palabras de los interruptores de palanca a la memoria del procesador periférico ( PP ) 0 e inició la secuencia de carga. PP 0 cargó el código necesario en su propia memoria y luego inicializó los otros PP.
- El GE 645 (c. 1965) tenía un botón de "CARGA DEL SISTEMA" que, cuando se presionaba, 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 diodo y entregara una interrupción para causar ese programa para empezar a correr. [14]
- El primer modelo del PDP-10 tenía un botón "READ IN" que, cuando se presionaba, 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 daba una dirección de destino y recuento de lecturas de palabras posteriores; cuando se completó la lectura, el procesador comenzó a ejecutar el código leído saltando a la última palabra leída. [15]
Una variación notable de esto se encuentra en el Burroughs B1700 donde no hay una ROM de arranque ni una operación IPL cableada. En cambio, después de reiniciar el sistema, lee y ejecuta códigos de operación secuencialmente desde una unidad de cinta montada en el panel frontal; esto configura un cargador de arranque en RAM que luego se ejecuta. Sin embargo, dado que esto hace pocas suposiciones sobre el sistema, se puede usar igualmente 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 fallas graves de la CPU.
IBM System / 360 y sucesores
En IBM System / 360 y sus sucesores, incluidas las máquinas actuales de z / Architecture , el proceso de arranque se conoce como Carga de programa inicial (IPL).
IBM acuñó este término para el 7030 (Stretch) , [9] lo revivió para el diseño del System / 360, y continúa usándolo en esos entornos hoy. [16] En los procesadores System / 360, el operador de la computadora inicia una IPL 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 2] ) seguido presionando el botón LOAD . En los modelos System / 360 de gama alta , la mayoría de [nb 3] System / 370 y algunos sistemas posteriores, las funciones de los interruptores y el botón LOAD se simulan utilizando áreas seleccionables en la pantalla de una consola gráfica, a menudo [nb 4] y 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) da como resultado una IPL desde la dirección del dispositivo que se ingresó en el área de entrada. El Amdahl 470V / 6 y las CPU relacionadas admitían cuatro dígitos hexadecimales en aquellas CPU 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 System / 360 y sus sucesores, y sus compatibles como Amdahl, lee 24 bytes desde un dispositivo especificado por el operador en el almacenamiento 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 (el primer CCW siempre es simulado por la CPU y consta de un comando Leer IPL, 02h , con encadenamiento de comandos y suprimir la longitud incorrecta indicación en vigor). 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 a ejecutarse en la ubicación designada por ese PSW. [16] El dispositivo IPL suele ser una unidad de disco, de ahí el significado especial de la 02h read-type, 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 dispositivo operativo. sistema en una computadora nueva a partir de una cinta magnética de distribución inicial del sistema operativo. Para los controladores de disco, el El comando 02h también hace que el dispositivo seleccionado busque cilindro 0000h , cabeza 0000h , simulando un comando de búsqueda de cilindro y culata, 07h , y para buscar registro 01h , simulando un comando Igual de ID de búsqueda, 31h ; Las búsquedas y búsquedas no son simuladas por controladores de cinta y tarjeta, ya que para estas clases de dispositivos un El comando 02h es simplemente un comando de lectura secuencial, no un comando de lectura de IPL.
El disco, la cinta o la unidad de tarjeta debe contener un programa especial para cargar el sistema operativo real o la utilidad independiente en el almacenamiento principal y, para este propósito específico, el DASDI (dispositivo de almacenamiento de acceso directo) independiente coloca el "texto de IPL" en el disco. Inicialización) o un programa equivalente que se ejecuta bajo un sistema operativo, por ejemplo, ICKDSF, pero las cintas y cubiertas de tarjetas aptas para IPL generalmente se distribuyen con este "Texto IPL" ya presente.
Minicomputadoras
Las minicomputadoras , comenzando con Digital Equipment Corporation (DEC) PDP-5 y PDP-8 (1965) simplificaron el diseño mediante el uso de la CPU para ayudar en las operaciones de entrada y salida. Esto ahorró costos pero hizo que el arranque fuera más complicado que presionar un solo botón. Las minicomputadoras normalmente tenían alguna forma de alternar en programas cortos manipulando 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 cuando la energía estaba apagada, estos cargadores de arranque permanecerían en su lugar a menos que se borraran. El borrado a veces sucedía accidentalmente cuando un error del programa causaba un bucle que sobrescribía toda la memoria.
Otras miniordenadores con una forma tan simple de arranque incluyen la serie HP 2100 de Hewlett-Packard (mediados de la década de 1960), el Data General Nova original (1969) y el PDP-11 de DEC (1970).
Posteriormente, DEC agregó una memoria de solo lectura de matriz de diodos opcional 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 sostenía una matriz de diodos semiconductores de 32 por 16. Con los 512 diodos en su lugar, la memoria contenía todos los bits "uno"; la tarjeta se programaba cortando cada diodo cuyo bit debía ser "cero". DEC también vendió versiones de la tarjeta, la serie BM792-Yx, preprogramada para muchos dispositivos de entrada estándar simplemente omitiendo los diodos innecesarios. [17]
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 indicar al lector de cinta de papel que cargue un programa directamente en la memoria central. El Data General Supernova usó interruptores del panel frontal para hacer que la computadora cargue automáticamente instrucciones en la memoria desde un dispositivo especificado por los interruptores de datos del panel frontal, y luego salte al código cargado; los Nova 800 y 1200 tenían un interruptor que cargaba un programa en la memoria principal desde una memoria especial de solo lectura y saltaba a ella. [18]
Ejemplos tempranos del cargador de arranque de minicomputadora
En una minicomputadora con un 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 central el cargador de arranque de la segunda etapa (a menudo llamado cargador binario ) que podría leer la 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 puede ser tan simple como las siguientes ocho instrucciones:
- Establezca el registro P en 9
- Compruebe el lector de cinta de papel listo
- Si no está listo, salte al 2
- Leer un byte del lector de cinta de papel al acumulador
- Almacene el acumulador a la dirección en el registro P
- Si es el final de la cinta, salte al 9
- Incrementar el registro P
- Saltar a 2
Un ejemplo relacionado se basa en un cargador para una minicomputadora Nicolet Instrument Corporation de la década de 1970, que utiliza la unidad de perforado-lector de cinta de papel en una teleimpresora ASR Teletype Modelo 33 . Los bytes de su cargador de segunda etapa se leen de la cinta de papel en orden inverso.
- Establezca el registro P en 106
- Compruebe el lector de cinta de papel listo
- Si no está listo, salte al 2
- Leer un byte del lector de cinta de papel al acumulador
- Almacene el acumulador a la dirección en el registro P
- Disminuir el registro P
- Saltar a 2
La longitud del cargador de la segunda etapa es tal que el byte final sobrescribe la ubicación 7. Después de que se ejecuta la instrucción en la ubicación 6, la ubicación 7 inicia la ejecución del cargador de la segunda etapa. El cargador de la segunda etapa espera 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 es la adición de un código de verificación para atrapar errores de lectura de la cinta de papel, una ocurrencia frecuente con hardware de "servicio parcial" de costo relativamente bajo, como el modelo de teletipo 33 ASR. (Los Flexowriters de Friden eran mucho más confiables, pero también comparativamente costosos).
Arrancando las primeras microcomputadoras
Las primeras microcomputadoras, como la Altair 8800 (lanzada por primera vez en 1975) y una máquina similar incluso anterior (basada en la CPU Intel 8008) no tenían hardware de arranque como tal. [19] Cuando se inicia, la CPU ve la memoria que contiene código ejecutable que contiene sólo ceros binarios; la memoria se borró reiniciando al encender. Los paneles frontales de estas máquinas llevaban interruptores de palanca para ingresar direcciones y datos, un interruptor por bit de la palabra de memoria de la computadora y el bus de direcciones. Las adiciones simples al hardware permitieron cargar una ubicación de memoria a la vez desde esos conmutadores para almacenar el código de arranque. Mientras tanto, se evitó que la CPU intentara ejecutar el contenido de la memoria. Una vez cargada correctamente, la CPU se habilitó para ejecutar el código de arranque. Este proceso era tedioso y tenía que estar libre de errores. [20]
Era de memoria de solo lectura de circuito integrado
El proceso de arranque para miniordenadores y microordenadores [NB 5] se revolucionó por la introducción de circuito integrado de memoria de sólo lectura (ROM), con sus muchas variantes, incluyendo ROM programada por máscara , ROMs programables (PROM), ROM programable y borrable (EPROM) y memoria flash . Estos permitieron que los programas de arranque de firmware se incluyeran como parte de la computadora. La introducción de una ROM (externa) fue en un elaborador de conmutadores telefónicos italiano, llamado "Gruppi Speciali", patentado en 1975 por Alberto Ciaramella , investigador del CSELT . [21] Gruppi Speciali fue, a partir de 1975, una máquina de un solo botón que se iniciaba en el 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 la computadora de Gruppi Speciali, debido al diseño de la máquina, también permitía el arranque de ROM con un solo botón en máquinas no diseñadas para eso (por lo tanto, este "dispositivo de arranque" era independiente de la arquitectura ), por ejemplo, el PDP-11. También se pudo almacenar el estado de la máquina después de la desconexión, que fue otra característica crítica en el concurso de conmutación telefónica. [22]
Por lo general, cada microprocesador, después de una condición de reinicio o encendido, realizará un proceso de inicio que generalmente toma la forma de "comenzar la ejecución del código que se encuentra comenzando en una dirección específica" o "buscar un código multibyte en una dirección específica y salte a la ubicación indicada para comenzar la ejecución ". Un sistema construido usando ese microprocesador tendrá la ROM permanente ocupando estas ubicaciones especiales para que el sistema siempre comience a operar sin la ayuda del operador. Por ejemplo, los procesadores Intel x86 siempre comienzan ejecutando las instrucciones que comienzan en F000: FFF0, [23] [24] 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 saltar a esa ubicación para ejecutar el código de arranque. [25]
La primera computadora de Apple Inc. , la Apple 1 presentada en 1976, incluía chips PROM que eliminaban la necesidad de un panel frontal para el proceso de arranque (como era el caso del Altair 8800) en una computadora comercial. Según el anuncio de Apple que lo anuncia "No más interruptores, no más luces ... el firmware en PROMS le permite ingresar, mostrar y depurar programas (todo en hexadecimal) desde el teclado". [26]
Debido al gasto de la memoria de solo lectura en ese momento, la serie Apple II arrancó sus sistemas operativos de disco utilizando una serie de pasos incrementales muy pequeños, cada uno pasando el control a la siguiente fase del proceso de arranque gradualmente más complejo. (Ver Apple DOS: cargador de arranque ). Debido a que muy poco del sistema operativo de disco dependía de la ROM, el hardware también era extremadamente flexible y admitía una amplia gama de mecanismos de protección de copia de disco personalizados . (Consulte Craqueo de software: historial ).
Algunos sistemas operativos, sobre todo los sistemas Macintosh de Apple anteriores a 1995 , están tan estrechamente entrelazados con su hardware que es imposible arrancar de forma nativa un sistema operativo que no sea el estándar. Este es el extremo opuesto del escenario que usa los interruptores mencionados anteriormente; es muy inflexible pero relativamente a prueba de errores y a prueba de errores siempre que todo el hardware funcione con normalidad. Una solución común en tales situaciones es diseñar un cargador de arranque que funcione como un programa perteneciente al sistema operativo estándar que secuestra el sistema y carga el sistema operativo alternativo. Esta técnica fue utilizada por Apple para su implementación A / UX Unix y copiada por varios sistemas operativos gratuitos y BeOS Personal Edition 5 .
Algunas máquinas, como la microcomputadora Atari ST , eran de "encendido instantáneo", y el sistema operativo se ejecutaba desde una ROM . La recuperación del sistema operativo del almacenamiento secundario o terciario se eliminó así como una de las operaciones características del bootstrapping. Para permitir que las personalizaciones del sistema, los accesorios y otro software de soporte se carguen automáticamente, se leyó la unidad de disquete de Atari en busca de componentes adicionales durante el proceso de arranque. Hubo un retraso de tiempo de espera que proporcionó tiempo para insertar manualmente un disquete mientras el sistema buscaba los componentes adicionales. Esto podría evitarse insertando un disco en blanco. El hardware Atari ST también fue diseñado para que la ranura del cartucho pudiera proporcionar la ejecución del programa nativo para propósitos de juego como un vestigio del legado de Atari en la fabricación de juegos electrónicos; al insertar el cartucho Spectre GCR con la ROM del sistema Macintosh en la ranura del juego y encender el Atari, podría "arrancar de forma nativa" el sistema operativo Macintosh en lugar del propio TOS de Atari .
La computadora personal de IBM incluía firmware basado en ROM llamado BIOS ; una de las funciones de ese firmware era realizar una autoprueba de encendido cuando la máquina estaba encendida, y luego leer el software de un dispositivo de arranque y ejecutarlo. El firmware compatible con el BIOS en la computadora personal IBM se utiliza en computadoras compatibles con IBM PC . La UEFI fue desarrollada por Intel, originalmente para máquinas basadas en Itanium , y más tarde también se usó como una alternativa a la BIOS en máquinas basadas en x86 , incluidas las Apple Macs que utilizan procesadores Intel .
Unix workstations originally had vendor-specific ROM-based firmware. Sun Microsystems later developed OpenBoot, later known as Open Firmware, which incorporated a Forth interpreter, with much of the firmware being written in Forth. It was standardized by the IEEE as IEEE standard 1275-1994; firmware that implements that standard was used in PowerPC-based Macs and some other PowerPC-based machines, as well as Sun's own SPARC-based computers. The Advanced RISC Computing specification defined another firmware standard, which was implemented on some MIPS-based and Alpha-based machines and the SGI Visual Workstation x86-based workstations.
Cargadores de maletero modernos
When a computer is turned off, its software—including operating systems, application code, and data—remains stored on non-volatile memory. When the computer is powered on, it typically does not have an operating system or its loader in random-access memory (RAM). The computer first executes a relatively small program stored in read-only memory (ROM, and later EEPROM, NOR flash) along with some needed data, to initialize RAM (especially on x86 systems), to access the nonvolatile device (usually block device, eg NAND flash) or devices from which the operating system programs and data can be loaded into RAM.
The small program that starts this sequence is known as a bootstrap loader, bootstrap or boot loader. Often, multiple-stage boot loaders are used, during which several programs of increasing complexity load one after the other in a process of chain loading.
Some earlier computer systems, upon receiving a boot signal from a human operator or a peripheral device, may load a very small number of fixed instructions into memory at a specific location, initialize at least one CPU, and then point the CPU to the instructions and start their execution. These instructions typically start an input operation from some peripheral device (which may be switch-selectable by the operator). Other systems may send hardware commands directly to peripheral devices or I/O controllers that cause an extremely simple input operation (such as "read sector zero of the system device into memory starting at location 1000") to be carried out, effectively loading a small number of boot loader instructions into memory; a completion signal from the I/O device may then be used to start execution of the instructions by the CPU.
Smaller computers often use less flexible but more automatic boot loader mechanisms to ensure that the computer starts quickly and with a predetermined software configuration. In many desktop computers, for example, the bootstrapping process begins with the CPU executing software contained in ROM (for example, the BIOS of an IBM PC) at a predefined address (some CPUs, including the Intel x86 series are designed to execute this software after reset without outside help). This software contains rudimentary functionality to search for devices eligible to participate in booting, and load a small program from a special section (most commonly the boot sector) of the most promising device, typically starting at a fixed entry point such as the start of the sector.
Boot loaders may face peculiar constraints, especially in size; for instance, on the IBM PC and compatibles, the boot code must fit in the Master Boot Record (MBR) and the Partition Boot Record (PBR), which in turn are limited to a single sector; on the IBM System/360, the size is limited by the IPL medium, e.g., card size, track size.
On systems with those constraints, the first program loaded into RAM may not be sufficiently large to load the operating system and, instead, must load another, larger program. The first program loaded into RAM is called a first-stage boot loader, and the program it loads is called a second-stage boot loader.
First-stage boot loader
Examples of first-stage (ROM stage or Hardware initialization stage) bootloaders include BIOS, UEFI, coreboot, Libreboot and Das U-Boot. On the IBM PC, the boot loader in the Master Boot Record (MBR) and the Partition Boot Record (PBR) was coded to require at least 32 KB[27][28] (later tightened to 64 KB[29]) of system memory and only use instructions supported by the original 8088/8086 processors.
Second-stage boot loader
Second-stage boot loaders, such as GNU GRUB, rEFInd, BOOTMGR, Syslinux, NTLDR or iBoot, are not themselves operating systems, but are able to load an operating system properly and transfer execution to it; the operating system subsequently initializes itself and may load extra device drivers. The second-stage boot loader does not need drivers for its own operation, but may instead use generic storage access methods provided by system firmware such as the BIOS, UEFI or Open Firmware, though typically with restricted hardware functionality and lower performance.[30]
Many boot loaders (like GNU GRUB, rEFInd, Windows's BOOTMGR, Syslinux, and Windows NT/2000/XP's NTLDR) can be configured to give the user multiple booting choices. These choices can include different operating systems (for dual or multi-booting from different partitions or drives), different versions of the same operating system (in case a new version has unexpected problems), different operating system loading options (e.g., booting into a rescue or safe mode), and some standalone programs that can function without an operating system, such as memory testers (e.g., memtest86+), a basic shell (as in GNU GRUB), or even games (see List of PC Booter games).[31] Some boot loaders can also load other boot loaders; for example, GRUB loads BOOTMGR instead of loading Windows directly. Usually a default choice is preselected with a time delay during which a user can press a key to change the choice; after this delay, the default choice is automatically run so normal booting can occur without interaction.
The boot process can be considered complete when the computer is ready to interact with the user, or the operating system is capable of running system programs or application programs.
Many embedded systems must boot immediately. For example, waiting a minute for a digital television or a GPS navigation device to start is generally unacceptable. Therefore, such devices have software systems in ROM or flash memory so the device can begin functioning immediately; little or no loading is necessary, because the loading can be precomputed and stored on the ROM when the device is made.
Large and complex systems may have boot procedures that proceed in multiple phases until finally the operating system and other programs are loaded and ready to execute. Because operating systems are designed as if they never start or stop, a boot loader might load the operating system, configure itself as a mere process within that system, and then irrevocably transfer control to the operating system. The boot loader then terminates normally as any other process would.
Network booting
Most computers are also capable of booting over a computer network. In this scenario, the operating system is stored on the disk of a server, and certain parts of it are transferred to the client using a simple protocol such as the Trivial File Transfer Protocol (TFTP). After these parts have been transferred, the operating system takes over the control of the booting process.
As with the second-stage boot loader, network booting begins by using generic network access methods provided by the network interface's boot ROM, which typically contains a Preboot Execution Environment (PXE) image. No drivers are required, but the system functionality is limited until the operating system kernel and drivers are transferred and started. As a result, once the ROM-based booting has completed it is entirely possible to network boot into an operating system that itself does not have the ability to use the network interface.
Computadoras personales (PC)
Boot devices
The boot device is the device from which the operating system is loaded. A modern PC's UEFI or BIOS firmware supports booting from various devices, typically a local solid state drive or hard disk drive via the GPT or Master Boot Record (MBR) on such a drive or disk, an optical disc drive (using El Torito), a USB mass storage device (FTL-based flash drive, SD card or multi-media card slot, USB hard disk drive, USB optical disc drive, etc.), or a network interface card (using PXE). Older, less common BIOS-bootable devices include floppy disk drives, Zip drives, and LS-120 drives.
Typically, the firmware (UEFI or BIOS) will allow the user to configure a boot order. If the boot order is set to "first, the DVD drive; second, the hard disk drive", then the firmware will try to boot from the DVD drive, and if this fails (e.g. because there is no DVD in the drive), it will try to boot from the local hard disk drive.
For example, on a PC with Windows installed on the hard drive, the user could set the boot order to the one given above, and then insert a Linux Live CD in order to try out Linux without having to install an operating system onto the hard drive. This is an example of dual booting, in which the user chooses which operating system to start after the computer has performed its Power-on self-test (POST). In this example of dual booting, the user chooses by inserting or removing the DVD from the computer, but it is more common to choose which operating system to boot by selecting from a boot manager menu on the selected device, by using the computer keyboard to select from a BIOS or UEFI Boot Menu, or both; the Boot Menu is typically entered by pressing F8 or F12 keys during the POST; the BIOS Setup is typically entered by pressing F2 or DEL keys during the POST.[32][33]
Several devices are available that enable the user to quick-boot into what is usually a variant of Linux for various simple tasks such as Internet access; examples are Splashtop and Latitude ON.[34][35][36]
Boot sequence
Upon starting, an IBM-compatible personal computer's x86 CPU, executes in real mode, the instruction located at reset vector (the physical memory address FFFF0h on 16-bit x86 processors[37] and FFFFFFF0h on 32-bit and 64-bit x86 processors[38][39]), usually pointing to the firmware (UEFI or BIOS) entry point inside the ROM. This memory location typically contains a jump instruction that transfers execution to the location of the firmware (UEFI or BIOS) start-up program. This program runs a power-on self-test (POST) to check and initialize required devices such as main memory (DRAM), the PCI bus and the PCI devices (including running embedded Option ROMs). One of the most involved steps is setting up DRAM over SPD, further complicated by the fact that at this point memory is very limited.
After initializing required hardware, the firmware (UEFI or BIOS) goes through a pre-configured list of non-volatile storage devices ("boot device sequence") until it finds one that is bootable. A bootable MBR device is defined as one that can be read from, and where the last two bytes of the first sector contain the little-endian wordAA55h,[nb 6] found as byte sequence 55h, AAh on disk (also known as the MBR boot signature), or where it is otherwise established that the code inside the sector is executable on x86 PCs.
Once the BIOS has found a bootable device it loads the boot sector to linear address 7C00h (usually segment:offset0000h: 7C00h,[27] but some BIOSes erroneously use 07C0h: 0000h[citation needed]) and transfers execution to the boot code. In the case of a hard disk, this is referred to as the Master Boot Record (MBR). The conventional MBR code checks the MBR's partition table for a partition set as bootable[nb 7] (the one with active flag set). If an active partition is found, the MBR code loads the boot sector code from that partition, known as Volume Boot Record (VBR), and executes it. The MBR boot code is often operating-system specific.
The boot sector code is the first-stage boot loader. It is located on fixed disks and removable drives, and must fit into the first 446 bytes of the Master Boot Record in order to leave room for the default 64-byte partition table with four partition entries and the two-byte boot signature, which the BIOS requires for a proper boot loader — or even less, when additional features like more than four partition entries (up to 16 with 16 bytes each), a disk signature (6 bytes), a disk timestamp (6 bytes), an Advanced Active Partition (18 bytes) or special multi-boot loaders have to be supported as well in some environments. In floppy and superfloppy Volume Boot Records, up to 59 bytes are occupied for the Extended BIOS Parameter Block on FAT12 and FAT16 volumes since DOS 4.0, whereas the FAT32 EBPB introduced with DOS 7.1 requires even 87 bytes, leaving only 423 bytes for the boot loader when assuming a sector size of 512 bytes. Microsoft boot sectors therefore traditionally imposed certain restrictions on the boot process, for example, the boot file had to be located at a fixed position in the root directory of the file system and stored as consecutive sectors,[40][41] conditions taken care of by the SYS
command and slightly relaxed in later versions of DOS.[41][nb 8] The boot loader was then able to load the first three sectors of the file into memory, which happened to contain another embedded boot loader able to load the remainder of the file into memory.[41] When Microsoft added LBA and FAT32 support, they even switched to a boot loader reaching over two physical sectors and using 386 instructions for size reasons. At the same time other vendors managed to squeeze much more functionality into a single boot sector without relaxing the original constraints on only minimal available memory (32 KB) and processor support (8088/8086).[nb 9] For example, DR-DOS boot sectors are able to locate the boot file in the FAT12, FAT16 and FAT32 file system, and load it into memory as a whole via CHS or LBA, even if the file is not stored in a fixed location and in consecutive sectors.[42][27][43][44][45][nb 10][nb 9]
The VBR is often OS-specific; however, its main function is to load and execute the operating system boot loader file (such as bootmgr
or ntldr
), which is the second-stage boot loader, from an active partition. Then the boot loader loads the OS kernel from the storage device.
If there is no active partition, or the active partition's boot sector is invalid, the MBR may load a secondary boot loader which will select a partition (often via user input) and load its boot sector, which usually loads the corresponding operating system kernel. In some cases, the MBR may also attempt to load secondary boot loaders before trying to boot the active partition. If all else fails, it should issue an INT 18h[29][27] BIOS interrupt call (followed by an INT 19h just in case INT 18h would return) in order to give back control to the BIOS, which would then attempt to boot off other devices, attempt a remote boot via network.[27]
Most modern systems (newer Apple Macs and newer PCs) use UEFI.[46][47]
Unlike BIOS, UEFI (not Legacy boot via CSM) does not rely on boot sectors, UEFI system loads the boot loader (EFI application file in USB disk or in the EFI System Partition) directly,[48] and the OS kernel is loaded by the boot loader.
Otros tipos de secuencias de arranque
Some modern CPUs and microcontrollers (for example, TI OMAP) or sometimes even DSPs may have boot ROM with boot code integrated directly into their silicon, so such a processor could perform quite a sophisticated boot sequence on its own and load boot programs from various sources like NAND flash, SD or MMC card and so on. It is difficult to hardwire all the required logic for handling such devices, so an integrated boot ROM is used instead in such scenarios. Boot ROM usage enables more flexible boot sequences than hardwired logic could provide. For example, the boot ROM could try to perform boot from multiple boot sources. Also, a boot ROM is often able to load a boot loader or diagnostic program via serial interfaces like UART, SPI, USB and so on. This feature is often used for system recovery purposes when for some reasons usual boot software in non-volatile memory got erased, and it could also be used for initial non-volatile memory programming when there is clean non-volatile memory installed and hence no software available in the system yet.
Some embedded system designs may also include an intermediary boot sequence step in form of additional code that gets loaded into system RAM by the integrated boot ROM. Additional code loaded that way usually serves as a way for overcoming platform limitations, such as small amounts of RAM, so a dedicated primary boot loader, such as Das U-Boot, can be loaded as the next step in system's boot sequence. The additional code and boot sequence step are usually referred to as secondary program loader (SPL).[49]
It is also possible to take control of a system by using a hardware debug interface such as JTAG. Such an interface may be used to write the boot loader program into bootable non-volatile memory (e.g. flash) by instructing the processor core to perform the necessary actions to program non-volatile memory. Alternatively, the debug interface may be used to upload some diagnostic or boot code into RAM, and then to start the processor core and instruct it to execute the uploaded code. This allows, for example, the recovery of embedded systems where no software remains on any supported boot device, and where the processor does not have any integrated boot ROM. JTAG is a standard and popular interface; many CPUs, microcontrollers and other devices are manufactured with JTAG interfaces (as of 2009).
Some microcontrollers provide special hardware interfaces which cannot be used to take arbitrary control of a system or directly run code, but instead they allow the insertion of boot code into bootable non-volatile memory (like flash memory) via simple protocols. Then at the manufacturing phase, such interfaces are used to inject boot code (and possibly other code) into non-volatile memory. After system reset, the microcontroller begins to execute code programmed into its non-volatile memory, just like usual processors are using ROMs for booting. Most notably this technique is used by Atmel AVR microcontrollers, and by others as well. In many cases such interfaces are implemented by hardwired logic. In other cases such interfaces could be created by software running in integrated on-chip boot ROM from GPIO pins.
Most digital signal processors have a serial mode boot, and a parallel mode boot, such as the host port interface (HPI boot)
In case of DSPs there is often a second microprocessor or microcontroller present in the system design, and this is responsible for overall system behavior, interrupt handling, dealing with external events, user interface, etc. while the DSP is dedicated to signal processing tasks only. In such systems the DSP could be booted by another processor which is sometimes referred as the host processor (giving name to a Host Port). Such a processor is also sometimes referred as the master, since it usually boots first from its own memories and then controls overall system behavior, including booting of the DSP, and then further controlling the DSP's behavior. The DSP often lacks its own boot memories and relies on the host processor to supply the required code instead. The most notable systems with such a design are cell phones, modems, audio and video players and so on, where a DSP and a CPU/microcontroller are co-existing.
Many FPGA chips load their configuration from an external serial EEPROM ("configuration ROM") on power-up.
Ver también
- Boot disk
- Bootkit
- Comparison of boot loaders
- Linux startup process
- Macintosh startup
- Microreboot
- Multi boot
- Network booting
- RedBoot
- Self-booting disk
- Windows NT startup process
- Windows Vista startup process
Notas
- ^ Including daemons.
- ^ UU was often of the form Uu, U=Control unit address, u=Device address, but some control units attached only 8 devices; some attached more than 16. Indeed, the 3830 DASD controller offered 32-drive-addressing as an option.
- ^ Excluding the 370/145 and 370/155, which used a 3210 or 3215 console typewriter.
- ^ Only the S/360 used the 2250; the 360/85, 370/165 and 370/168 used a keyboard/display device compatible with nothing else.
- ^ The IBM 1401, IBM 7090, IBM System/360 and many others did not require keying in a boot loader. The S/360 had a read only storage in most models, although not using integrated circuits.
- ^ The signature at offset +1FEh in boot sectors is 55h AAh, that is 55h at offset +1FEh and AAh at offset +1FFh. Since little-endian representation must be assumed in the context of IBM PC compatible machines, this can be written as 16-bit word AA55h in programs for x86 processors (note the swapped order), whereas it would have to be written as 55AAh in programs for other CPU architectures using a big-endian representation. Since this has been mixed up numerous times in books and even in original Microsoft reference documents, this article uses the offset-based byte-wise on-disk representation to avoid any possible misinterpretation.
- ^ The active partition may contain a Second-stage boot loader, e.g., OS/2 Boot Manager, rather than an OS.
- ^ The PC DOS 5.0 manual incorrectly states that the systen files no longer need to be contiguous. However, for the boot process to work the system files still need to occupy the first two directory entries and the first three sectors of IBMBIO.COM still need to be stored contiguously. SYS continues to take care of these requirements.
- ^ a b As an example, while the extended functionality of DR-DOS MBRs and boot sectors compared to their MS-DOS/PC DOS counterparts could still be achieved utilizing conventional code optimization techniques up to 7.05, for the addition of LBA, FAT32 and LOADER support the 7.07 sectors had to resort to self-modifying code, opcode-level programming, controlled utilization of side effects, multi-level data/code superpositioning and algorithmic folding techniques to squeeze everything into a single physical sector, as it was a requirement for backward- and cross-compatibility with other operating systems in multi-boot and chain load scenarios.
- ^ There is one exception to the rule that DR-DOS VBRs will load the whole IBMBIO.COM file into memory: If the IBMBIO.COM file is larger than some 29 KB, trying to load the whole file into memory would result in the boot loader to overwrite the stack and relocated Disk Parameter Table (DPT/FDPB). Therefore, a DR-DOS 7.07 VBR would only load the first 29 KB of the file into memory, relying on another loader embedded into the first part of IBMBIO.COM to check for this condition and load the remainder of the file into memory by itself if necessary. This does not cause compatibility problems, as IBMBIO.COM's size never exceeded this limit in previous versions without this loader. Combined with a dual entry structure this also allows the system to be loaded by a PC DOS VBR, which would load only the first three sectors of the file into memory.
Referencias
- ^ "bootstrap". Computer Dictionary of Information Technology.
- ^ "Bootstrap". The Free Dictionary.
- ^ "Pull oneself up by bootstraps". Idioms by The Free Dictionary. Retrieved 2019-10-07.
- ^ "Bootstrap Definition". Tech Terms. Retrieved 2019-10-02.
- ^ "Pull yourself up by your bootstraps". The Phrase Finder.
- ^ Campbell-Kelly, Martin (1980). "Programming the EDSAC". IEEE Annals of the History of Computing. 2 (1): 7–36. doi:10.1109/mahc.1980.10009.
- ^ Wilkes, Maurice V.; Wheeler, David J.; Gill, Stanley (1951). The Preparation of Programs for an Electronic Digital Computer. Addison-Wesley.
- ^ Buchholz, Werner (1953). "The System Design of the IBM Type 701 Computer" (PDF). Proceedings of the I.R.E. 41 (10): 1273.
- ^ a b "IBM 7619 Exchange". Reference Manual 7030 Data Processing System (PDF). IBM. August 1961. pp. 125–127. A22-6530-2.
- ^ Principles of Operation Type 701 And Associated Equipment (PDF). IBM. 1953. p. 26. Retrieved 2012-11-09.
- ^ From Gutenberg to the Internet, Jeremy M. Norman, 2005, page 436, ISBN 0-930405-87-0
- ^ Oxford English Dictionary. Oxford University.
- ^ 650 magnetic drum data-processing machine manual of operation (PDF). IBM. 1955. pp. 49, 53–54.
- ^ GE-645 System Manual (PDF). General Electric. January 1968. Retrieved 2019-10-30.
- ^ PDP-10 System Reference Manual, Part 1 (PDF). Digital Equipment Corporation. 1969. pp. 2–72. Retrieved 2012-11-09.
- ^ a b z/Architecture Principles of Operation (PDF). IBM. September 2005. pp. Chapter 17. Retrieved 2007-04-14.
- ^ PDP-11 Peripherals Handbook (PDF). Digital Equipment Corporation. 1976. pp. 4–25.
- ^ How To Use The Nova Computers (PDF). Data General. October 1974. Section 2.8 "Program Loading".
- ^ "Oldcomputers: Altair 8800b". Retrieved 2019-12-10.
- ^ "Altair 8800 loads 4K BASIC from paper tape", video by Glenn Holmer
- ^ Ciaramella, Alberto. "Device for automatically loading the central memory of electronic processors." U.S. Patent No. 4,117,974. 1978-10-03. (submitted in 1975)
- ^ Alberto Ciaramella racconta il brevetto del boostrap dei computer concepito in CSELT [Alberto Ciaramella discusses the patent for bootstrapping computers conceived at CSELT] (in Italian).
- ^ Osborne, Adam; Kane, Gerry (1981). Osborne 16-Bit Microprocessor Handbook (PDF). pp. 5–27. ISBN 0-931988-43-8. Retrieved 2019-08-23.
- ^ Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B, 3C & 3D): System Programming Guide (PDF).
- ^ Osborne, Adam; Kane, Gerry. Osborne 4&8-Bit Microprocessor Handbook. pp. 10–20. ISBN 0-931988-42-X.
- ^ Apple Ad, Interface Age, October 1976
- ^ a b c d e Paul, Matthias R. (1997-10-02) [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". Archived from the original on 2003-10-04. Retrieved 2009-03-29. [1]
- ^ Sakamoto, Masahiko (2010-05-13). "Why BIOS loads MBR into 7C00h in x86?". Glamenv-Septzen.net. Retrieved 2012-08-22.
- ^ a b Compaq Computer Corporation; Phoenix Technologies Ltd; Intel Corporation (1996-01-11). "BIOS Boot Specification 1.01" (PDF). Retrieved 2017-12-21.
- ^ "Chapter 6 - Troubleshooting Startup and Disk Problems". Windows NT Server Resource Kit. Microsoft. Archived from the original on 2007-05-15.
- ^ "Tint". coreboot. Retrieved 2010-11-20.
- ^ "List of PC brands with their corresponding hot-keys". www.disk-image.com. Retrieved 2020-09-26.
- ^ "How to Enter the BIOS on Any PC: Access Keys by Manufacturer | Tom's Hardware". www.tomshardware.com. Retrieved 2020-09-26.
- ^ Brown, Eric (2008-10-02). "MontaVista Linux drives Dell's quick-boot feature". linuxdevices.com. Retrieved 2010-11-20.
- ^ Larabel, Michael (2008-06-14). "SplashTop Linux On HP, Dell Notebooks?". Phoronix. Retrieved 2010-11-20.
- ^ "Voodoo Envy's Instant-On IOS (powered by Splashtop)". YouTube. Retrieved 2010-11-20.
- ^ "iAPX 286 Programmer's Reference Manual" (PDF). Intel. 1983. Section 5.3 SYSTEM INITIALIZATION, p. 5-7. Retrieved 2019-08-23.
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" (PDF). Intel. 1986. Section 10.2.3 First Instructions, p. 10-3. Retrieved 2013-11-03.
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" (PDF). Intel Corporation. May 2012. Section 9.1.4 First Instruction Executed, p. 2611. Retrieved 2012-08-23.
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.
- ^ 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). "Technical advisors". The MS-DOS Encyclopedia: versions 1.0 through 3.2. By 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 (Completely reworked ed.). Redmond, Washington, USA: Microsoft Press. ISBN 1-55615-049-0. LCCN 87-21452. 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. [2])
- ^ a b c Chappell, Geoff (January 1994). "Chapter 2: The System Footprint". In Schulman, Andrew; Pedersen, Amorette (eds.). DOS Internals. The Andrew Schulman Programming Series (1st printing, 1st ed.). Addison Wesley Publishing Company. ISBN 978-0-201-60835-9. (xxvi+738+iv pages, 3.5"-floppy [3][4]) Errata: [5][6][7]
- ^ Rosch, Winn L. (1991-02-12). "DR DOS 5.0 - The better operating system?". PC Magazine. Vol. 10 no. 3. p. 241-246, 257, 264, 266. Archived from the original on 2019-07-25. Retrieved 2019-07-26.
[…] 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. (2001-01-17). "FAT32 in DR-DOS". opendos@delorie. Archived from the original on 2017-10-06. Retrieved 2017-10-06.
[…] 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. (2002-02-20). "Can't copy". opendos@delorie. Archived from the original on 2017-10-06. Retrieved 2017-10-06.
[…] 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. (2017-08-14) [2017-08-07]. "The continuing saga of Windows 3.1 in enhanced mode on OmniBook 300". MoHPC - the Museum of HP Calculators. Archived from the original on 2017-10-06. Retrieved 2017-10-06.
[…] 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. Retrieved 2008-01-07.
- ^ "OpenBIOS - coreboot". coreboot.org. Retrieved 2013-03-20.
- ^ "UEFI - OSDev Wiki". wiki.osdev.org. Retrieved 2020-09-26.
- ^ "Overview – The four bootloader stages". ti.com. Texas Instruments. 2013-12-05. Retrieved 2015-01-25.