Un registro de arranque maestro ( MBR , por sus siglas en inglés) es un tipo de sector de arranque en el primer bloque de dispositivos de almacenamiento masivo de computadora particionados , como discos fijos o unidades extraíbles, diseñados para usarse con sistemas compatibles con IBM PC y posteriores. El concepto de MBR se introdujo públicamente en 1983 con PC DOS 2.0 .
El MBR almacena la información sobre cómo se dividen los sectores del disco (también llamados "bloques") en particiones, cada una de las cuales contiene un sistema de archivos. El MBR también contiene código ejecutable que funciona como cargador del sistema operativo instalado, generalmente transfiriendo el control a la segunda etapa del cargador o en conjunto con el registro de arranque de volumen (VBR) de cada partición. Este código MBR se conoce comúnmente como cargador de arranque.
La organización de la tabla de particiones en el MBR limita el espacio de almacenamiento direccionable máximo de un disco particionado a 2 TiB ( 2³² × 512 bytes) . [ 1 ] Los métodos para aumentar ligeramente este límite utilizando aritmética de 32 bits o sectores de 4096 bytes no cuentan con soporte oficial, ya que rompen fatalmente la compatibilidad con los cargadores de arranque existentes, la mayoría de los sistemas operativos compatibles con MBR y las herramientas del sistema asociadas, y pueden causar una grave corrupción de datos cuando se utilizan fuera de entornos de sistema estrictamente controlados. Por lo tanto, el esquema de particionamiento basado en MBR ha sido reemplazado por el esquema de tabla de particiones GUID (GPT) en casi todos los ordenadores nuevos. Una GPT puede coexistir con un MBR para proporcionar cierta forma limitada de retrocompatibilidad para sistemas más antiguos.
Los MBR no están presentes en soportes no particionados, como disquetes , superdisquetes u otros dispositivos de almacenamiento configurados para comportarse como tales, ni están necesariamente presentes en unidades utilizadas en plataformas que no sean PC.
Descripción general
La compatibilidad con medios particionados, y por lo tanto con el registro de arranque maestro (MBR), se introdujo con IBM PC DOS 2.0 en marzo de 1983 para dar soporte al disco duro de 10 MB del entonces nuevo IBM Personal Computer XT , que aún utilizaba el sistema de archivos FAT12 . La versión original del MBR fue escrita por David Litton de IBM en junio de 1982. La tabla de particiones admitía hasta cuatro particiones primarias . Esto no cambió cuando se introdujo FAT16 como un nuevo sistema de archivos con DOS 3.0. La compatibilidad con una partición extendida , un tipo especial de partición primaria utilizada como contenedor para otras particiones, se añadió con DOS 3.2, y las unidades lógicas anidadas dentro de una partición extendida llegaron con DOS 3.30. Dado que MS-DOS, PC DOS, OS/2 y Windows nunca fueron habilitados para arrancar desde ellos, el formato MBR y el código de arranque permanecieron prácticamente sin cambios en su funcionalidad (excepto algunas implementaciones de terceros) durante las eras de DOS y OS/2 hasta 1996.
En 1996, se introdujo la compatibilidad con el direccionamiento de bloques lógicos (LBA) en Windows 95B y MS-DOS 7.10 (que no debe confundirse con IBM PC-DOS 7.1) para admitir discos de más de 8 GB. También se introdujeron las marcas de tiempo de disco . [ 2 ] Esto también reflejó la idea de que el MBR está diseñado para ser independiente del sistema operativo y del sistema de archivos. Sin embargo, esta regla de diseño se vio parcialmente comprometida en implementaciones más recientes de Microsoft del MBR, que imponen el acceso CHS para los tipos de partición FAT16B y FAT32 0x06 / 0x0B , mientras que LBA se utiliza para 0x0E / 0x0C .
A pesar de la documentación a veces deficiente de ciertos detalles intrínsecos del formato MBR (que ocasionalmente causaba problemas de compatibilidad), se ha adoptado ampliamente como un estándar de facto en la industria, debido a la gran popularidad de las computadoras compatibles con PC y su naturaleza semiestática a lo largo de las décadas. Esto llegó incluso a ser compatible con sistemas operativos para otras plataformas. En ocasiones, esto se sumaba a otros estándares preexistentes o multiplataforma para el arranque y el particionamiento. [ 3 ]
Sin embargo, las entradas de partición MBR y el código de arranque MBR utilizado en los sistemas operativos comerciales están limitados a 32 bits. [ 1 ] Por lo tanto, el tamaño máximo de disco admitido en discos que utilizan sectores de 512 bytes (ya sean reales o emulados) por el esquema de particionamiento MBR (sin aritmética de 32 bits) está limitado a 2 TiB. [ 1 ] En consecuencia, debe utilizarse un esquema de particionamiento diferente para discos más grandes, ya que se han vuelto ampliamente disponibles desde 2010. Por lo tanto, el esquema de particionamiento MBR está en proceso de ser reemplazado por la Tabla de Particiones GUID (GPT). El enfoque oficial hace poco más que garantizar la integridad de los datos mediante el empleo de un MBR de protección . Específicamente, no proporciona compatibilidad con versiones anteriores de sistemas operativos que no admiten el esquema GPT. Mientras tanto, terceros han diseñado e implementado diversas formas de MBR híbridas para mantener particiones ubicadas en los primeros 2 TiB físicos de un disco en ambos esquemas de particionamiento "en paralelo" y/o para permitir que sistemas operativos más antiguos arranquen también desde particiones GPT. La naturaleza no estándar actual de estas soluciones provoca diversos problemas de compatibilidad en ciertos escenarios.
El MBR consta de 512 bytes o más , ubicados en el primer sector de la unidad.
Puede contener uno o más de los siguientes elementos:
- Una tabla de particiones que describe las particiones de un dispositivo de almacenamiento. En este contexto, el sector de arranque también puede denominarse sector de partición .
- Código de arranque : Instrucciones para identificar la partición de arranque configurada, luego cargar y ejecutar su registro de arranque de volumen (VBR) como un cargador de cadena .
- Marca de tiempo de disco opcional de 32 bits . [ 2 ]
- Firma de disco opcional de 32 bits . [ 4 ] [ 5 ] [ 6 ] [ 7 ]
Particionamiento de disco
IBM PC DOS 2.0 introdujo la FDISKutilidad para configurar y mantener particiones MBR. Cuando un dispositivo de almacenamiento se ha particionado según este esquema, su MBR contiene una tabla de particiones que describe la ubicación, el tamaño y otros atributos de las regiones lineales denominadas particiones.
Las particiones en sí mismas también pueden contener datos para describir esquemas de particionamiento más complejos, como registros de arranque extendidos (EBR), etiquetas de disco BSD o particiones de metadatos del Administrador de discos lógicos . [ 8 ]
El MBR no se encuentra en una partición; se ubica en el primer sector del dispositivo (desplazamiento físico 0), antes de la primera partición. (El sector de arranque presente en un dispositivo sin particiones o dentro de una partición individual se denomina registro de arranque de volumen ). En los casos en que el equipo ejecuta una superposición de BIOS DDO o un gestor de arranque , la tabla de particiones puede moverse a otra ubicación física en el dispositivo; por ejemplo, Ontrack Disk Manager solía colocar una copia del contenido original del MBR en el segundo sector y luego se ocultaba a cualquier sistema operativo o aplicación que se iniciara posteriormente, por lo que la copia del MBR se trataba como si aún residiera en el primer sector.
Diseño del sector
Por convención, existen exactamente cuatro entradas de tabla de partición primaria en el esquema de tabla de partición MBR, aunque algunos sistemas operativos y herramientas del sistema extendieron esto a cinco (Advanced Active Partitions (AAP) con PTS-DOS 6.60 [ 9 ] y DR-DOS 7.07), ocho ( AST y NEC MS-DOS 3.x [ 10 ] [ 11 ] así como Storage Dimensions SpeedStor ), o incluso dieciséis entradas (con Ontrack Disk Manager ).
Entradas de tablas de partición
La tabla de particiones, un vestigio de la tecnología de discos duros de la época del PC XT , subdivide un medio de almacenamiento mediante unidades de cilindros , cabezales y sectores ( direccionamiento CHS ). Estos valores ya no se corresponden con sus nombres en las unidades de disco modernas, y resultan irrelevantes en otros dispositivos como las unidades de estado sólido , que no poseen cilindros ni cabezales físicos.
En el esquema CHS, los índices de sector han comenzado (casi) siempre con el sector 1 en lugar del sector 0 por convención, y debido a un error en todas las versiones de MS-DOS/PC DOS hasta la 7.10 inclusive , el número de cabezales generalmente se limita a 255 [ h ] en lugar de 256. Cuando una dirección CHS es demasiado grande para caber en estos campos, la tupla (1023, 254, 63) se usa típicamente hoy en día, aunque en sistemas más antiguos, y con herramientas de disco antiguas, el valor del cilindro a menudo se desbordaba alrededor de la barrera CHS módulo cerca de 8 GB, lo que causaba ambigüedad y riesgos de corrupción de datos. (Si la situación implica un MBR "protector" en un disco con GPT, la especificación de la Interfaz de Firmware Extensible de Intel requiere que se utilice la tupla (1023, 255, 63). El valor del cilindro de 10 bits se registra dentro de dos bytes para facilitar las llamadas a las rutinas de acceso al disco BIOS INT 13h originales/heredadas , donde los 16 bits se dividían en partes de sector y cilindro, y no en límites de byte. [ 13 ]
Debido a las limitaciones del direccionamiento CHS, [ 16 ] [ 17 ] se hizo una transición al uso de LBA, o direccionamiento de bloques lógicos . Tanto la longitud de la partición como la dirección de inicio de la partición son valores de sector almacenados en las entradas de la tabla de particiones como cantidades de 32 bits. El tamaño del sector solía considerarse fijo en 512 (2 9 ) bytes, y una amplia gama de componentes importantes, incluidos los conjuntos de chips , los sectores de arranque , los sistemas operativos , los motores de bases de datos , las herramientas de particionamiento , las utilidades de copia de seguridad y del sistema de archivos y otro software tenían este valor codificado. Desde finales de 2009, han estado disponibles unidades de disco que emplean sectores de 4096 bytes ( 4Kn o formato avanzado ), aunque el tamaño del sector para algunas de estas unidades todavía se informaba como 512 bytes al sistema host a través de la conversión en el firmware del disco duro y se denominaban unidades de emulación 512 ( 512e ).
Dado que las direcciones y tamaños de los bloques se almacenan en la tabla de particiones de un MBR usando 32 bits, el tamaño máximo, así como la dirección de inicio más alta, de una partición que utiliza unidades que tienen sectores de 512 bytes (reales o emulados) no puede exceder los 2 TiB −512 bytes (2 199 023 255 040 bytes o4 294 967 295 (2 32 −1) sectores × 512 (2 9 ) bytes por sector). [ 1 ] Aliviar esta limitación de capacidad fue una de las principales motivaciones para el desarrollo de la GPT.
Dado que la información de particionamiento se almacena en la tabla de particiones MBR utilizando una dirección de bloque inicial y una longitud, en teoría podría ser posible definir particiones de tal manera que el espacio asignado para un disco con sectores de 512 bytes dé un tamaño total cercano a 4 TiB, si todas las particiones excepto una se encuentran por debajo del límite de 2 TiB y la última se asigna para que comience en o cerca del bloque 2 32 −1 y especifique el tamaño como hasta 2 32 −1, definiendo así una partición que requiere 33 en lugar de 32 bits para acceder a la dirección del sector. Sin embargo, en la práctica, solo ciertos sistemas operativos habilitados para LBA-48 , incluidos Linux, FreeBSD y Windows 7 [ 18 ] que utilizan direcciones de sector de 64 bits internamente, realmente admiten esto. Debido a las limitaciones de espacio de código y a que la tabla de particiones MBR solo admite 32 bits, los sectores de arranque, incluso si están habilitados para admitir LBA-48 en lugar de LBA-28 , suelen usar cálculos de 32 bits, a menos que estén diseñados específicamente para admitir el rango completo de direcciones de LBA-48 o estén destinados a ejecutarse únicamente en plataformas de 64 bits. Cualquier código de arranque o sistema operativo que utilice direcciones de sector de 32 bits internamente provocaría que las direcciones se desbordaran al acceder a esta partición, lo que resultaría en una grave corrupción de datos en todas las particiones.
Para discos que presentan un tamaño de sector distinto de 512 bytes, como las unidades externas USB , también existen limitaciones. Un tamaño de sector de 4096 resulta en un aumento de ocho veces en el tamaño de una partición que se puede definir usando MBR, permitiendo particiones de hasta 16 TiB (2³² × 4096 bytes ) de tamaño. [ 19 ] Las versiones de Windows más recientes que Windows XP admiten tamaños de sector mayores, al igual que Mac OS X, y Linux ha admitido tamaños de sector mayores desde 2.6.31 [ 20 ] o 2.6.32, [ 21 ] pero los problemas con los cargadores de arranque, las herramientas de particionamiento y las implementaciones de BIOS de la computadora presentan ciertas limitaciones, [ 22 ] ya que a menudo están cableados para reservar solo 512 bytes para los búferes de sector, lo que provoca que la memoria se sobrescriba para tamaños de sector mayores. Esto también puede causar un comportamiento impredecible y, por lo tanto, debe evitarse cuando la compatibilidad y la conformidad con el estándar son un problema.
Cuando un dispositivo de almacenamiento de datos se ha particionado con el esquema GPT, el registro de arranque maestro (MBR) seguirá conteniendo una tabla de particiones, pero su único propósito es indicar la existencia de la GPT y evitar que los programas de utilidad que solo entienden el esquema de tabla de particiones MBR creen particiones en lo que de otro modo considerarían espacio libre en el disco, borrando así accidentalmente la GPT.
Arranque del sistema
En los ordenadores compatibles con IBM PC , el firmware de arranque (contenido en la ROM BIOS ) carga y ejecuta el registro de arranque maestro. [ 23 ] El PC/XT (tipo 5160) utilizaba un microprocesador Intel 8088. Para mantener la compatibilidad, todos los sistemas con arquitectura BIOS x86 arrancan con el microprocesador en un modo de funcionamiento denominado modo real . La BIOS lee el MBR del dispositivo de almacenamiento a la memoria física y, a continuación, dirige al microprocesador al inicio del código de arranque. La BIOS cambia el procesador a modo real y comienza a ejecutar el programa MBR, por lo que se espera que el inicio del MBR contenga código máquina en modo real . [ 23 ]
Dado que la rutina de arranque de la BIOS carga y ejecuta exactamente un sector del disco físico, tener la tabla de particiones en el MBR junto con el código de arranque simplifica el diseño del programa MBR. Este programa contiene un pequeño archivo que carga el Registro de Arranque de Volumen (VBR) de la partición de destino. A continuación, el control se transfiere a este código, que se encarga de cargar el sistema operativo. Este proceso se conoce como carga en cadena .
Se crearon programas populares de código MBR para arrancar PC DOS y MS-DOS , y un código de arranque similar sigue siendo ampliamente utilizado. Estos sectores de arranque esperan que el FDISKesquema de tabla de particiones esté en uso y escanean la lista de particiones en la tabla de particiones integrada del MBR para encontrar la única que está marcada con la bandera activa . [ 24 ] Luego carga y ejecuta el registro de arranque de volumen (VBR) de la partición activa.
Existen implementaciones alternativas de código de arranque, algunas de las cuales son instaladas por gestores de arranque , que operan de diversas maneras. Parte del código MBR carga código adicional para un gestor de arranque desde la primera pista del disco, que asume como espacio "libre" no asignado a ninguna partición, y lo ejecuta. Un programa MBR puede interactuar con el usuario para determinar qué partición de qué unidad debe arrancar y puede transferir el control al MBR de otra unidad. Otro código MBR contiene una lista de ubicaciones en disco (que a menudo corresponden al contenido de archivos en un sistema de archivos ) del resto del código del gestor de arranque que se debe cargar y ejecutar. (El primero se basa en un comportamiento que no es universal en todas las utilidades de particionamiento de disco, especialmente en aquellas que leen y escriben GPT. El último requiere que la lista integrada de ubicaciones en disco se actualice cuando se realicen cambios que reubiquen el resto del código).
En máquinas que no usan procesadores x86 , o en máquinas x86 con firmware que no es BIOS, como Open Firmware o firmware Extensible Firmware Interface (EFI), este diseño no es adecuado y el MBR no se usa como parte del arranque del sistema. [ 25 ] El firmware EFI es capaz de entender directamente el esquema de particionamiento GPT y el formato del sistema de archivos FAT , y carga y ejecuta programas almacenados como archivos en la partición del sistema EFI . [ 26 ] El MBR solo se involucrará en la medida en que pueda contener una tabla de particiones para fines de compatibilidad si se ha usado el esquema de tabla de particiones GPT.
Existe un código de reemplazo del MBR que emula el arranque del firmware EFI, lo que permite que las máquinas sin EFI arranquen desde discos que utilizan el esquema de particionamiento GPT. Este código detecta una partición GPT, coloca el procesador en el modo de funcionamiento correcto y carga el código compatible con EFI desde el disco para completar esta tarea.
Identidad del disco

Además del código de arranque y la tabla de particiones, los registros de arranque maestros pueden contener una firma de disco . Se trata de un valor de 32 bits que sirve para identificar de forma unívoca el medio de disco (a diferencia de la unidad de disco, ya que no necesariamente son lo mismo en el caso de los discos duros extraíbles).
La firma de disco fue introducida por Windows NT versión 3.5, pero ahora la utilizan varios sistemas operativos, incluido el kernel de Linux versión 2.6 y posteriores. Las herramientas de Linux pueden usar la firma de disco NT para determinar desde qué disco arrancó la máquina. [ 27 ]
Windows NT (y los sistemas operativos Microsoft posteriores) utiliza la firma de disco como índice de todas las particiones de cualquier disco que se haya conectado alguna vez al equipo bajo ese sistema operativo; estas firmas se guardan en claves del Registro de Windows , principalmente para almacenar las asignaciones persistentes entre particiones de disco y letras de unidad. También puede utilizarse en archivos BOOT.INI de Windows NT (aunque la mayoría no lo hace), para describir la ubicación de las particiones de arranque de Windows NT (o posterior). [ 28 ] Una clave (entre muchas) donde aparecen las firmas de disco de NT en un registro de Windows 2000/XP es:
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\
Si la firma de un disco almacenada en el MBR fuera A8 E1 B9 D2 (en ese orden) y su primera partición correspondiera a la unidad lógica C: en Windows, entonces los datos bajo el valor de la clave serían:REG_BINARY\DosDevices\C:
A8 E1 B9 D2 00 7E 00 00 00 00 00 00
Los primeros cuatro bytes son la firma del disco. (En otras claves, estos bytes pueden aparecer en orden inverso al que se encuentra en el sector MBR). A estos les siguen ocho bytes más, que forman un entero de 64 bits, en notación little-endian , que se utilizan para localizar el desplazamiento de bytes de esta partición. En este caso, 00 7E corresponde al valor hexadecimal 0x7E00 (32,256 ). Bajo el supuesto de que la unidad en cuestión informa un tamaño de sector de 512 bytes, entonces al dividir este desplazamiento de bytes por 512 se obtiene 63, que es el número de sector físico (o LBA) que contiene el primer sector de la partición (a diferencia del recuento de sectores utilizado en el valor de sectores de las tuplas CHS, que cuenta desde uno , el valor absoluto o LBA del sector comienza a contar desde cero ).
Si este disco tuviera otra partición con los valores 00 F8 93 71 02 después de la firma del disco (bajo, por ejemplo, el valor de clave ), comenzaría en el desplazamiento de byte 0x00027193F800 (\DosDevices\D:10.495.457.280 ), que también es el primer byte del sector físico.20.498.940 .
A partir de Windows Vista , la firma del disco también se almacena en el almacén de datos de configuración de arranque (BCD), y el proceso de arranque depende de ella. [ 29 ] Si la firma del disco cambia, no se puede encontrar o tiene un conflicto, Windows no puede arrancar. [ 30 ] A menos que Windows se vea obligado a usar la parte superpuesta de la dirección LBA de la entrada de Partición Activa Avanzada como pseudofirma de disco, el uso de Windows es conflictivo con la función de Partición Activa Avanzada de PTS-DOS 7 y DR-DOS 7.07, en particular si su código de arranque se encuentra fuera de los primeros 8 GB del disco, por lo que se debe usar el direccionamiento LBA.
Consideraciones de programación
El MBR se originó en el PC XT . [ 31 ] Los ordenadores compatibles con IBM PC son little-endian , lo que significa que el procesador almacena valores numéricos que abarcan dos o más bytes en la memoria, comenzando por el byte menos significativo . El formato del MBR en los medios refleja esta convención. Por lo tanto, la firma del MBR aparecerá en un editor de disco como la secuencia 55 AA. [ a ]
La secuencia de arranque en la BIOS cargará el primer MBR válido que encuentre en la memoria física del ordenador en la dirección 0x7C00 a 0x7DFF . [ 31 ] La última instrucción ejecutada en el código de la BIOS será un "salto" a esa dirección para dirigir la ejecución al inicio de la copia del MBR. La validación principal para la mayoría de las BIOS es la firma en el desplazamiento 0x01FE , aunque un implementador de BIOS puede optar por incluir otras comprobaciones, como verificar que el MBR contiene una tabla de particiones válida sin entradas que hagan referencia a sectores más allá de la capacidad declarada del disco.
Para la BIOS, los discos extraíbles (por ejemplo, disquetes) y los discos fijos son esencialmente iguales. En ambos casos, la BIOS lee el primer sector físico del medio en la RAM en la dirección absoluta 0x7C00 , comprueba la firma en los dos últimos bytes del sector cargado y, si encuentra la firma correcta, transfiere el control al primer byte del sector con una instrucción de salto (JMP). La única distinción real que hace la BIOS es que (por defecto, o si el orden de arranque no es configurable) intenta arrancar desde el primer disco extraíble antes de intentar arrancar desde el primer disco fijo. Desde la perspectiva de la BIOS, la acción del MBR al cargar un registro de arranque de volumen en la RAM es exactamente la misma que la acción de un registro de arranque de volumen de disquete al cargar el código objeto de un cargador de sistema operativo en la RAM. En ambos casos, el programa que la BIOS cargó está realizando la carga en cadena de un sistema operativo.
Mientras que el código del sector de arranque MBR espera cargarse en la dirección física 0x0000 : 0x7C00 , [ i ] toda la memoria desde la dirección física 0x0000 : 0x0501 (la dirección 0x0000 : 0x0500 es la última utilizada por una BIOS Phoenix) [ 13 ] hasta 0x0000 : 0x7FFF , [ 31 ] luego se relaja a 0x0000 : 0xFFFF [ 32 ] (y a veces [ j ] hasta 0x9000 : 0xFFFF ) —el final de los primeros 640 KB —está disponible en modo real . [ k ] La llamada de interrupción del BIOS puede ayudar a determinar cuánta memoria se puede asignar de forma segura (por defecto, simplemente lee el tamaño de memoria base en KB del segmento :offset ubicación 0x0040 : 0x0013 , pero puede ser interceptada por otro software residente de prearranque, como superposiciones del BIOS, código RPL o virus, para reducir la cantidad de memoria disponible informada con el fin de evitar que otro software de la etapa de arranque, como los sectores de arranque, los sobrescriba).INT 12h
Los últimos 66 bytes del MBR de 512 bytes están reservados para la tabla de particiones y otra información, por lo que el programa del sector de arranque del MBR debe ser lo suficientemente pequeño como para caber en 446 bytes de memoria o menos.
El código MBR examina la tabla de particiones, selecciona una partición adecuada y carga el programa que realizará la siguiente etapa del proceso de arranque, generalmente mediante llamadas BIOS INT 13h . El código de arranque MBR carga y ejecuta (dependiendo del cargador de arranque o del sistema operativo) el código del registro de arranque de volumen ubicado al principio de la partición "activa". El registro de arranque de volumen cabe dentro de un sector de 512 bytes, pero es seguro que el código MBR cargue sectores adicionales para acomodar cargadores de arranque más largos que un sector, siempre que no hagan suposiciones sobre cuál es el tamaño del sector. De hecho, al menos 1 KB de RAM está disponible en la dirección 0x7C00 en cada máquina IBM XT y AT, por lo que se podría usar un sector de 1 KB sin problema. Al igual que el MBR, un registro de arranque de volumen normalmente espera ser cargado en la dirección 0x0000 : 0x7C00 . Esto se deriva del hecho de que el diseño del registro de arranque de volumen se originó en medios no particionados, donde un registro de arranque de volumen se cargaría directamente mediante el procedimiento de arranque de la BIOS; como se mencionó anteriormente, la BIOS trata los MBR y los registros de arranque de volumen (VBR) [ l ] exactamente igual. Dado que esta es la misma ubicación donde se carga el MBR, una de las primeras tareas de un MBR es reubicarse en otra parte de la memoria. La dirección de reubicación la determina el MBR, pero suele ser 0x0000 : 0x0600 (para el código MBR de MS-DOS/PC DOS, OS/2 y Windows) o 0x0060 : 0x0000 (la mayoría de los MBR de DR-DOS). (Aunque ambas direcciones segmentadas se resuelven en la misma dirección de memoria física en modo real, para que Apple Darwin arranque, el MBR debe reubicarse en 0x0000 : 0x0600 en lugar de 0x0060 : 0x0000 , ya que el código depende del puntero DS:SI a la entrada de partición proporcionada por el MBR, pero erróneamente se refiere a él solo a través de 0x0000 :SI. [ 33 ] ) Es importante no reubicar en otras direcciones de memoria porque muchos VBR asumirán una determinada disposición de memoria estándar al cargar su archivo de arranque.
El campo Estado en un registro de tabla de particiones se utiliza para indicar una partición activa. Los MBR que cumplen con el estándar solo permiten una partición marcada como activa y la utilizan como parte de una verificación para determinar la existencia de una tabla de particiones válida. Mostrarán un mensaje de error si se ha marcado más de una partición como activa. Algunos MBR que no cumplen con el estándar no consideran esto como una condición de error y simplemente utilizan la primera partición marcada en la fila.
Tradicionalmente, los valores distintos de 0x00 (no activo) y 0x80 (activo) eran inválidos y el programa de arranque mostraba un mensaje de error al encontrarlos. Sin embargo, la especificación Plug and Play BIOS y la especificación de arranque BIOS (BBS) permitieron que otros dispositivos también fueran arrancables desde 1994. [ 32 ] [ 34 ] En consecuencia, con la introducción de MS-DOS 7.10 (Windows 95B) y versiones posteriores, el MBR comenzó a tratar un bit 7 establecido como indicador activo y mostraba un mensaje de error solo para los valores 0x01 .. 0x7F . Continuó tratando la entrada como una unidad de disco físico que se utilizaría al cargar el VBR de la partición correspondiente más adelante, aceptando así también otras unidades de arranque distintas de 0x80 como válidas; sin embargo, MS-DOS no utilizó esta extensión por sí mismo. Almacenar el número de unidad física real en la tabla de particiones normalmente no causa problemas de retrocompatibilidad, ya que el valor solo diferirá de 0x80 en unidades distintas de la primera (que, de todos modos, no eran arrancables antes). Sin embargo, incluso con sistemas habilitados para arrancar desde otras unidades, la extensión puede seguir sin funcionar universalmente, por ejemplo, después de que la asignación de unidades físicas en la BIOS haya cambiado al extraer, agregar o intercambiar unidades. Por lo tanto, según la Especificación de Arranque de la BIOS (BBS), [ 32 ] la mejor práctica para un MBR moderno que acepte el bit 7 como indicador activo es pasar el valor DL proporcionado originalmente por la BIOS en lugar de usar la entrada en la tabla de particiones.
Interfaz BIOS a MBR
El MBR se carga en la ubicación de memoria 0x0000 : 0x7C00 y con los siguientes registros de CPU configurados cuando el cargador de arranque anterior (normalmente el IPL en la BIOS) le pasa la ejecución saltando a 0x0000 : 0x7C00 en el modo real de la CPU .
- Algunas BIOS de Compaq utilizan erróneamente 0x07C0 : 0x0000 . 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 MBR que asume ciertos valores de registro o que no está escrito para ser reubicable podría no funcionar de otra manera.
- DL = unidad de arranque ( discos fijos / unidades extraíbles : 0x80 = primero, 0x81 = segundo, ..., 0xFE ; disquetes / superdisquetes : 0x00 = primero, 0x01 = segundo, ..., 0x7E ; los valores 0x7F y 0xFF están reservados para unidades ROM / remotas y no deben usarse en el disco ). [ 35 ] [ 36 ]
- DL es compatible con las BIOS de IBM, así como con la mayoría de las demás BIOS. Se sabe que la BIOS de Toshiba T1000 no lo admite correctamente, y algunas BIOS antiguas de Wyse 286 usan valores DL mayores o iguales a 2 para discos fijos (lo que refleja los números de unidad lógica en DOS en lugar de los números de unidad física de la BIOS). Las memorias USB configuradas como unidades extraíbles normalmente reciben una asignación de DL = 0x80 , 0x81 , etc. Sin embargo, algunas BIOS raras las presentaban erróneamente bajo DL = 0x01 , como si estuvieran configuradas como superdisquetes.
- Una BIOS estándar asigna números mayores o iguales a 0x80 exclusivamente a discos duros/unidades extraíbles, y tradicionalmente solo se transmitían los valores 0x80 y 0x00 como unidades de disco físico durante el arranque. Por convención, solo los discos duros/unidades extraíbles se particionan; por lo tanto, el único valor DL que un MBR podía ver tradicionalmente era 0x80 . De todos modos, muchos MBR se programaron para ignorar el valor DL y trabajar con un valor fijo (normalmente 0x80 ).
- La especificación BIOS Plug and Play y la especificación BIOS Boot (BBS) permiten que otros dispositivos también sean arrancables desde 1994. [ 32 ] [ 34 ] Esta última recomienda que el código MBR y VBR utilice DL en lugar de valores predeterminados internos. [ 32 ] Esto también garantizará la compatibilidad con varias asignaciones no estándar (véanse los ejemplos anteriores), en lo que respecta al código MBR.
- Los CD-ROM de arranque que siguen la especificación El Torito pueden contener imágenes de disco montadas por la BIOS para que se presenten como disquetes o superdisquetes en esta interfaz. Los valores DL de 0x00 y 0x01 también pueden ser utilizados por los Servicios de extensión de interfaz de tiempo de ejecución de área protegida (PARTIES) y las extensiones de BIOS del Grupo de computación confiable (TCG) en modo confiable para acceder a particiones PARTIES invisibles, archivos de imagen de disco ubicados a través del Registro de extensión de ingeniería de arranque (BEER) en el último sector físico del Área protegida de host (HPA) de un disco duro . Si bien está diseñado para emular disquetes o superdisquetes, el código MBR que acepta estos valores DL no estándar permite usar imágenes de medios particionados al menos en la etapa de arranque de los sistemas operativos.
- DH bit 5 = 0: dispositivo compatible mediante INT 13h ; de lo contrario: no importa (debería ser cero). DH es compatible con algunas BIOS de IBM.
- Algunos de los demás registros también pueden contener ciertos valores (DS, ES, SS = 0x0000 ; SP = 0x0400 ) en las BIOS ROM originales de IBM, pero no es fiable, ya que otras BIOS pueden usar valores diferentes. Por este motivo, el código MBR de IBM, Microsoft, Digital Research, etc., nunca lo aprovechó. Depender de estos valores de registro en los sectores de arranque también puede causar problemas en escenarios de arranque en cadena.
Los sistemas con soporte para BIOS Plug-and-Play o BBS proporcionarán un puntero a los datos PnP además de DL: [ 32 ] [ 34 ]
- DL = unidad de arranque (ver arriba)
- ES : DI = apunta a
$PnPla estructura de verificación de instalación " "
- Esta información permite que el cargador de arranque en el MBR (o VBR, si se transmite) interactúe activamente con la BIOS o una superposición de BIOS PnP/BBS residente en 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, ES:DI se transmite al VBR para su uso posterior por el sistema operativo cargado, pero los sistemas operativos con PnP habilitado también suelen tener métodos alternativos para recuperar el punto de entrada de la BIOS PnP más adelante, por lo que la mayoría de los sistemas operativos no dependen de esto.
Interfaz MBR a VBR
Por convención, un MBR estándar conforme pasa la ejecución a un VBR cargado correctamente, cargado en la ubicación de memoria 0x0000 : 0x7C00 , saltando a 0x0000 : 0x7C00 en el modo real de la CPU con los siguientes registros mantenidos o configurados específicamente:
- MS-DOS 2.0–7.0 / PC DOS 2.0–6.3 Los MBR no transmiten el valor DL recibido al entrar, sino que utilizan la entrada de estado de arranque en la tabla de particiones de la partición primaria seleccionada como unidad de arranque física. Dado que, por convención, este valor es 0x80 en la mayoría de las tablas de particiones MBR, no habrá cambios a menos que la BIOS intente arrancar desde un dispositivo físico distinto del primer disco fijo/unidad extraíble de la fila. Esta es también la razón por la que estos sistemas operativos no pueden arrancar desde un segundo disco duro, etc. Algunas herramientas FDISK permiten marcar particiones en discos secundarios como "activas". En esta situación, sabiendo que estos sistemas operativos no pueden arrancar desde otras unidades, algunos siguen utilizando el valor fijo tradicional de 0x80 como marcador activo, mientras que otros utilizan valores correspondientes a la unidad de arranque física asignada actualmente ( 0x81 , 0x82 ), lo que permite arrancar desde otras unidades, al menos en teoría. De hecho, esto funcionará con muchos códigos MBR, que toman un bit 7 establecido de la entrada de estado de arranque como indicador activo en lugar de insistir en 0x80 , sin embargo, los MBR de MS-DOS/PC DOS están cableados para aceptar solo el valor fijo de 0x80 . Almacenar el número real de la unidad física en la tabla de particiones también causará problemas, cuando la asignación de unidades físicas de la BIOS cambie, por ejemplo cuando se extraigan, agreguen o intercambien unidades. Por lo tanto, para un MBR normal que acepte el bit 7 como indicador activo y de lo contrario solo use y pase al VBR el valor DL proporcionado originalmente por la BIOS permite la máxima flexibilidad. Los MBR de MS-DOS 7.1–8.0 han cambiado para tratar el bit 7 como indicador activo y cualquier valor 0x01 .. 0x7F como inválido, pero todavía toman la unidad de unidad física de la tabla de particiones en lugar de usar el valor DL proporcionado por la BIOS. Los MBR extendidos de DR-DOS 7.07 tratan el bit 7 como un indicador activo y usan y pasan el valor DL del BIOS por defecto (incluidos los valores no estándar 0x00 .. 0x01 utilizados por algunos BIOS también para medios particionados), pero también proporcionan un bloque de configuración NEWLDR especial para admitir métodos de arranque alternativos junto con LOADER y REAL/32, así como para cambiar el comportamiento detallado del MBR, de modo que también pueda trabajar con valores de unidad recuperados de la tabla de partición (importante junto con LOADER y AAP, ver desplazamiento NEWLDR ), traducir unidades de unidad no estándar de Wyse 0x02 .. 0x7F a 0x80 .. 0xFD y opcionalmente corregir el valor de la unidad (almacenado en el desplazamiento en el Bloque de parámetros del BIOS extendido (EBPB)
0x000C0x019o en el desplazamiento del sector0x01FD) en los VBR cargados antes de pasarles la ejecución (ver desplazamiento de NEWLDR0x0014): esto también permite que otros cargadores de arranque utilicen NEWLDR como cargador en cadena, configuren su imagen en memoria sobre la marcha y "túnelen" la carga de VBR, EBR o AAP a través de NEWLDR.
- El MBR debería conservar el contenido de DH y ES:DI para una compatibilidad total con Plug-and-Play (véase más arriba); sin embargo, muchos MBR, incluidos los de MS-DOS 2.0–8.0 / PC DOS 2.0–6.3 y Windows NT/2000/XP, no lo hacen. (Esto no es sorprendente, ya que esas versiones de DOS son anteriores al estándar BIOS Plug-and-Play, y los estándares y convenciones anteriores no indicaban ningún requisito para conservar ningún registro que no fuera DL). Algunos MBR establecen DH en 0.
En muchas implementaciones, el código MBR pasa información adicional al VBR:
- DS:SI = apunta a la entrada de la tabla de partición MBR de 16 bytes (en el MBR reubicado) correspondiente con el VBR activado. PC-MOS 5.1 depende de esto para arrancar si ninguna partición en la tabla de partición está marcada como arrancable. Junto con LOADER, los sectores de arranque de Multiuser DOS y REAL/32 usan esto para localizar el sector de arranque de la partición activa (u otro cargador de arranque como IBMBIO.LDR en una posición fija en el disco) si no se pudo encontrar el archivo de arranque (LOADER.SYS). PTS-DOS 6.6 y S/DOS 1.0 usan esto junto con su función de Partición Activa Avanzada (AAP). Además de la compatibilidad con LOADER y AAP, DR-DOS 7.07 puede usar esto para determinar el método de acceso INT 13h necesario cuando usa su código VBR dual CHS/LBA y actualizará el campo de indicador de unidad de arranque/estado en la entrada de partición de acuerdo con el valor DL efectivamente usado. Los gestores de arranque Darwin (de Apple
boot1h,boot1uy de David Elliottboot1fat32) también dependen de este puntero, pero además no usan DS, sino que asumen que está configurado en 0x0000 . [ 33 ] Esto causará problemas si esta suposición es incorrecta. El código MBR de OS/2 , MS-DOS 2.0 a 8.0, PC DOS 2.0 a 7.10 y Windows NT/2000/XP también proporciona esta misma interfaz, aunque estos sistemas no la usan. Los MBR de Windows Vista/7 ya no proporcionan este puntero DS:SI. Mientras que algunas extensiones solo dependen de la entrada de la tabla de partición de 16 bytes en sí, otras extensiones pueden requerir que esté presente toda la tabla de partición de 4 (o 5) entradas. - DS: BP = apunta opcionalmente a la entrada de la tabla de particiones MBR de 16 bytes (en el MBR reubicado) correspondiente al VBR activado. Esto es idéntico al puntero proporcionado por DS:SI (ver más arriba) y lo proporcionan los MBR de MS-DOS 2.0–8.0, PC DOS 2.0–7.10 y Windows NT/2000/XP/Vista/7 . Sin embargo, no es compatible con la mayoría de los MBR de terceros.
Bajo DR-DOS 7.07, se puede proporcionar opcionalmente una interfaz extendida mediante el MBR extendido y en conjunto con LOADER:
- AX = firma mágica que indica la presencia de esta extensión NEWLDR ( 0x0EDC )
- DL = unidad de arranque (ver arriba)
- DS:SI = apunta a la entrada de la tabla de particiones MBR de 16 bytes utilizada (ver más arriba)
- ES: BX = inicio del sector de arranque o imagen del sector NEWLDR (normalmente 0x7C00 )
- CX = reservado
En conjunto con GPT, una propuesta de MBR híbrido de Enhanced Disk Drive Specification (EDD) 4 recomienda otra extensión a la interfaz: [ 37 ]
- EAX = 0x54504721 (" ")
!GPT - DL = unidad de arranque (ver arriba)
- DS:SI = apunta a una estructura de transferencia MBR híbrida, que consiste en una entrada de tabla de particiones MBR ficticia de 16 bytes (con todos los bits activados excepto el indicador de arranque en la dirección 0x00 y el tipo de partición en la dirección 0x04 ), seguida de datos adicionales. Esto es parcialmente compatible con la extensión DS:SI anterior, si estas extensiones solo requieren la entrada de partición de 16 bytes, y no la tabla de particiones completa.
- Dado que los sistemas operativos más antiguos (incluidos sus VBR) no admiten esta extensión ni pueden direccionar sectores más allá de la barrera de 2 TiB, un cargador de arranque híbrido habilitado para GPT debería seguir emulando la entrada ficticia de 16 bytes de la tabla de particiones MBR si la partición de arranque se encuentra dentro de los primeros 2 TiB. [ n ]
- ES:DI = apunta a
$PnPla estructura de verificación de instalación " " (ver arriba)
Edición y sustitución de contenidos
Aunque es posible manipular los bytes en el sector MBR directamente usando varios editores de disco , existen herramientas para escribir conjuntos fijos de código funcional en el MBR. Desde MS-DOS 5.0, el programa FDISKha incluido el interruptor /MBR, que reescribe el código MBR. [ 38 ] En Windows 2000 y Windows XP , la Consola de recuperación se puede usar para escribir nuevo código MBR en un dispositivo de almacenamiento usando su fixmbrcomando. En Windows Vista y Windows 7 , el Entorno de recuperación se puede usar para escribir nuevo código MBR usando el BOOTREC /FIXMBRcomando. Algunas utilidades de terceros también se pueden usar para editar directamente el contenido de las tablas de partición (sin necesidad de ningún conocimiento de editores hexadecimales o de disco/sector), como MBRWizard. [ o ]
ddes un comando POSIX comúnmente utilizado para leer o escribir cualquier ubicación en un dispositivo de almacenamiento, incluido el MBR. En Linux , ms-sys puede usarse para instalar un MBR de Windows. Los proyectos GRUB y LILO tienen herramientas para escribir código en el sector MBR, a saber grub-install, y lilo -mbr. La consola interactiva GRUB Legacy puede escribir en el MBR, usando los comandos setupy embed, pero GRUB2 actualmente requiere grub-installser ejecutado desde dentro de un sistema operativo.
Existen diversos programas capaces de crear una " copia de seguridad " tanto de la tabla de particiones primaria como de las particiones lógicas en la partición extendida.
Linux sfdisk(en un SystemRescueCD ) puede guardar una copia de seguridad de la tabla de particiones primaria y extendida. Crea un archivo que se puede leer en un editor de texto, o bien, este archivo puede ser utilizado por sfdisk para restaurar la tabla de particiones primaria/extendida. Un ejemplo de comando para hacer una copia de seguridad de la tabla de particiones es sfdisk -d /dev/hda > hda.outy para restaurarla es sfdisk /dev/hda < hda.out. Es posible copiar la tabla de particiones de un disco a otro de esta manera, lo cual es útil para configurar la replicación, pero sfdisk ejecuta el comando sin solicitar ni advertir usando sfdisk -d /dev/sda | sfdisk /dev/sdb. [ 39 ]
Véase también
- Registro de arranque extendido (EBR)
- Registro de arranque de volumen (VBR)
- Tabla de particiones GUID (GPT)
- Partición de arranque de la BIOS
- Partición del sistema EFI
- Registro de extensión de ingeniería de arranque (BEER)
- Área protegida para huéspedes (HPA)
- Superposición de configuración de dispositivos (DCO)
- Mapa de particiones de Apple (APM)
- Bloque de disco rígido (RDB) de Amiga
- Tabla de contenido del volumen (VTOC)
- Etiqueta de disco BSD
- Cargador de arranque
- Clonación de discos
- Disco de recuperación
- GNU se separó
- Alineación de particiones
Notas
- 1 2 3 4 5 6 7 La firma en el desplazamiento 0x01FE en los sectores de arranque es, es decir, 0x55 en el desplazamiento 0x01FE yen el desplazamiento 0x01FF . 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 bitsen programas para procesadores x86 (nótese el orden intercambiado), mientras que tendría que escribirse comoen 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 mala interpretación.
55hex AAhexAAhexAA55hex55AAhex - ↑ Para garantizar la integridad del código del cargador de arranque MBR, es importante que los bytes entre 0x00DA y 0x00DF nunca se modifiquen, a menos que los seis bytes tengan un valor de 0 o que se reemplace simultáneamente todo el código del cargador de arranque MBR (excepto la tabla de particiones (extendida)). Esto incluye restablecer estos valores amenos que se conozca el código almacenado en el MBR. Windows cumple con esta regla.
00 00 00 00 00 00hex - ↑ Originalmente, los valores de estado distintos de 0x00 y 0x80 no eran válidos, pero los MBR modernos tratan el bit 7 como indicador activo y utilizan esta entrada para almacenar la unidad de arranque física.
- 1 2 Los campos de sectores iniciales están limitados a 1023+1 cilindros, 255+1 culatas y 63 sectores; los campos de sectores finales tienen las mismas limitaciones.
- 1 2 3 4 5 El rango para el sector es de 1 a 63; el rango para el cilindro es de 0 a 1023; el rango para la cabeza es de 0 a 255 inclusive. [ 13 ]
- ↑ Esta entrada es utilizada por los sistemas operativos en ciertas circunstancias; en tales casos, las direcciones CHS se ignoran. [ 15 ]
- ↑ El cero está reservado y no debe usarse en las entradas de partición normales. Esta entrada es utilizada por los sistemas operativos en ciertas circunstancias; en tales casos, las direcciones CHS se ignoran. [ 15 ]
- ↑ "Cita: [La mayoría de] las versiones de MS-DOS (incluida MS-DOS 7 [Windows 95]) tienen un error que impide el arranque en discos duros con 256 cabezales (FFh), por lo que muchas BIOS modernas proporcionan asignaciones con un máximo de 255 cabezales (FEh)." RBIL [ 40 ] [ 41 ]
- ↑ La dirección:es el primer byte del KB número 32 de RAM. Históricamente, la carga del programa de arranque en esta dirección fue la razón por la cual, mientras que el tamaño mínimo de RAM de un IBM PC original (tipo 5150) era de 16 KB, se requerían 32 KB para la opción de disco en el IBM XT.
0000hex7C00hex - ↑ Si existe un EBDA , la memoria disponible termina debajo de él.
- ↑ Las máquinas muy antiguas pueden tener menos de 640 KB (o 655.360 bytes) de memoria. En teoría, solo se garantiza la existencia de 32 KB (hasta:) o 64 KB (hasta:); este sería el caso de una máquina IBM de clase XT equipada únicamente con la cantidad mínima de memoria requerida para un sistema de disco.
A0000hex0000hex7FFFhex0000hexFFFFhex - ↑ Esto se aplica cuando la BIOS maneja un VBR, que es cuando está en el primer sector físico de un medio sin particionar. De lo contrario, la BIOS no tiene nada que ver con el VBR. El diseño de los VBR es como es porque los VBR se originaron únicamente en medios de disquete sin particionar (el IBM PC tipo 5150 originalmente no tenía opción de disco duro), y el sistema de particionamiento que usa un MBR se desarrolló posteriormente como una adaptación para colocar más de un volumen, cada uno comenzando con su propio VBR como ya definido, en un solo disco fijo. Con este diseño, esencialmente el MBR emula la rutina de arranque de la BIOS, haciendo lo mismo que la BIOS haría para procesar este VBR y configurar el entorno operativo inicial para él, como si la BIOS hubiera encontrado ese VBR en un medio sin particionar.
- ↑ IP se establece como resultado del salto. CS puede establecerse a 0 mediante un salto lejano o cargando explícitamente el valor del registro antes de ejecutar un salto cercano. (Es imposible que el código x86 al que se salta detecte si se utilizó un salto cercano o lejano para alcanzarlo [a menos que el código que realizó el salto transmita esta información por separado de alguna manera]).
- ↑ Esto no forma parte de la propuesta mencionada anteriormente, sino que es una consecuencia natural de las condiciones preexistentes.
- ↑ Por ejemplo, el editor de tablas de partición de PowerQuest (PTEDIT32.EXE), que se ejecuta en sistemas operativos Windows, todavía está disponible aquí: sitio FTP de Symantec .
Referencias
- 1 2 3 4 "Compatibilidad de Windows con discos duros de más de 2 TB" . 1. Microsoft . 26/06/2013. 2581408. Archivado del original el 27/04/2017 . Consultado el 28/08/2013 .
- 1 2 3 Sedory, Daniel B. (2004). "Los bytes misteriosos (o los bytes de unidad/marca de tiempo) del registro de arranque maestro (MBR) de MS-Windows 95B, 98, 98SE y Me" . Registros de arranque maestro . thestarman.pcministry.com. Archivado del original el 24 de agosto de 2017. Recuperado el 25 de agosto de 2012 .
- ↑ Lucas, Michael (2003). Absolute OpenBSD: Unix para el paranoico práctico . No Starch Press. pág. 73. ISBN 9781886411999Consultado el 9 de abril de 2011.
Todos los sistemas operativos incluyen herramientas para gestionar particiones MBR. Desafortunadamente, cada sistema operativo maneja las particiones MBR de una manera ligeramente diferente.
- ↑ Norton, Peter ; Clark, Scott (2002). El nuevo libro de Peter Norton, Inside the PC . Sams Publishing . págs. 360–361 . ISBN 0-672-32289-7.
- ↑ Graves, Michael W. (2004). Guía A+ para el mantenimiento y la reparación de hardware de PC . Thomson Delmar. pág. 276. ISBN 1-4018-5230-0.
- ↑ Andrews, Jean (2003). Actualización y reparación con Jean Andrews . Thomson Course Technology. pág . 646. ISBN 1-59200-112-2.
- ↑ Boswell, William (2003). Inside Windows Server 2003. Addison -Wesley Professional . pág. 13. ISBN 0-7357-1158-5.
- ↑ Smith, Roderick W. (2000). Manual de configuración de arranque múltiple . Que Publishing . págs. 260–261 . ISBN 0-7897-2283-6.
- ↑ Brouwer, Andries Evert (22-04-2004) [2000]. "Propiedades de las tablas de partición" . Tipos de partición . Archivado del original el 24-08-2017 . Recuperado el 24-08-2017 .
Matthias [R.] Paul escribe: "[…]
PTS-DOS
[utiliza] una quinta entrada de partición especial delante de las otras cuatro entradas en el MBR y el código de arranque MBR correspondiente compatible con AAP. […]"
- ↑ Brouwer, Andries Evert (22-04-2004) [2000]. "Propiedades de las tablas de partición" . Tipos de partición . Archivado del original el 24-08-2017 . Recuperado el 24-08-2017 .
Algunos sistemas OEM, como AST DOS (tipo
) y NEC DOS (tipo
), tenían 8 en lugar de 4 entradas de partición en sus sectores MBR. (Matthias R. Paul).
(Nota: Las tablas de partición de NEC MS-DOS 3.30 y AST MS-DOS con ocho entradas van precedidas de una firma en el desplazamiento 0x017C ).14hex24hexA55Ahex - ↑ Sedory, Daniel B. (18-05-2007) [2003]. "Notas sobre las diferencias en una versión OEM del MBR de DOS 3.30" . Registros de arranque maestro . Archivado del original el 24-08-2017 . Recuperado el 24-08-2017 .
Cuando agregamos particiones a esta tabla NEC, la primera se colocó en los desplazamientos
0x01EE
a
0x01FD
y la siguiente entrada se agregó justo encima de ella. Por lo tanto, las entradas se insertan y se listan en orden inverso al de una tabla normal. Así, al observar dicha tabla con un editor de disco o una utilidad de listado de particiones, mostraría la primera entrada en una tabla NEC de ocho entradas como la última (cuarta entrada) en una tabla de particiones normal.
(Nota: Muestra una tabla de particiones de 8 entradas y dónde su código de arranque difiere del de MS-DOS 3.30).
- ↑ "Tabla de partición" . osdev.org. 18 de marzo de 2017 [6 de marzo de 2007]. Archivado del original el 24 de agosto de 2017. Consultado el 24 de agosto de 2017 .
- 1 2 3 BIOS del sistema para ordenadores IBM PC/XT/AT y compatibles . Referencia técnica de Phoenix . Addison-Wesley . 1989. ISBN 0-201-51806-6.
- ↑ Brouwer, Andries Evert (2013) [1995]. "Lista de identificadores de partición para PC" . Tipos de partición . Archivado del original el 24 de agosto de 2017. Recuperado el 24 de agosto de 2017 .
- 1 2 Wood, Sybil (2002). Guía de operaciones del servidor Microsoft Windows 2000. Microsoft Press . pág . 18. ISBN 978-0-73561796-4.
- ↑ "Introducción a la geometría de los discos duros" . Tech Juice . 6 de diciembre de 2012 [8 de agosto de 2011]. Archivado del original el 4 de febrero de 2013.
- ↑ Kozierok, Charles M. (17 de abril de 2001). "BIOS y el disco duro" . The PC Guide . Archivado del original el 17 de junio de 2017. Consultado el 19 de abril de 2013 .
- ↑ Smith, Robert (26 de junio de 2011). "Cómo sortear las limitaciones del MBR" . Tutorial de GPT fdisk . Archivado del original el 24 de agosto de 2017. Recuperado el 20 de abril de 2013 .
- ↑ "Más de 2 TiB en un disco MBR" . superuser.com. 7 de marzo de 2013. Archivado del original el 24 de agosto de 2017. Consultado el 22 de octubre de 2013 .
- ↑ "Transición a discos duros de sector 4K de formato avanzado" . Tech Insight . Seagate Technology . 2012. Archivado del original el 24 de agosto de 2017. Consultado el 19 de abril de 2013 .
- ↑ Calvert, Kelvin (16 de marzo de 2011). "Discos duros de gran capacidad WD AV-GP" (PDF) . Western Digital . Consultado el 20 de abril de 2013 .
- ↑ Smith, Roderick W. (27 de abril de 2010). "Linux en discos de sector de 4 KB: consejos prácticos" . DeveloperWorks . IBM . Archivado del original el 24 de agosto de 2017. Recuperado el 19 de abril de 2013 .
- 1 2 "MBR (x86)" . OSDev Wiki . OSDev.org. 5 de marzo de 2012. Archivado del original el 24 de agosto de 2017. Recuperado el 20 de abril de 2013 .
- ↑ Sedory, Daniel B. (30 de julio de 2003). "IBM DOS 2.00 Master Boot Record" . The Starman's Realm. Archivado del original el 24 de agosto de 2017. Recuperado el 22 de julio de 2011 .
- ↑ Singh, Amit (25 de diciembre de 2009) [diciembre de 2003]. "Arranque de Mac OS X" . Mac OS X Internals: The Book . Recuperado el 22 de julio de 2011 .
- ↑ de Boyne Pollard, Jonathan (10 de julio de 2011). "El proceso de arranque EFI" . Respuestas frecuentes . Archivado del original el 24 de agosto de 2017. Consultado el 22 de julio de 2011 .
- ↑ Domsch, Matt (22 de marzo de 2005) [19 de diciembre de 2003]. "Re: Mejoras de RFC 2.6.0 EDD" . Lista de correo del kernel de Linux . Archivado del original el 24 de agosto de 2017. Recuperado el 24 de agosto de 2017 .
- ↑ "Windows puede usar la sintaxis Signature() en el archivo BOOT.INI" . Base de conocimientos . Microsoft .
- ↑ McTavish (febrero de 2014). "Firma de disco MBR de Vista" . Multibooters: Arranque dual y múltiple con Vista . Archivado del original el 24 de agosto de 2017. Recuperado el 24 de agosto de 2017 .
- ↑ Russinovich, Mark (8 de noviembre de 2011). "Corrección de colisiones de firmas de disco" . Blog de Mark Russinovich . Microsoft . Archivado del original el 24 de agosto de 2017. Consultado el 19 de abril de 2013 .
- 1 2 3 Sakamoto, Masahiko (13 de mayo de 2010). "¿Por qué la BIOS carga el MBR en x86?" . Glamenv-Septzen.net. Archivado del original el 24 de agosto de 2017. Recuperado el 4 de mayo de 2011 .
0x7C00 - 1 2 3 4 5 6 Compaq Computer Corporation ; Phoenix Technologies Ltd .; Intel Corporation (1996-01-11). "Especificación de arranque de BIOS 1.01" (PDF) . 1.01. ACPICA. Archivado (PDF) del original el 24-08-2017 . Recuperado el 20-04-2013 .
- 1 2 Elliott, David F. (12 de octubre de 2009). "¿Por qué el MBR "estándar" establece el SI?" . tgwbd.org . Archivado del original el 24 de agosto de 2017 . Recuperado el 20 de abril de 2013 .
- 1 2 3 Compaq Computer Corporation ; Phoenix Technologies Ltd .; Intel Corporation (5 de mayo de 1994). "Especificación del BIOS Plug and Play 1.0A" (PDF) . 1.0A. Intel . Archivado del original (PDF) el 24 de agosto de 2017. Recuperado el 20 de abril de 2013 .
- ↑ 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 del original el 4 de octubre de 2003. Recuperado el 29 de marzo de 2009 .
- ↑ Paul, Matthias R. (14-08-2017) [07-08-2017]. "La saga continua de Windows 3.1 en modo mejorado en OmniBook 300" . MoHPC - el Museo de Calculadoras HP . Archivado del original el 01-05-2018 . Recuperado el 01-05-2018 .
[…] 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 superflop (unidad de arranque 0). Escribiendo el nuevo sector de arranque... […]
(Nota: SYS escribe registros de arranque de volumen en lugar de registros de arranque maestro, pero su interfaz de registro de entrada es similar (con extensiones), ya que ambos podrían ser cargados inicialmente por el sistema subyacente). - ↑ Elliott, Robert (2010-01-04). "EDD-4 Hybrid MBR boot code annex" (PDF) . Hewlett Packard , Comité Técnico T13. e09127r3. Archivado (PDF) del original el 24-08-2017 . Recuperado el 20-04-2013 .
- ↑ "FDISK /MBR reescribe el registro de arranque maestro" . Soporte . 1. Microsoft . 23/09/2011. 69013. Archivado del original el 08/02/2017 . Recuperado el 19/04/2013 .
- ↑ "sfdisk(8) – Página man de Linux" . die.net . 2013 [2007]. Archivado del original el 24 de agosto de 2017. Consultado el 20 de abril de 2013 .
- Brown, Ralf D. (2000-07-16). "Lista de interrupciones de Ralf Brown (v61 html)" . Delorie Software . Recuperado el 2016-11-03 .
- Brown, Ralf D. (2000-07-16). "B-1302: INT 13 - DISCO - LEER SECTOR(ES) EN MEMORIA" . Lista de interrupciones de Ralf Brown (RBIL) (61.ª ed.) . Recuperado el 2016-11-03 .(Nota: Consulte el archivo INTERRUP.B dentro del archivo comprimido "INTER61A.ZIP".)
Lecturas adicionales
- Gilbert, Howard (1996-01-01) [1995]. "Particiones y volúmenes" . PC Lube & Tune . Archivado del original el 2016-03-03.
- Knights, Ray (22/12/2004) [16/12/2000]. "El lugar de Ray" . MBR y sectores de arranque de Windows (incluye desensamblaje de código y explicaciones del proceso de arranque) . Archivado del original el 24/08/2017 . Recuperado el 24/08/2017 .
- Landis, Hale (6 de mayo de 2002). "Registro de arranque maestro" . Cómo funciona . Archivado del original el 1 de julio de 2014.
- Sedory, Daniel B. (25-06-2015) [2007]. "MBRs (Master Boot Records)" . Boot Records Revealed . Archivado del original el 24-08-2017 . Recuperado el 24-08-2017 .
Enlaces externos
- Artículo sobre el registro maestro de arranque
- El MBR y cómo encaja en el proceso de arranque de la BIOS.
- BIOS
- Arranque
- particiones de disco