stringtranslate.com

Registro de inicio de volumen

Un registro de inicio de volumen ( VBR ) (también conocido como sector de inicio de volumen , registro de inicio de partición o sector de inicio de partición ) es un tipo de sector de inicio introducido por la computadora personal IBM . 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 arrancar programas (generalmente, pero no necesariamente, sistemas operativos ) almacenados en otras partes de el dispositivo. En dispositivos de almacenamiento sin particiones , 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 Master Boot Record (MBR) que contiene la tabla de particiones .

El código en los registros de inicio de volumen se invoca directamente mediante el firmware de la máquina o indirectamente mediante el código en el registro de inicio maestro o un administrador de inicio . En esencia, el código en MBR y VBR se carga de la misma manera .

La invocación de un VBR a través de un administrador de arranque se conoce como carga en cadena . Algunos sistemas de arranque dual , como NTLDR (el cargador de arranque para todas las versiones de los sistemas operativos derivados de Windows NT de Microsoft hasta Windows XP y Windows Server 2003 inclusive ), toman copias del código de arranque que los sistemas operativos individuales instalan en un solo VBR de la partición y almacenarlos en archivos de disco, cargando el contenido VBR relevante del archivo después de que el cargador de arranque haya preguntado al usuario qué sistema operativo arrancar. En Windows Vista , Windows Server 2008 y versiones más recientes, se reemplazó NTLDR; En cambio, la funcionalidad del cargador de arranque la proporcionan 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. (En el artículo FAT se puede encontrar una discusión detallada sobre el diseño del sector de FAT VBR, las distintas versiones de FAT BPB y sus entradas ).

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 llamada firma del sector de arranque ( 55h con desplazamiento fijo +1FEh y AAh con +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 aquí se aplica a la firma de 16 bits en +1FEh únicamente.

Esta firma indica la presencia de al menos un cargador de arranque ficticio que es seguro ejecutar, incluso si en realidad no puede cargar un sistema operativo. No indica la presencia de un (o incluso un) sistema de archivos o sistema operativo en particular, aunque algunas versiones antiguas de DOS anteriores a la 3.3 dependían de él en su proceso para detectar medios con formato FAT (las versiones más nuevas no lo hacen). El código de arranque para otras plataformas o CPU no debe usar esta firma, ya que esto puede provocar una falla 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 utilizarán 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 únicamente en otras plataformas; en consecuencia, también deben contener al menos un cargador (ficticio) compatible con x86 (para comparar, consulte 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 comprobación no sea 100% fiable en la práctica.

La firma es probada por la mayoría de los BIOS del sistema desde (al menos) la IBM PC/AT (pero no por la IBM PC original y algunas otras máquinas). Aún más, la mayoría de los cargadores de arranque MBR también lo verifican antes de pasar el control al sector de arranque. Algunas BIOS (como IBM PC/AT) realizan la comprobación sólo para unidades de disco fijo/extraíbles, mientras que para disquetes y superfloppies basta con empezar con un byte mayor o igual a 06h y las primeras nueve palabras no contienen 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, medios CP/M-86 y DOS muy antiguos) a veces no presentan esta firma a pesar de que se pueden iniciar exitosamente, la verificación se puede desactivar en algunos entornos. Esto también refleja el hecho de que los disquetes se pueden formatear 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á INT 18h . [1] Esto iniciará el software residente opcional en la ROM ( ROM BASIC ), intentará el inicio remoto a través de la red, reiniciará el sistema a través de INT 19h después de la confirmación del usuario o hará que el sistema detenga el proceso de arranque hasta el siguiente 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 VBR puede asumir que el BIOS ha configurado sus estructuras de datos e interrumpe e inicializa el hardware. El código no debe asumir que hay más de 32 KB de memoria presentes para una operación a prueba de fallas; [1] si necesita más memoria, debe consultar INT 12h, ya que otros códigos previos al arranque (como superposiciones de extensión de BIOS, sistemas de cifrado o cargadores de arranque remotos ) también pueden estar presentes en otras partes de la memoria (y normalmente lo harían). ocultarse del sector de arranque reduciendo en consecuencia la memoria INT 12h informada, para que no sean sobrescritos por las acciones del MBR y VBR). La especificación de arranque del BIOS permite 64 KB de memoria y recomienda explícitamente 0000h:7C00h a 0000h:FFFFh como área temporal. [2] [1] El código de arranque no debe asumir 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 se pueden habilitar o deshabilitado) o la ubicación y el tamaño de la pila. Aunque el BIOS IBM original 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 códigos BIOS y MBR siguen esto. convención. Los registros que no se mencionan a continuación deben considerarse como no inicializados. Normalmente no se permite el acceso directo al hardware. 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 señalado por el vector INT 1Eh a esta ubicación (INT 1Eh no es una interrupción). , pero un indicador lejano del DPT).

Algunas condiciones se pueden relajar en entornos controlados; por ejemplo, hoy en día algunos cargadores de arranque suponen que tienen hasta 128 KB de memoria para trabajar en funcionamiento normal (sin pedir más), y algunos cargadores de arranque que utilizan acceso LBA suponen al menos un procesador Intel . CPU 80188 o 80186 .

El VBR se carga en la ubicación de la 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) pasa la ejecución saltando a 0000h: 7C00hen el Modo real 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 en modo real, no es estándar y debe evitarse, 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 compatibilidad Plug-and-Play BIOS o BBS proporcionarán un puntero a los 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. . Idealmente, se pasa ES:DI, pero los sistemas operativos habilitados para PnP generalmente 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 dependan de esto. La información en ES:DI se puede utilizar como sugerencia: de acuerdo con la especificación PnP BIOS, 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 desde F0000h hasta FFFFFh en cada Límite de 16 bytes.

Con medios particionados, cuando el MBR (u otro cargador de arranque) inicia el VBR 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 especificación de unidad de disco mejorada (EDD) 4 recomienda otra extensión de la interfaz de MBR a VBR: [5]

Ver también

Notas

  1. ^ La firma en el desplazamiento +1FEhen 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 máquinas compatibles con IBM PC , esto se puede escribir como palabra de 16 bits AA55hen programas para procesadores x86 (tenga en cuenta el orden intercambiado), mientras que tendría que escribirse como 55AAhen programas para otros 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 de bytes basada en desplazamiento para evitar cualquier posible mala interpretación.

Referencias

  1. ^ abcde Paul, Matthias R. (2 de octubre de 1997) [29 de septiembre de 1997]. "Caldera OpenDOS 7.01/7.02 Actualización Alpha 3 IBMBIO.COM - README.TXT y BOOT.TXT - Una breve descripción de cómo se inicia OpenDOS". Archivado desde el original el 4 de octubre de 2003 . Consultado el 29 de marzo de 2009 .[1]
  2. ^ abcd Compaq Computer Corporation ; Phoenix Technologies Ltd .; Corporación Intel (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. (14 de agosto de 2017) [7 de agosto de 2017]. "La continuación de la saga de Windows 3.1 en modo mejorado en OmniBook 300". MoHPC: el museo de las calculadoras HP . Archivado desde el original el 1 de mayo de 2018 . Consultado el 1 de mayo de 2018 . […] SYS […] /O[:nnn] Anular la unidad de unidad de arranque informada por IPL (n=0..126, 128..254). […] Preparando el disco de destino... Eligiendo el sector de inicio FAT12 CHS (requiere IPL para informar la unidad de inicio). Tratar el destino como un disquete o un medio superfloppy (unidad de disco de arranque 0). Escribiendo un nuevo sector de arranque... […]
  4. ^ ab Compaq Computer Corporation ; Phoenix Technologies Ltd .; Corporación Intel (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 .

Otras lecturas