EL SECTOR DE PARTICIONES (MBR)
-----------------------------------------------------Esto es válido para todas las versiones DOS, y por tanto para todos los sistemas operativos que quieran convivir con el DOS deben respetar este formato. Podría haberse escogido otro..., pero por suerte o por desgracia, este es el que nos ha tocado. Todos los sistemas operativos actuales de PC respetan este formato.
Voy a intentar describir un poco sobre las particiones (sería interesante ver los artículos sobre Particiones I y II que publiqué hace tiempo).
El llamado sector de particiones es creado por FDISK en su primera llamada (con un disco recién adquirido y sin preparar) o cuando ejecutamos el comando FDISK /MBR.
Es el primer sector del disco duro (cabeza 0, cilindro 0, sector 1). Este es el sector que siempre arranca la BIOS primeramente antes de cargar ningún sistema operativo. La bios lo carga en la posición de memoria 0000:7C00 siempre que no encuentre un disquete en la unidad A:, y le cede el control para la ejecución del programa que espera encontrar allí.
Si los dos ultimos bytes de los 512 de este sector contienen el codigo 55h,AAh (hexadecimal) considera este sector como ejecutable y comienza la ejecución de programa en el primer byte de ester sector una vez se ha cargado en la posición de memoria anterior.
El código de programa que hay en este sector de arranque, tiene como tarea el reconocer la partición "activa" y con ello, el sistema operativo a ejecutar, cargar su sector de arranque y comenzar la ejecución del código de programa que allí está contenido. Ya que este código de programa, por definición, se ha de encontrar en la posicion de memoria 0000:7C00, el código de partición, primeramente, se desplaza a la posición de memoria 0000:0600 y con ello deja espacio para el sector de arranque.
Dirección Contenido Tipo
--------------------------------------------------------------------------------
+000h Código de la partición Código
+1BEh 1ª entrada en la tabla de particiones 16 Bytes
+1CEh 2ª entrada......... 16 Bytes
+1DEh 3ª entrada......... 16 Bytes
+1EEh 4ª entrada......... 16 Bytes
+1FEh Identificación AA55h 2 Bytes
Longitud= 200h = 512 Bytes.
Veamos cada entrada de 16 Bytes que define una partición, qué es lo que contiene:
Dirección Contenido Tipo
-----------------------------------------------------------------------------
+00h Estado de la particion 1 BYTE
00h = Inactiva
80h = Partición de arranque
+01h Cabeza de lectura/escritura 1 BYTE
donde comienza la partición.
+02h Sector y Cilindro donde comienza 2 BYTES
la partición (formato WORD - palabra)
+04h Tipo de particion 1 BYTE
00h = Libre
01h = DOS con la vieja 12-bit FAT
02h = XENIX
03h = XENIX
04h = DOS FAT 16
05h = Partición extendida
06h = Partición DOS 4.0 > 32 Megas
DBh = Concurrent DOS
.... etc
+05h Cabeza de lectura/escritura 1 BYTE
donde termina la partición.
+06h Sector y cilindro donde 2 BYTES
termina la partición.
+08h Distancia del primer sector de la 4 BYTES
partición (Sector de arranque)
+0Ch Numero de sectores
de esta partición 4 BYTES
Longitud = 10h = 16 Bytes
----------------------------------------------
Luego las funciones del programa de boot (MBR) del disco duro son:
1) Localizar el sector de arranque de la partición activa, para esto se recorre las 4 entradas de las 4 posibles particiones para ver cual es la activa.
2) Posicionar la cabeza de lectura escritura en dicha partición.
3) Volver a cargar los 512 primeros bytes de esa partición en memoria y ceder el control (este es el verdadero sector de arranque del sistema operativo. En el caso de MSDOS o WINDOWS, es creado al dar un FORMAT a la partición)
*******************************
Con la descripción anterior nos podemos dar cuenta de una cosa:
* Sólo es posible un máximo de 4 particiones (no hay espacio para más, en discos que sean compatibles MSDOS, esto por definición).
Y otra cosa MUY importante. Lo fácil que lo tienen los virus para destrozar un disco. Únicamente con *modificar* un poquito este sector desde la posicion +1BEh, el disco se nos va a la mierda....
** Y otra cosilla, para los "virgueros" de la programación. En un programita de media docena de instrucciones, podremos cambiar la "marca" de partición activa a la que nos interese, para reiniciar desde ella.
Espero que al menos, esto sirva para culturilla, y quien sabe si alguien se atreve a hacer dicho programa.... con cuidado, o nos podemos calzar todo el contenido del disco....
Un saludo,
--
Jose Manuel Tella Llop
jmtella@compuserve.com
16-julio-2001