Il Master Boot Record di Windows
Sistema operativo: Windows - tutte le versioni

Diversi anni fa, quando il DOS era uno dei sistemi operativi più utilizzati al mondo (per non dire l'unico), qualche rivista accennò, in un articolo, ad un parametro nascosto del comando FDISK il cui acronimo era MBR ed il cui scopo era quello di ricostruire il "settore di avvio" del proprio disco rigido.
Malgrado qualcuno ritenesse che quell'acronimo fosse l'abbreviazione di Make Boot Record (del tutto lecita), in realtà  racchiudeva (e racchiude tuttora) in sè un concetto ben più importante e fa riferimento alla struttura principe di ogni disco rigido: il Master Boot Record.
Il Master Boot Record rappresenta una struttura importantissima del nostro disco rigido. Basti pensare che se un semplice virus s'insinua al suo interno, potrebbe tranquillamente impedire il corretto avvio della macchina. In passato, quando mi dilettavo a studiare queste strutture con il mio PC, avevo costruito un piccolo programmino di test in C++ che sovrascriveva opportunamente i primi 3 byte di questo settore, provocando un riavvio continuo del sistema. A chiunque non avesse chiaro come fosse strutturato un disco rigido poteva sembrare impossibile ripristinare le condizioni della propria macchina senza riformattare tutto, ma in realtà , bastava un semplice comando per mettere il tutto a posto.
In questo articolo, dunque, non ci soffermeremo approfonditamente sui dettagli "tecnici" che riguardano il significato di termini come testine, cilindri, cluster e quant'altro ruoti attorno all'argomento perchà© credo siano più o meno conosciuti da tutti. Tuttavia vedremo cosa s'intende per MBR e quali strumenti abbiamo a disposizione per ricostruirlo.

Il Master Boot Record

Il Master Boot Record, com'ਠfacile intuire, costituisce il primo settore assoluto di ogni disco rigido. Il termine assoluto ਠnecessario poich੠molti confondono spesso questo settore con il Boot Record di ogni partizione che, in maniera analoga, costituisce il primo settore di ogni partizione.
Per essere ancora più precisi, possiamo sintetizzare ancora in questo modo:

La struttura di un MBR è sostanzialmente simile a quanto riportato in figura:

mbr001.gif

Malgrado possa sembrare complicato comprendere la sua struttura, in realtà , esso ਠcomposto solo da due parti:

Il primo blocco di byte, i primi 446 per l'esattezza, rappresentano il Master Boot Loader, un piccolo programma in grado di leggere la tabella delle partizioni, individuare quella di boot e "saltare" al suo Boot Record per avviare il sistema operativo installato. Nel caso di più dischi rigidi presenti sullo stesso sistema, va sottolineato che tale porzione di codice ਠutilizzata soltanto laddove esista la system partition.

La tabella delle partizioni ਠcostituita da una struttura di 4 record, ciascuno di 16 byte, contenente informazioni sulle partizioni presenti sul disco rigido. In particolare:

Accanto ad ogni record ਠpresente, in formato esadecimale e decimale, l'offset rispetto all'inizio del settore.
La struttura di ogni record ਠcosଠcomposta:

STRUTTURA DI UN GENERICO RECORD DELLA PARTITION TABLE

Byte

offset

Lunghezza

(in bit)

Significato

00

8

Rappresenta il Boot Indicator che identifica la system partition. I valori possibili sono:

00 = Non System partition.
80 = System partition.

All'interno della PT, esiste soltanto un record con il Boot Indicator ad 80 (sistemi x86).

01

8

Testina iniziale

02

6

Settore iniziale (bit da 0 a 5). I restanti bit ossia 6 e 7 sono utilizzati con i successivi per identificare il cilindro iniziale e costituiscono i bit alti di questo dato.

03

10

Cilindro iniziale

04

10

Rappresenta il System ID. Nel caso di partizioni primarie e dischi logici, identifica il tipo di filesystem installato.

05

10

Testina finale

06

6

Settore finale (bit da 0 a 5). I restanti bit ossia 6 e 7 sono utilizzati con i successivi per identificare il cilindro finale e costituiscono i bit alti di questo dato.

07

10

Cilindro finale

08

32

Settore relativo. Nel caso di una partizione primaria, contiene l'offset, rispetto all'inizio del disco fisso (espresso in settori), del Boot Record della partizione.

12

32

Numero totale di settori della partizione

La tabella delle partizioni termina sempre con due byte, 0x55AA.
Chiunque volesse approfondire l'argomento, indagando "direttamente" sul proprio disco rigido e visualizzando il contenuto dei settori in esso presenti, può utilizzare l'utility DiskProbe a corredo del sistema operativo o Sector Inspector mostrata più avanti.

Prima di vedere in che maniera ripristinare un MBR corrotto, ਠimportante aver compreso bene quando il problema è da ricercare nell'MBR o quando va ricercato altrove. Infatti, una delle difficoltà  principali ਠproprio l'individuazione del punto in cui il sistema si blocca. Al link http://www.microsoft.com/resources/documentation/Windows/2000/server/reskit/en-us/Default.asp?url=/resources/documentation/Windows/2000/server/reskit/en-us/prork/prcb_dis_dgya.asp troviamo qualche consiglio su come individuare e correggere i problemi sull'MBR e sui Boot Record. In particolare, nel caso si riscontrassero problemi con il Master Boot Record, possiamo affidarci all'utility FIXMBR della Recovery Console.

Ripristinare l'MBR
Per poter ripristinare un Master Boot Record corrotto, esistono vari sistemi che Microsoft mette a disposizione. Il primo tool da considerare ਠFIXMBR e può essere utilizzato soltanto dopo aver avviato la modalità  Recovery Console di Windows.
L'utilizzo di FIXMBR ਠpiuttosto semplice da utilizzare:

FIXMBR <device>

dove per device s'intende il disco rigido sul quale operare. Nel caso di un solo disco rigido, il comando sarà :

FIXMBR \Device\Hardisk0

Purtroppo, però, FIXMBR non consente di ripristinare una tabella delle partizioni corrotta. Infatti, la sua area di validità , ਠsemplicemente quella delimitata dai primi 446 byte dell'MBR (vale a dire l'intero settore a meno della Partition Table).
Una buona strategia che andrebbe adottata sempre à¨, quindi, quella di crearsi una copia aggiornata dell'intero MBR, comprensivo anche di PT per poterla ripristinare al momento opportuno in qualche maniera. Un utilissimo tool in grado di aiutarci in queste ed altre operazioni, ਠSector Inspector, prelevabile dal sito Microsoft al link consigliato a fine articolo.
Ecco di seguito la schermata con l'elenco delle opzioni:

