Discos, volúmenes y sistemas de archivo(II).

MBR en discos dinámicos.

Al igual que los discos básicos, los discos dinámicos contienen un MBR con su código de inicio maestro, la firma del disco y, la tabla de particiones del disco. Sin embargo, la tabla de particiones en los discos dinámicos no contienen una entrada por cada volumen en el disco, ya que la información sobre el volumen está guardada en la BD del disco dinámico. En su lugar, la tabla de particiones contiene entradas por volumen del sistema, volumen de arranque(si no es el mismo que el del sistema), y uno o más particiones que abarcan el espacio restante no asignado en el disco. Todas estas particiones usan el ID de sistema 0x42, que indica que son particiones que están en un disco dinámico. Colocar estas particiones en la tabla de particiones impide que las utilidades de disco basadas en MBR interpreten el espacio disponible para nuevas particiones.

Sectores de inicio en discos MBR

El sector de inicio, que se ubica en el sector 1 de cada volumen, es una estructura de disco que es crítico para el inicio del equipo. Contiene el código ejecutable y los datos necesarios por el código, incluida la información que usa el sistema de archivos para el acceso al volumen. El sector de inicio se crea durante el formato del volumen. Al final de éste sector hay una estructura de 2 bytes denominada signature word o marcador de fin de disco, que está siempre establecido a 0x55AA. En equipos con Windows Server 2003, el sector de inicio en la partición activa carga en memoria y ejecuta el Ntdlr, que carga el menú de inicio si existen varias instalaciones de Windows, o carga el sistema operativo directamente en el caso de una única instalación.

El sector de inicio consiste en los elementos:

  • Una instrucción de interrupción de CPU de 24 bits.
  • La identificación del fabricante original (ID de OEM).
  • Una estructura de datos que es el BPB (BIOS parameter Block).
  • El BPB extendido.
  • El código ejecutable de inicio (bootstrap code) que arranca el sistema.

Cada sector de inicio en Windows Server 2003 tiene los elementos descritos sin importar si el disco es básico o dinámico.

El BPB describe los parámetros físicos del volumen: el BPB extendido comienza inmediatamente después del BPB. Debido a los diferentes tipos de campos y de la cantidad de datos que contienen, el tamaño del BPN es diferente para sectores de inicio FAT16, FAT32 y NTFS.

Los controladores de dispositivo de disco utilizan la información en el BPB y el BPB extendido para leer y configurar los volúmenes. El área que sigue al BPB extendido suele contener código ejecutable de inicio, que lleva a cabo las acciones necesarias para seguir con el proceso de arranque.

Procesos de arranque del sector de inicio

Los equipos usan este sector para ejecutar las instrucciones de arranque. El proceso de arranque inicial resumido:

  • La BIOS y la CPU inician la POST.
  • La BIOS selecciona el dispositivo de arranque, normalmente el primer disco que encuentra, si la controladora no está configurada para iniciar desde un disco/dispositivo diferente.
  • La BIOS carga el primer sector físico del dispositivo de arranque en memoria y transfiere la ejecución a ésta dirección de memoria.
  • Si el dispositivo de arranque es un disco, la BIOS carga el MBR. El código de inicio en el MBR carga a su vez el sector de inicio de la partición activa y le transfiere la ejecución a esta dirección de memoria. En equipos con Windows Server 2003, el código de inicio del sector de inicio busca el Ntldr, lo carga en memoria y le pasa el control.
  • Si la unidad A contiene un disquete, la BIOS carga el primer sector del disco en memoria. Si es un disco de arranque con formato MS-DOS y tiene los archivos de sistema necesarios, se carga el sector de inicio en la memoria y se usa el código para transferir el control a la CPU y el archivo IO.sys. Si el formato es con un sistema reciente de Windows, una vez cargado el sector de inicio se transfiere el control al Ntldr. En el caso de no ser un disco de inicio, se muestra el mensaje:

Non-system disk or disk error. Replace and press any key when ready

Si el mensaje es similar y el inicio se está ejecutando sobre un disco duro, el sector de inicio podría estar corrupto.

En principio, el proceso de arranque es independiente del formato del disco y del sistema operativo. Las características de sistema operativo y de sistema de archivo son importantes cuando se inicia el código ejecutable de inicio del sector de inicio.

Elementos de un sector de inicio

El MBR transfiere la ejecución a la instrucciones ejecutables de 32-bits del sector de inicio, por lo que los 3 primeros bytes de éste han de ser válidos. Esto incluye una instrucción de salto que irá a los siguientes bytes no ejecutables.

Lo siguiente a la instrucción de salto es el ID de OEM (8 bytes), una cadena de carácteres que identifica el nombre y versión del sistema operativo de formato del volumen. Para respetar la compatibilidad con MS-DOS, Windows Server 2003 graba “MS-DOS5.0” en éste campo en discos FAT16 y FAT32. En discos NTFS, graba “NTFS”.

Posteriormente al ID OEM es el BPB, que proporciona información que permite al código ejecutable localizar al Ntldr. El BPB siempre se inicia en el mismo offset, parámetros estándar en sitio conocido. Tamaño y geometría variable del disco están encapsulados en el BPB. Ya que la primera parte del sector de inicio es una instrucción de salto de CPU de 24 bits, el BPB puede extenderse en el futuro agregando nueva información al final. La instrucción de salto necesita pocos ajustes para adaptarse al cambio. El BPB se guarda en un formato de paquete(sin alineamiento).

Los sectores de inicio y los BPB y BPB extendidos son distintos según si son FAT16, FAT32 o NTFS.

Sectores de Disco en discos GPT

GPT usa estructuras de particiones primarias y de copia de seguridad para proporcionar redundancia. Estas estructuras se ubican al comienzo y el final del disco. GPT identifica estas estructuras por sus direcciones LBA (Logical Block Address) más que por sus sectores relativos. Usando este esquema, los sectores en un disco están numerados del 0 a n-1, donde n es el número de sectores del disco.

La primera estructura en un disco GPT es el Protective MBR en el LBA0, seguido por la cabecera GPT primaria en LBA1. Esta cabecera es seguida por la entrada-array de partición GUID primaria, que incluye una entrada de partición por cada una de ellas en el disco.

Las particiones en el disco se situan entre las entradas-arrays GUID primaria y de copia de seguridad. Las particiones deben colocarse dentro del primero y el último LBAs utilizables, como esté especificado en la cabecera de particiones GPT.

Protective MBR

La especificación EFI (Extensible Firmware Interface) requiere que LBA0 esté reservado, por compatibilidad con el código y un Protective MBR. El protective MBR tiene el mismo formato que un MBR existente, y contiene una entrada de partición con un valor de ID de sistema de 0xEE. Esta entrada reserva el espacio entero del disco, incluyendo el usado por la cabecera GPT, como una partición única. El protective MBR se incluye para impedir que las herramientas de disco diseñadas para discos MBR interpreten el disco, como el espacio disponible y que no sobreescriban las particiones GPT. EFI ignora el protective MBR y no ejecuta código MBR.

Cabecera de particiones GPT

La cabecera GPT determina el rango de direcciones de bloques lógicos que son utilizables mediante las entradas de partición. También su localización en el disco, su GUID y el CRC32 (32 bits cyclic redundary check checksum) que se usa para la comprobación de la integridad de la propia cabecera GPT.

Los discos GPT usan una cabecera de partición GUID primaria y de copia de seguridad:

  • La primaria en LBA1, inmediatamente después del protective MBR.
  • La copia de seguridad en el último sector del disco. No hay datos después de esta.

EFI comprueba la integridad de las cabeceras mediante CRC32, un valor calculado que se usa para comprobación de errores en los datos . Si la primaria está corrupta, se comprueba la copia de seguridad, si ésta es válida, se usa para restaurar la primaria. Este proceso trabaja al revés si la primaria es correcta y la de copia es la corrupta. Si ambas están corruptas, entonces Windows Server Itanium no puede acceder al disco.

AVISO: Cualquier herramienta de disco no diseñada específicamente, como Diskpart.efi o las herramientas de versión Itanium, pueden realizar cambios que hagan inválidos los checksum y dejar los discos GPT inaccesibles.

Entrada-array GUID Partición

Similar a la tabla de particiones en los discos MBR, la entrada-array de particiones GUID contiene entradas de particiones que representan cada una de ellas en el disco. Las versiones Itanium de Windows Server 2003 crean un array de 16.384 bytes, por lo que el primer bloque utilizable se encuentra en una LBA igual o superior a 34. (EL LBA0 contiene el protective MBR, LBA1 la cabecera GPT, y entre el LBA2 y LBA33 se utiliza por la entrada-array de particiones GUID).

Cada disco GPT contiene dos entradas-array de particiones GUID:

  • La primaria que está justamente después de la cabecera y que finaliza antes del primer LBA utilizable.
  • La de copia de seguridad, ubicada entre el último LBA utilizable y la cabecera GUID de la misma copia de seguridad.

El valor CRC32 se guarda en la cabecera GPT. Cuando se agrega una nueva partición, se actualiza el CRC32 en las entradas primaria y copia de seguridad y luego se actualiza el tamaño de checksum de la cabecera GPT.

Entrada de partición GUID

Tiene un tamaño de 128 bytes y establece una única partición. Ya que las versiones Itanium crean una entrada-array que tiene 16.384 bytes, podemos tener un máximo de 128 particiones en un disco básico GPT

Cada entrada de partición GUID comienza con una partición tipo GUID. El tipo GUID de 16-bytes, similar a un ID de sistema en la tabla de particiones de un disco MBR, identifica el tipo de datos que la partición contiene y como se usa la partición. Las versiones Itanium sólo reconocen una serie de particiones GUI y no montan ninguna otra más. Sin embargo, los OEMs y distribuidores independientes (LSVs), como otros sistemas operativos, pueden establecer tipos adicionales.

Atributos de la entrada de partición GUID

Son descriptores de como se usa la partición. Están especificados dentro de un valor de 64-bits, EFI es compatible con hasta 64 atributos distintos. Las versiones Itanium usan 4 atributos:

Bits Descripción
Bit 0 Especifica que la partición es necesaria para el funcionamiento de la plataforma. Los OEMs deben establecer este bit para protegerla de sobrescritura por herramientas de disco de Windows Server 2003.
Bit 60 Marca la partición como sólo-lectura. Usado por particiones primarias básicas de cierto tipo.
Bit 62 Marca la partición como oculta. Usado por particiones primarias básicas de cierto tipo.
Bit 63 Impide que el sistema asigne de forma predeterminada una letra de unidad a la partición. Usado por particiones primarias básicas de cierto tipo.

Sectores de inicio en discos GPT

Similares a los de discos MBR, exceptuando que EFI ignora todo el código de 32-bits en el sector de arranque. En su lugar, EFI usa su propio controlador de sistema de archivos para leer el BPB y entonces monta el volumen.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *