Académique Documents
Professionnel Documents
Culture Documents
El registro principal de arranque o registro de arranque maestro como también se conoce (del
inglés Master boot record cuyo acrónimo es MBR), es un sector de 512 bytes al principio del
disco duro que contiene una secuencia de comandos necesarios para cargar un sistema
operativo. Es decir, es el primer registro del disco duro, el cual contiene un programa ejecutable
y una tabla donde están definidas las particiones del disco duro.
Es el primer sector físico (Cilindro 0, Cabeza 0, Sector 1) asignado a un disco duro en un sistema
(el primer disco duro con el número de periférico-BIOS 0x80). Cada disco duro tiene un MBR,
pero no todas las BIOS pueden arrancar el sistema operativo desde cualquiera de los discos
duros. Cuando se arranca desde el disco duro, la BIOS copia el contenido del MBR en una
dirección fija de la memoria para luego darle el control. Este código arrancará seguidamente el
sistema operativo, ya sea desde el disco duro o desde un Boot-Loader o cargador, algo más
complejo, como por ejemplo LILO, GRUB o GAG.
Cuando se arranca el ordenador la BIOS ejecuta el MBR del dispositivo que tenga configurado en
la CMOS. Si en el primer dispositivo no existe, suele haber otros disposivos alternativos,
configurados también en la CMOS, para que arranque por lo menos alguno.
El MBR incluye generalmente la tabla de particiones y un código inicial para arrancar el Sistema
operativo.
Este diseño permite que la BIOS arranque el código máquina contenido allí y este inicie el
sistema operativo según las especificaciones de su programa. Muchos virus aprovechan este
funcionamiento de arranque standard para arrancarse antes que el sistema operativo y obtener
el control, en los procesadores Intel, el código máquina se ejecuta en modo real.
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 IBM Personal Computer . Se puede encontrar en un dispositivo de
almacenamiento de datos particionados , como un disco duro o un dispositivo sin particiones ,
como un disquete , y contiene un código de máquina para programas de arranque
(generalmente, pero no necesariamente, sistemas operativos ) almacenados en otras partes de
el dispositivo. En no particionado dispositivos de almacenamiento, es el primer sector del
dispositivo. En dispositivos particionados, es el primer sector de una partición individual en el
dispositivo, con el primer sector de todo el dispositivo como un Registro de inicio maestro (MBR)
que contiene la tabla de partición .
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 BIOS (BPB) que especifica la ubicación y el diseño de
las principales estructuras de datos en disco para el sistema de archivos. (Una discusión
detallada del diseño del sector de FAT VBR, las diversas versiones de FAT BPB y sus entradas se
pueden encontrar en el artículo de FAT ).
Firma
Esta firma indica la presencia de al menos un gestor de arranque ficticio que es seguro de
ejecutar, incluso si no puede cargar realmente un sistema operativo. No indica la presencia de un
sistema de archivos (o incluso de un sistema de archivos ) o sistema operativo, aunque algunas
versiones anteriores de DOS anteriores al 3.3 se basaron en su proceso para detectar los 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 un bloqueo cuando el
BIOS pasa la ejecución al sector de arranque suponiendo que contiene un código ejecutable
válido. Esto implica que FAT12 / FAT16 los medios que se utilizarán también en versiones muy
antiguas de DOS deben mantener la firma, incluso si no contienen un sistema operativo o si solo
se pueden iniciar en otras plataformas; en consecuencia, deben contener al menos un cargador
compatible con x86 (falso) también (para comparación, vea 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 simulado compatible con x86, lo que hace que el cheque no sea
100% confiable en la práctica.
La mayoría de las BIOS del sistema prueban la firma desde (al menos) la PC / AT de IBM (pero no
por la PC original de IBM y algunas otras máquinas). Aún más, también es verificado por la
mayoría de los cargadores de arranque MBR antes de pasar el control al sector de arranque.
Algunos BIOS (como IBM PC / AT) realizan la comprobación solo para discos fijos / unidades
extraíbles, mientras que para los discos blandos y los superfloppies es suficiente comenzar con
un byte mayor o igual a 06h y las primeras nueve palabras que no contienen el mismo valor,
antes de que el sector de arranque se acepte como válido, evitando así la prueba explícita para
55h , AAh en disquetes. Desde viejos sectores de arranque (es decir, muy antiguo CP / M-86y
medios DOS) a veces no cuentan con esta firma a pesar del hecho de que pueden ser iniciados
con éxito, la verificación puede ser deshabilitada en algunos entornos. Esto también refleja el
hecho de que los disquetes se pueden formatear para usar sectores de menor tamaño 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
en la fila. Si todos fallan, normalmente mostrará un mensaje de error e invocará INT 18h . Esto
iniciará el software residente opcional en ROM ( ROM BASIC ), intentará arrancar remotamente 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.
Del desplazamiento decimal 72 a 79, un PBR NTFS contiene el número de serie del identificador
de volumen de UUID de partición.
Invocación
El código de arranque en el VBR puede suponer que el BIOS ha configurado sus estructuras de
datos e interrupciones e inicializado el hardware. El código no debe suponer más de 32 KB de
memoria para estar presente en el funcionamiento a prueba de fallas; si necesita más memoria,
debe consultar INT 12h para ello, ya que otros códigos previos al inicio (como superposiciones
de extensión de BIOS, sistemas de encriptación o cargadores de arranque remotos ) también
pueden estar presentes en otros lugares de la memoria (y normalmente se ocultarían de ellos).
el sector de arranque al reducir la memoria INT 12h informada en consecuencia, de modo que
no se sobreescriban por las acciones de MBR y VBR). La especificación de inicio del BIOS permite
64 KB de memoria y recomienda explícitamente 0000h : 7C00h a 0000h :FFFFh como un bloc de
notas temporal. [1] El código de arranque no debe asumir CPUs mejores que las originales de
Intel 8088 o 8086 (utilizadas en la PC original) y no debe hacer suposiciones con respecto al
estado exacto del hardware, el sistema de interrupción (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 la CPU DS, ES y SS para segmentar 0000h y mantiene la pila inicial en SS : SP = 0000h
: 0400h, esta no es una condición para confiar, ya que no todos los códigos BIOS y MBR siguen
esta convención. Los registros no mencionados a continuación deben tratarse como no
inicializados. El acceso directo al hardware normalmente no está permitido. Mientras que la
tabla de parámetros de disco (DPT / FDPB) se configura típicamente en 0000h : 0078h en
memoria, la VBR debe mover (y posiblemente reparar) la DPT apuntada por el vector INT 1Eh a
esta ubicación (INT 1Eh no es una interrupción , pero un puntero lejano a la DPT).
El VBR se carga en la ubicación de memoria 0000h : 7C00h y con los siguientes registros de CPU
configurados cuando el cargador de arranque anterior (es decir, típicamente el BIOS o MBR, pero
posiblemente otro gestor de arranque) le pasa la ejecución saltando a 0000h : 7C00h en el modo
real de la CPU .
Algunos BIOS de Compaq usan 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 debe evitarse, ya que el
código VBR que asume ciertos valores de registro o que no está escrito para ser reubicable
puede no funcionar de otra manera.
DL = unidad de disco de arranque ( disquetes / superfloppies : 00h = primero, 01h = segundo, ...,
7Eh ; discos fijos / unidades extraíbles : 80h = primero, 81h = segundo, ..., FEh ; los valores 7Fh y
FFh están reservados) para ROM / unidades remotas y no debe usarse en el disco). [2]DL es
compatible con BIOS de IBM, así como con la mayoría de las demás BIOS. Se sabe que el BIOS
Toshiba T1000 no es compatible con esto correctamente, y algunos BIOS viejos Wyse 286 usan
valores DL mayores o iguales a 2 para discos duros. Los dispositivos USB configurados como
superfloppies normalmente reciben una asignación de DL = 00h o 01h , sin embargo, algunos
BIOS raros presentan erróneamente memorias USB configuradas como unidades extraíbles como
DL = 01h , en lugar de usar DL = 80h . Tradicionalmente, solo los valores 00h y 80h eran
transmitidos por el BIOS durante el arranque, y muchos sectores de arranque estaban cableados
para trabajar con valores fijos, de todos modos. La especificación del BIOS Plug and Play y la
especificación del arranque del BIOS(BBS) permite que otros dispositivos sean también de
arranque. Lo último también recomienda que los códigos MBR y VBR usen DL en lugar de los
valores predeterminados internos. [1] (NB. MS-DOS / PC DOS y OS / 2 VBR ignoran el valor de DL
proporcionado y recuperan el valor almacenado en el desplazamiento + 19h en el bloque de
parámetros de BIOS ampliado (EBPB) o en el desplazamiento de sector + 1FDh en las versiones
de DOS 3.2 a 3.31. Algunas versiones de DR-DOS usan DL comenzando con 7.02. DR-DOS 7.07
VBRs por defecto para usar DL e ignoran el valor de BPB, pero SYS / O [: nnn]se puede utilizar
para reiniciar el comportamiento anterior de usar el valor BPB o incluso aplicar una unidad de
disco de arranque nnn particular para almacenar allí. [2] En volúmenes FAT32 , FreeDOS también
aprovecha el valor DL, mientras que lo hace en volúmenes FAT12 / FAT16 solamente, si el valor
BPB está establecido en FFh .
DH bit 5 = 0: dispositivo admitido a través de INT 13h ; else: no importa (debe ser cero). DH es
compatible con algunas BIOS de IBM. Algunos códigos MBR y VBR conservan el valor de DH.
Los sistemas con BIOS Plug-and-Play o soporte BBS proporcionarán un puntero a los datos PnP
además de DL: [1] [3]
Esta información permite que el gestor de arranque (en el MBR o VBR) interactúe activamente
con el BIOS o una superposición residente de PnP / BBS para configurar el orden de arranque,
etc., sin embargo, esta información es ignorada por la mayoría de los MBR y VBR estándar. .
Idealmente, ES: DI se transfiere, pero los sistemas operativos habilitados para PnP también
suelen tener métodos alternativos para recuperar el punto de entrada PnP BIOS más tarde, de
modo que la mayoría de los sistemas operativos no dependen de esto. Información en ES: DI se
puede utilizar como una pista: según 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 comenzando desde F0000h a FFFFFh en cada Límite de 16 bytes.
Con medios particionados, cuando el MBR (o el gestor de arranque diferente) lanza el VBR en
lugar del BIOS, muchas implementaciones pasan información adicional al VBR además de solo DL
(y algunas veces DH y ES: DI también):
Bajo DR-DOS 7.07 una interfaz extendida puede ser utilizada opcionalmente por el MBR y junto
con LOADER:
ES: BX = inicio del sector de arranque o NEWLDRimagen de sector especial " (típicamente 7C00h)
CX = reservado
Junto con las tablas de particiones GUID (GPT), una propuesta de Hybrid MBR de especificación
de unidad de disco mejorada (EDD) 4 recomienda otra extensión a la interfaz de MBR a VBR:
DS: SI = apunta a una estructura de transferencia de MBR híbrida, que consiste en una entrada
de tabla de partición de MBR ficticia de 16 bytes (con todos los bits configurados excepto el
indicador de arranque en offset + 0h y el tipo de partición en offset + 4h ) seguido de datos
adicionales . Esto es parcialmente compatible con la anterior extensión DS: SI discutida
anteriormente, si solo estas particiones requieren la entrada de partición de 16 bytes, no la tabla
de partición completa.