Sector Inspector                 Copyright Microsoft Corporation 2003

===========================================================================

                         Command Line Help

===========================================================================

Display Help Screen

 

          SECINSPECT.EXE -h

          SECINSPECT.EXE -?

 

Generate a standard report that includes a complete hex dump.

 

          SECINSPECT.EXE

 

Generate Report with no hex dump information.

 

          SECINSPECT.EXE -n

 

Dump a sector range using 64 bit LBN.

 

          SECINSPECT.EXE -dsec DeviceName LBN NumberOfSectors

Example:  SECINSPECT.EXE -dsec \\.\c: 63 2

 

Dump a sector range using Cylinder, Head, Sector notation.

 

          SECINSPECT.EXE -dchs PhysicalDrive C/H/S NumberOfSectors

Example:  SECINSPECT.EXE -dchs PhysicalDrive0 5/121/12 30

 

Dump a file in hex.

 

          SECINSPECT.EXE -dfile FileName

 

Save a sector range as a binary .DSK file.

 

          SECINSPECT.EXE -backup DeviceName FileName LBN NumberOfSectors

Example:  SECINSPECT.EXE -backup c: d:\backup.dsk 0 63

 

Restore a sector range from a binary .DSK file.

 

          SECINSPECT.EXE -restore DeviceName FileName LBN [CONFIRM]

Example:  SECINSPECT.EXE -restore PhysicalDrive2 d:\backup.dsk 0

Example:  SECINSPECT.EXE -restore c: d:\backup.dsk 0 CONFIRM

 

Display FILETIME as UTC time

 

          SECINSPECT.EXE -TIME 64BitHex

 

===========================================================================

In particolare, con il comando:

SECINSPECT -backup PhysicalDrive0 c:mbr.dsk 0 1

creiamo un file binario mbr.dsk (visualizzabile anche attraverso DiskProbe) contenente l'intero Master Boot Record della macchina e ripristinabile attraverso l'uso del parametro restore di Sector Inspector.
Ecco un esempio sull'output ottenuto lanciando il comando precedente:

Sector Inspector                 Copyright Microsoft Corporation 2003

===========================================================================

Performing backup of sector range.

 

 Source Device      : \\.\PhysicalDrive0.

 Destination file   : c:mbr.dsk.

 Start LBN          : 0

 Number of sectors  : 1

 Granularity        : 1

 

Sector Inspector is attempting to lock the volume \\.\PhysicalDrive0.

 

Backing up requested sector range.

.

 

1 of 1 sectors were backed up.

Link utili:
Di seguito sono riportati alcuni link utili ad approfondire l'argomento trattato:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/bootcons_fixmbr.mspx
http://www.microsoft.com/downloads/details.aspx?familyid=DD3EF22A-A586-4079-9489-C3EA14573FC4&displaylang=en