Capitolo – 3
Un approccio logico ai dischi e al sistema operativo
Un disco rigido non può controllare autonomamente il proprio hardware e necessita di due programmi principali per svolgere le sue operazioni: BIOS (Basic Input/Output System) e DOS (o sistema operativo). Il sistema operativo del disco non interagisce direttamente con l'hardware e il disco rigido del computer, ma necessita del BIOS tra di essi. Ecco perché il BIOS svolge un ruolo importante in un computer.
BIOGRAFIA
Il compito principale del BIOS è quello di fornire un'interfaccia standard tra l'hardware o i dispositivi collegati al computer e il DOS. Il BIOS di sistema è l'interfaccia di livello più basso tra l'hardware del sistema e il software in esecuzione su di esso. Svolge diverse funzioni importanti nella gestione dell'accesso ai dischi rigidi, come ad esempio
- Routine di interruzione del BIOS
- Rilevamento e configurazione del disco rigido
- Supporta la modalità interfaccia disco rigido
Per consentire l'interoperabilità tra diversi prodotti hardware e software, il BIOS di un sistema viene personalizzato in base alle esigenze del suo hardware e fornisce un modo standard per il software di accedere all'hardware. Sono chiamati servizi BIOS e sono utilizzati da molti sistemi operativi e programmi applicativi. Forniscono un'unica interfaccia al disco rigido, quindi le applicazioni non hanno bisogno di sapere come comunicare individualmente con ogni tipo di disco rigido.
I dischi rigidi IDE/ATA standard vengono configurati nel BIOS utilizzando varie impostazioni BIOS. I moderni programmi BIOS sono in grado di rilevare le moderne unità IDE/ATA, determinare queste impostazioni e configurarle automaticamente. Il BIOS controlla quali tipi di modalità di interfaccia possono essere utilizzate con il disco rigido, interagendo con il chipset di sistema sulla scheda madre e con il bus I/O di sistema.
Interfaccia INT 13H ed estensioni INT 13H
L'interfaccia primaria per il BIOS è l'interrupt software 13H, comunemente noto come INT 13H, dove INT sta per interrupt e 13H è il numero 19 in notazione esadecimale.
Durante la fase di programmazione di questo libro studieremo e discuteremo in dettaglio l'uso degli interrupt nella programmazione. L'interfaccia Int13H supporta una serie di comandi diversi che possono essere impartiti al BIOS, che li trasmette poi al disco rigido. L'interrupt 13H include la maggior parte delle attività che dobbiamo eseguire sul disco, come lettura, scrittura, formattazione, ecc.
Per utilizzare e lavorare con Int13H è necessario che il programma chiamante conosca i parametri specifici del disco rigido e fornisca alle routine l'indirizzamento preciso di testine, cilindri e settori per accedere al disco.
Il BIOS utilizza la geometria del disco rigido configurata nel programma di configurazione del BIOS. L'interfaccia Int13H alloca 24 bit per specificare la geometria del disco, suddivisi come segue:
- 10 bit per il numero del cilindro, ovvero 1024 cilindri in totale.
- 8 bit per il numero della testina, ovvero 256 testine in totale.
- 6 bit per il numero di settore, ovvero 63 settori in totale.
Pertanto, il numero massimo possibile di settori su un disco può essere
= 1024 * 256 * 63
= 16515072
Come possiamo vedere qui, l'interfaccia INT 13H può supportare unità contenenti fino a 16515072 settori a 512 byte per settore. Pertanto, la dimensione massima del disco può essere,
= 16515072 * 512
= 8455716864 byte
~ 8.456 GB
Pertanto, l'interfaccia INT 13H può supportare una dimensione del disco di circa 8,456 GB (o 7,875 GiB).
Oggigiorno la maggior parte degli utenti di computer utilizza dischi rigidi con capacità molto superiori a 8 GB, pertanto l'interfaccia INT 13H ha definitivamente raggiunto il termine della sua utilità nei moderni sistemi informatici ed è stata sostituita da un'interfaccia più recente denominata estensioni INT 13H. Tuttavia, INT 13H può ancora essere utilizzato da DOS e da alcuni altri sistemi operativi più vecchi, nonché per altri scopi di compatibilità.
Estensioni Int 13H
È davvero interessante che quando è stata progettata l'interfaccia INT 13H, nessuno si aspettava di avere 8 GB di spazio di archiviazione su un disco rigido. Tuttavia, oggi possiamo constatare che un disco rigido da 8 GB ha una capacità molto più ridotta, anche per un computer domestico.
Il vecchio standard presenta un'importante limitazione: utilizza 24 bit di informazioni di indirizzamento e può quindi gestire solo unità contenenti fino a 16.515.072 settori a 512 byte per settore, per una capacità massima di 8,456 GB (o 7,875 GiB).
Quindi il problema era di ampliare il percorso di accesso da 24 bit a qualcosa di più grande, ma non era possibile espandere l'interfaccia BIOS INT13H esistente perché se avessimo provato a farlo, un sacco di hardware e software più vecchi avrebbero smesso di funzionare. E in pratica, non c'è speranza di ottenere un posto rispettabile nel mondo dei computer con un sacco di hardware e software più vecchi che non funzionano con il tuo sviluppo.
Pertanto è stata sviluppata una nuova interfaccia per sostituire Int13H. Queste routine sono chiamate estensioni Int13H. Questa nuova interfaccia utilizza 64 bit invece di 24 bit per l'indirizzamento e consente una dimensione massima del disco rigido di 9,4 * 10 21 byte, ovvero 9,4 trilioni di gigabyte.
Impareremo l'uso di entrambe, INT 13H e estensioni INT 13H nella sezione di programmazione di questo libro. Ci sono un certo numero di altre limitazioni di dimensione che hanno avuto luogo nei primi giorni. Alcuni dei limiti logici e fisici più diffusi sono stati descritti di seguito:
Il limite di 2,1 GB
Questo limite di dimensione è stato osservato in alcuni BIOS più vecchi che assegnano solo 12 bit per il campo nella RAM CMOS che fornisce il numero di cilindri. Pertanto questo numero può essere al massimo 111111111111B (numero binario massimo possibile a 12 bit) che equivale a 4095. In questo modo la dimensione massima del disco con 16 testine, a cui è possibile accedere, sarà:
= 4095 * 16 * 63 * 512 byte
= 2113413120 byte sono accessibili.
Il limite di 33,8 GB
Questa barriera dimensionale del disco rigido è stata notata all'inizio del 1999. I dischi di grandi dimensioni riportano 16 testine, 63 settori/traccia e 16383 cilindri. Molti BIOS calcolano un numero effettivo di cilindri dividendo la capacità totale per 16*63.
Per dischi più grandi di 33,8 GB questo porta a un numero di cilindri più grande di 65535. In questo caso particolare, alcune versioni di Award BIOS non riescono a gestire unità che hanno più di 65.535 cilindri. Ora il BIOS si blocca o si blocca. Poiché i parametri del disco rigido di solito usano 16 testine e 63 settori, questo si traduce in una capacità di circa 33,8 GB o 31,5 GiB prima che si verifichino problemi.
La soluzione è aggiornare il BIOS oppure utilizzare un jumper per far sembrare il disco più piccolo.
Specifiche ATA per dischi IDE - Il limite di 137 GB
La vecchia specifica ATA non consente l'accesso a un disco più grande di 137 GB. In realtà, utilizza solo 28 bit per specificare un numero di settore. Tuttavia, ATA-6 definisce un'estensione con un numero di settore di 48 bit.
Il limite della dimensione del disco è stato generato con la combinazione di al massimo 65536 cilindri che contano da 0 a 65535, 16 testine che contano da 0 a 15 e 255 settori per traccia che contano da 1 a 255, la capacità totale massima del disco,
= 65535 * 16 * 255 Settori
= 267386880 Settori
= 136902082560 byte (settore da 512 byte ciascuno)
~ 137 GB
Supporto BIOS IDE a due e quattro dischi
Oggi la maggior parte dei moderni programmi BIOS supporta il rilevamento automatico del disco rigido, che consente al BIOS di interrogare ogni disco rigido per determinare la sua geometria logica, le modalità di trasferimento supportate e altre informazioni. Ciò può essere fatto al momento dell'installazione o dinamicamente ogni volta che la macchina viene avviata, a seconda del BIOS.
Il BIOS di sistema fornisce supporto nativo per dischi rigidi IDE/ATA, pertanto potrebbero esserci diversi parametri che possono essere impostati per indicare al BIOS quali dischi rigidi sono presenti nel sistema e come controllarli. Ogni disco rigido nel sistema avrà le proprie impostazioni, quindi ce n'è uno impostato per il master primario e uno per lo slave primario e così via. Tuttavia, i dischi rigidi SCSI sono configurati tramite il loro adattatore host e il BIOS SCSI integrato.
Poiché le unità disco rigido di dimensioni superiori a 8 GB non possono essere descritte utilizzando i tradizionali parametri geometrici del BIOS IDE/ATA, il rilevamento automatico dinamico è il metodo standard per configurare le unità moderne, soprattutto nel caso di sistemi informatici più vecchi. Tuttavia, l'utente può comunque impostare manualmente alcuni parametri dell'unità.
Di seguito sono riportate le impostazioni normalmente presenti nel programma di configurazione del BIOS per la configurazione di dischi rigidi IDE/ATA. Sebbene sui sistemi moderni alcune delle impostazioni di compatibilità più vecchie potrebbero non essere più presenti:
- Tipo di disco: originariamente era utilizzato per consentire all'utente di scegliere il proprio disco rigido da un elenco predefinito, ma ora viene utilizzato per controllare l'impostazione automatica o manuale dei parametri per l'unità.
- Size: Dimensione dell'unità disco rigido in megabyte decimali. Viene calcolata in base ad altri parametri come cilindri, testine e settori ecc.
- Cilindri: il numero di cilindri logici sul disco. Testine: il numero di testine logiche sul disco.
- Settori: il numero di settori logici, ciascuno di 512 byte, in ogni traccia logica sul disco. Di solito, le unità disco rigido moderne hanno 63 settori su una singola traccia.
- Precompensazione di scrittura: è un'impostazione di compatibilità che specifica a quale numero di cilindro devono essere apportate le regolazioni di scrittura per unità molto più vecchie.
- Landing Zone (Parking Heads): Landing Zone è il cilindro in cui le testine vengono parcheggiate dal BIOS per evitare la perdita di dati o la creazione di Bad Sectors, quando l'unità viene spenta. Poiché le moderne unità disco rigido parcheggiano automaticamente le loro testine, oggigiorno è raramente necessario.
- Modalità di traduzione: modalità di traduzione del BIOS utilizzata per supportare i dischi rigidi superiori a 504 MB.
- Modalità blocco: per controllare la capacità del BIOS di eseguire trasferimenti su disco in blocchi.
- Modalità I/O programmata (DMA): modalità I/O programmata o modalità DMA utilizzata per eseguire trasferimenti da e verso il disco rigido.
- Modalità di trasferimento a 32 bit: controlla l'uso di trasferimenti di dati a 32 bit ad alte prestazioni.
Limitazioni nei file system
Ogni file system supporta una dimensione massima del volume, una dimensione massima dei file e un numero massimo di file per volume.
Ora, per esempio, in genere i volumi FAT16 e FAT32 sono limitati rispettivamente a 4 GB e 32 GB (in genere). Ci sono alcune limitazioni relative ai file system FAT che devi conoscere, elencate di seguito:
- FAT12: i volumi FAT inferiori a 16 MB sono formattati come FAT12. È il tipo FAT più vecchio e utilizza un binario a 12 bit per contenere i numeri di cluster. Un volume formattato utilizzando FAT12 può contenere un massimo di 4.086 cluster, che è uguale a 2 12 meno alcuni valori riservati da utilizzare in FAT. (Ne parleremo in dettaglio nella struttura logica del disco fornita più avanti in questo capitolo). Pertanto FAT12 è più adatto per volumi più piccoli. Viene utilizzato su floppy disk e partizioni di dischi rigidi più piccoli di circa 16 MB.
- FAT16: FAT16 utilizza un numero binario a 16 bit per contenere i numeri di cluster. Un volume che utilizza FAT16 può contenere un massimo di 65.526 cluster, che è uguale a 2 16 meno alcuni valori riservati da utilizzare in FAT. (Ne parleremo in dettaglio nella struttura logica del disco fornita più avanti in questo capitolo). FAT16 è utilizzato per volumi di dischi rigidi di dimensioni comprese tra 16 MB e 2.048 MB. I volumi FAT16 più grandi di 2 GB non sono accessibili da computer che eseguono MS-DOS, Windows 95/98/ME e molti altri sistemi operativi. Questa limitazione si verifica perché questi sistemi operativi non supportano dimensioni di cluster superiori a 32 KB, il che determina il limite di 2 GB. (Vedere il limite dei cluster fornito più avanti in questo capitolo).
- FAT32: in teoria, i volumi FAT32 massimi possono arrivare fino a 2048 GB (circa 2 Terabyte). FAT32 è supportato dalla versione OEM SR2 di Windows 95, così come da Windows 98/ME. FAT32 utilizza un numero di cluster binario a 28 bit (ricorda! non 32, perché 4 dei 32 bit sono "riservati"). Quindi teoricamente FAT32 può gestire volumi con oltre 268 milioni di cluster (in realtà 268.435.456 cluster) e supporterà unità fino a 2 TB di dimensioni. Tuttavia, per fare ciò, le dimensioni del FAT diventano molto grandi. (Ne parleremo negli argomenti forniti più avanti in questo capitolo).
Nella tabella successiva è riportato il confronto dei tipi di FAT.
NTFS: NTFS sta per New Technology File System. È utilizzato da Windows 2000/XP. In teoria, la dimensione massima della partizione NTFS è (2 64 – 1) cluster.
La descrizione dettagliata del file system NTFS va oltre i limiti di questo libro, tuttavia nella tabella seguente sono riportate alcune sue limitazioni:
Descrizione
|
Limite |
Dimensione massima del file
|
16 Exabyte – 1 KB (2 64 Byte – 1 KB) |
Dimensione massima del volume
|
(2 64 – 1) gruppi |
File (e cartelle) per volume
|
4.294.967.295 (2 32 – 1 ) Mosche e cartelle |
Grappolo
L'unità di spazio più piccola sul disco rigido per l'allocazione a cui qualsiasi software può accedere è il settore, che contiene 512 byte. È possibile avere un sistema di allocazione per il disco in cui a ogni file vengono assegnati tanti settori individuali quanti ne ha bisogno. Ad esempio, un file da 1 MB richiederebbe circa 2.048 settori individuali per memorizzare i suoi dati.
Nel caso del file system FAT o meglio possiamo dire nella maggior parte dei file system, i singoli settori non vengono utilizzati. Ci sono diverse ragioni di prestazioni per questo. Quando DOS scrive alcune informazioni sul disco rigido, non alloca lo spazio in base al settore, ma utilizza una nuova unità di archiviazione chiamata cluster.
FAT è stato progettato molti anni fa ed è un file system semplice, e non è in grado di gestire settori individuali. Ciò che FAT fa invece è raggruppare i settori in blocchi più grandi che sono chiamati cluster o unità di allocazione.
Un cluster è la più piccola unità di spazio su disco che può essere allocata a un file. Questo è il motivo per cui i cluster sono spesso chiamati unità di allocazione. Potrebbe essere molto difficile gestire il disco quando i file sono suddivisi in pezzi da 512 byte.
Un volume di disco da 20 GB che utilizza settori da 512 byte gestiti individualmente conterrebbe oltre 41 milioni di settori individuali e tenere traccia di così tante informazioni richiede tempo e risorse. Tuttavia, alcuni sistemi operativi allocano spazio ai file in base al settore, ma richiedono un'intelligenza avanzata per farlo correttamente.
I cluster sono lo spazio minimo assegnato dal DOS quando si memorizzano informazioni sul disco. Anche per memorizzare informazioni lunghe solo un byte sul disco è richiesta almeno un'area cluster sulla superficie del disco.
Se un cluster può memorizzare 512 byte di informazioni, per memorizzare 513 byte saranno necessari due cluster. A ogni file deve essere assegnato un numero intero di cluster. Ciò significa che se un volume utilizza cluster che contengono 4.096 byte, un file da 610 byte utilizzerà un cluster, quindi 4.096 byte sul disco, ma un file da 4.097 byte utilizza due cluster, quindi 8.192 byte sul disco.
Questo è il motivo per cui la dimensione del cluster è così importante per assicurarti di massimizzare l'uso efficiente del disco. Quindi possiamo capire che più grandi sono le dimensioni del cluster, più spazio viene sprecato.
La figura riportata di seguito mostra le proprietà di un file denominato BINARY.C e chiarisce il fatto dello spazio utilizzato dal file nel disco. La dimensione effettiva del file è di 610 byte, ma poiché il singolo cluster è di 4.096 byte, il file utilizza un cluster (4.096 byte) nel disco.
Un cluster può essere costituito da uno o più settori. Dipende dal tipo di disco utilizzato. Poiché un cluster può essere costituito da più di un settore, l'uso di cluster come unità di allocazione riduce la dimensione della File Allocation Table che DOS utilizza per contenere le informazioni sullo spazio disco utilizzato e vuoto.
La dimensione del cluster è determinata principalmente dalla dimensione del volume del disco. Se non in senso stretto, in genere volumi più grandi utilizzano dimensioni di cluster maggiori. Per i volumi di dischi rigidi, ogni cluster varia in dimensione da 4 settori (2.048 byte) a 64 settori (32.768 byte).
I floppy disk utilizzano cluster molto più piccoli e in alcuni casi utilizzano un cluster di dimensioni pari a un solo settore. I settori in un cluster sono continui, quindi ogni cluster è un blocco continuo di spazio sul disco.
La dimensione del cluster e quindi la dimensione della partizione o del volume, poiché sono direttamente correlate, hanno un impatto importante sulle prestazioni e sull'utilizzo del disco. La dimensione del cluster è determinata quando il volume del disco è partizionato.
Sono disponibili alcune utilità come Partition Magic che possono modificare la dimensione del cluster di una partizione esistente entro i limiti di condizioni specifiche, ma nei casi generali, una volta selezionate la dimensione della partizione e del cluster, queste vengono fissate.
Come abbiamo detto in precedenza, il numero del cilindro o della traccia parte da 0 e il primo numero di settore è sempre considerato 1. Un'altra cosa da ricordare è che il primo numero di cluster è sempre considerato 2.
Dimensione del cluster
I cluster vengono utilizzati per allocare l'area di archiviazione solo per l'area dati. FAT e area directory non vengono allocate in base alla dimensione del cluster. Su un disco che utilizza settori da 512 byte, un cluster da 512 byte contiene un settore, mentre un cluster da 4 KB contiene 8 settori.
Le tabelle seguenti elencano le dimensioni predefinite dei cluster utilizzate dal DOS per vari formati di dischi. Tuttavia, la dimensione del cluster potrebbe essere diversa dalla dimensione predefinita in alcune circostanze:
Unità disco floppy (FDD) |
Tipi di unità |
Settori/Cluster |
Dimensione totale del cluster in byte (settori da 512 byte ciascuno) |
5,25" 360Kb FDD |
2 settori |
1.024 |
5,25"1,2 Mb FDD |
1 settore |
512 |
3,5" 720Kb FDD |
2 settori |
1.024 |
3.5"1.44Mb FDD |
1 settore |
512 |
3,5"2,88 MB FDD |
2 settori |
1.024 |
FAT16, FAT32 e NTFS utilizzano ciascuno dimensioni di cluster diverse a seconda delle dimensioni della partizione e ogni file system ha un numero massimo di cluster che può supportare. Più piccola è la dimensione del cluster, più efficientemente un disco memorizza le informazioni perché lo spazio inutilizzato all'interno di un cluster non può essere utilizzato da altri file.
La seguente tabella mostra le dimensioni predefinite dei cluster per le partizioni del file system FAT16, FAT32 e NTFS. FAT 32 consente un'archiviazione e un utilizzo molto più efficienti di dischi rigidi più grandi, FAT a 32 bit è compatibile solo con Windows 95 OSR-2 e Windows 98/ME e. FAT 16 è supportato da MS-DOS, Windows 3.1, Windows 95 e Windows NT. I sistemi operativi Windows 2000/XP utilizzano il file system NTFS.
Nota: qui 1 KiB è stato scritto per 1 Kilobyte binario, il che significa che 1 KiB è pari a 1024 byte oppure possiamo dire che due settori da 512 byte equivalgono a 1 KiB.
Man mano che la dimensione della partizione FAT16 aumenta, aumenta anche lo spreco di spazio su disco. L'uso di FAT32 riduce le dimensioni dei cluster e quindi fornisce un'archiviazione efficiente. Mentre FAT32 consente l'uso di dischi rigidi più grandi e dimensioni dei cluster notevolmente ridotte, c'è un'importante considerazione sulle prestazioni nell'uso di FAT32, ovvero che gli enormi dischi rigidi con decine di gigabyte hanno reso FAT32 essenziale per i sistemi più recenti. Piuttosto possiamo dire che spesso non hai più una scelta pratica tra FAT16 e FAT32.
Consideriamo una partizione da 2.048 MB, la più grande che FAT16 può supportare. Se questa partizione è impostata su FAT16, si otterrà una tabella di allocazione file con 65.526 cluster al suo interno, con ogni cluster che occupa 32 KiB di spazio su disco.
Le grandi dimensioni del cluster provocheranno effettivamente un grande spreco di spazio su disco. Pertanto si raccomanderà di usare FAT32 su questa partizione, il che comporterà una riduzione delle dimensioni del cluster da 32 KiB a 4 KiB.
In effetti, questo ridurrà lo slack sul disco di una quantità enorme, che potrebbe arrivare fino al 30%, e potenzialmente libererà centinaia di megabyte di spazio su disco precedentemente sprecato. Di solito è la cosa giusta da fare in questa situazione. Tuttavia, ha un altro lato positivo. Non otteniamo questa dimensione di cluster ridotta gratuitamente.
Poiché ogni cluster è più piccolo, devono essercene di più per coprire la stessa quantità di disco. Quindi, invece di 65.526 cluster, ora ne avremo 524.208.
Inoltre, le voci FAT in FAT32 sono larghe 32 bit (ogni voce di 4 byte), mentre le voci di FAT16 sono di 16 bit (ogni voce di 2 byte). Il risultato finale è che la dimensione di FAT è 16 volte più grande per FAT32 che per FAT16. La seguente tabella riassume:
FAT 16 e FAT 32 per volume disco da 2.048 MB |
Tipo FAT |
FAT16 |
FAT32 |
Dimensione del cluster |
32Kb |
4Kb |
Numero di voci FAT |
65.526 |
524.208 |
Dimensioni del FAT |
131052 byte
(~ 128 KiB) |
2096832 byte
(~ 2 MiB) |
Se aumentiamo la dimensione del volume FAT32 da 2 GB a 8 GB, la dimensione del FAT aumenta da circa 2 MiB a 8 MiB. Il significato di questo non è il fatto che il volume FAT32 dovrà sprecare diversi megabyte di spazio sul disco per contenere il FAT. Perché solo così facendo si risparmia molto più spazio di così riducendo la dimensione del FAT. Il vero problema è che il FAT contiene tutti i puntatori cluster per ogni file nel volume. Far aumentare notevolmente la dimensione del FAT può avere un impatto negativo sulla velocità del sistema.
Per questo motivo è importante limitare la dimensione della File Allocation Table a un numero ragionevolmente grande. Infatti, nella maggior parte dei casi si tratta di trovare un equilibrio tra dimensione del cluster e dimensione del FAT. Una buona illustrazione di ciò sono le selezioni di dimensione del cluster effettuate da FAT32 stesso.
Poiché FAT32 può gestire circa 268 milioni di cluster massimi, la dimensione del cluster da 4 KiB è concettualmente in grado di supportare un volume disco di 1 TiB (1.024 GiB) di dimensione, ma il problema nel farlo è che la dimensione FAT raggiungerebbe quindi oltre 1 GB, ovvero 268 milioni di volte 4 byte per voce.
Per questo motivo, FAT32 utilizza solo cluster da 4 KiB per volumi fino a 8 GiB di dimensione, e poi vengono utilizzati cluster più grandi come mostrato nella tabella fornita in precedenza, per le dimensioni dei cluster. La dimensione massima della partizione supportata da FAT32, che è dichiarata ufficialmente, è di 2.048 GiB (2 TiB).
Struttura logica di un disco rigido
Fondamentalmente possiamo suddividere la struttura logica del disco rigido nei seguenti cinque termini logici:
- MBR (record di avvio principale)
- DBR (record di avvio DOS)
- FAT (tabelle di allocazione file)
- Directory principale
- Area dati
La figura seguente rappresenta la disposizione concettuale di questi termini logici che formano la struttura logica di un disco rigido:
Struttura logica di un disco rigido
Il Master Boot Record (MBR) o talvolta denominato Master Partition Table (MPT), contiene un piccolo programma per caricare e avviare la partizione attiva (o avviabile) dall'unità disco rigido. Il Master Boot Record contiene informazioni su tutte e quattro le partizioni primarie sull'unità disco rigido, come il settore iniziale, il settore finale, la dimensione della partizione, ecc.
L'MBR si trova nel settore assoluto 0 o possiamo dire nel cilindro 0, nella testina 0 e nel settore 1 e se nel disco sono presenti più partizioni ci sono degli Extended Master Boot Record, situati all'inizio di ogni volume di partizione estesa (vedere la figura riportata di seguito).
L'MBR viene creato sul disco rigido eseguendo il comando FDISK.EXE del DOS. Tuttavia, sono disponibili molti altri software per svolgere la stessa attività. Utilizzando FDISK, una qualsiasi di queste partizioni può essere resa attiva o avviabile.
Ciò consente al settore di avvio della partizione attiva di ricevere il controllo quando il sistema viene avviato. Poiché il floppy non ha partizioni su di esso, non c'è quindi alcun MBR su un floppy.
Poiché il DOS utilizza un singolo alfabeto maiuscolo per nominare una partizione, il numero massimo di tutti i tipi di partizioni insieme consentiti dal DOS è 24, a partire dalla lettera di unità C (C:) fino alla lettera di unità Z (Z:). Pertanto, anche se sono presenti più unità disco rigido fisiche, il numero totale di partizioni di tutte le unità non può superare 24.
Dopo il Power-On Self Test (POST), il BIOS carica l'MBR (Master Boot Record) dal disco rigido nella memoria e poi lo esegue. Prima l'MBR controlla il disco rigido per una partizione attiva, poi carica il DOS Boot Record (DBR) nella memoria e passa il controllo al codice di avvio del sistema operativo e poi il codice del Boot Record del sistema operativo carica il resto del sistema operativo nella memoria.
Formato Master Boot Record
Formato Master Boot Record
Possiamo partizionare l'Hard Disk Drive in diverse unità logiche a cui in genere viene assegnata una lettera di unità da DOS. Solo una partizione alla volta può essere contrassegnata come partizione attiva (o avviabile).
Formato Master Boot Record
Il Master Boot Record ha il limite di quattro voci nella Master Partition Table. Tuttavia, la posizione dell'Extended Master Boot Record può essere ottenuta con l'aiuto del Master Boot Record che contiene Extended Partition Table, il cui formato è esattamente lo stesso della Partition Table principale, tranne per il fatto che non c'è alcun codice di avvio.
Nel Master Boot Record esteso, questo spazio di 446 byte è normalmente riservato al codice di avvio e rimane vuoto. Tutti i 512 byte del Master Boot Record sono interrotti come segue, come riportato nella tabella:
Offset |
Descrizione |
Misurare |
000H |
Initial Program Loader (IPL), codice eseguibile (fornisce il primo avvio del computer) |
446 byte |
1BEH |
Prima voce di partizione (vedere la tabella successiva) |
16 byte |
1CEH |
Seconda voce di partizione |
16 byte |
1DEH |
Terza voce di partizione |
16 byte |
1EEH |
Quarta voce di partizione |
16 byte |
1FEH |
Marcatore eseguibile o firma del settore avviabile o numero magico (AAH 55H) |
2 byte |
Totale = 512 byte |
Tutte le partizioni estese dovrebbero esistere all'interno dello spazio riservato dalla voce di partizione estesa. Solo due delle partizioni estese sono destinate a essere utilizzate, la prima come partizione normale e la seconda come un'altra partizione estesa, se esiste. Quindi, con l'aiuto di una Master Partition Table, possiamo ottenere la posizione di un'altra Extended Master Partition Table accanto ad essa, se presente.
Formato voce tabella partizione
Il formato della voce della tabella delle partizioni di qualsiasi partizione in MBR è stato fornito nella tabella successiva. Ogni voce di partizione di qualsiasi MBR può essere suddivisa nei seguenti byte con i loro significati specifici:
Byte indicatore tipo di avvio (1 byte): se questo byte è 00H, significa che la partizione non è attiva e se il byte è 80H, significa che la partizione è una partizione attiva o avviabile. Sebbene la presenza di qualsiasi altro byte non sia prevista, tuttavia se è presente un altro byte potrebbe essere dovuto alla corruzione della tabella delle partizioni o a un attacco VIRUS nella tabella delle partizioni.
Numero di cilindro iniziale, testina e settore della partizione (3 byte): quando calcoliamo i CHS (cilindro, testina e settore) di un disco, i CHS fisici vengono conteggiati come segue:
- Il Settore Fisico viene conteggiato a partire da 1.
- La Testa Fisica si conta a partire da 0.
- Il cilindro fisico viene contato da 0 (vedere il capitolo precedente per i dettagli)
- Il byte all'offset 01H rappresenta il numero di testa iniziale nel sistema esadecimale per la partizione.
6 bit meno significativi di byte all'offset 02H formano il numero del settore iniziale della partizione e la combinazione dei restanti 2 bit (come due bit più significativi) più 8 bit di un altro byte all'offset 03H (i restanti 8 bit meno significativi del numero a 10 bit) formano il numero del cilindro iniziale della partizione.
Offset |
Senso |
Misurare |
Descrizione |
ore 00:00 |
Byte indicatore tipo di avvio |
1 byte |
Se Byte è 00H, la partizione è inattiva e se Byte è 80H , la partizione è attiva (o avviabile) |
01H |
Numero di testa dell'inizio della partizione |
1 byte |
Numero di testa iniziale della partizione nel sistema esadecimale |
ore 02:00 |
Numero di settore e cilindro di inizio della partizione |
2 byte |
6 bit del primo byte formano il numero del settore iniziale e la combinazione dei restanti 2 bit (come i due bit più significativi) più 8 bit di un altro byte (i restanti 8 bit meno significativi del numero a 10 bit) formano il numero del cilindro iniziale della partizione. |
ore 04:00 |
Indicatore del file system Byte |
1 byte |
Byte indicatore del file system nel sistema esadecimale (vedere la tabella riportata di seguito per gli indicatori) |
ore 05:00 |
Numero di testa della fine della partizione |
1 byte |
Numero di testa finale della partizione nel sistema esadecimale |
ore 06:00 |
Numero di settore e cilindro di fine della partizione |
2 byte |
6 bit del primo byte formano il numero del settore finale e la combinazione dei restanti 2 bit (come i due bit più significativi) più 8 bit di un altro byte (i restanti 8 bit meno significativi del numero a 10 bit) formano il numero del cilindro finale della partizione. |
ore 08:00 |
Numero del settore relativo dell'inizio della partizione |
4 byte |
Numero di settori tra l'MBR e il primo settore nella partizione |
0CH |
Numero di settori della partizione |
4 byte |
Numero di settori nella partizione |
Totale = 16 byte |
La codifica del cilindro e del settore è stata fornita nell'esempio di uno studio di tabella delle partizioni di esempio eseguito di seguito.
Byte indicatore del file system (1 byte): il byte indicatore del file system all'offset 04H rappresenta il file system di quella partizione. La tabella che elenca il byte indicatore del file system per vari file system è stata fornita più avanti in questo capitolo.
Cilindro finale – Testina – Numero di settore della partizione (3 byte): la codifica è la stessa del cilindro iniziale – Testina – Numero di settore della partizione.
Numero di settore relativo all'inizio della partizione (4 byte): numero di settori tra l'MBR e il primo settore nella partizione nel sistema esadecimale.
Numero di settori della partizione (4 byte): numero di settori nella partizione nel sistema esadecimale.
Bisogna sempre ricordare che i numeri di cilindro, testina e settore sono quelli che devono essere passati al BIOS. Quindi, se il BIOS sta usando la traduzione (modalità LBA o supporto estensioni INT 13H), i valori potrebbero non rappresentare i valori CHS fisici. Per dischi rigidi di grandi dimensioni (superiori a 8,4 GB) i valori CHS potrebbero non essere validi. Questi valori dovrebbero essere generalmente ignorati e al loro posto vengono usati i valori assoluti del settore.
La figura seguente mostra l'MBR di un disco con partizioni FAT32. L'area evidenziata di 64 byte alla fine della figura rappresenta la Master Partition Table dell'MBR.
La codifica per il CHS iniziale e finale è la seguente:
- All'offset 00H, 80 (esadecimale) indica che la partizione è attiva.
- All'offset 01H, 01 (esadecimale) rappresenta il numero della testina iniziale = 1.
- La combinazione di due byte negli offset 02H e 03H forma il settore iniziale e il numero del cilindro della partizione secondo la codifica indicata di seguito:
MBR di un disco con partizioni FAT32
Quindi CHS iniziale della partizione = 0-0-1.
Allo stesso modo, il numero della testa per la fine della partizione è FE (esadecimale), che è 254, e la codifica per il cilindro finale e il numero del settore della partizione sono stati forniti nella tabella seguente:
Quindi la CHS finale della partizione = 701-254-63.
Il byte 0B (esadecimale) all'offset 04H è il byte indicatore del file system per la partizione. Il byte 0B (H) rappresenta che la partizione ha il file system FAT32. La tabella per vari file system e i loro byte indicatori del file system è stata fornita di seguito:
Byte indicatore del file system in esadecimale |
Descrizione della partizione/file system |
ore 00:00 |
Voce della tabella delle partizioni inutilizzata/vuota
(ricorda che non viene utilizzata per designare un'area inutilizzata sul disco, ma contrassegna una voce della tabella delle partizioni inutilizzata) |
01H |
DOS 12-bit fat
(il tipo 01H è per partizioni fino a 15 MB) |
ore 02:00 |
XENIX: file system radice |
ore 03:00 |
File system XENIX /usr (obsoleto)
(XENIX è una vecchia parte di Unix V7. Il sistema operativo Microsoft XENIX è stato annunciato nell'agosto 1980. Era una versione portatile e commerciale del sistema operativo Unix per Intel 8086, Zilog Z8000, Motorola M68000 e Digital Equipment PDP-11. Microsoft ha introdotto XENIX 3.0 nell'aprile 1983. SCO ha consegnato il suo primo XENIX per 8088/8086 nel 1983.) |
ore 04:00 |
FAT a 16 bit, DOS 3.0+ (dimensione partizione < 32 M)
(Alcune vecchie versioni di DOS avevano un bug che richiedeva che questa partizione fosse posizionata nei primi 32 MB fisici del disco rigido) |
ore 05:00 |
DOS esteso ( volume esteso DOS 3.3+)
Supporta al massimo dischi da 8,4 GB. Con questo tipo 05H DOS/Windows non utilizzerà la chiamata BIOS estesa, anche se disponibile.) |
ore 06:00 |
FAT a 16 bit, DOS Big, DOS 3.31+ (dimensione partizione >= 32 M)
(le partizioni sono al massimo di 2 GB per DOS e Windows 95/98 con un massimo di 65536 cluster per ogni cluster, al massimo 32 KB. Windows NT può creare fino a 4 GB di partizione FAT16 utilizzando cluster da 64 KB.) |
ore 07:00 |
OS/2 IFS (Installable File System) (HPFS è l'esempio più noto di questo file system. OS/2 considera solo le partizioni con ID 7 per qualsiasi IFS installato; questo è il motivo per cui il pacchetto EXT2 IFS include uno speciale driver di dispositivo "filtro partizione Linux" per ingannare OS/2 facendogli credere che le partizioni Linux abbiano ID 07). |
ore 07:00 |
Unix avanzato |
ore 07:00 |
Windows NTFS |
ore 07:00 |
QNX2.x (precedente al 1988)
(Per il file system effettivo del tipo di partizione 07H, si dovrebbe ispezionare il record di avvio della partizione) |
ore 08:00 |
OS/2 (solo da v1.0 a v1.3) |
ore 08:00 |
Partizione di avvio AIX
[AIX (Advanced Interactive Executive) è la versione IBM di Unix] |
ore 08:00 |
Unità divisa |
ore 08:00 |
Partizione DELL che si estende su più unità |
ore 08:00 |
Commodore DOS |
ore 08:00 |
QNX 1.x e 2.x
("qny" secondo le partizioni QNX) |
ore 09:00 |
Partizione dati AIX |
ore 09:00 |
File system coerente
[Coherent era un sistema operativo simile a UNIX per i sistemi 286-386-486, commercializzato dalla Mark Williams Company guidata da Bob Swartz. Era rinomato per la sua buona documentazione. Fu introdotto nel 1980 e morì il 1° febbraio 1995. Le ultime versioni sono V3.2 per 286-386-486 e V4.0 (maggio 1992, utilizzando la modalità protetta) solo per 386-486. Veniva venduto a $ 99 a copia e si vocifera che ne siano state vendute 40.000 copie. Una partizione Coherent deve essere primaria.] |
ore 09:00 |
QNX 1.x e 2.x ("qnz" secondo le partizioni QNX ) |
0aH |
OS/2 Boot Manager
(OS/2 è il sistema operativo progettato da Microsoft e IBM per essere il successore di MS-DOS) |
0aH |
Partizione di swap coerente |
0aH |
OPUS
(Server parallelo aperto Unisys) |
0bH |
WIN95 OSR2 32-bit FAT
(OSR2 sta per "OEM Service Release 2" di Microsoft. È per partizioni fino a 2047 GB. Quasi sempre, Windows 95/98/ME hanno lo stesso file system che è FAT-32, entro gli stessi limiti di partizioni) |
0cH |
LBA-mapped WIN95 OSR2 32-bit FAT
(utilizza la modalità di indirizzamento Logical Block delle estensioni Interrupt 13H, quindi possiamo dire che questo è l'equivalente Extended INT 13H di 0BH . Quasi sempre, Windows 95/98/ME hanno lo stesso file system che è FAT-32, entro gli stessi limiti delle partizioni) |
0eH |
WIN95 mappato LBA: DOS 16-bit FAT o Logical Block Addressable VFAT
(è uguale a 06H ma utilizza la modalità LBA di INT 13H) |
0fH |
WIN95 mappato LBA: partizione estesa o VFAT indirizzabile tramite blocco logico
(È uguale a 05H ma utilizza la modalità LBA di INT 13H. Windows 95 utilizza 0EH e 0FH come equivalenti INT13H estesi di 06H e 05H . Windows NT non riconosce i quattro tipi di Windows 95/98/ME 0BH , 0CH , 0EH e 0FH ) |
ore 10.00 |
OPUS
(Sistema di aggiornamento del programma ottale) |
ore 11:00 |
Partizione DOS nascosta a 12 bit FAT o OS/2 Boot Manager nascosta a 12 bit FAT o DOS vista da OS/2 (quando OS/2 Boot Manager avvia una partizione DOS, nasconde tutte le partizioni DOS primarie eccetto quella avviata, modificandone l'ID e 01H , 04H , 06H e 07H diventano rispettivamente 11H , 14H , 16H e 17H ). |
ore 12.00 |
Partizione di configurazione/diagnostica Compaq
(utilizzata da Compaq per la partizione di utilità di configurazione. È una partizione compatibile con FAT che si avvia nelle loro utilità e può essere aggiunta a un menu LILO come se fosse MS-DOS.) |
14 ore |
(FAT DOS a 16 bit nascosto o FAT DOS a 16 bit nascosto di OS/2 Boot Manager) Partizione <32M
(la dimensione della partizione è inferiore a 32M. L'ID 14H è il risultato dell'utilizzo di Novell DOS 7.0 FDISK per eliminare la partizione nativa di Linux.) |
ore 15.00 |
DOS-esteso nascosto |
ore 16.00 |
(FAT DOS a 16 bit nascosto o FAT a 16 bit nascosto da OS/2 Boot Manager ) >=32M Partition |
ore 17.00 |
Partizione HPFS nascosta di OS/2 Boot Manager o IFS nascosta (ad esempio, HPFS) |
ore 17.00 |
Partizione NTFS nascosta |
ore 18.00 |
Partizione AST SmartSleep o file di swap speciale di Windows AST (partizione "Zero-Volt Suspend")
[AST Research, Inc. (chiamata così dalle iniziali dei fondatori, Albert Wong, Safi Qureshey e Thomas Yuen). I laptop Ascentia hanno una "Zero – Volt Suspend Partition" o `SmartSleep Partition' di dimensioni pari a 2 MB+dimensione della memoria.] |
Byte indicatore del file system in esadecimale |
Descrizione della partizione/file system |
ore 19.00 |
Willowtech Photon COS
(il codice 19H è rivendicato per Willowtech Photon COS da Willow Schlanger. |
1bH |
Partizione nascosta WIN95 OSR2 32-bit FAT o partizione nascosta Windows 95 FAT32 |
1cH |
LBA-mapped Hidden WIN95 OSR2 32-bit FAT
(è una partizione Windows95 FAT32 nascosta che utilizza la modalità LBA delle estensioni INT 13H) |
1eH |
Partizione FAT WIN95 a 16 bit nascosta con mappatura LBA o partizione VFAT LBA nascosta |
1FH |
Partizione VFAT LBA estesa nascosta o mappata LBA WIN95 estesa nascosta |
ore 20 |
OFSI
(sistema di file Willowsoft Overture) |
ore 21:00 |
Ufficialmente elencato come riservato
(HP Volume Expansion, variante SpeedStor.) |
ore 21:00 |
FSO2
(rivendicato per FSO2 (Oxygen File System) da Dave Poirier) |
22 ore |
Partizione estesa FSO2
(rivendicata per la partizione estesa dell'ossigeno da Dave Poirier) |
23 ore |
Ufficialmente elencato come riservato |
24 ore |
Versione DOS 3.x |
26 ore |
Ufficialmente elencato come riservato |
31 ore |
Ufficialmente elencato come riservato |
32 ore |
NOS (Sistema operativo di rete)
( 32H è utilizzato dal sistema operativo NOS, sviluppato da Alien Internet Services a Melbourne, Australia. L'ID 32H è stato scelto non solo perché era uno dei pochi rimasti disponibili, ma anche perché 32k è la dimensione della EEPROM a cui il sistema operativo era originariamente destinato. |
33 ore |
Ufficialmente elencato come riservato |
34 ore |
Ufficialmente elencato come riservato |
35 ore |
JFS su OS/2 o eCS
[ 35H è utilizzato da OS/2 Warp Server per e-Business, OS/2 Convenience Pack (noto anche come versione 4.5) ed eComStation (eCS, una versione OEM di OS/2 Convenience Pack) per l'implementazione OS/2 di JFS (IBM AIX Journaling File System)] |
36 ore |
Ufficialmente elencato come riservato |
38 ore |
THEOS v3.2 (partizione da 2 GB) |
39 ore |
Partizione del piano 9
( Plan 9 è un sistema operativo sviluppato presso i Bell Labs per molte architetture. Originariamente Plan 9 utilizzava una porzione non allocata alla fine del disco. La terza edizione di Plan 9 utilizza partizioni di tipo 39H , suddivise in sottopartizioni descritte nella tabella delle partizioni di Plan 9 nel secondo settore della partizione.) |
39 ore |
Partizione estesa THEOS v4 |
3 ore |
THEOS v4 (partizione da 4 GB) |
3bH |
Partizione estesa THEOS v4
( THEOS è un sistema operativo multitasking multiutente per PC fondato da Timothy Williams nel 1983.) |
3cH |
Partizione di ripristino PartitionMagic
(Quando un prodotto PowerQuest come Partition Magic o Drive Image apporta modifiche al disco, prima modifica il flag di tipo in 3CH in modo che il sistema operativo non tenti di modificarlo. Alla fine del processo, viene riportato a quello che era all'inizio. Pertanto, l'unica volta in cui puoi vedere un flag di tipo 3CH è se il processo è stato interrotto in qualche modo, ad esempio a causa di uno spegnimento, di un riavvio dell'utente, ecc. Se lo modifichi manualmente con un editor di tabelle delle partizioni o qualsiasi programma di modifica del disco, nella maggior parte dei casi tutto va bene.) |
3dH |
NetWare nascosto |
40 ore |
Venix 80286
(È un sistema operativo molto vecchio, simile a Unix, per PC.) |
41 ore |
Linux/MINIX (condivisione del disco con DR-DOS)
(DR-DOS sta per Digital Research-Disk Operating System.) |
41 ore |
Avvio RISC personale |
41 ore |
Partizione di avvio PPC PReP (Power PC Reference Platform) |
42 ore |
Linux swap (condivisione del disco con DR-DOS) |
42 ore |
SFS (Secure File System)
( SFS è un driver di file system crittografato per DOS su PC 386+, scritto da Peter Gutmann.) |
Byte indicatore del file system in esadecimale |
Descrizione della partizione/file system |
42 ore |
Marcatore di partizione estesa dinamica di Windows 2000 (se nella tabella delle partizioni legacy è presente
una voce di tipo 42H , Windows 2000 ignora la tabella delle partizioni legacy e utilizza una tabella delle partizioni proprietaria e uno schema di partizionamento proprietario (LDM o DDM). I dischi dinamici puri (quelli che non contengono partizioni hard-linked) hanno una sola voce di tabella delle partizioni, tipo 42H, per definire l'intero disco. I dischi dinamici memorizzano la configurazione del volume in un database situato in una regione privata da 1 MB alla fine di ogni disco dinamico.) |
43 ore |
Linux nativo (condivisione disco con DR-DOS) |
44 ore |
Partizione GoBack
( GoBack è un'utilità che registra le modifiche apportate al disco, consentendo di visualizzare o tornare a uno stato precedente. Si occupa dell'I/O del disco come farebbe un Disk Manager e memorizza i suoi log nella sua partizione.) |
45 ore |
Boot-US boot manager
( Boot-US (Ulrich Straub) boot manager può essere installato su MBR, una partizione primaria separata o un dischetto. Quando viene installato su una partizione primaria, questa partizione ottiene l'ID 45H . Questa partizione non contiene un file system, contiene solo il boot manager e occupa un singolo cilindro (inferiore a 8,4 GB). ) |
45 ore |
Direttamente |
45 ore |
EUMEL/Annuncio |
46 ore |
EUMEL/Annuncio |
47 ore |
EUMEL/Annuncio |
48 ore |
EUMEL/Elan
( EUMEL , in seguito noto come Ergos L3 , sono i sistemi multi-utente multitasking sviluppati da Jochen Liedtke presso GMD, utilizzando il linguaggio di programmazione Elan . È stato utilizzato nelle scuole tedesche per l'istruzione in informatica.) |
4 ore fa |
AdaOS Aquila |
4 ore fa |
ALFS/THIN file system leggero per DOS |
4cH |
Partizione di Oberon |
4dH |
QNX4.x |
4eH |
QNX4.x 2a partizione |
4fH |
Terza partizione QNX4.x
( QNX è un sistema operativo microkernel, distribuito e fault-tolerant, certificato POSIX ( Portable Operating System Interface for Unix ) per 386 e versioni successive, incluso il supporto per 386EX nelle applicazioni embedded.) |
4fH |
Partizione di avvio/dati Oberon |
50 ore |
OnTrack Disk Manager (versioni precedenti), Read-Only Partition ( Disk Manager è un programma di OnTrack che consente di utilizzare dischi IDE più grandi di 504 MB in DOS. Le versioni del kernel Linux precedenti alla 1.3.14 non coesistono con DM.) |
50 ore |
Lynx RTOS (Real-Time Operating System)
( Lynch RTOS offre agli utenti la possibilità di posizionare fino a 14 partizioni da 2 GB ciascuna su unità SCSI e IDE, per un totale di 28 GB di spazio sul file system.) |
50 ore |
Oberon nativo |
51 ore |
OnTrack Disk Manager (DM6.0 Aux1) , partizione di lettura/scrittura |
51 ore |
Novell |
52 ore |
C/M. |
52 ore |
Microport SysV/AT o Microport System V/386 |
53 ore |
OnTrack Disk Manager (DM6.0 Aux3), partizione di sola scrittura |
54 ore |
OnTrack Disk Manager 6.0 Sovrapposizione unità dinamica |
55 ore |
Partizione EZ-Drive
( EZ-Drive è un altro programma simile a un gestore di dischi sviluppato da MicroHouse nel 1992. Ora è commercializzato da StorageSoft .) |
56 ore |
Golden Bow VFeature Partitioned Volume.
(Questo è anche un Disk Manager come software Utility. Questo è un Non-Standard DOS Volume.) |
56 ore |
DM convertito in EZ-BIOS |
57 ore |
DrivePro
( DrivePro è stato sviluppato da MicroHouse nel 1992. Ora è commercializzato da StorageSoft .) |
57 ore |
Partizione VNDI |
5cH |
Volume partizionato Priam EDisk
( Priam EDisk è un software di utilità di tipo Disk Manager. Si tratta di un volume DOS non standard.) |
61 ore |
SpeedStor
( Dimensioni di archiviazione SpeedStor Volume partizionato. Questo è un volume DOS non standard. È un software di utilità di tipo Disk Manager.) |
63 ore |
Sistema Unix V/386, 386/ix, SCO, ISC Unix, UnixWare, Mach, MtXinu BSD 4.3 su Mach, GNU Hurd |
64 ore |
Novell NetWare 286, 2.xx |
Byte indicatore del file system in esadecimale |
Descrizione della partizione/file system |
64 ore |
Partizione protetta da PC-ARMOUR
( 64H è utilizzato dalla protezione del disco PC-ARMOUR del Dr. A. Solomon, per mantenere il disco inaccessibile finché non veniva fornita la password corretta e poi veniva caricato un hook INT 13H sopra la parte superiore della memoria che mostrava CHS = 0-0-2, con una copia della tabella delle partizioni reale, quando veniva richiesto 0-0-1). |
65 ore |
Novell NetWare 3.86, 3.xx o 4.xx
( Novell Netware 3.0 e versioni successive utilizzano una partizione per unità. Alloca volumi logici all'interno di queste partizioni. I volumi possono essere suddivisi su più unità. Il file system utilizzato è denominato Turbo FAT e assomiglia solo vagamente al file system DOS FAT. Novell Netware era il principale sistema operativo di rete disponibile. Netware 68 o S-Net (1983) era per un Motorola 68000, Netware 86 per un Intel 8086 o 8088. Netware 286 era per un Intel 80286 ed esisteva in varie versioni che furono poi unite a Netware 2.2 . Netware 386 era una riscrittura in C per Intel 386 che fu poi rinominato Netware 3.x (3.0, 3.1, 3.10, 3.11 e 3.12 ecc.) versioni. Il suo successore Netware 4.xx aveva le versioni 4.00, 4.01, 4.02, 4.10 e 4.11. Poi è arrivato Intranetware) |
66 ore |
Partizione SMS Novell Netware
( SMS sta per Storage Management Services. Non è più utilizzato.) |
67 ore |
Novell |
68 ore |
Novell |
69 ore |
Novell Netware 5+ e partizione Novell Netware NSS
( NSS sta per Novell Storage Services). |
70 ore |
Avvio multiplo di DiskSecure |
71 ore |
Ufficialmente elencato come riservato |
73 ore |
Ufficialmente elencato come riservato |
74 ore |
Ufficialmente elencato come riservato |
74 ore |
Partizione Scramdisk
( Scramdisk è un software di crittografia del disco. Supporta file contenitore, partizioni dedicate tipo 74H e dischi nascosti in file audio WAV.) |
75 ore |
IBM PC/IX |
76 ore |
Ufficialmente elencato come riservato |
77 ore |
Partizione M2FS/M2CS |
77 ore |
Versione QNX 4.x |
78 ore |
File system XOSL
( file system del boot loader XOSL ) |
78 ore |
Numero di serie 4.x |
79 ore |
QNZ 4.x |
7EH |
AGGIUSTARE |
7Fh |
Standard di partizione Alt-OS-Development |
80 ore |
Vecchio MINIX, MINIX v1.1 a v1.4a |
81 ore |
MINIX 1.4b e versioni successive
( MINX è un sistema operativo simile a Unix scritto da Andy Tanenbaum e studenti della Vrije University di Amsterdam, intorno al 1989-1991. Funziona su PC (8086 e successivi), Macintosh, Atari, Amiga, Sparc. |
81 ore |
Primi Linux |
81 ore |
Gestore disco avanzato Mitac |
82 ore |
Primo |
82 ore |
Solaris x86
( Solaris crea una singola partizione con ID 82H e poi utilizza le etichette dei dischi Sun all'interno della partizione per suddividerla ulteriormente.) |
82 ore |
Partizione di swap Linux |
83 ore |
Partizione nativa Linux o file system nativo Linux o Linux Ext2fs
(Linux è un sistema operativo simile a Unix scritto da Linus Torvalds e molti altri su Internet dal 1991. Funziona su PC 386 e successivi e su una varietà di altri hardware. È distribuito sotto GPL (General Public License). Vari tipi di file system come xiafs, ext2, ext3, reiserfs, ecc. usano tutti l'ID 83H .) |
84 ore |
Unità C: nascosta di OS/2 o partizione di tipo 04 rinumerata di OS/2.
( La partizione di tipo 04h rinumerata di OS/2 è correlata all'occultamento dell'unità DOS C:) |
84 ore |
Partizione di ibernazione
(segnalata per vari modelli di laptop, ad esempio, utilizzata su Dell Latitude (con BIOS Dell) che utilizzano l'utilità MKS2D.) |
85 ore |
Partizione estesa Linux |
86 ore |
Vecchio superblocco di partizione RAID Linux |
86 ore |
Set di volumi/stripe FAT16 (Windows NT) o set di volumi NTFS
(volume FAT16 Legacy Fault Tolerant). |
87 ore |
Partizione con mirroring HPFS Fault-Tolerant o set di volumi NTFS o set di volumi/stripe NTFS
(volume NTFS Fault Tolerant legacy. Partizione con mirroring HPFS Fault-Tolerant.) |
ore 8:00 |
Partizione del kernel Linux
(utilizzata da AiR-BOOT) |
Byte indicatore del file system in esadecimale |
Descrizione della partizione/file system |
8bH |
Volume FAT32 legacy Fault Tolerant |
8cH |
Volume FAT32 legacy con tolleranza agli errori che utilizza BIOS Extended INT 13H. |
8dH |
Partizione primaria DOS FAT12 nascosta da FDISK libero
( FDISK libero è l'FDISK utilizzato da FreeDOS . Nasconde i tipi 01H , 04H , 05H , 06H , 0BH , 0CH , 0EH e 0FH aggiungendo il numero decimale 140 (8CH) .) |
8eH |
Partizione del gestore dei volumi logici di Linux |
90 ore |
Libera partizione primaria DOS FAT16 nascosta FDISK |
91H |
Libera la partizione estesa nascosta DOS FDISK |
92 ore |
Libera la partizione primaria nascosta FDISK DOS FAT16 di grandi dimensioni |
93 ore |
Partizione nativa Linux nascosta |
93 ore |
Sistema di file Amoeba |
94 ore |
Tabella dei blocchi danneggiati di Amoeba
(Amoeba è un sistema operativo distribuito scritto da Andy Tanenbaum, insieme a Frans Kaashoek, Sape Mullender, Robert van Renesse e altri dal 1981. Funziona su PC (386 e successivi), Sun3, Sparc, 68030. È gratuito per le università per scopi di ricerca e insegnamento.) |
95 ore |
Partizione nativa MIT EXOPC |
97 ore |
Libera partizione primaria DOS FAT32 nascosta FDISK |
98 ore |
Libera partizione FDISK nascosta primaria DOS FAT32 (LBA) |
99 ore |
Unità logica Mylex EISA SCSI o DCE376
(utilizzata dall'adattatore Mylex DCE376 EISA SCSI per le partizioni che vanno oltre il cilindro 1024 di un'unità.) |
ore 9:00 |
Libera partizione FDISK nascosta primaria DOS FAT16 (LBA) |
9bH |
Partizione estesa DOS nascosta FDISK gratuita (LBA) |
9fH |
Sistema operativo BSD |
a0H |
Partizione "Save-to-Disk" di Phoenix NoteBIOS Power Management o partizione di ibernazione del laptop
(è segnalata per vari laptop come IBM Thinkpad , Phoenix NoteBIOS , Toshiba con nomi quali partizione di sospensione zero-volt , partizione di sospensione su disco , partizione di salvataggio su disco , partizione di gestione dell'alimentazione , partizione di ibernazione , solitamente all'inizio o alla fine dell'area del disco.) |
a1H |
Partizione di ibernazione del laptop
(utilizzata come partizione "Save-to-Disk" su un notebook NEC 6000H. I tipi A0H e A1H sono utilizzati su sistemi con BIOS Phoenix . Con questi viene utilizzata l'utilità Phoenix PHDISK .) |
a1H |
Espansione del volume HP (variante SpeedStor) |
a3H |
Ufficialmente elencato come riservato |
a4h-a ... |
Ufficialmente elencato come riservato |
a5H |
BSD/386, 386BSD, NetBSD, FreeBSD
(386BSD è un sistema operativo di tipo Unix, un porting di 4.3BSD Net/2 per PC realizzato da Bill Jolitz intorno al 1991.) |
a6H |
OpenBSD
(OpenBSD, guidata da Theo de Raadt, si è staccata da NetBSD. Cerca di dare enfasi alla sicurezza.) |
a7H |
NEXTSTEP
( NEXTSTEP è basato su Mach 2.6 e sulle funzionalità di Mach 3.0 . È un vero sistema operativo orientato agli oggetti e un ambiente utente. |
a8H |
Mac OS-X
( il sistema operativo OS-X di Apple utilizza questo tipo per la partizione del file system) |
a9H |
NetBSD |
aaah |
Partizione di servizio Olivetti Fat 12 da 1,44 MB
(contiene un DOS 6.22 semplice e un'utilità per scambiare i tipi 06H e AAH nella tabella delle partizioni.) |
abH |
Partizione di avvio di Mac OS-X
(il sistema operativo OS-X di Apple (Darwin Intel) utilizza questo tipo di partizione di avvio.) |
abH |
Partizione GO! |
morto |
Sistema di file ShagOS |
diH |
Partizione di swap ShagOS |
b0H |
BootStar Dummy
(il boot manager BootStar gestisce la propria tabella delle partizioni, con un massimo di 15 partizioni primarie. Riempie le voci inutilizzate nell'MBR con valori BootStar Dummy.) |
b1H |
Ufficialmente elencato come riservato |
b3H |
Ufficialmente elencato come riservato |
prima di mezzanotte |
Ufficialmente elencato come riservato |
b6H |
Ufficialmente elencato come riservato |
B6H |
Set di mirror di Windows NT (master), file system FAT16 |
b7H |
File system BSDI (secondariamente swap), file system BSDI BSD/386 |
B7H |
Set di mirror di Windows NT (master), file system NTFS |
Byte indicatore del file system in esadecimale |
Descrizione della partizione/file system |
b8H |
Partizione di swap BSDI BSD/386 (file system secondario)
(BSDI (Berkeley Software Design, Inc.) è stata fondata da ex membri del CSRG (UCB Computer Systems Research Group). Il loro sistema operativo, basato su Net/2, era chiamato BSD/386.) |
bbH |
Procedura guidata di avvio nascosta |
beH |
Partizione di avvio Solaris 8 |
c0H |
Partizione protetta DR-DOS/Novell DOS |
C0H |
CTO |
c0H |
REAL/32 partizione piccola sicura |
c0H |
Partizione NTFT |
c1H |
Partizione FAT a 12 bit protetta da DR DOS 6.0 LOGIN.EXE |
c2H |
Riservato per DR-DOS 7+ |
c2H |
Linux nascosto |
c3H |
Scambio Linux nascosto |
c4H |
Partizione FAT a 16 bit protetta da DR DOS 6.0 LOGIN.EXE |
c5H |
DRDOS/protetto (esteso) |
c6H |
DRDOS/secured (FAT-16, >= 32M)
( DR-DOS 6.0 aggiungerà C0H al tipo di partizione per una partizione protetta da LOGIN.EXE in modo che l'utente non possa evitare il controllo della password avviando da un floppy MS-DOS. Altrimenti sembra che i tipi C1H , C4H , C5H , C6H e D1H , D4H , D5H , D6H siano utilizzati esattamente come 1H , 4H , 5H e 6H .) |
c6H |
Volume/stripe set FAT16 corrotto (Windows NT)
(NTFS aggiungerà C0H al tipo di partizione per le parti disabilitate di un set Fault Tolerant. Quindi, si ottengono i tipi C6H , C7H .) |
c7H |
Volume/set di stripe NTFS danneggiato da Windows NT |
c7H |
Stivale Syrinx |
c8H |
Ufficialmente elencato come riservato |
c9H |
Ufficialmente elencato come riservato |
caH |
Ufficialmente elencato come riservato |
cbH |
Riservato per FAT32 protetto da DR-DOS |
ccH |
Riservato per FAT32 protetto da DR-DOS (LBA) |
cdH |
Memorizzazione CTOS |
ceH |
Riservato per FAT16 protetto da DR-DOS (LBA) |
d0H |
REAL/32 protegge la grande partizione
(REAL/32 è una continuazione di DR Multi-user DOS.) |
d1H |
Vecchio FAT12 protetto da DOS multiutente |
d4H |
Vecchio FAT16 multiutente protetto da DOS <32M |
d5H |
Vecchia partizione estesa protetta DOS multiutente |
d6H |
Vecchio FAT16 multiutente protetto da DOS >=32M |
d8H |
CP/M-86 |
Già |
Dati non FS |
dbH |
Ricerca digitale CP/M, CP/M concorrente, DOS concorrente |
dbH |
CTOS (Convergent Technologies OS -Unisys) |
dbH |
Avvio SCPU di KDG Telemetry
(KDG Telemetry utilizza l'ID DBH per memorizzare un'immagine binaria in modalità protetta del codice da eseguire su un modulo SCPU (Supervisory CPU) basato su x86 della gamma DT800.) |
ddH |
Memdump CTOS nascosto |
deH |
Utilità del server Dell PowerEdge (FAT) |
dfH |
Partizione del gestore del disco virtuale DG/UX |
dfH |
BootIt EMBRM
(Il boot manager BootIt gestisce la propria tabella delle partizioni, con un massimo di 255 partizioni primarie.) |
e0H |
Riservato da ST Microelectronics per un file system denominato ST AVFS. |
e1H |
Accesso DOS o partizione estesa FAT a 12 bit SpeedStor
(è una partizione SSTOR su cilindri superiori a 1023.) |
E2H |
DOS di sola lettura |
e3H |
Dimensioni di stoccaggio |
e4H |
Partizione estesa FAT a 16 bit SpeedStor < 1024 cilindri |
e5H |
Ufficialmente elencato come riservato |
e5H |
Tandy DOS con FAT a settori logici |
e6H |
Ufficialmente elencato come riservato |
ebH |
BeOS BFS (BFS1)
( BeOS è un sistema operativo che funziona su Power PC) |
edH |
Riservato allo Sprytix di Matthias Paul |
EHI |
Indicazione che questo MBR legacy è seguito da un'intestazione EFI |
seH |
Partizione che contiene un file system EFI |
f0H |
Caricatore di avvio Linux/PA-RISC |
f1H |
Dimensioni di stoccaggio |
f2h-semplice |
Partizione secondaria DOS 3.3+ |
f2h-semplice |
Unisys DOS con FAT a settori logici |
f3H |
Ufficialmente elencato come riservato |
f4H |
Partizione grande SpeedStor |
F4H |
Partizione prologo a volume singolo |
Byte indicatore del file system in esadecimale |
Descrizione della partizione/file system |
f5H |
Partizione multi-volume Prologue
(La partizione di tipo F4H contiene un volume e non è più utilizzata. La partizione di tipo F5H contiene da 1 a 10 volumi denominati MD0 a MD9 . Supporta uno o più sistemi. Ogni volume può avere come file system il file system NGF o il file system TwinFS .) |
f6H |
Ufficialmente elencato come riservato |
F6H |
Dimensioni di archiviazione SpeedStor |
faH |
Emulatore Bochs x86 di MandrakeSoft |
fbH |
Partizione del file system VMware |
fcH |
Partizione di swap VMware
(VMware offre macchine virtuali su cui è possibile eseguire Linux , Windows , FreeBSD .) |
fdH |
Partizione raid Linux con rilevamento automatico tramite superblocco persistente |
feH |
SpeedStor più di 1024 cilindri |
feH |
LANstep |
feH |
Partizione IBM PS/2 IML (Initial Microcode Load)
(si trova alla fine del disco.) |
feH |
Partizione nascosta di Windows NT Disk Administrator
(Windows NT Disk Administrator contrassegna le partizioni nascoste, ovvero presenti ma a cui non si accede, come tipo FEH .) |
feH |
Partizione del gestore dei volumi logici Linux (vecchio) |
ffH |
Tabella dei blocchi danneggiati XENIX |
Record di avvio DOS (DBR) / Settore di avvio DOS
Dopo la tabella delle partizioni, il DOS Boot Record (DBR) o talvolta chiamato DOS Boot Sector è la seconda informazione più importante sul tuo disco rigido. La maggior parte delle applicazioni commerciali per il recupero del disco sono in grado di rigenerare i boot record distrutti
Il DOS Boot Record (DBR) per la prima partizione su un disco rigido si trova solitamente nel settore assoluto 63 (il 64° settore dell'unità disco) o nella forma CHS possiamo dire C–H–S = 0–1–1 per la maggior parte delle unità.
Tuttavia questa posizione può variare a seconda degli SPT (settori per traccia) dell'unità. Ad esempio, su una vecchia unità da 245 MB con solo 31 SPT, il Boot Record si trovava sul 32° settore (settore assoluto 31).
Il DBR viene creato dal comando FORMAT del DOS. Questo programma può essere eseguito da un floppy disk DOS (o direttamente da un altro volume, seguendo alcuni limiti del sistema operativo) per creare il DBR dopo che il partizionamento è stato eseguito usando il comando FDISK.
Il settore su cui risiede DBR diventa il settore logico 1 di quella particolare partizione per il DOS. Il numero di settore utilizzato da DOS inizia dal settore fisico su cui si trova DBR.
Il primo settore logico di ogni partizione DOS conterrà un DOS Boot Record (DBR) o DOS Boot Sector. Il compito del DBR è caricare il sistema operativo dall'unità disco rigido nella memoria principale del computer e dare il controllo del sistema al programma caricato.
Per fare questo, il DBR contiene un piccolo programma che viene eseguito dal programma eseguibile Master Boot Record (MBR). Tutte le partizioni DOS contengono il codice del programma per avviare la macchina, ovvero caricare il sistema operativo, ma solo quella partizione riceve il controllo dal Master Boot Record, che è specificato come partizione attiva, nella voce della tabella delle partizioni.
Il programma Boot nel DBR cerca i due file di programma IBMBIO.COM o IO.SYS e IBMDOS.COM o MSDOS.SYS, nella directory root della partizione. IBMBIO.COM e IBMDOS.COM sono due file di programma di sistema nascosti sui sistemi PC-DOS o sui sistemi IBM originali. Mentre IO.SYS e MSDOS.SYS sono due file di programma di sistema nascosti su un sistema operativo MS-DOS fornito con sistemi compatibili IBM.
Dopodiché, il programma IO.SYS (o IBMBIO.COM) carica il programma MSDOS.SYS (o IBMDOS.COM) e il programma COMMAND.COM. Questo processo completo è chiamato "avvio" del computer. Se questi file di sistema non sono disponibili nella directory, questo programma MBR visualizza messaggi di errore rassicuranti come,
"Disco di sistema non valido o errore di I/O del disco,
Sostituisci il disco, quindi premi un tasto qualsiasi…”
Sullo schermo attende che l'utente inserisca un disco avviabile con i programmi sopra menzionati nell'unità floppy e prema un tasto.
Poiché il floppy non ha partizioni, non ha quindi un MBR o una Master Partition Table sul suo settore assoluto 0, ma contiene il DBR sul suo primo settore.
La seguente tabella fornisce una mappa semplice del layout di un floppy disk da 3½ pollici e 1,44 MB dopo essere stato formattato con il file system FAT12. Mostra dove si trovano il Boot Record, entrambe le copie del FAT, la Root Directory e l'inizio dell'Area dati:
Mappa logica di un floppy disk da 3½ pollici e 1,44 MB, formattato con il file system FAT12 e dotato di 18 settori per traccia, 80 tracce, 2 lati e 512 byte per settore (utilizzando 1 settore per cluster). |
Settori assoluti |
Contenuto |
0 |
Record di avvio |
1 – 9 |
GRASSO 1 |
10 – 18 |
GRASSO 2 |
19 – 32 |
Directory principale |
33 – 2879 |
Area dati |
Puoi anche creare sottodirectory nell'Area dati con file che sembrano essere contenuti al loro interno. In realtà, le sottodirectory non sono altro che un file speciale che elenca tutti i file apparentemente contenuti all'interno di questa directory e tutti i dati rilevanti su ogni file, come la posizione del Cluster di avvio di ogni file, data, ora e dimensione del file ecc.
Il DBR contiene anche alcune informazioni importanti sulla geometria del disco. Queste informazioni si trovano nel primo settore di ogni partizione, come:
- Codice di salto + NOP
- Nome e versione OEM
- Byte per settore
- Settori per cluster
- Settori riservati
- Numero di copie di FAT
- Numero massimo di voci della directory radice (ma non disponibile per FAT32)
- Numero di settori in partizioni inferiori a 32 MB (quindi non disponibili per FAT32)
- Descrittore del supporto (F8h per i dischi rigidi)
- Settori per FAT (nei vecchi sistemi FAT e non disponibili per FAT32)
- Settori per traccia
- Numero di teste
- Numero di settori nascosti nella partizione
- Numero di settori nella partizione
- Numero di settori per FAT
- Flag descrittivi delle informazioni FAT
- Versione dell'unità FAT32
- Numero di cluster dell'inizio della directory radice
- Numero di settore del settore delle informazioni del file system
- Numero di settore del settore di avvio di backup
- Prenotato
- Numero di unità logica della partizione
- Firma estesa (29H)
- Numero di serie della partizione
- Nome del volume della partizione
- Nome FAT
- Codice eseguibile
- Marcatore eseguibile o numero magico (AAH 55H)
I primi 3 byte di DBR contengono un'istruzione JMP per saltare le informazioni e rendere possibili le estensioni perché l'MBR carica questo settore nella memoria e vi trasferisce l'esecuzione. Di solito questi tre byte sono numeri esadecimali in un formato simile a E9 XX XX (esadecimale) o EB XX 90 (esadecimale).
Dopo l'istruzione JMP iniziale, l'ID OEM è un campo a 8 bit riservato da Microsoft per l'identificazione OEM. L'ID OEM descrive il programma che ha creato il record di avvio. Spesso è "MSWIN4.0" per Windows 95/98/ME, "IBM 20.0" per OS/2 e "MSDOS5.0" per MS-DOS 4.0 e versioni successive.
Il terzo componente principale del settore di avvio è il BIOS Parameter Block (BPB). Il disk parameter block è un'area dati molto importante per DOS. Aiuta DOS a trovare:
- Byte per settore
- Settori per cluster
- Settori riservati
- Numero di FAT
- Numero di voci della directory radice
Formato record di avvio DOS FAT32 |
Offset |
Descrizione |
Misurare |
ore 00:00 |
Codice di salto + NOP |
3 byte |
ore 03:00 |
Nome e versione OEM |
8 byte |
0BH |
Byte per settore |
2 byte |
0DH |
Settori per cluster |
1 byte |
0EH |
Settori riservati |
2 byte |
ore 10.00 |
Numero di copie di FAT |
1 byte |
ore 11:00 |
Numero massimo di voci della directory radice (ma non disponibile per FAT32) |
2 byte |
ore 13.00 |
Numero di settori in partizioni inferiori a 32 MB (quindi non disponibili per FAT32) |
2 byte |
ore 15.00 |
Descrittore del supporto (F8H per dischi rigidi) |
1 byte |
ore 16.00 |
Settori per FAT (nei vecchi sistemi FAT e non disponibili per FAT32) |
2 byte |
ore 18.00 |
Settori per traccia |
2 byte |
1AH |
Numero di teste |
2 byte |
1 canale |
Numero di settori nascosti nella partizione |
4 byte |
ore 20 |
Numero di settori nella partizione |
4 byte |
24 ore |
Numero di settori per FAT |
4 byte |
28 ore |
Flag (bit 0-4 indicano copia FAT attiva) (bit 7 indica se il mirroring FAT è abilitato o disabilitato <Clear è abilitato>) (se il mirroring FAT è disabilitato, le informazioni FAT vengono scritte solo sulla copia indicata dai bit 0-4) |
2 byte |
2AH |
Versione dell'unità FAT32 (byte alto = versione principale, byte basso = versione secondaria) |
2 byte |
2 canali |
Numero di cluster dell'inizio della directory radice |
4 byte |
30 ore |
Numero di settore del settore delle informazioni del file system (riferito all'inizio della partizione) |
2 byte |
32 ore |
Numero di settore del settore di avvio di backup (riferito all'inizio della partizione) |
2 byte |
34 ore |
Prenotato |
12 byte |
40 ore |
Numero di unità logica della partizione |
1 byte |
41 ore |
Non utilizzato (potrebbe essere il byte più alto della voce precedente) |
1 byte |
42 ore |
Firma estesa (29H) |
1 byte |
43 ore |
Numero di serie o ID binario a 32 bit della partizione
(ID binario a 32 bit fornito dal sistema operativo stesso) |
4 byte |
47 ore |
Nome del volume della partizione |
11 byte |
52 ore |
Nome FAT (FAT32 in questo caso) |
8 byte |
5AH |
Codice eseguibile |
420 byte |
1FEH |
Marcatore eseguibile o numero magico (AAH 55H) |
2 byte |
- Settori totali nel volume logico (piccolo, per dimensioni del volume logico inferiori o uguali a 32 MB)
- Byte del descrittore multimediale
- Numero di settori per FA
Queste informazioni ci aiutano a trovare la posizione di FAT e di altri valori importanti. Inserire informazioni errate qui o corrompere questi valori rende impossibile l'avvio dall'unità disco rigido. A volte avere informazioni errate nel blocco dei parametri del disco impedisce l'avvio dall'unità disco rigido e dall'unità floppy disk.
I byte per settore sono quasi sempre 512. In caso contrario, deve essere una potenza intera di 2 (ad esempio 64, 128 e 256).
Il numero di settori per cluster dipende dalla dimensione del cluster. (Vedere la sezione Cluster fornita in precedenza in questo capitolo). Il numero di copie di FAT è quasi sempre 2.
Numero di directory radice: dipende dal file system e dalla dimensione del volume. (Vedere i limiti del file system indicati in precedenza e la descrizione della directory radice riportata di seguito).
Numero totale di settori: esclude i settori nascosti. Se è 0 nel BPB, viene utilizzato il campo nelle informazioni del record di avvio esteso e viceversa. Si noti che è possibile determinare se le informazioni estese (DOS 4.0 e versioni successive) sono disponibili esaminando il byte di firma all'offset 26H.
Tutti i settori prima del settore di avvio di un'unità logica DOS sono considerati settori "nascosti". Il DOS non interpreta i settori nascosti. Le unità floppy normali hanno 0 settori nascosti. Le partizioni del disco rigido avranno un numero che riflette la loro posizione sull'unità. Si noti che l'intera prima testina del primo cilindro è solitamente riservata alla tabella delle partizioni, anche se è solo il primo settore che viene effettivamente utilizzato.
Descrittore del supporto: utilizzato per fornire un'indicazione del tipo di supporto o disco. I valori normali sono 0 per una partizione DOS estesa e F8H per un disco rigido. I valori di Media Descriptor Bytes sono stati forniti nella seguente tabella.
Descrittori dei media |
Tipo |
Capacità |
Dimensioni e tipo |
F0H |
2,88 MB |
3,5", 2 lati, 36 settori per traccia |
F0H |
1,44 MB |
3,5", 2 lati, 18 settori per traccia |
F9H |
Dimensioni: 720 KB |
3,5", 2 lati, 9 settori per traccia |
F9H |
1,2 MB |
5,25", 2 lati, 15 settori per traccia |
FDH |
360 KB |
5,25", 2 lati, 9 settori per traccia |
FFH |
Dimensioni: 320 KB |
5,25", 2 lati, 8 settori per traccia |
FCH |
Dimensioni: 180 KB |
5,25", 1 lato, 9 settori per traccia |
FEH |
Dimensioni: 160 KB |
5,25", 1 lato, 8 settori per traccia |
F8H |
--------- |
Disco fisso |
Numero di settori di FAT: deve essere calcolato. Il metodo di calcolo della dimensione di FAT è stato fornito nella descrizione di FAT fornita nel capitolo.
Il DBR di un file system FAT32 è stato fornito nella figura seguente:
Settori di FAT
Settori per traccia (o settori per testina): Settori per testina è il numero di settori raggruppati sotto una testina. Allo stesso modo, Testine per cilindro riflette il numero di cilindri per testina. Se questa partizione è una partizione CHS, questi valori devono essere gli stessi di quelli restituiti dal BIOS. Se non sono gli stessi, devi considerare che il disco è stato configurato in modo errato e che la partizione potrebbe essere inutilizzabile.
Settori nascosti: come abbiamo già discusso, questo è il numero di settori sul disco fisico che precede l'inizio del volume, prima del settore di avvio stesso. Viene utilizzato durante la sequenza di avvio per calcolare l'offset assoluto rispetto alla directory radice e alle aree dati. Consideratelo come il numero di settori tra l'inizio di questa partizione e la tabella delle partizioni stessa.
Questo campo dovrebbe essere uguale al "numero di settori che precedono la partizione" nella tabella delle partizioni. Nota che non è necessariamente l'indirizzo LBA fisico del primo settore, poiché potrebbero esistere partizioni secondarie.
Se i settori nascosti non sono gli stessi della tabella delle partizioni, potresti considerare il settore di avvio corrotto e la partizione inutilizzabile. Nota anche che la parola alta di solito contiene spazzatura nelle vecchie versioni di DOS.
Se sospetti che un settore di avvio sia danneggiato, puoi controllare alcuni dei campi elencati sopra per verificare se i valori ivi riportati hanno senso.
Ad esempio, Bytes per Sector sarà 512 nella stragrande maggioranza dei casi. Potresti anche aspettarti di vedere stringhe di testo nella sezione del codice eseguibile del settore di avvio che sono appropriate per il sistema operativo che ha formattato il disco.
Ad esempio, le stringhe di testo tipiche sui volumi FAT formattati da MS-DOS includono: "Disco di sistema non valido.", "Errore I/O del disco.", "Sostituire il disco, quindi premere un tasto qualsiasi", "Errore del disco o del disco non di sistema", "Sostituire e premere un tasto qualsiasi quando si è pronti." e "Errore di avvio del disco." Le stringhe di testo sui volumi FAT formattati da Windows NT includono: "BOOT: Impossibile (o Impossibile) trovare NTLDR", "Errore I/O durante la lettura del disco." e "Inserire un altro disco."
Ma ricorda che non dovresti considerare questo elenco come esaustivo. Se trovi altri messaggi nel settore di avvio, questo non indica necessariamente che ci sia un problema con il settore di avvio. Versioni diverse di MS-DOS e Windows NT possono talvolta avere stringhe di messaggio leggermente diverse nei loro settori di avvio.
D'altro canto, se non trovi alcun testo o se il testo non è chiaramente correlato a MS-DOS o Windows NT, dovresti prendere in considerazione la possibilità che il tuo settore di avvio sia stato infettato da un virus o che si sia verificata qualche altra forma di danneggiamento dei dati.
Per recuperare da un settore di avvio infettato da un virus, di solito è meglio usare un programma antivirus commerciale. Molti virus e trojan faranno molto di più che scrivere dati nel settore di avvio, quindi la riparazione manuale del settore di avvio non è consigliata, poiché potrebbe non eliminare completamente il virus o il trojan e in alcuni casi potrebbe fare più male che bene. Tuttavia, ci occuperemo di DBR nella sezione di programmazione di questo libro.
Se si sospetta che il settore di avvio sia stato danneggiato per qualche altro motivo, potrebbe essere possibile recuperare dai danni al settore di avvio senza riformattare l'unità modificando manualmente i campi descritti sopra. Cercheremo di superare tali problemi con la programmazione nelle tecniche di programmazione del recupero in questo libro.
Tabella di allocazione dei file (FAT)
Dopo DBR ci sono le File Allocation Tables. La File Allocation Table (FAT) è stata introdotta nel 1977 per archiviare dati su floppy disk per Microsoft stand-alone Disk Basic. La FAT è stata modificata più volte per soddisfare esigenze in espansione. È stata sviluppata per soddisfare i requisiti di un sistema veloce e flessibile per la gestione dei dati su supporti sia rimovibili che fissi.
Nel 1996, il FAT32 è stato introdotto con Windows 95 OSR2. Come abbiamo discusso in precedenza, Windows 98/ME supporta FAT32 con le dimensioni dei dischi rigidi. Ora con questi sistemi operativi il file system FAT32 è comunemente utilizzato.
Il primo file system DOS FAT (DOS 1.x) utilizzava il sistema FAT a 12 bit, ancora oggi utilizzato per i floppy disk. DOS 2.x aggiunse il supporto per i dischi rigidi e passò alle voci FAT a 16 bit a causa dei volumi più grandi.
Intorno al 1987, DOS 4.0 modificò la gestione dei settori di basso livello utilizzando parametri a 32 bit per superare il problema del supporto di dischi di grandi dimensioni, poiché abbiamo già discusso le limitazioni dei file system.
FAT mantiene una mappa della superficie completa dell'unità disco in modo tale che, quale area è libera, quale area è danneggiata, quale area è occupata da quale file ecc. Quando si deve accedere ad alcuni dati memorizzati sulla superficie del disco, il DOS consulta FAT per scoprire le aree della superficie del disco rigido che contengono i dati.
Il tipo di FAT da utilizzare è deciso dal programma FDISK durante la partizione dell'unità disco rigido. Ma la FAT effettiva è scritta dal programma FORMAT del DOS.
La FAT non tiene traccia di ogni singolo settore sulla superficie del disco, ma gestisce l'area del disco in un gruppo di settori chiamati "cluster" o "unità di allocazione" (vedere il cluster discusso in precedenza, nello stesso capitolo).
Un cluster è la più piccola unità di spazio su disco rigido che DOS assegna a un file, è costituito da uno o più settori a seconda delle dimensioni dell'unità. La dimensione del cluster è decisa e fissata dal programma DOS FORMAT durante la formattazione di alto livello dell'unità disco rigido. (Vedi la discussione "dimensione dei cluster", fornita in precedenza)
In realtà, il FAT è un indice dei cluster dell'intero volume. Il FAT ha una voce per ogni cluster. Le prime due voci in un FAT contengono informazioni sul FAT. La terza e le voci successive nel FAT sono assegnate ai cluster di spazio su disco, a partire dal primo cluster disponibile per l'uso da parte dei file
Poiché FAT è un elemento così importante, DOS ne conserva due copie: FAT primario o FAT1 e FAT secondario o FAT2 (normalmente ci sono due copie, tuttavia molti nuovi sistemi operativi creano più di due copie di FAT).
Ogni FAT occupa settori contigui sul disco, e la seconda FAT che segue immediatamente la prima non fa sì che il DOS utilizzi la seconda FAT per correggere il problema; al contrario, quando la prima FAT viene aggiornata, il DOS la copia nella seconda FAT, corrompendo anche quest'ultima nel processo.
Questo aggiornamento viene eseguito ogni volta che DOS rileva che la 1a e la 2a FAT non corrispondono. Quindi, in caso di danneggiamento della 1a FAT, si dovrebbe immediatamente effettuare la riparazione utilizzando un software di modifica del disco e confrontando la 1a FAT con la 2a FAT. Questo dovrebbe essere fatto prima che DOS copi la FAT danneggiata nella seconda FAT.
Con l'introduzione di FAT32, sia le voci FAT che la numerazione dei settori sono ora a 32 bit. Ciò significa che ora ci sono 4.294.967.296 valori distinti a 32 bit moltiplicati per 512 byte per settore, che danno 2 terabyte (2.199.023.255.552 byte) come dimensione massima possibile del disco in FAT32.
La dimensione della voce di directory per ogni file in FAT 32 è di 4 byte per contenere il valore del cluster iniziale del file anziché i 2 byte necessari in FAT16. Il valore più grande si adatta al maggior numero di cluster possibili.
Tradizionalmente, ogni voce di directory è un record di 32 byte, e questo rimane lo stesso. Nel mezzo del record di directory ci sono 10 byte (byte da 12 a 21) che Microsoft ha riservato per il proprio uso futuro. Due di quei byte sono ora utilizzati per ospitare i byte extra necessari per specificare il cluster di partenza in FAT32.
Come abbiamo già discusso, ci sono state versioni di FAT a 12 bit, 16 bit e 32 bit. Mentre FAT a 32 bit consente un'archiviazione molto più efficiente, che può essere fino al 30% più efficiente, e l'uso di dischi rigidi più grandi.
Quando il File System di un Sistema Operativo viene richiamato da un programma per trovare il contenuto di un file, il primo valore del cluster, nella voce di directory per quel file, viene letto e utilizzato per trovare la catena FAT. La catena FAT è l'elenco dei cluster che contengono dati appartenenti a un file.
Disposizione dell'unità FAT32 |
Offset |
Descrizione |
Inizio della partizione |
Settore di avvio |
Inizio della partizione + numero di settori riservati |
Tabelle FAT |
Inizio della partizione + Numero di settori riservati + (Numero di settori per FAT * 2)
[Supponendo che il mirroring FAT sia abilitato, questo è quasi sempre vero] |
Directory principale |
Inizio della partizione + Numero di settori riservati + (Numero di settori per FAT * 2) + Numero di settori nella directory radice |
Area dati |
Le voci FAT possono contenere valori che indicano:
- Il cluster successivo in una catena FAT per un dato file
- I cluster liberi, ovvero i cluster che non sono utilizzati da nessun file
- Le informazioni sui settori danneggiati, ovvero i cluster contenenti uno o più settori danneggiati fisicamente e che non devono essere utilizzati.
- Il cluster finale di un file
Voci della tabella FAT |
Numero (esadecimale) |
Descrizione |
0 |
Cluster libero |
???? |
Cluster in uso, cluster successivo nella catena |
FF0-FF6 / FFF0-FFF6 |
Il cluster è riservato |
FF7 /FFF7 |
Il cluster contiene settori danneggiati |
FF8-FFF / FFF8-FFF |
Fine del file |
Ogni voce FAT rappresenta un indirizzo cluster e contiene un puntatore al successivo indirizzo cluster (voce FAT) per il file. L'ultima voce FAT per un file contiene il valore cluster finale invece di un puntatore. Le prime due voci in una FAT contengono informazioni sulla FAT. Questi byte della FAT contengono un byte descrittore del supporto. Questo byte può essere utilizzato per trovare il tipo di supporto disco di cui è questa voce FAT.
La terza e le successive voci nel FAT sono assegnate a cluster di spazio su disco, a partire dal primo cluster disponibile per l'uso da parte dei file. Una voce FAT può avere uno qualsiasi dei valori indicati nella tabella sopra, in base alle informazioni che desidera trasmettere.
Un 000H in FAT a 12 bit o 0000H in FAT a 16 bit indica che il cluster corrispondente a questa posizione FAT non è allocato o è vuoto. Qualsiasi valore da FF8H a FFFH in FAT a 12 bit o da FFF8H a FFFFH in FAT a 16 bit indica che questo cluster è l'ultimo cluster in una catena di cluster di un file.
Il valore da FF0H a FF7H in FAT a 12 bit indica cluster riservati. Un FF7H in un FAT a 12 bit o FFF7H in un FAT a 16 bit indica che il cluster corrispondente alla posizione del FAT è un cluster danneggiato, ovvero è fondamentalmente un cluster contenente settori danneggiati. Questo cluster non è utilizzato per l'archiviazione dei dati.
Qualsiasi altro valore nella tabella FAT è un puntatore al cluster successivo nella catena di allocazione dei file.
Come Windows rileva l'arresto improprio
È una cosa molto comune e spero che tu l'abbia notato molte volte quando usi Windows: se si verifica un arresto anomalo del computer, dovuto a qualsiasi motivo come interruzione di corrente, danneggiamento del software, arresto accidentale, ecc., quando riavvii il computer, il messaggio di arresto anomalo viene visualizzato sullo schermo durante il processo di avvio e il sistema operativo esegue la scansione del disco per individuare errori.
Le due figure successive mostrano i 256 byte dell'inizio di un FAT a 32 bit, tuttavia per discuterne abbiamo bisogno solo degli 8 byte iniziali.
In realtà, quando il sistema operativo Windows si è caricato nella memoria, ovvero quando Windows si è avviato, l'ottavo byte (o offset 7H) di FAT diventa 07H o F7H da 0FH o FFH.
Microsoft utilizza il byte 0FH solo per il volume che contiene il sistema operativo in esecuzione e il byte FFH per qualsiasi altro volume a cui accede.
Una volta che Windows inizia l'avvio, l'ottavo byte viene modificato in 07H o F7H, che verrà ripristinato a 0FH o FFH solo se Windows viene arrestato correttamente.
In caso di interruzione di corrente, oppure se l'interruttore di accensione del computer viene spento accidentalmente, oppure se il sistema viene riavviato manualmente a causa di un problema software, questo byte rimarrà come 07H o F7H, il che informa il sistema operativo Windows al successivo avvio che si è verificato un arresto improprio e quindi Windows utilizza il suo programma di scansione del disco (Scandisk) per verificare la presenza di errori.

Directory principale
Dopo l'ultimo FAT c'è la directory radice. La directory radice è come un indice per le informazioni memorizzate sul disco rigido. La posizione della directory radice può essere facilmente stabilita sommando i valori del record di avvio, poiché è posizionata dopo i FAT.
L'area directory conserva le informazioni sul nome del file, la data e l'ora di creazione del file, l'attributo del file, la dimensione del file e il cluster di partenza del file specifico. Ogni voce di directory che descrive queste informazioni su un file è un'informazione di 32 byte.
La directory radice contiene informazioni sui file e sulle directory che si ramificano dalla directory radice. Tutte le directory successive sono a loro volta memorizzate come file, nello stesso formato della directory radice. In precedenza, la directory radice era di dimensioni fisse e si trovava in una posizione fissa sul disco, ma ora è libera di crescere quanto necessario, poiché è ora trattata come un file.
Il numero di file che si possono memorizzare nella directory radice dipende dal tipo di FAT utilizzato. Ad esempio, per un floppy disk da 3½ pollici e 1,44 Mb con FAT a 12 bit, è limitato a 224 voci, se si prova a memorizzare il 225° file, DOS visualizzerà un "Errore di creazione file". Quando si utilizza un FAT a 16 bit, si possono avere 512 voci totali nella directory radice. Ogni directory principale su un floppy o un disco rigido, funge anche da voce della directory radice.
Nella tabella seguente sono elencati i limiti delle voci root per diversi supporti e FAT:
Descrizione del supporto e del file system |
Numero massimo di voci della directory radice |
FDD monofacciale da 5¼ pollici 180K |
64 |
FDD 320K da 5¼ pollici a doppia faccia |
64 |
FDD 360K da 5¼ pollici a doppia faccia |
112 |
FDD bifacciale da 3½ pollici 720K |
112 |
FDD da 5¼ pollici a doppia faccia da 1,2 megabyte |
224 |
FDD da 3½ pollici e 1,44 megabyte a doppia faccia |
224 |
Dischi in formato DMF da 3½ pollici e 1,68 megabyte a doppia faccia (ecco perché Microsoft ha creato i file CAB!) |
16 |
FDD da 3½ pollici e 2,88 megabyte a doppia faccia |
240 |
Dischi rigidi (FAT12 e FAT16) |
512 |
Dischi rigidi con FAT 32 (poiché tratta la directory di routing come un file) |
65.536 |
Ciò non significa che con FAT a 16 bit si è limitati a memorizzare solo 512 file sul disco rigido. Si possono usare sottodirectory per memorizzare qualsiasi numero di file limitato solo dalla dimensione del disco.
Ricorda che l'etichetta di volume per un floppy è solitamente memorizzata nel settore di avvio, ma l'etichetta di volume per un disco rigido è memorizzata come voce di directory root e lo spazio riservato nel settore di avvio è lasciato vuoto con spazi. Il comando DIR di DOS restituisce quello nella directory se presente, o quello nel settore di avvio se non lo è.
Le voci di directory contengono la voce nella catena di cluster e il nome del file. Pertanto le voci di directory più importanti sono quelle della directory radice, perché contiene indici di cluster che puntano a tutte le sottodirectory.
Tutte le directory contengono due voci, "." per la directory corrente (This Sub Directory) e ".." per la directory padre (Directory padre di questa Sub Directory). Possiamo tracciare queste voci facilmente poiché saranno sempre posizionate all'inizio di un cluster se il cluster contiene una directory. La seguente tabella mostra il formato di una voce di directory nella Root Directory. La tabella seguente mostra come i 32 byte della voce di directory di un file nella Root Directory vengono suddivisi per memorizzare le varie informazioni su di esso:
Offset |
Misurare |
Descrizione |
ore 00:00 |
8 byte |
Nome file
(Vedere anche la tabella successiva per il significato speciale del primo carattere del nome file) |
ore 08:00 |
3 byte |
Estensione |
0BH |
1 byte |
Attributi del file (vedere la tabella degli attributi del file) |
0CH |
10 byte |
Prenotato |
ore 16.00 |
2 byte |
Ora di creazione o ultimo aggiornamento (vedere la tabella dei formati data-ora) |
ore 18.00 |
2 byte |
Data di creazione o ultimo aggiornamento (vedere la tabella dei formati data-ora) |
1AH |
2 byte |
Cluster iniziale o primo cluster di file
(il valore 0000H viene utilizzato nelle voci della directory padre (' .. ') per indicare che la directory padre è la directory radice) |
1 canale |
4 byte |
Dimensione del file in byte. |
Il nome file contiene il nome in maiuscolo e se la dimensione del nome file è inferiore a 8 caratteri, gli spazi vengono riempiti con caratteri spazio del codice ASCII numero 32. Il campo Estensione contiene l'estensione del file, in maiuscolo.
Se il nome file è più lungo di 8 caratteri, Windows crea un nome file breve partendo da uno lungo, troncandolo a sei caratteri maiuscoli e aggiungendo "~1" alla fine del nome file di base.
Se esiste già un altro nome file con gli stessi primi sei caratteri, il numero viene incrementato. L'estensione viene mantenuta invariata e qualsiasi carattere che era illegale nelle versioni precedenti di Windows e DOS viene sostituito con un trattino basso.
I nomi di file lunghi vengono memorizzati in voci di directory LFN (32-Byte Long File Name) formattate in modo speciale, contrassegnate con byte di attributo impostati su 0FH. Per un dato file o sottodirectory, un gruppo di una o più voci di directory Long filename precede immediatamente la singola voce di directory 8.3 sul disco.
Ogni voce della directory LFN contiene fino a 13 caratteri del nome file lungo e il sistema operativo ne unisce quanti ne servono per comporre un intero nome file lungo.
Questa è la causa per cui i nomi di file lunghi diminuiscono il numero massimo possibile di voci di directory radice in un file system. Come Windows supporta i nomi di file lunghi, lo discuteremo in dettaglio, più avanti in questo capitolo.
Il primo byte del nome del file può anche contenere alcune informazioni importanti sul file. Le informazioni fornite da questo byte possono essere una di quelle fornite nella seguente tabella:
Primo carattere del nome del file |
Valore |
Senso |
ore 00:00 |
Indica che questa voce di directory non è utilizzata. |
ore 05:00 |
Indica che il primo carattere del nome file è il carattere E5H, ma in realtà il file non è stato eliminato. (Vedi il significato di E5H) |
E5H |
Il file è stato cancellato e questa voce di directory è la voce di directory di un file cancellato. L'area dati precedentemente occupata da quel file è ora libera per l'allocazione di un altro nuovo file. |
2EH |
Questa è una sottodirectory. Il campo del numero di cluster di questa voce conterrà il numero di cluster della directory. |
2EH 2EH |
Due 2EH in una voce di directory indicano la voce di directory padre di una sottodirectory. Il numero di cluster di questa voce conterrà il numero di cluster della directory padre di questa directory. Il numero di cluster sarà zero 0000H se la directory padre è la directory radice. |
Gli Attributi sono un campo codificato in binario a 8 bit. La seguente tabella descrive lo Stato per il flag degli attributi per il file specificato:
Bit di attributo |
Attributo |
Morso |
Binario |
Esagono |
Flag di file di sola lettura |
0 |
.......? |
01H |
Segnala file nascosto |
1 |
......?. |
ore 02:00 |
Flag del file di sistema |
2 |
.....?.. |
ore 04:00 |
Flag etichetta volume
(indica che la voce è un'etichetta volume) |
3 |
....?... |
ore 08:00 |
Sottodirectory
(nello stesso formato della directory) |
4 |
...?.... |
ore 10.00 |
Bit di archivio
(file modificato dall'ultimo backup) |
5 |
..?..... |
ore 20 |
Riservato (contiene 0) |
6 |
.0...... |
- |
Riservato (contiene 0) |
7 |
0....... |
- |
Un file può avere più attributi. Ad esempio, un singolo file può essere sia Read–Only che Hidden–File oppure un singolo file può avere entrambi gli attributi, The System–File e The Hidden–File. (Vedi l'esempio fornito di seguito per la codifica delle voci di directory).
Ora e Data sono un campo codificato in modo speciale di 32 bit (16 bit di Ora e 16 bit per Data). La divisione di queste codifiche in bit per comporre l'Ora di creazione o ultimo aggiornamento e la Data di creazione o ultimo aggiornamento per un File, è stata data nella seguente tabella:
La voce per Time of Create o Last Update del file, che è il 16° e 17° Byte nella voce di directory, ha il formato indicato nella tabella sopra. La codifica è la seguente:
- H è il numero binario per l'ora, che può variare da 0 a 23
- M è un numero binario per minuto, che può variare da 0 a 59
- S è un numero binario per i secondi in incrementi di 2 secondi
- La voce per i dati di creazione o ultimo aggiornamento del file, che è il 18° e
- 19° Byte nella voce di directory, ha il seguente formato:
- Y è un numero binario compreso tra 0 e 127 o l'anno dal 1980 al 2107
- M è il numero binario per il mese, può variare da 1 a 12
- D è un numero binario per la data, può variare da 1 a 31
Questa voce di directory è collegata alla voce FAT in base al primo valore di cluster. Una volta che il DOS ha il valore di cluster iniziale di qualsiasi file dalla Directory, il DOS può scoprire il file completo utilizzando la FAT. Il Cluster di voci nella catena è il primo cluster che costituisce il file. Se il flag di directory degli attributi è impostato, questo campo punta a una nuova voce di directory.
L'immissione di Size of file è 4 Byte. Con questo possiamo calcolare come FAT32 supporta la dimensione massima di un file fino a 4.294.967.295 Byte che è circa 4 GiB. I 4 Byte hanno 32 Bit e la dimensione massima possibile del File composto da qualsiasi Binario a 32 Bit potrebbe essere,
= 11111111 11111111 11111111 11111111 (B) Byte
= 4.294.967.295 (D) Byte
~ 4 GB
Pertanto FAT32 supporta una dimensione massima dei file pari a 4 GiB.
Voce della directory radice
La dimensione del file e il cluster iniziale del file possono essere una risorsa preziosa per il recupero dei dati nel recupero di file danneggiati, poiché possiamo calcolare da quanti cluster dovrebbe essere composto il file.
La figura precedente mostra la voce della directory radice per sette file diversi. La codifica per queste voci è stata fornita nella seguente tabella:
Nome file lungo (LFN)
Come abbiamo già discusso in precedenza nella discussione sulla directory radice, in precedenza la directory radice aveva dimensioni fisse e si trovava in una posizione fissa sul disco, ma ora può aumentare liberamente in base alle necessità poiché viene trattata come un file.
Questo è molto importante per i nomi di file lunghi perché ogni nome di file lungo usa più voci di directory. Aggiungere il supporto per i nomi di file lunghi a un sistema operativo che usa nomi di file 8.3 non è semplice come espandere le voci di directory per contenere più di 11 caratteri.
Se questo nuovo sistema operativo restituisce nomi di file di 255 caratteri, molte applicazioni più vecchie, che si aspettano di ricevere non più di 11 caratteri, si bloccherebbero perché un programma deve riservare memoria per memorizzare i nomi di file che legge e se riserva 16 byte per un nome di file e il sistema operativo copia (diciamo) 32 caratteri in quello spazio, allora altri dati vengono sovrascritti. Un modo sicuro per interrompere un'applicazione è copiare dati casuali nel suo spazio dati.
Per superare questo problema, in Windows 95 venne trovata una soluzione intelligente, che consentiva di supportare nomi di file lunghi mantenendo al contempo la compatibilità con le versioni precedenti delle applicazioni DOS e Windows.
Quando la maggior parte delle applicazioni (ad eccezione delle utilità disco di basso livello come Norton Disk Doctor) interrogano il sistema per i nomi di file e sottodirectory, non lo fanno leggendo le voci della directory direttamente dal disco, ma utilizzando funzioni di enumerazione integrate nel sistema operativo.
Come sappiamo, una voce di directory è contrassegnata con la combinazione di attributi di sola lettura, nascosti, di sistema e di etichetta di volume Bit. Probabilmente, se il byte dell'attributo di Directory Entry contiene il valore 0FH, le funzioni di enumerazione integrate in tutte le versioni esistenti di DOS e in tutte le versioni di Windows precedenti a Windows 95 ignoreranno quella voce di directory come se non ci fosse.
Quindi, la soluzione è stata quella di memorizzare due nomi per ogni file e sottodirectory, un nome breve visibile a tutte le applicazioni e un nome lungo visibile solo alle applicazioni Windows 95 (e successive) e alle applicazioni che sono state riscritte per aggiungere il supporto per i nomi di file lunghi. I nomi di file brevi sono memorizzati nei formati 8.3 in voci di directory convenzionali da 32 byte.
Abbiamo già spiegato che Windows crea un nome file breve partendo da un nome file lungo, troncandolo a sei caratteri maiuscoli e aggiungendo "~1" alla fine del nome file di base.
Se esiste già un altro nome file con gli stessi primi sei caratteri, il numero viene incrementato. L'estensione viene mantenuta invariata e qualsiasi carattere che era illegale nelle versioni precedenti di Windows e DOS viene sostituito con un trattino basso.
I nomi file lunghi sono memorizzati in voci di directory LFN (Long File Name) da 32 byte formattate in modo speciale, contrassegnate con byte di attributo impostati su 0FH. Per un dato file o sottodirectory, un gruppo di una o più voci di directory Long File Name precede immediatamente la singola voce di directory 8.3 sul disco.
Ogni voce della directory Nome file lungo contiene fino a 13 caratteri del nome file lungo e il sistema operativo ne unisce insieme quanti sono necessari per comporre un intero nome file lungo.
Per una voce di directory Long File Name, i nomi dei file vengono salvati in formato Unicode, che richiede 2 byte per carattere anziché 1 byte di ASCII. I caratteri del nome del file vengono distribuiti tra tre campi separati:
- I primi 10 byte (cinque caratteri) di lunghezza,
- I secondi 12 byte (sei caratteri),
- I terzi 4 byte (due caratteri).
- I cinque bit più bassi del primo byte della voce di directory contengono un numero di sequenza che identifica la posizione della voce di directory rispetto ad altre
- Voci della directory con nome file lungo associate allo stesso file.
Se un nome file lungo richiede tre voci di directory LFN, il numero di sequenza della prima sarà 1, quello della seconda sarà 2 e il numero di sequenza della terza sarà 3, e il bit 6 del primo byte della terza voce è impostato su 1 per indicare che è l'ultima voce nella sequenza.
Il campo attributo appare nella stessa posizione nelle voci di directory LFN come nelle voci di directory 8.3 perché il file system non sa con quale tipo di voce di directory sta trattando finché non esamina il byte di attributo. Anche il campo numero cluster iniziale appare nella stessa posizione, ma nelle voci di directory LFN il suo valore è sempre 0. Anche il campo indicatore di tipo contiene 0 in ogni nome file lungo.
Uno dei problemi con i nomi di file lunghi è che consumano più spazio su disco rispetto a quelli corti. Ciò non è un grosso problema quando i nomi lunghi sono archiviati in sottodirectory, perché finché lo spazio su disco è disponibile, le sottodirectory possono crescere per ospitare voci di directory aggiunte, ma il numero massimo di voci di directory disponibili nella directory radice è fisso e i nomi di file lunghi sprecano spazio nella directory radice che è limitata in termini di dimensioni.
Ad esempio, se la directory principale di un disco rigido contiene al massimo 512 voci di directory, poiché un nome di 128 caratteri richiede 11 voci, 10 per il nome lungo e 1 per il nome breve, è possibile creare solo 46 file e sottodirectory nella directory principale se a ciascuno fosse assegnato un nome di 128 caratteri.
Il problema scompare anche per FAT32 perché la directory radice in FAT32 può crescere anch'essa, in quanto nel sistema FAT32 la directory radice viene trattata come un file le cui dimensioni possono aumentare.
Area dati (o area file)
Dopo la Directory Root inizia la Data Area (o Files Area). Piuttosto possiamo dire che il resto del volume dopo la Directory Root è la Data Area.
L'area dati contiene i dati effettivi memorizzati sulla superficie del disco. DOS utilizza il numero di cluster 2 per il primo settore dell'area dati, pertanto dovremmo tenere a mente durante l'esecuzione di vari calcoli che il numero di cluster dovrebbe iniziare da 2.
Quando formattiamo un'unità disco rigido, il comando FORMAT di DOS non distrugge o sovrascrive i dati nell'area dati. Il comando FORMAT rimuove solo la voce di directory e le voci FAT e non tocca l'area dati effettiva.
Ciò rende possibile il recupero di un'unità disco rigido formattata accidentalmente, cosa che non è possibile in tutti i casi di floppy disk formattati accidentalmente. Come nel formato completo di Windows, l'area dati del floppy è riempita dai caratteri F6H e tutte le informazioni vengono sovrascritte.
DOS utilizza un puntatore a 16 bit/32 bit chiamato puntatore "Last Cluster Used" (LCU) per memorizzare l'ultimo numero di cluster utilizzato. Inizialmente il valore di questo puntatore è zero, quando alcune informazioni vengono scritte su un cluster particolare, quel numero di cluster viene memorizzato nel puntatore LCU.
Dopodiché, ogni volta che devono essere scritte nuove informazioni, DOS cerca un cluster libero dal numero LCU in poi. Ciò forza i nuovi dati scritti sul disco a rimanere contigui mentre i dati vengono scritti nella nuova area inutilizzata.
Ora la comprensione dei dati in caso di cancellazione accidentale sarebbe molto più semplice poiché il file si trova in un'area contigua sul disco. Una volta raggiunta la fine del disco o il sistema viene ripristinato, il valore del puntatore LCU viene ripristinato a zero.
Ma il problema non dura qui. Non è praticamente possibile che tu crei solo nuovi file sul tuo disco e non elimini o modifichi mai alcun file da quelli precedentemente archiviati. Usare solo LCU ha i suoi problemi se crei ed elimini molti file, perché questo costringerà i nuovi dati a spostarsi sempre più nelle tracce interne del disco rigido.
Pertanto, se un file memorizzato sul disco viene spostato o eliminato, i cluster nell'area dati che erano occupati dal file vengono ora impostati come cluster non allocati disponibili nell'area dati e pronti per la scrittura di nuovi dati su di essi. In questo modo, il sistema operativo non ha bisogno di spostare tutti i dati nelle tracce interne del disco.
Tuttavia, l'eliminazione e la creazione di numerosi file frammentano i dati sul disco, causandone la frammentazione.
Dati frammentati e deframmentati
Abbiamo già discusso del fatto che ogni file nel disco è memorizzato come un elenco concatenato di cluster, tramite i quali i dati contenuti in un file possono essere localizzati ovunque sul disco. Se hai un file da 10 MB memorizzato su un disco utilizzando cluster da 4.096 byte, sta utilizzando 2.560 cluster. Questi cluster possono essere su tracce diverse, diversi piatti del disco, in effetti, possono essere ovunque.
Sebbene un file possa essere distribuito su tutto il disco, questa è ben lontana dalla situazione preferita. Il motivo è l'indesiderata lentezza delle prestazioni. I dischi rigidi sono dispositivi relativamente lenti, principalmente perché hanno parti meccaniche al loro interno. Ogni volta che il disco rigido deve spostare le testine su una traccia diversa, impiega un tempo equivalente a migliaia e migliaia di cicli del processore.
Pertanto, vogliamo ridurre al minimo il grado in cui ogni file è distribuito sul disco. Nel caso ideale, ogni file sarebbe infatti completamente contiguo. Ciò significa che ogni cluster che utilizza sarebbe posizionato uno dopo l'altro sul disco. Ciò consentirebbe di leggere l'intero file, se necessario, senza molto movimento meccanico da parte del disco rigido.
In realtà, il file system inizialmente ha tutti o la maggior parte dei suoi file contigui, ma a causa della creazione e dell'eliminazione dei file nel corso del tempo, i dati sul disco diventano sempre più frammentati.
Consideriamo un semplice esempio per comprendere la frammentazione. La tabella sottostante rappresenta l'utilizzo dei 12 cluster. Inizialmente, la tabella è vuota:
gruppo 1 |
gruppo 2 |
gruppo 3 |
gruppo 4 |
gruppo 5 |
gruppo 6 |
gruppo 7 |
gruppo 8 |
gruppo 9 |
gruppo 10 |
gruppo 11 |
gruppo 12 |
Ora supponiamo di creare quattro file, File A, B, C e D in questo disco. Il file A occupa 1 cluster, il file B ne occupa 4, il file C ne occupa 2 e il file D ne occupa 3. Li memorizziamo nello spazio libero disponibile e all'inizio sono tutti contigui come mostrato nella figura seguente:
Dopo un po' di tempo eliminiamo il file C e così facendo, entrambi i cluster che erano occupati dal file C, sono ora liberi o non allocati. Questo lascia il disco simile alla figura seguente:
Ora, creiamo un nuovo File E che necessita di 3 cluster. Ma, poiché non ci sono più blocchi contigui sul disco lunghi 3 cluster, dobbiamo dividere E in due frammenti, usando parte dello spazio precedentemente occupato da C. Ora il nostro disco apparirà come nella figura seguente:
Dopo un lasso di tempo, eliminiamo i file A ed E e creiamo il file F che occupa 5 cluster. Il disco ora appare come nella figura riportata di seguito:
Ora vediamo che il file F finisce per essere spezzato in tre frammenti. Questo tipo di dati nel disco è chiamato dati frammentati. L'esempio dato sopra è un esempio molto semplificato di frammentazione, perché i dischi reali hanno migliaia di file e migliaia di cluster, quindi il problema è amplificato. Questo vi dà l'idea generale di cosa succede.
Ciò che fa un programma di deframmentazione (come il programma DEFRAG di Microsoft, SpeedDisk di Norton) è riorganizzare il disco per riportare i file in una forma contigua. Dopo aver eseguito l'utilità di deframmentazione del disco, i dati deframmentati sul disco di cui stavamo parlando appariranno come nella figura riportata di seguito:
In molti casi, i dati frammentati e deframmentati hanno molta importanza durante il recupero dei dati.
Consideriamo di avere due dischi bloccati per il recupero dati, uno con dati frammentati e uno che è stato deframmentato di recente. E devi effettuare il recupero dati raccogliendo i dati dalla superficie di entrambi i dischi poiché le informazioni FAT e Root dei file sono danneggiate. In questo tipo di casi la percentuale di recupero sarà proporzionale alla deframmentazione dei dati nel disco.
Ovviamente, il recupero dei dati dal disco deframmentato sarà semplice e la percentuale di recupero dei dati sarà elevata, ma d'altro canto, il recupero dei dati dal disco frammentato sarà difficile e richiederà molto tempo, così come la percentuale di dati recuperati sarà deludente.
Identificazione della causa della corruzione dei dati
Ci sono alcuni passaggi specifici che, se seguiti in sequenza, possono aiutarci a trovare l'area di corruzione. Questi passaggi sono stati descritti con la procedura di recupero come segue:
Avviare il sistema con floppy avviabile
Avvia il sistema con un floppy o un CD avviabile del sistema operativo che stavi utilizzando. Prova a leggere le unità logiche C: o D: o qualsiasi altra. Se l'unità/le unità sono accessibili, copia tutti i dati dall'unità. Ora puoi capire perché il disco non si avvia correttamente, con meno stress.
Verificare le informazioni MBR
Il primo e più importante pezzo di dati sul disco rigido è l'MBR e la tabella che contiene al suo interno, la tabella delle partizioni. Il piccolo strumento di modifica del disco denominato "TTEDITOR.EXE" è stato fornito nel disco incluso in questo libro. Oppure puoi usare qualsiasi altro programma per analizzare il disco rigido.
Diskedit sarà il programma più adatto per analizzare il disco a scopo di recupero dati. Bene, qualsiasi programma ti sembri facile da usare è a tua disposizione. Prova a leggere MBR e in particolar modo la sua tabella delle partizioni.
Come hai visto nella descrizione di MBR, discussa in questo capitolo, nella seconda metà di MBR, c'è del testo leggibile che viene visualizzato come messaggio di errore da questo, se c'è qualcosa che non va. Questi messaggi di testo vengono visualizzati più o meno così:
Se questi messaggi di errore non sono disponibili, questo indica la corruzione dell'MBR. Potrebbe esserci anche un messaggio illegale al posto di questo, come "Il tuo sistema è stato hackerato da..." o qualsiasi altro messaggio inaspettato. Indica che c'è qualcosa di seriamente sbagliato nell'MBR e, molto probabilmente, è dovuto a qualche infezione VIRALE
Ora controlla la tabella delle partizioni di MBR dopo i 446 byte iniziali. Se la tabella delle partizioni è vuota, non vedrai alcun messaggio di errore al momento dell'avvio. DOS ignora un'unità non partizionata. Se non c'è alcun floppy avviabile nell'unità A:, il sistema richiederà di inserire un floppy avviabile nell'unità A:.
La cosa importante da notare qui è che la tabella delle partizioni non dovrebbe essere vuota su un'unità che in precedenza funzionava, quindi qualcosa l'ha cancellata. Se la tabella delle partizioni è vuota, ripristinare l'MBR dal backup.
Se il backup non funziona, anche dopo il completamento con successo del processo di ripristino, c'è un danno fisico su questo settore. Prova le tecniche di programmazione del recupero dati, fornite nei capitoli successivi per recuperare i dati. Se non sei affatto un programmatore, è meglio andare in un qualsiasi buon centro di recupero dati.
Se non si dispone di alcun backup dell'MBR, provare a scrivere manualmente la tabella delle partizioni con uno strumento di modifica del disco, come Diskedit; tuttavia, in alcuni casi è molto difficile farlo.
Per quegli utenti che non sono programmatori e non dispongono di alcun backup, è possibile utilizzare il metodo che ho utilizzato fin dai tempi in cui sviluppavo il mio progetto di recupero dati, ai tempi dell'università.
Quello che devi fare è cercare il computer vicino a te, che abbia pressappoco le stesse dimensioni del disco, lo stesso numero di partizioni e, cosa più importante, lo stesso sistema operativo che era sul tuo computer.
Tuttavia funziona completamente, la maggior parte delle volte. Ma se non è così, almeno può aiutarti ad accedere alla prima partizione del tuo disco. Anche il tuo sistema operativo si avvierà normalmente, se è stato installato nella prima partizione e se le altre informazioni non sono corrotte.
Se MBR è ok, verifica DBR
Se l'MBR è a posto, verifica il DBR (DOS Boot Record). Come abbiamo già discusso, questo è il primo settore nella partizione DOS e contiene un piccolo programma che carica i file nascosti e avvia il sistema operativo.
Il DBR contiene anche molte informazioni importanti su FAT, cluster di directory radice e dimensioni della partizione, ecc. Utilizzare un'utilità simile a Diskedit per leggere le informazioni del DBR se il DBR è danneggiato o contiene informazioni illegali per ripristinare il DBR dal backup.
Tutti i software professionali per il recupero dati sono in grado di riscrivere il DBR. Discuteremo di come riscrivere il DBR della partizione con la programmazione, nei prossimi capitoli del libro.
È anche possibile riscrivere il DBR della partizione con l'aiuto di Diskedit, specificando le informazioni appropriate.
Esiste anche un modo molto semplice per scoprire l'area di corruzione. I messaggi di errore che vengono visualizzati sullo schermo hanno una causa specifica per essere visualizzati. La descrizione di alcuni importanti messaggi di errore è la seguente:
Messaggio |
Descrizione |
"Settore non trovato durante la lettura dell'unità" |
Questo messaggio può apparire durante qualsiasi operazione DOS. Generalmente, è causato da un fading o dalla perdita di un ID di settore. |
"Errore dati durante la lettura dell'unità" |
Questo messaggio può apparire durante qualsiasi operazione DOS. È causato dal fallimento del controllo dei dati – CRC (Cyclic Redundancy Check) o ECC (Error Correction Code). Questo "controllo dei dati" si riferisce al meccanismo utilizzato per verificare se i dati letti dal disco sono affidabili. |
"0 hard disk trovati" |
Viene visualizzato se il disco rigido non viene rilevato dal BIOS del computer. Controllare i collegamenti dei cavi di alimentazione e dati del disco rigido. Se i collegamenti sono corretti, il problema potrebbe essere dovuto a qualche errore hardware del disco rigido. |
"Errore del disco rigido, premere F1 per continuare" |
Come sopra |
“Specifica unità non valida” |
Viene visualizzato quando il sistema non riconosce l'hardware, non ci sono informazioni sulla partizione o manca il driver del dispositivo dell'unità. |
“Configurazione non valida, premere F1 per continuare” |
Se il disco rigido è disponibile, la batteria della scheda madre è scarica e il sistema ha perso le informazioni di configurazione SETUP oppure il disco non risponde. |
“Tabella delle partizioni non valida” |
Questo è il messaggio di errore MBR. Viene visualizzato quando la tabella delle partizioni dell'MBR non contiene informazioni valide sulla partizione. |
"Errore durante il caricamento del sistema operativo" |
Questo è il messaggio di errore MBR. Viene visualizzato a causa di qualsiasi tipo di corruzione delle informazioni MBR. |
“Sistema operativo mancante” |
Come sopra. |
"Errore di avvio del disco" |
Questo è un messaggio di errore DBR. In genere, il disco rigido dovrebbe essere accessibile se si esegue l'avvio da un floppy disk. Sebbene non sia avviabile, ciò non dovrebbe influire sull'accesso ai dati sul disco. |
"disco non di sistema o errore del disco" |
Come sopra. |
"Interprete dei comandi non valido o mancante" |
Questo messaggio viene visualizzato a causa di un interprete dei comandi non funzionante o mancante. Ad esempio, se il sistema operativo non trova command.com nel percorso corrente oppure command.com è danneggiato. |