Professional Documents
Culture Documents
Descripcin
0x00
0x01
0x04
0x05
0x08
0x0C
Descripcin
0x00
Bits de estado1 (bit 0 = lista del men del gestor de arranque, el resto son bits
reservados)
Firma de la particin
0x01
El cdigo convencional del MBR espera que se use el esquema de la tabla de particiones del MBR,
y escanea la lista de entradas de particiones (primarias) en la tabla de particiones buscando una que
est marcada con active flag. Luego carga y ejecuta el Volume Boot Record para esa particin (as
que el master boot record, como otros sectores de arranque, es un blanco para los virus que infectan
el sector de arranque).
El cdigo del MBR, modificado por algunos gestores de arranque, puede realizar una serie de tareas
que son distintas segn el gestor de arranque. Por ejemplo, en algunos gestores, ese cdigo carga el
resto del cdigo del gestor de arranque desde la primera pista del disco (que es espacio libre no
asignado a ninguna particin de disco) y lo ejecuta. En otros, usa una tabla de posiciones de disco,
que se encuentra en el mismo espacio que el cdigo, para localizar el cdigo del resto del gestor de
arranque y poder cargarlo y ejecutarlo. Ambas formas tienen problemas. La primera confa en el
comportamiento (que no es el mismo en todas) de las utilidades de particionado de disco y la
segunda requiere que la tabla de posiciones de disco se actualice una vez se hayan hecho los
cambios para localizar el resto del cdigo.
En los ordenadores que no usan procesadores IA-32, o en ordenadores que usan el esquema de la
tabla de particiones GUID, ese esquema no es correcto, y el MBR no se utiliza en el arranque del
sistema. En su lugar el firmware es capaz de entender directamente el esquema de particionado GPT
y el formato de sistema de ficheros FAT, de modo que carga y ejecuta programas guardados como
ficheros en la Particin del Sistema. El MBR, por tanto, no interviene en absoluto en el arranque del
sistema (excepto indirectamente, en la medida en que podra contener la tabla de particiones si se ha
usado el esquema de la Tabla de Particiones del MBR).
La firma del disco fue introducida por Windows NT 3.5, pero actualmente la usan varios sistemas
operativos, incluida las versiones de la 2.6 en adelante del ncleo Linux. Windows NT usa la firma
del disco como un ndice en su registro, donde guarda la relacin entre particiones y letras de disco.
Tambin lo usa en el fichero boot.ini para indicar las particiones con marca bootable en Windows
NT.4 GNU/Linux usa la firma del disco al arrancar para determinar la posicin del volumen de
arranque.
Consideraciones en la programacin
Se asume que el sistema que se est programando usa un esquema MBR para BIOS, como se ha
indicado antes, y la BIOS del sistema localiza un MBR vlido en un disco particionado durante la
secuencia de arranque (boot sequence). Como se ha visto antes, el cdigo convencional del MBR
carga y ejecuta el cdigo del volume boot record del sistema operativo (o bootloader) que se
encuentra al principio de la particin activa. El MBR puede asumir simplemente que la particin
activa del disco actual es desde la que se arranca o, alternativamente, puede programarse como un
MBR de arranque dual. Un MBR de arranque dual debe interactuar con el usuario para determinar
desde qu particin de disco se arranca y tiene que pasarle el control al MBR de otro disco duro.
La BIOS cargar el primer MBR vlido que encuentre hacia la direccin fsica hexadecimal
0x7C00, y salta a esa direccin. Parte de los 512 bytes del sector se reserva para la tabla de
particiones y otra informacin (ver la tabla), as que el cdigo del programa debe ser tan pequeo
como para caber en poco ms de 400 bytes de memoria. El cdigo debe comunicarse con el usuario,
examinar la tabla de particiones, o realizar tareas de gestin como activar la lnea A20, o cambiar a
modo irreal desde modo real. Eventualmente, el MBR necesitar realizar su tarea y cargar el
programa que har la siguiente fase del arranque, usando la llamada de la BIOS INT 13.
Normalmente, el cdigo del sector de arranque tambin espera ser cargado de la direccin fsica
0x7C00, incluso cuando toda la memoria de las direcciones fsicas entre la 0x500 y la 0x9ffff est
disponible en modo real (637 Kb y medio). Cuando el MBR ya se est ejecutando desde la posicin
0x7C00, una de sus primeras tareas normalmente es reubicarse en otro lugar de la memoria -- a
menudo en la 0x7A00. Un volume boot record tiene solamente el tamao de un sector, lo cual no es
un problema pues es fcil que el MBR cargue bastante ms que slo un sector. Algunos gestores de
arranque son ms grandes que un sector, as que cargar ms de un sector puede acelerar el proceso
de arranque.
Si se quiere hacer una copia de seguridad del MBR, sera recomendable copiar los primeros 63
sectores del disco (que equivaldran al primer cilindro del disco) y no slo el primero, ya que
nuestro sistema podra tener implementado el sistema GUID, el cual utiliza ms sectores para
guardar la informacin sobre las particiones del disco duro. La instruccin sera:
En los sistemas operativos de Microsoft no hay acceso directo al MBR. En DOS o Windows 9x, el
programa de DOS fdisk junto con fdisk /mbr (del que no hay documentacin) reescribir el cdigo
del MBR. En Windows 2000 y posteriores, la consola de recuperacin puede usarse para escribir el
nuevo cdigo del MBR al disco duro. Existen otras utilidades para editar la tabla de particiones del
MBR directamente.
Si se est haciendo un backup del disco duro (lo que en ingls se conoce como ghosting) y da avisos
de que no se encuentra el fichero de paginacin, seguramente se pueda solucionar con fdisk /fixmbr
(ejecutado desde un disquete, ya que no se podr entrar en Windows).
En DR-DOS 6 (y posiblemente otras versiones), el programa FDISK tiene una opcin para
reescribir el MBR (Re-write Master Boot Record). Cuando se ejecuta con esa opcin se guarda el
antiguo MBR en OLDMBR.BIN, que puede ser copiado en un disquete para que FDISK intente
restaurar el MBR original desde l, en caso de necesidad este tipo de backups.