I segreti del Master Boot Record

Una manciata di bit, all’inizio del disco fisso, determina se il PC è in grado di vedere le partizioni del disco, scegliere un sistema operativo e caricarlo

marzo 2005 Quando accendete il computer, viene eseguita una complessa
serie di operazioni, che inizia dalle istruzioni contenute nella memoria non
volatile del BIOS (Basic Input/Output System).

Per prima cosa viene eseguito il POST (Power-On Self Test),
una serie di test dei principali componenti hardware, dopo di che il BIOS legge
il primo record (settore di 512 byte) del primo hard disk, che si chiama Master
Boot Record
(record di avvio principale) perché è il
punto di partenza per trovare il sistema operativo da caricare.

In presenza di più hard disk, nel setup del BIOS avete la possibilità
di specificare il tipo di drive di boot (per esempio ATA o SCSI) e la sequenza
delle unità, così che il BIOS legga l’MBR dal disco di sistema.

Se il BIOS cercasse l’MBR su un disco di lavoro, non troverebbe il sistema
operativo e si bloccherebbe con un messaggio di errore.

L’MBR di solito viene scritto dal sistema operativo,
per esempio in occasione della prima formattazione di una partizione del disco
oppure dalla console Gestione Disco in Gestione Computer (Windows 2000/XP);
l’MBR è presente su tutti gli hard disk, ma viene usato solo se
il computer è di tipo x86 e il disco contiene la partizione di sistema.

Il BIOS, dopo aver copiato l’MBR in memoria, passa il controllo al codice
contenuto nella prima parte del record (detto master boot code),
che contiene istruzioni (300 byte) e messaggi di errore (80 byte).

La parte finale dell’MBR contiene i 64 byte della partition table (tabella
delle partizioni) e una “firma” di due byte con valore AA55h (h
sta per esadecimale), senza la quale l’MBR non è considerato valido.

Il master boot code, caricato a un indirizzo fisso della memoria di sistema,
esegue quattro azioni: 1) scansione della partition table alla
ricerca della partizione attiva, 2) localizzazione del settore
iniziale della partizione attiva, 3) caricamento in memoria
di una copia del settore di boot della partizione attiva e 4)
trasferimento del controllo al codice eseguibile contenuto nel settore di boot.

Avvio e partizioni
Per chiarire la funzione dell’MBR, rivediamo brevemente le caratteristiche
della partition table. Nei 64 byte disponibili, c’è posto per quattro
descrittori di partizioni. Un hard disk può contenere fino a quattro
partizioni primarie e può contenere una partizione estesa,
nel qual caso potranno esserci fino a tre partizioni primarie.

Una partizione primaria è completamente descritta dalla sua voce di
partition table, che include tipo, posizione e dimensioni della
partizione.

La partizione estesa è un contenitore suddiviso in
partizioni logiche (fino a 24), dette anche drive logici, che
formano una struttura concatenata.

Nella partition table ci sono solo le dimensioni e la posizione della partizione
estesa, mentre i descrittori delle partizioni logiche sono contenuti all’inizio
delle partizioni stesse.

Sul disco di avvio, solo una delle partizioni primarie può essere dichiarata
“attiva” e sarà utilizzata per il boot del sistema operativo.

Ognuno dei quattro descrittori nella partition table include i seguenti campi:
indicatore di boot (un byte) che vale 80 se la partizione è
attiva, altrimenti 00; numero di testina (o superficie dei
piatti) dove inizia la partizione (un byte); settore iniziale della
partizione
(6 bit); cilindro iniziale (10 bit); system
id
(un byte), l’identificatore del tipo di partizione
(per es. 07h per partizione NTFS); testina finale
(un byte); settore finale (6 bit); cilindro finale
(10 bit); relative sectors (4 byte), il numero di settori tra
l’inizio del disco e l’inizio della partizione; numero totale di
settori della partizione (4 byte).

Ricordiamo che nei processori Intel e compatibili i numeri maggiori di un byte
sono memorizzati in ordine inverso di byte, partendo cioè dai bit meno
significativi. Ad esempio, i due byte finali AA55 dell’MBR appaiono come
55AA quando visualizzate il contenuto del settore.

Prendiamo come esempio un PC con il disco di avvio suddiviso in una partizione
primaria e in una partizione estesa composta di due partizioni logiche.

Supponiamo che nella partizione primaria sia installato Windows 2000 e che
Windows XP sia installato nella seconda partizione logica.

Dopo l’installazione di Windows 2000, la partizione primaria (C:) era
attiva e la partizione estesa era vuota. Quando Windows XP (parente stretto
di Windows 2000) è stato installato in F: (partizione logica), il setup
ha aggiornato i file di C: utilizzati per avviare il sistema operativo, tra
cui NTLDR, Boot.ini e Ntdetect.com. Il risultato è che
la partizione attiva resta C:, detta partizione di sistema perché è
quella da cui viene caricato il sistema operativo.

Ora riprendiamo la sequenza di passi all’avvio del computer dal momento
in cui il BIOS passa il controllo al codice del MBR. Il master boot code trova
nella partition table l’ubicazione della partizione attiva (quella contrassegnata
con 80) e ne legge il primo settore, che è il boot record (record di
avvio) della partizione.

Le istruzioni contenute nel boot record di C: determinano l’esecuzione
di NTLDR (NT loader), dopo averlo copiato in memoria dalla directory principale
della partizione attiva, che è C:.

NTLDR, per decidere quale sistema operativo caricare (nel
nostro esempio ce n’è due), legge Boot.ini, un file di testo in
C:\ che elenca i sistemi operativi installati e la loro ubicazione sugli hard
disk.

Quindi NTLDR propone all’utente di scegliere da un menu quale sistema
avviare, si procura informazioni sulla configurazione hardware e cerca la partizione
di boot del sistema operativo scelto dall’utente.

Se scegliamo Windows XP, NTLDR trova in Boot.ini che XP è installato
nella directory \Windows della terza partizione del primo disco,
quindi dà inizio al caricamento del sistema operativo e gli passa il
controllo.

continua…

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome