stringtranslate.com

Registro de arranque del volumen

Un registro de arranque de volumen ( VBR ) (también conocido como sector de arranque de volumen , registro de arranque de partición o sector de arranque de partición ) es un tipo de sector de arranque introducido por IBM Personal Computer . Puede encontrarse en un dispositivo de almacenamiento de datos particionado , como un disco duro , o en un dispositivo no particionado, como un disquete , y contiene código de máquina para programas de arranque (normalmente, pero no necesariamente, sistemas operativos ) almacenados en otras partes del dispositivo. En dispositivos de almacenamiento no particionados , es el primer sector del dispositivo. En dispositivos particionados, es el primer sector de una partición individual en el dispositivo, siendo el primer sector de todo el dispositivo un Registro de arranque maestro (MBR) que contiene la tabla de particiones .

El código de los registros de arranque de volumen se invoca directamente por el firmware de la máquina o indirectamente por el código del registro de arranque maestro o un administrador de arranque . El código del MBR y del VBR se carga básicamente de la misma manera .

La invocación de un VBR a través de un gestor de arranque se conoce como carga en cadena . Algunos sistemas de arranque dual , como NTLDR (el gestor de arranque para todas las versiones de los sistemas operativos derivados de Windows NT de Microsoft hasta Windows XP y Windows Server 2003 incluidos ), toman copias del código de arranque que los sistemas operativos individuales instalan en el VBR de una única partición y las almacenan en archivos de disco, cargando el contenido VBR relevante desde el archivo después de que el gestor de arranque haya preguntado al usuario qué sistema operativo arrancar. En Windows Vista , Windows Server 2008 y versiones más nuevas, se reemplazó NTLDR; la funcionalidad del gestor de arranque la proporcionan en su lugar dos nuevos componentes: WINLOAD.EXE y el Administrador de arranque de Windows .

En sistemas de archivos como FAT12 (excepto en DOS 1.x), FAT16 , FAT32 , HPFS y NTFS , el VBR también contiene un bloque de parámetros de BIOS (BPB) que especifica la ubicación y el diseño de las principales estructuras de datos en disco para el sistema de archivos. (Puede encontrar una discusión detallada del diseño de sectores de los VBR de FAT, las diversas versiones de BPB de FAT y sus entradas en el artículo sobre FAT ).

Detalles técnicos

Firma

La presencia de un cargador de arranque compatible con IBM PC para CPU x86 en el sector de arranque se indica por convención mediante una secuencia hexadecimal de dos bytes denominada firma del sector de arranque ( 55h en desplazamiento fijo +1FEh y AAh en +1FFh ) para tamaños de sector de 512 bytes o más. [nb 1] Para sectores de 512 bytes, la firma del sector de arranque también marca el final del sector. Los VBR en sectores más pequeños y más grandes también pueden mostrar firmas al final del tamaño real del sector; sin embargo, la semántica descrita en este documento se aplica solo a la firma de 16 bits en +1FEh .

Esta firma indica la presencia de al menos un cargador de arranque ficticio que es seguro ejecutar, incluso si no puede cargar realmente un sistema operativo. No indica la presencia de un sistema de archivos o un sistema operativo (ni siquiera de uno en particular), aunque algunas versiones antiguas de DOS anteriores a la 3.3 dependían de ella en su proceso para detectar medios formateados en FAT (las versiones más nuevas no lo hacen). El código de arranque para otras plataformas o CPU no debería utilizar esta firma, ya que puede provocar un fallo cuando el BIOS pasa la ejecución al sector de arranque suponiendo que contiene código ejecutable válido. Esto implica que los medios FAT12 / FAT16 que se utilicen también en versiones muy antiguas de DOS deben mantener la firma incluso si no contienen un sistema operativo o están destinados a ser arrancables solo en otras plataformas; en consecuencia, también deben contener al menos un cargador (ficticio) compatible con x86 (para comparar, consulte los ejemplos de FAT en Atari ST y con MSX-DOS ). Sin embargo, algunos medios para otras plataformas contienen erróneamente la firma incluso sin un cargador ficticio compatible con x86, lo que hace que la verificación no sea 100% confiable en la práctica.

