El sector de particiones

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
MS MVP - DTS
jmtella@compuserve.com

16-julio-2001





Este artículo proviene de Seguridad y Sistemas -- Noticias, Downloads, Manuales y Foros sobre seguridad
http://www.seguridadysistemas.com

La dirección de esta noticia es:
http://www.seguridadysistemas.com/modules.php?name=Sections&op=viewarticle&artid=30