Siempre que arrancamos un ordenador compatible con
la estructura de la Tabla de Particiones (los conocidos como: PC clónicos o ,
simplemente, clónicos), necesariamente
terminamos buscando la MBR (Máster Boot Record) para poder
arrancar. La no existencia de la misma, parara el proceso de arranque.
Esta MBR indica al proceso de inicio del sistema, cual
es el siguiente salto para poder arrancar el sistema operativo. Más
concretamente, indica la partición activa que contiene el sistema operativo que
será cargado.
El MBR debe residir en el primer sector del disco
de arranque, el cual siempre está compuesto de "n" clúster,
dependiendo del proceso de formateado dado. Pero, no empezará en la posición 0 del sector,
si no que comienza en la posición 446h del primer sector (offset 446h)
IMPORTANTE:
La unidad básica de un disco duro es el clúster,
que se agrupa en sectores en función del formateo que el disco duro ha
tenido.
Del total del tamaño del sector, la MBR se
compone de 512 bytes de información, divididos en:
Código ejecutable
|
Códigos de error
|
Tabla de particiones
|
El código ejecutable, más formalmente llamado: Máster Boot Code, es el programa usado
en el arranque para determinar cuál de las particiones de la tabla de
particiones es la activa.
Los códigos
de error, son los mensajes en texto plano que pueden aparecer si el MBC (Máster Boot Code) determina que ha
habido un problema al encontrar la partición activa. Dichos mensajes pueden
ser:
1.-
Invalid partition table
2.-
Error loading operation system
3.-
Missing operating system
En cuanto a la tabla de particiones a su vez se
subdivide en 4 registros de 16 bytes cada uno, formando un total de 64
bytes. Cada registro se corresponde con una posible partición activa, por
ello, un ordenador sólo puede tener 4 particiones primarias, y el resto, si se
quieren tener más, deben ser particiones extendidas.
Cada byte de cada registro de la partición activa
tiene su propio significado, que se pasa a comentar:
Bytes
|
Función
|
1
|
Determina si la partición es la partición activa
o no.
Para determinar que estamos ante la partición
activa debería existir el valor: 80h, en cualquier otro caso, debería existir
el valor: 00h
|
2
|
Determina el sector inicial de la partición en formato CHS (Cilindros,
Heads and Sectors - Cilindros, Cabezas y Sectores)
|
3
|
|
4
|
|
5
|
Tipo de partición
Más información (listado de tipos): https://en.wikipedia.org/wiki/Partition_type
|
6
|
Determina el sector final de la partición en formato CHS (Cilindros,
Heads and Sectors - Cilindros, Cabezas y Sectores)
|
7
|
|
8
|
|
9
|
Offset de la ubicación de la partición respecto de la MBR
|
10
|
|
11
|
|
12
|
|
13
|
Tamaño de la partición en sectores
|
14
|
|
15
|
|
16
|
Al final de la tabla de particiones, siempre
encontraremos los caracteres 55AAh,
que indicarán el fin de la MBR.
Si el proceso de arranque puede determinar la
partición activa, este saltará al sector correspondiente. El cuál tendrá una VBR (Volumen Boot Record) o una EPT (Extensión Partition Table)
Podemos verlo gráficamente mediante un editor
hexadecimal. Un ejemplo sería:
Primeros bytes del sector 0
del Disco óptico 1
Analizada la MBR podemos ver:
Análisis de la MBR desde el
offset 446
Más
información:
https://es.wikipedia.org/wiki/Registro_de_arranque_principal
https://github.com/hamptus/pyMBR
https://raw.githubusercontent.com/gleeda/misc-scripts/master/misc_python/mbr_parser.py
Lo que hagas con la información es cosa tuya, no mía ... pero ten
conciencia.
No hay comentarios:
Publicar un comentario