La firma es comprobada por la mayoría de los BIOS del sistema desde (al menos) el IBM PC/AT (pero no por el IBM PC original y algunas otras máquinas). Más aún, también es comprobada por la mayoría de los cargadores de arranque MBR antes de pasar el control al sector de arranque. Algunos BIOS (como el IBM PC/AT) realizan la comprobación sólo para discos fijos/unidades extraíbles, mientras que para disquetes y superfloppies es suficiente comenzar con un byte mayor o igual a 06h y que las primeras nueve palabras no contengan el mismo valor, antes de que el sector de arranque sea aceptado como válido, evitando así la prueba explícita de 55h , AAh en disquetes. Dado que los sectores de arranque antiguos (es decir, los medios CP/M-86 y DOS muy antiguos) a veces no presentan esta firma a pesar del hecho de que pueden arrancarse correctamente, la comprobación puede desactivarse en algunos entornos. Esto también refleja el hecho de que los disquetes pueden formatearse para utilizar tamaños de sector más pequeños que 512 bytes.

Si el código BIOS o MBR no detecta un sector de arranque válido y, por lo tanto, no puede pasar la ejecución al código del sector de arranque, intentará con el siguiente dispositivo de arranque de la fila. Si todos fallan, normalmente mostrará un mensaje de error e invocará la INT 18h . [1] Esto iniciará el software residente opcional en la ROM ( ROM BASIC ), intentará arrancar de forma remota a través de la red, reiniciará el sistema a través de la INT 19h después de la confirmación del usuario o hará que el sistema detenga el proceso de arranque hasta el próximo encendido. [1]

Desde el desplazamiento decimal 72 al 79, un PBR NTFS contiene el número de serie del ID del volumen UUID de la partición.

Invocación

El código de arranque en el VBR puede asumir que el BIOS ha configurado sus estructuras de datos e interrupciones e inicializado el hardware. El código no debe asumir que hay más de 32 KB de memoria para una operación a prueba de fallos; [1] si necesita más memoria, debe consultarla en INT 12h, ya que otro código de prearranque (como superposiciones de extensión de BIOS, sistemas de cifrado o cargadores de arranque remotos ) también puede estar presente en otra parte de la memoria (y normalmente se ocultarían del sector de arranque reduciendo la memoria INT 12h informada en consecuencia, de modo que no se sobrescriban por las acciones del MBR y el VBR). La especificación de arranque del BIOS permite 64 KB de memoria y recomienda explícitamente 0000h:7C00h a 0000h:FFFFh como un borrador temporal. [2] [1] El código de arranque no debe suponer mejores CPU que el Intel 8088 o 8086 original (usado en la PC original) y no hacer suposiciones con respecto al estado exacto del hardware, el sistema de interrupciones (las interrupciones pueden habilitarse o deshabilitarse) o la ubicación y el tamaño de la pila. Aunque el BIOS original de IBM inicializa los registros de CPU DS, ES y SS en el segmento 0000h y mantiene la pila inicial en SS :SP = 0000h:0400h , esta no es una condición en la que confiar, ya que no todos los BIOS y códigos MBR siguen esta convención. Los registros que no se mencionan a continuación deben tratarse como no inicializados. El acceso directo al hardware normalmente no está permitido. Si bien la tabla de parámetros de disco (DPT/FDPB) normalmente ya está configurada en 0000h:0078h en la memoria, el VBR debe mover (y posiblemente reparar) el DPT apuntado por el vector INT 1Eh a esta ubicación (INT 1Eh no es una interrupción, sino un puntero lejano al DPT).

Algunas condiciones se pueden relajar en entornos controlados, por ejemplo, algunos cargadores de arranque hoy en día asumen tener hasta 128 KB de memoria para trabajar en operación normal (sin consultar más), y algunos cargadores de arranque que usan acceso LBA asumen al menos una CPU Intel 80188 o 80186 .

El VBR se carga en la ubicación de memoria 0000h: 7C00h[1] y con los siguientes registros de CPU configurados cuando el cargador de arranque anterior (es decir, normalmente el BIOS o MBR, pero posiblemente otro cargador de arranque) le pasa la ejecución saltando a 0000h: en el modo real7C00h de la CPU .

Algunas BIOS de Compaq utilizan erróneamente 07C0h:0000h en su lugar. Si bien esto se resuelve en la misma ubicación en la memoria de modo real, no es estándar y se debe evitar, ya que el código VBR que asume ciertos valores de registro o no está escrito para ser reubicable puede no funcionar de otra manera.

Los sistemas con soporte para BIOS Plug-and-Play o BBS proporcionarán un puntero a datos PnP además de DL: [2] [4]

Esta información permite que el cargador de arranque (en el MBR o VBR) interactúe activamente con el BIOS o una superposición PnP/BBS residente en la memoria para configurar el orden de arranque, etc.; sin embargo, la mayoría de los MBR y VBR estándar ignoran esta información. Lo ideal es que se transmita ES:DI, pero los sistemas operativos habilitados para PnP normalmente también tienen métodos alternativos para recuperar el punto de entrada del BIOS PnP más adelante, de modo que la mayoría de los sistemas operativos no dependen de esto. La información en ES:DI se puede utilizar como una pista: según la especificación del BIOS PnP, la estructura de verificación de instalación "$PnP" se puede encontrar buscando una firma de la cadena ASCII $PnP en la memoria del sistema comenzando desde F0000h hasta FFFFFh en cada límite de 16 bytes.

Con medios particionados, cuando el VBR se inicia mediante el MBR (o un cargador de arranque diferente) en lugar del BIOS, muchas implementaciones pasan información adicional al VBR además de solo DL (y a veces también DH y ES:DI):

En DR-DOS 7.07, el MBR puede utilizar opcionalmente una interfaz extendida junto con LOADER:

Junto con las tablas de particiones GUID (GPT), una propuesta de MBR híbrido de la Especificación de unidad de disco mejorada (EDD) 4 recomienda otra extensión de la interfaz MBR a VBR: [5]

Véase también

Notas

  1. ^ La firma en el desplazamiento +1FEhde los sectores de arranque es 55h AAh, es decir, 55hen el desplazamiento +1FEhy AAhen 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 bits AA55hen programas para procesadores x86 (observe el orden intercambiado), mientras que tendría que escribirse como 55AAhen programas para otras arquitecturas de CPU que utilizan una representación big-endian . Dado que esto se ha mezclado 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.

Referencias

  1. ^ abcde Paul, 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 desde el original el 2003-10-04 . Consultado el 2009-03-29 .[1]
  2. ^ abcd Compaq Computer Corporation ; Phoenix Technologies Ltd. ; Intel Corporation (11 de enero de 1996). Especificación de arranque del BIOS 1.01 (PDF) . 1.01. Archivado desde el original (PDF) el 14 de abril de 2016.
  3. ^ ab Paul, Matthias R. (2017-08-14) [2017-08-07]. "La saga continua de Windows 3.1 en modo mejorado en OmniBook 300". MoHPC - el Museo de las Calculadoras HP . Archivado desde el original el 2018-05-01 . Consultado el 2018-05-01 . […] SYS […] /O[:nnn] Anular la unidad de arranque informada por IPL (n=0..126, 128..254). […] Preparando el disco de destino... Eligiendo el sector de arranque FAT12 CHS (requiere que IPL informe la unidad de arranque). Tratando el destino como un disquete o un medio superfloppy (unidad de arranque 0). Escribiendo un nuevo sector de arranque... […]
  4. ^ de Compaq Computer Corporation ; Phoenix Technologies Ltd .; Intel Corporation (5 de mayo de 1994). Especificación de BIOS Plug and Play 1.0A (PDF) . 1.0A. Archivado desde el original (PDF) el 2 de febrero de 2018.
  5. ^ Elliott, Robert (4 de enero de 2010). "Anexo del código de arranque del MBR híbrido EDD-4" (PDF) . Hewlett-Packard , Comité técnico T13. e09127r3. Archivado (PDF) desde el original el 1 de mayo de 2018. Consultado el 1 de mayo de 2018 .

Lectura adicional