Capitolo – 3
Approccio logico a dischi e sistemi operativi
Il disco rigido non può eseguire il proprio hardware da solo e necessita di due software di base per eseguire le sue operazioni, il BIOS (Basic Input Output System) e il DOS (o sistema operativo). Il sistema operativo del disco non comunica direttamente con l'hardware del computer e del disco rigido, ma ha bisogno del BIOS in mezzo. Ecco perché il BIOS ha assunto un ruolo importante nel computer.
BIOS
Il compito di base del BIOS è 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 che viene eseguito su di esso. Ha diversi ruoli significativi che svolge nel controllo dell'accesso ai dischi rigidi come
- Routine di interruzione del BIOS
- Rilevamento e configurazione del disco rigido
- Supporto modalità interfaccia disco rigido
Per garantire l'interoperabilità di vari prodotti hardware e software, il BIOS del sistema è adattato alle esigenze del suo hardware e fornisce un modo standard per consentire al software di indirizzare l'hardware. Questi sono chiamati servizi BIOS e sono utilizzati da molti sistemi operativi e programmi applicativi. Forniscono un'interfaccia uniforme al disco rigido, quindi le applicazioni non devono sapere come comunicare con ciascun tipo di disco rigido individualmente.
I dischi rigidi IDE/ATA standard sono configurati nel BIOS utilizzando varie impostazioni del BIOS. I moderni programmi BIOS possono rilevare i moderni dischi IDE/ATA per determinare questi parametri e configurarli automaticamente. Il BIOS controlla quali tipi di modalità di interfaccia possono essere utilizzate con il disco rigido, lavorando con il chipset di sistema sulla scheda madre e il bus di I/O di sistema.
L'interfaccia INT 13H e le estensioni INT 13H
L'interfaccia principale per il BIOS è stata l'interrupt software 13H, generalmente noto come INT 13H , dove INT sta per interrupt e 13H è il numero 19 in notazione esadecimale.
Impareremo e discuteremo in dettaglio l'uso degli interrupt nella programmazione nella fase di programmazione di questo libro. L'interfaccia Int13H supporta molti comandi diversi che possono essere dati al BIOS, che poi li trasmette al disco rigido. L'interrupt 13H include la maggior parte delle attività che dobbiamo eseguire con il disco come lettura, scrittura, formattazione ecc.
L'uso e il lavoro con Int13H richiedono che il programma di richiamo conosca i parametri specifici del disco rigido e fornisca l'esatto indirizzamento di testa, cilindro e settore alle routine per consentire l'accesso al disco.
Il BIOS utilizza la geometria per il disco rigido così come è impostata nel programma di configurazione del BIOS. L'interfaccia Int13H alloca 24 bit per la specifica della geometria dell'unità, suddivisa come segue:
- 10 bit per il numero del cilindro o un totale di 1.024 cilindri.
- 8 bit per il numero della testa, o un totale di 256 teste.
- 6 bit per il numero del settore o un totale di 63 settori.
Quindi può essere il numero massimo possibile di settori nel disco
= 1024 * 256 * 63
= 16515072
Come vediamo qui, l'interfaccia INT 13H può supportare dischi contenenti fino a 16515072 settori con 512 byte per settore. Pertanto, la dimensione massima del disco potrebbe essere,
= 16515072 * 512
= 8455716864 Bytes
~ 8.456 GB
Quindi l'interfaccia INT 13H può supportare la dimensione del disco fino a circa 8,456 GB (o 7,875 GiB).
Oggi la maggior parte degli utenti di computer utilizza dischi rigidi che hanno una capacità molto più grande di 8 GB, ecco perché l'interfaccia INT 13H ha finalmente esaurito la sua utilità nei moderni sistemi informatici ed è stata sostituita con una più recente interfaccia chiamata estensioni INT 13H, tuttavia INT 13H può ancora essere utilizzata da DOS e da alcuni altri sistemi operativi precedenti e per altri scopi di compatibilità.
Estensioni Int 13H
È davvero una storia interessante che quando è stata sviluppata l'interfaccia INT 13H, nessuno si aspettava mai di ottenere la dimensione di 8 GB nel disco rigido. Tuttavia oggi potremmo sentire un disco rigido da 8 GB molto più piccolo in termini di capacità, anche per il personal computer dell'utente domestico.
Lo standard precedente presenta un'importante limitazione che utilizza 24 bit di informazioni di indirizzamento e pertanto può gestire solo unità che contengono fino a 16515072 settori con 512 byte per settore che producono una capacità massima di 8,456 GB (o 7,875 GiB).
Quindi il problema era allargare il percorso di accesso da 24 bit a qualcosa di più grande, ma non è stato possibile espandere l'interfaccia BIOS INT13H esistente perché se proviamo a farlo molti hardware e software più vecchi smetterebbero di funzionare. E praticamente, non c'è speranza di ottenere un posto rispettabile nel mondo dei computer con un sacco di hardware e software meno recenti 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 anziché 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 le estensioni INT 13H e INT 13H nella sezione di programmazione di questo libro. Ci sono una serie di altre limitazioni di dimensioni che hanno avuto luogo nei giorni precedenti. Alcuni dei comuni limiti logici e fisici sono stati descritti di seguito:
Il limite di 2,1 GB
Questo limite di dimensione è stato osservato in alcuni BIOS precedenti che allocano 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 Bytes
= 2113413120 Bytes are accessible.
Il limite di 33,8 GB
Questa barriera delle dimensioni 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 i dischi di dimensioni superiori a 33,8 GB, ciò comporta un numero di cilindri superiore a 65535. In questo caso particolare, alcune versioni di Award BIOS non sono in grado di gestire unità con più di 65.535 cilindri. Ora il BIOS si arresta in modo anomalo o si blocca. Dal momento che i parametri del disco rigido utilizzano solitamente 16 testine e 63 settori, ciò raggiunge una capacità di circa 33,8 GB o 31,5 GiB prima che si verifichino problemi.
La soluzione è aggiornare il BIOS oppure è possibile 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 di dimensioni superiori a 137 GB. In realtà, utilizza solo 28 bit per specificare un numero di settore. Tuttavia, ATA-6 definisce un'estensione con numero di settore a 48 bit.
Il limite della dimensione del disco è stato generato con la combinazione di massimo 65536 cilindri contando da 0 a 65535, 16 testine contando da 0 a 15 e 255 settori per traccia contando da 1 a 255, la capacità massima totale del disco,
= 65535 * 16 * 255 Sectors
= 267386880 Sectors
= 136902082560 Bytes (Sector of 512 Bytes Each)
~ 137 GB
Supporto IDE BIOS 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 ciascun disco rigido per determinarne la geometria logica, le modalità di trasferimento supportate e altre informazioni. Questo 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 il supporto nativo per i dischi rigidi IDE/ATA, pertanto potrebbero essere presenti numerosi parametri che possono essere impostati per indicare al BIOS quali dischi rigidi sono nel sistema e come controllarli. Ogni disco rigido nel sistema avrà le proprie impostazioni, quindi c'è un set per il master primario e uno per lo slave primario e così via. Tuttavia, i dischi rigidi SCSI vengono configurati tramite l'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 della geometria del BIOS IDE/ATA, il rilevamento automatico dinamico è il modo standard per configurare le unità moderne, specialmente in caso di sistemi informatici più vecchi, tuttavia l'utente potrebbe comunque impostare manualmente alcuni parametri dell'unità.
Di seguito sono riportate le impostazioni normalmente presenti nel programma di configurazione del BIOS per la configurazione dei dischi rigidi IDE/ATA. Sebbene sui sistemi moderni alcune delle più vecchie impostazioni di compatibilità potrebbero non essere nemmeno più presenti:
- Tipo di disco: originariamente era utilizzato per consentire all'utente di selezionare il proprio disco rigido da un elenco predefinito, ma ora viene utilizzato per controllare l'impostazione automatica o manuale dei parametri dell'unità.
- Dimensione: dimensione dell'unità disco rigido in megabyte decimali. Viene calcolato dagli altri parametri come Cilindri, Teste e Settori ecc.
- Cilindri: il numero di cilindri logici sul disco.
Teste: il numero di testine logiche sul disco.
- Settori: il numero di settori logici ciascuno di 512 byte, in ciascuna traccia logica sul disco. Di solito i moderni dischi rigidi 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 le unità molto più vecchie.
- Landing Zone (Parking Heads): Landing Zone è il cilindro in cui vengono parcheggiate le testine dal BIOS per evitare la perdita di dati o la creazione di settori danneggiati, quando l'unità è spenta. Poiché le moderne unità disco rigido parcheggiano automaticamente le testine, oggi è raramente necessario.
- Modalità di traduzione: la modalità di traduzione del BIOS utilizzata per supportare i dischi rigidi di dimensioni superiori a 504 MB.
- Modalità blocco: per controllare la capacità del BIOS di eseguire trasferimenti su disco in blocchi.
- Modalità I/O programmato (DMA): la modalità I/O programmata o la modalità DMA utilizzata per eseguire i trasferimenti da e verso il disco rigido.
- Modalità di trasferimento a 32 bit: controlla l'utilizzo di trasferimenti di dati a 32 bit a prestazioni più elevate.
Limitazioni nei file system
Ogni file system supporta una dimensione massima del volume, una dimensione del file e un numero di file per volume.
Ad esempio, generalmente i volumi FAT16 e FAT32 sono limitati rispettivamente a 4 GB e 32 GB (generalmente). Ci sono alcune limitazioni relative ai file system FAT che devi conoscere, indicate 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 equivale a 2 12 meno alcuni valori riservati da utilizzare in FAT. (Ne discuteremo in dettaglio nella struttura logica del disco data più avanti in questo capitolo). Pertanto FAT12 è più adatto per volumi più piccoli. Viene utilizzato su floppy disk e partizioni di hard disk inferiori a 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 equivale a 2 16 meno alcuni valori riservati da utilizzare in FAT. (Ne discuteremo in dettaglio nella struttura logica del disco data più avanti in questo capitolo). FAT16 viene utilizzato per i volumi del disco rigido di dimensioni comprese tra 16 MB e 2.048 MB. I volumi FAT16 superiori a 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, che determina il limite di 2 GB. (Vedere il limite dei cluster fornito di seguito in questo capitolo).
- FAT32: In teoria, i volumi FAT32 massimi possono arrivare fino a 2048 GB (circa 2 terabyte). Il 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 questo, la dimensione del FAT diventa molto grande. (Ne discuteremo negli argomenti indicati di seguito in questo capitolo).
Il confronto dei tipi di FAT è stato riportato di seguito, nella tabella.
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 alcune limitazioni sono state indicate nella tabella seguente:
Description
|
Limit |
Maximum file size
|
16 Exabytes – 1 KB (2 64 Bytes – 1 KB) |
Maximum volume size
|
(2 64 – 1) clusters |
Files (and Folders) per volume
|
4,294,967,295 (2 32 – 1 ) Flies and Folders |
Cluster
La più piccola unità di spazio 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 ciascun file vengono assegnati tutti i settori individuali necessari. Ad esempio, un file da 1 MB richiederebbe circa 2.048 singoli settori per memorizzare i suoi dati.
In caso di file system FAT o meglio si può dire che nella maggior parte dei file system non vengono utilizzati i singoli settori. Ci sono diversi motivi di prestazioni per questo. Quando DOS scrive alcune informazioni sul disco rigido, non alloca lo spazio in termini di settore, ma utilizza una nuova unità di archiviazione chiamata cluster.
FAT è stato progettato molti anni fa ed è un semplice file system e non è in grado di gestire singoli settori. Quello che fa invece FAT è raggruppare i settori in blocchi più grandi 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 vengono suddivisi in parti da 512 byte.
Un volume del disco da 20 GB che utilizza settori da 512 byte gestiti individualmente conterrebbe oltre 41 milioni di singoli settori e tenere traccia di queste numerose informazioni richiede tempo e risorse. Tuttavia, alcuni sistemi operativi assegnano spazio ai file in base al settore, ma richiedono un'intelligenza avanzata per farlo correttamente.
I cluster sono lo spazio minimo allocato dal DOS durante la memorizzazione di qualsiasi informazione sul disco. Anche per archiviare informazioni lunghe un solo byte sul disco è necessaria 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 le dimensioni del cluster sono così importanti per assicurarti di massimizzare l'uso efficiente del disco. Quindi possiamo capire che più grandi dimensioni dei cluster risultano, maggiore è lo spazio 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 è 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 dei cluster come unità di allocazione riduce le dimensioni della tabella di allocazione dei file utilizzata da DOS per contenere le informazioni sullo spazio su disco utilizzato e vuoto.
La dimensione del cluster è determinata principalmente dalla dimensione del volume del disco. Se non in senso stretto, volumi generalmente più grandi utilizzano dimensioni dei cluster più grandi. Per i volumi del disco rigido, le dimensioni di ciascun cluster variano 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 di appena 1 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, ha un impatto importante sulle prestazioni e sull'utilizzo del disco. La dimensione del cluster viene determinata quando il volume del disco viene partizionato.
Sono disponibili alcune utilità come Partition Magic che possono alterare la dimensione del cluster di una partizione esistente entro i limiti di condizioni specifiche, ma per i casi generali, una volta selezionate la dimensione della partizione e la dimensione del cluster, viene fissata.
Come abbiamo discusso in precedenza, il numero del cilindro o della traccia inizia da 0 e il numero del primo settore viene sempre preso come 1 e un'altra cosa che dovresti ricordare è che il numero del primo cluster viene sempre preso come 2.
Dimensioni del cluster
I cluster vengono utilizzati per allocare l'area di archiviazione solo per l'area dati. L'area FAT e directory non è allocata 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 seguenti tabelle 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:
Floppy Disk Drive (FDD) |
Drive Types |
Sectors/Cluster |
Total Cluster size in bytes (Sectors of 512 bytes Each) |
5.25” 360Kb FDD |
2 sectors |
1,024 |
5.25”1.2Mb FDD |
1 sector |
512 |
3.5” 720Kb FDD |
2 sectors |
1,024 |
3.5”1.44Mb FDD |
1 sector |
512 |
3.5”2.88MB FDD |
2 sectors |
1,024 |
FAT16, FAT32 e NTFS utilizzano ciascuna dimensioni di cluster diverse a seconda della dimensione della partizione e ogni file system ha un numero massimo di cluster che può supportare. Minore è la dimensione del cluster, più efficiente è la memorizzazione delle informazioni su un disco poiché lo spazio inutilizzato all'interno di un cluster non può essere utilizzato da altri file.
La tabella seguente mostra le dimensioni predefinite del cluster per la partizione 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 è stato scritto 1 KiB per 1 Kilobyte binario, il che significa che 1 KiB è di 1024 Byte o possiamo dire che due settori di 512 Byte equivalgono a 1 KiB.
Con l'aumento delle dimensioni della partizione FAT16, aumenta anche lo spreco di spazio su disco. L'uso di FAT32 riduce le dimensioni del cluster e fornisce quindi uno storage efficiente. Sebbene FAT32 consenta l'uso di dischi rigidi più grandi e dimensioni dei cluster notevolmente ridotte, c'è un'importante considerazione sulle prestazioni nell'uso di FAT32 che gli enormi dischi rigidi con dozzine 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 di 2.048 MB, la più grande che FAT16 può supportare. Se questa partizione è impostata in FAT16, risulterà in una tabella di allocazione dei file con 65.526 cluster, con ogni cluster che occupa 32 KiB di spazio su disco.
Le grandi dimensioni del cluster comporteranno infatti un grande spreco di spazio su disco. Pertanto si consiglia di utilizzare FAT32 su questa partizione, il che comporterà una riduzione della dimensione del cluster da 32 KiB a 4 KiB.
In effetti, questo ridurrà il gioco del disco di un'enorme quantità 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 di esso. Non riceviamo gratuitamente questa dimensione ridotta del cluster.
Dato che 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 (voce di 2 byte ciascuna). Il risultato finale è che la dimensione del FAT è 16 volte maggiore per FAT32 rispetto a FAT16. La tabella seguente riassume:
FAT 16 and FAT 32 for 2,048 MB Disk Volume |
FAT Type |
FAT16 |
FAT32 |
Cluster Size |
32 KiB |
4 KiB |
Number of FAT Entries |
65,526 |
524,208 |
Size of FAT |
131052 Bytes
(~ 128 KiB) |
2096832 Bytes
(~ 2 MiB) |
Se aumentiamo la dimensione del volume FAT32 da 2 GB a 8 GB, la dimensione della 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 quello riducendo la dimensione del FAT. Il vero problema è che la FAT contiene tutti i puntatori del cluster per ogni file nel volume. L'aumento delle dimensioni del FAT può influire negativamente sulla velocità del sistema.
Per questo motivo è importante limitare la dimensione della tabella di allocazione dei file a un numero ragionevole. In effetti, nella maggior parte dei casi si tratta di trovare un equilibrio tra la dimensione del cluster e la dimensione del FAT. Un buon esempio di ciò sono le selezioni delle dimensioni 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 del disco di 1 TiB (1.024 GiB), ma il problema è che la dimensione FAT sarebbe quindi superiore 1 GB come secondo 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, quindi vengono utilizzati cluster più grandi come mostrato nella tabella precedente, per le dimensioni dei cluster. La dimensione massima della partizione supportata da FAT32, ufficialmente dichiarata, è 2.048 GiB (2 TiB).
Struttura logica di un disco rigido
Fondamentalmente, possiamo dividere la struttura logica del disco rigido nei seguenti cinque termini logici:
- MBR (Master Boot Record)
- DBR (record di avvio DOS)
- FAT (tabelle di allocazione dei 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:
Il Master Boot Record (MBR) o talvolta indicato come The Master Partition Table (MPT), contiene un piccolo programma per caricare e avviare la partizione attiva (o avviabile) dal disco rigido. Il record di avvio principale 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 al Settore Assoluto 0 o possiamo dire al cilindro 0, testa 0 e settore1 e se è presente più di una partizione nel disco ci sono i Master Boot Records estesi, che si trovano all'inizio di ogni volume della partizione esteso (vedere la figura seguente).
L'MBR viene creato sul disco rigido eseguendo il comando FDISK.EXE di DOS. Tuttavia, sono disponibili molti altri software per eseguire lo stesso compito. 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 all'avvio del sistema. Poiché il floppy non ha partizioni su di esso, quindi non c'è MBR su un floppy.
Poiché il DOS utilizza un unico alfabeto maiuscolo per nominare una partizione, il numero massimo di tutti i tipi di partizioni insieme consentito da DOS è 24, a partire dalla lettera di unità C (C:) alla lettera di unità Z (Z:) . Pertanto se sono presenti anche più unità disco rigido fisiche, il numero totale di partizioni di tutte le unità non può superare 24.
Dopo il POST (Power-On Self Test), il BIOS carica l'MBR (Master Boot Record) dal disco rigido nella memoria e quindi lo esegue. Prima l'MBR controlla l'hard disk per una partizione attiva, quindi carica il DOS Boot Record (DBR) in memoria e passa il controllo al codice di avvio del sistema operativo, quindi il codice del record di avvio del sistema operativo carica il resto del sistema operativo in Memoria.
Formato record di avvio principale
We may partition the Hard Disk Drive into several logical drives which are generally assigned their own drive letter by DOS. Only one partition at a time can be marked as the active (or bootable) Partition.
Il Master Boot Record ha il limite di quattro voci nella Master Partition Table. Tuttavia, la posizione del record di avvio principale esteso può essere ottenuta con l'aiuto del record di avvio principale che contiene tabelle di partizione estese, il cui formato è esattamente lo stesso della tabella di partizione principale tranne per il fatto che non esiste un 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 di The Master Boot Record sono rotti come segue, indicato nella tabella:
Offset |
Description |
Size |
000H |
Initial Program Loader (IPL) , Executable Code (Provides very first booting to the Computer) |
446 Bytes |
1BEH |
First Partition Entry (See Next Table) |
16 Bytes |
1CEH |
Second Partition Entry |
16 Bytes |
1DEH |
Third Partition Entry |
16 Bytes |
1EEH |
Fourth Partition Entry |
16 Bytes |
1FEH |
Executable Marker or Bootable Sector Signature or Magic Number (AAH 55H) |
2 Bytes |
Total = 512 Bytes |
Tutte le partizioni estese dovrebbero esistere all'interno dello spazio riservato dalla voce della partizione estesa. Solo due delle partizioni estese devono essere utilizzate, la prima come partizione normale e la seconda come un'altra partizione estesa, se esistente. Pertanto, con l'aiuto di una tabella delle partizioni master possiamo ottenere la posizione di un'altra tabella delle partizioni master estesa accanto ad essa, se presente.
Formato di immissione della tabella delle partizioni
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 del 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 qualsiasi altro byte potrebbe essere dovuto al danneggiamento della tabella delle partizioni oa un attacco VIRUS nella tabella delle partizioni.
Cilindro iniziale – Testa – Settore Numero della partizione (3 byte): quando calcoliamo i CHS (Cylinder, Head e Sector) di qualsiasi disco, i CHS fisici vengono contati come segue:
- Il Settore Fisico viene conteggiato a partire da 1.
- La testa fisica viene contata da 0.
- Il cilindro fisico viene contato da 0 (vedi il capitolo precedente per i dettagli)
- Il Byte all'offset 01H rappresenta il numero di testa iniziale in sistema esadecimale per la partizione.
6 bit di byte meno significativi all'offset 02H make Settore di partenza Numero della partizione e combinazione dei restanti 2 bit (come due bit più significativi) più 8 bit di un altro byte all'offset 03H (resto 8 bit meno significativi dei 10 -Bit Number) crea il Numero Cilindro Iniziale della Partizione.
Offset |
Meaning |
Size |
Description |
00H |
Boot Type Indicator Byte |
1 Byte |
If Byte is 00H, the Partition is Inactive and if Byte is 80H , The Partition is Active (or Bootable) |
01H |
Head Number of Beginning of the Partition |
1 Byte |
Starting Head number of the Partition in Hexadecimal System |
02H |
Sector and Cylinder Number of Beginning of the Partition |
2 Bytes |
6 Bits of First Byte make Starting Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Starting Cylinder Number of the Partition |
04H |
File System indicator Byte |
1 Byte |
File System Indicator Byte in Hexadecimal system (See the Table given next for Indicators) |
05H |
Head Number of End of the Partition |
1 Byte |
Ending Head Number of the Partition in Hexadecimal System |
06H |
Sector and Cylinder Number of End of the Partition |
2 Bytes |
6 Bits of First Byte make Ending Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Ending Cylinder Number of the Partition |
08H |
Relative Sector number of Beginning of the Partition |
4 Bytes |
Number of Sectors Between the MBR and the First Sector in the Partition |
0CH |
Number of Sectors of the Partition |
4 Bytes |
Number of Sectors in the Partition |
Total = 16 Bytes |
La codifica del cilindro e del settore è stata fornita nell'esempio di uno studio di tabella delle partizioni di esempio eseguito in seguito.
Byte dell'indicatore del file system (1 byte): Byte dell'indicatore del file system all'offset 04H rappresenta il file system di quella partizione. La tabella, che elenca i byte dell'indicatore del file system per i vari file system, è stata fornita più avanti in questo capitolo.
Cilindro finale – Testata – Numero settore della partizione (3 byte): La codifica è la stessa di Cilindro iniziale – Testata – Numero settore della partizione.
Numero relativo del settore dell'inizio della partizione (4 byte): Numero di settori tra l'MBR e il primo settore nella partizione in sistema esadecimale.
Numero di settori della partizione (4 byte): numero di settori della partizione in sistema esadecimale.
Va sempre ricordato che i numeri Cilindro, Testata e Settore sono quelli che dovrebbero essere passati al BIOS. Pertanto, se il BIOS utilizza la traduzione (modalità LBA o supporto estensioni INT 13H), i valori potrebbero non rappresentare i valori CHS fisici. Per dischi rigidi di grandi dimensioni (maggiori di 8,4 GB) i valori CHS potrebbero non essere validi. Questi valori dovrebbero generalmente essere ignorati e al loro posto vengono utilizzati i valori di settore assoluti.
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 (Hex) indica che la partizione è una partizione attiva.
- All'offset 01H, 01 (Hex) rappresenta il numero di testa iniziale = 1.
- La combinazione di due byte all'offset 02H e 03H forma il settore iniziale
e il numero del cilindro della partizione secondo la codifica riportata di seguito:
Iniziando così C-H-S della partizione= 0-0-1.
Allo stesso modo il numero Head per l'Ending della partizione è FE (Hex), che è 254 e la Encoding per il Ending Cylinder e il numero di Settore della partizione sono stati forniti nella tabella seguente:
Quindi il finale C-H-S della partizione = 701-254-63.
Il byte 0B (esadecimale) all'offset 04H è il byte dell'indicatore del file system per la partizione. Il byte 0B (H) indica che la partizione ha il file system FAT32. Di seguito è stata fornita la tabella per i vari file system e i relativi byte di indicatore del file system:
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
00H |
Unused/Empty Partition-Table Entry
(Remember this is not used to designate unused area on the disk, but marks an unused partition table entry) |
01H |
DOS 12-bit fat
(The type 01H is for partitions up to 15 MB) |
02H |
XENIX: root file system |
03H |
XENIX /usr file system (obsolete)
(XENIX is an old part of Unix V7. Microsoft XENIX Operating System was announced in August 1980. It was a portable and commercial version of the Unix operating system for the Intel 8086, Zilog Z8000, Motorola M68000 and Digital Equipment PDP-11. Microsoft introduced XENIX 3.0 in April 1983. SCO delivered its first XENIX for 8088/8086 in 1983.) |
04H |
16-bit FAT, DOS 3.0+ (Partition size < 32M)
(Some old DOS versions have had a bug which required this partition to be located in the 1st physical 32 MB of the hard disk ) |
05H |
DOS Extended (DOS 3.3+ Extended Volume)
Supports at most 8.4 GB disks. With this type 05H DOS/Windows will not use the extended BIOS call, even if it is available.) |
06H |
16-bit FAT, DOS Big, DOS 3.31+ (Partition Size >= 32M)
(Partitions are at most 2 GB for DOS and Windows 95/98 with maximum 65536 clusters with each cluster, at most 32 KB. Windows NT can create up to 4 GB FAT16 partition using 64 KB clusters.) |
07H |
OS/2 IFS (Installable File System) (HPFS is the best known example of this file system. OS/2 only looks at partitions with ID 7 for any installed IFS this is the reason that EXT2 IFS packet includes a special "Linux partition filter" device driver to fool OS/2 into thinking Linux partitions have ID 07). |
07H |
Advanced Unix |
07H |
Windows NT NTFS |
07H |
QNX2.x (pre-1988)
(For the actual file system of partition type 07H, one should inspect the partition boot record) |
08H |
OS/2 (v1.0 to v1.3 only) |
08H |
AIX boot partition
[AIX (Advanced Interactive Executive) is the IBM's version of Unix] |
08H |
SplitDrive |
08H |
DELL partition spanning multiple drives |
08H |
Commodore DOS |
08H |
QNX 1.x and 2.x
("qny" according to QNX partitions) |
09H |
AIX data partition |
09H |
Coherent file system
[Coherent was a UNIX like Operating System for the 286-386-486 systems, marketed by Mark Williams Company led by Bob Swartz. It was renowned for its good documentation. It was introduced in 1980 and died 1 Feb 1995. The last versions are V3.2 for 286-386-486 and V4.0 (May 1992, using protected mode) for 386-486 only. It sold for $99 a copy and it is rumored that 40000 copies have been sold. A Coherent partition has to be primary. ] |
09H |
QNX 1.x and 2.x ("qnz" according to QNX Partitions) |
0aH |
OS/2 Boot Manager
(OS/2 is the operating system designed by Microsoft and IBM to be the successor of MS-DOS) |
0aH |
Coherent swap partition |
0aH |
OPUS
(Open Parallel Unisys Server) |
0bH |
WIN95 OSR2 32-bit FAT
(OSR2 stands for Microsoft’s “OEM Service Release 2”. It is for Partitions up to 2047GB. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0cH |
LBA-mapped WIN95 OSR2 32-bit FAT
(It is using Logical Block Addressing – mode of Interrupt 13H extensions therefore we can say that this is the Extended INT 13H equivalent of 0BH. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0eH |
LBA-mapped WIN95: DOS 16-bit FAT or Logical Block Addressable VFAT
(It is same as 06H but using LBA-mode of INT 13H) |
0fH |
LBA-mapped WIN95: Extended partition or Logical Block Addressable VFAT
(It is same as 05H but using LBA-mode of INT 13H. Windows 95 uses 0EH and 0FH as the extended INT13H equivalents of 06H and 05H. Windows NT does not recognize the four Windows 95/98/ME types 0BH, 0CH, 0EH and 0FH) |
10H |
OPUS
(Octal Program Updating System) |
11H |
Hidden DOS 12-bit FAT or OS/2 Boot Manager hidden 12-bit FAT partition or DOS Seen From OS/2 (When OS/2 Boot manager boots a DOS partition, it will hide all primary DOS partitions except the one that is booted, by changing its ID and 01H, 04H, 06H and 07H becomes 11H, 14H, 16H and 17H, respectively. |
12H |
Compaq Configuration/diagnostics partition
(It is used by Compaq for their configuration utility partition. It is a FAT-compatible partition that boots into their utilities, and can be added to a LILO menu as if it were MS-DOS. ) |
14H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager Hidden DOS 16-bit FAT) <32M Partition
(Partition size is less than 32M. ID 14H is resulted from using Novell DOS 7.0 FDISK to delete Linux Native partition. ) |
15H |
Hidden DOS-Extended |
16H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager hidden 16-bit FAT ) >=32M Partition |
17H |
OS/2 Boot Manager hidden HPFS partition or Hidden IFS (e.g., HPFS) |
17H |
Hidden NTFS partition |
18H |
AST SmartSleep Partition or AST special Windows swap file ("Zero-Volt Suspend" partition)
[AST Research, Inc. (named from first initials of the founders, Albert Wong, Safi Qureshey and Thomas Yuen). Ascentia laptops have a “Zero – Volt Suspend Partition” or `SmartSleep Partition' of size 2MB+memory size.] |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
19H |
Willowtech Photon COS
(Code 19H is Claimed for Willowtech Photon COS by Willow Schlanger. |
1bH |
Hidden WIN95 OSR2 32-bit FAT or Hidden Windows 95 FAT32 Partition |
1cH |
LBA-mapped Hidden WIN95 OSR2 32-bit FAT
(It is hidden Windows95 FAT32 partition using LBA-mode of INT 13H Extensions) |
1eH |
LBA-mapped Hidden WIN95 16-bit FAT or Hidden LBA VFAT partition |
1FH |
LBA mapped Hidden WIN95 Extended or Hidden Extended LBA VFAT Partition |
20H |
OFSI
(Willowsoft Overture File System ) |
21H |
Officially listed as Reserved
(HP Volume Expansion, SpeedStor variant.) |
21H |
FSO2
(Claimed for FSO2 (Oxygen File System) by Dave Poirier) |
22H |
FSO2 Extended Partition
(Claimed for Oxygen Extended Partition by Dave Poirier) |
23H |
Officially listed as Reserved |
24H |
NEC DOS 3.x |
26H |
Officially listed as Reserved |
31H |
Officially listed as Reserved |
32H |
NOS (Network Operating System)
(32H is being used by the operating system NOS, being developed by Alien Internet Services in Melbourne Australia. The id 32H was chosen not only because of it was one of the few that are left available but also 32k is the size of the EEPROM the OS was originally targeted for. |
33H |
Officially listed as Reserved |
34H |
Officially listed as Reserved |
35H |
JFS on OS/2 or eCS
[35H is used by OS/2 Warp Server for e-Business, OS/2 Convenience Pack (aka version 4.5) and eComStation (eCS, an OEM version of OS/2 Convenience Pack) for the OS/2 implementation of JFS (IBM AIX Journaling File System)] |
36H |
Officially listed as Reserved |
38H |
THEOS v3.2 (2GB partition) |
39H |
Plan 9 partition
(Plan 9 is an operating system developed at Bell Labs for many architectures. Originally Plan 9 used an unallocated portion at the end of the disk. 3rd edition of Plan 9 uses partitions of type 39H, subdivided into sub partitions described in the Plan 9 partition table in the second sector of the partition.) |
39H |
THEOS v4 spanned partition |
3aH |
THEOS v4 (4GB partition) |
3bH |
THEOS v4 Extended partition
(THEOS is a multi-user multitasking Operating System for PCs founded by Timothy Williams in 1983.) |
3cH |
PartitionMagic recovery partition
(When a PowerQuest product like Partition Magic or Drive Image makes changes to the disk, it first changes the type flag to 3CH so that the Operating System will not try to modify it. At the end of the process, it is changed back to what it was at first. Therefore the only time you can see a 3CH type flag, is if the process was interrupted somehow such as power off, user reboot etc. If you change it back manually with a partition table editor or any disk editing program then most of the time everything is okay.) |
3dH |
Hidden NetWare |
40H |
Venix 80286
(It is a very old Unix-like operating system for PCs.) |
41H |
Linux/MINIX (sharing disk with DR-DOS)
(DR-DOS stands for Digital Research-Disk Operating System.) |
41H |
Personal RISC Boot |
41H |
PPC PReP (Power PC Reference Platform) Boot Partition |
42H |
Linux swap (sharing disk with DR-DOS) |
42H |
SFS (Secure File System)
(SFS is an encrypted file System driver for DOS on 386+ PCs, written by Peter Gutmann.) |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
42H |
Windows 2000 Dynamic Extended Partition Marker
(If a partition table entry of type 42H is present in the legacy partition table, then Windows 2000 ignores the legacy partition table and uses a proprietary partition table and a proprietary partitioning scheme (LDM or DDM). Pure dynamic disks (those not containing any hard-linked partitions) have only a single partition table entry, type 42H to define the entire disk. Dynamic disks store their volume configuration in a database located in a 1-MB private region at the end of each dynamic disk.) |
43H |
Linux native (sharing disk with DR-DOS) |
44H |
GoBack partition
(GoBack is a utility that records changes made to the disk, allowing you to view or go back to some earlier state. It takes over disk I/O like a Disk Manager would, and stores its logs in its own partition.) |
45H |
Boot-US boot manager
(Boot-US (Ulrich Straub) boot manager can be installed to MBR, a separate primary partition or diskette. When installed to a primary partition this partition gets the ID 45H. This partition does not contain a file system, it contains only the boot manager and occupies a single cylinder (below 8.4 GB). ) |
45H |
Priam |
45H |
EUMEL/Elan |
46H |
EUMEL/Elan |
47H |
EUMEL/Elan |
48H |
EUMEL/Elan
(EUMEL, later known as Ergos L3, are the multi-user multitasking systems developed by Jochen Liedtke at GMD, using Elan programming Language. It was used at German schools for the computer science education.) |
4aH |
AdaOS Aquila |
4aH |
ALFS/THIN lightweight filesystem for DOS |
4cH |
Oberon partition |
4dH |
QNX4.x |
4eH |
QNX4.x 2nd partition |
4fH |
QNX4.x 3rd partition
(QNX is a POSIX (Portable Operating System Interface for Unix)-certified, microkernel, distributed, fault-tolerant Operating System for the 386 and later, including support for the 386EX in embedded applications.) |
4fH |
Oberon boot/data partition |
50H |
OnTrack Disk Manager (older versions), Read-Only Partition (Disk Manager is a program of OnTrack to enable people to use IDE disks that are larger than 504MB under DOS. Linux kernel versions older than 1.3.14 do not coexist with DM.) |
50H |
Lynx RTOS (Real-Time Operating System)
(Lynx RTOS gives users the ability to place up to 14 partitions of 2 GB each on both SCSI and IDE drives, for a total of up to 28 GB of file system space.) |
50H |
Native Oberon |
51H |
OnTrack Disk Manager (DM6.0 Aux1), Read/Write Partition |
51H |
Novell |
52H |
CP/M |
52H |
Microport SysV/AT or Microport System V/386 |
53H |
OnTrack Disk Manager (DM6.0 Aux3), Write-Only partition |
54H |
OnTrack Disk Manager 6.0 Dynamic Drive Overlay |
55H |
EZ-Drive Partition
(EZ-Drive is another disk manager like program developed by MicroHouse in 1992. Now It is marketed by StorageSoft.) |
56H |
Golden Bow VFeature Partitioned Volume.
(This is also a Disk Manager like Utility software. This is a Non-Standard DOS Volume.) |
56H |
DM converted to EZ-BIOS |
57H |
DrivePro
(DrivePro was developed by MicroHouse in 1992. Now It is marketed by StorageSoft.) |
57H |
VNDI Partition |
5cH |
Priam EDisk Partitioned Volume
(Priam EDisk is Disk Manager type utility software. This is a Non-Standard DOS Volume.) |
61H |
SpeedStor
(Storage Dimensions SpeedStor Partitioned Volume. This is a Non-Standard DOS Volume. It is Disk Manager type utility software.) |
63H |
Unix System V/386, 386/ix, SCO, ISC Unix, UnixWare, Mach, MtXinu BSD 4.3 on Mach, GNU Hurd |
64H |
Novell NetWare 286, 2.xx |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
64H |
PC-ARMOUR protected partition
(64H is used by PC-ARMOUR disk protection by Dr. A. Solomon, intended to keep the disk inaccessible until the right password was given and then an INT 13H hook was loaded above top-of-memory that showed C-H-S = 0-0-2, with a copy of the real partition table, when 0-0-1 was requested). |
65H |
Novell NetWare 3.86, 3.xx or 4.xx
(Novell Netware 3.0 and later versions use one partition per drive. It allocates logical Volumes inside these partitions. The volumes can be split over several drives. The file system used is called Turbo FAT and it only very vaguely resembles the DOS FAT file system. Novell Netware used to be the main Network Operating System available. Netware 68 or S-Net (1983) was for a Motorola 68000, Netware 86 for an Intel 8086 or 8088. Netware 286 was for an Intel 80286 and existed in various versions that were later merged to Netware 2.2. Netware 386 was a rewrite in C for the Intel 386 which was later renamed to Netware 3.x (3.0, 3.1, 3.10, 3.11 and 3.12 etc) versions. Its successor Netware 4.xx had versions 4.00, 4.01, 4.02, 4.10 and 4.11. Then came Intranetware) |
66H |
Novell Netware SMS Partition
(SMS stands for Storage Management Services. It is not used now.) |
67H |
Novell |
68H |
Novell |
69H |
Novell Netware 5+ and Novell Netware NSS Partition
(NSS stands for Novell Storage Services.) |
70H |
DiskSecure Multi-Boot |
71H |
Officially listed as reserved |
73H |
Officially listed as reserved |
74H |
Officially listed as reserved |
74H |
Scramdisk partition
(Scramdisk is a disk encryption software. It supports container files, dedicated partitions type 74H and disks hidden in WAV audio files.) |
75H |
IBM PC/IX |
76H |
Officially listed as reserved |
77H |
M2FS/M2CS partition |
77H |
QNX 4.x |
78H |
XOSL File System
(XOSL Boot loader file system) |
78H |
QNY 4.x |
79H |
QNZ 4.x |
7EH |
F.I.X. |
7Fh |
Alt-OS-Development Partition Standard |
80H |
Old MINIX, MINIX v1.1 to v1.4a |
81H |
MINIX 1.4b and Later
(MINIX is a Unix-like operating system written by Andy Tanenbaum and students at the Vrije University, Amsterdam, around 1989-1991. It runs on PCs (8086 and up), Macintosh, Atari, Amiga, Sparc. |
81H |
Early Linux |
81H |
Mitac Advanced Disk Manager |
82H |
Prime |
82H |
Solaris x86
(Solaris creates a single partition with ID 82H and then uses Sun disk labels within the partition to split it further.) |
82H |
Linux Swap partition |
83H |
Linux Native Partition or Linux native file system or Linux Ext2fs
(Linux is a Unix-like operating system written by Linus Torvalds and many others on the internet since 1991. It runs on PCs 386 and later and a variety of other hardware. It is distributed under GPL (General Public License) . Various file system types like xiafs, ext2, ext3, reiserfs, etc. all use ID 83H.) |
84H |
OS/2 hidden C: drive or OS/2-renumbered type 04 partition.
(OS/2-renumbered type 04h partition is related to hiding DOS C: drive) |
84H |
Hibernation partition
(Reported for various laptop models, e.g., used on Dell Latitudes (with Dell BIOS) that use the MKS2D utility.) |
85H |
Linux Extended partition |
86H |
Old Linux RAID partition super block |
86H |
FAT16 volume/stripe set (Windows NT) or NTFS volume set
(It is Legacy Fault Tolerant FAT16 volume.) |
87H |
HPFS Fault-Tolerant mirrored partition or NTFS volume set or NTFS volume/stripe set
(Legacy Fault Tolerant NTFS volume. HPFS Fault-Tolerant mirrored partition. ) |
8aH |
Linux Kernel Partition
(It is used by AiR-BOOT) |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
8bH |
Legacy Fault Tolerant FAT32 volume |
8cH |
Legacy Fault Tolerant FAT32 volume using BIOS Extended INT 13H. |
8dH |
Free FDISK hidden Primary DOS FAT12 partition
(Free FDISK is the FDISK used by FreeDOS. It hides types 01H, 04H, 05H, 06H, 0BH, 0CH, 0EH and 0FH by adding decimal Number 140 (8CH).) |
8eH |
Linux Logical Volume Manager partition |
90H |
Free FDISK hidden Primary DOS FAT16 partition |
91H |
Free FDISK hidden DOS extended partition |
92H |
Free FDISK hidden Primary DOS large FAT16 partition |
93H |
Hidden Linux native partition |
93H |
Amoeba file system |
94H |
Amoeba bad block table
(Amoeba is a distributed operating system written by Andy Tanenbaum, together with Frans Kaashoek, Sape Mullender, Robert van Renesse and others since 1981. It runs on PCs (386 and up), Sun3, Sparc, 68030. It is free for universities for research and teaching purposes.) |
95H |
MIT EXOPC native partition |
97H |
Free FDISK hidden Primary DOS FAT32 partition |
98H |
Free FDISK hidden Primary DOS FAT32 partition (LBA) |
99H |
Mylex EISA SCSI or DCE376 logical drive
(It is used by the Mylex DCE376 EISA SCSI adaptor for partitions which are beyond the 1024 cylinder of a drive.) |
9aH |
Free FDISK hidden Primary DOS FAT16 partition (LBA) |
9bH |
Free FDISK hidden DOS extended partition (LBA) |
9fH |
BSD/OS |
a0H |
Phoenix NoteBIOS Power Management "Save-to-Disk" partition or Laptop hibernation partition
(It is Reported for various laptops like IBM Thinkpad, Phoenix NoteBIOS, Toshiba under names like zero-volt suspend partition, suspend-to-disk partition, save-to-disk partition, power-management partition, hibernation partition, usually at the start or end of the disk area.) |
a1H |
Laptop hibernation partition
(Used as "Save-to-Disk" partition on a NEC 6000H notebook. Types A0H and A1H are used on systems with Phoenix BIOS. The Phoenix PHDISK utility is used with these.) |
a1H |
HP Volume Expansion (SpeedStor variant) |
a3H |
Officially listed as Reserved |
a4H |
Officially listed as Reserved |
a5H |
BSD/386, 386BSD, NetBSD, FreeBSD
(386BSD is a Unix-like operating system, a port of 4.3BSD Net/2 to the PC done by Bill Jolitz around 1991.) |
a6H |
OpenBSD
(OpenBSD, led by Theo de Raadt, split off from NetBSD. It tries to emphasize on security.) |
a7H |
NEXTSTEP
(NEXTSTEP is Based on Mach 2.6 and features of Mach 3.0. It is a true object-oriented operating system and user environment. |
a8H |
Mac OS-X
(Apple's OS-X uses this type for its file system partition) |
a9H |
NetBSD |
aaH |
Olivetti Fat 12 1.44MB Service Partition
(It Contains a bare DOS 6.22 and a utility to exchange types 06H and AAH in the partition table.) |
abH |
Mac OS-X Boot partition
(Apple's OS-X (Darwin Intel) uses this type for its boot partition.) |
abH |
GO! partition |
aeH |
ShagOS file system |
afH |
ShagOS swap partition |
b0H |
BootStar Dummy
(The boot manager BootStar manages its own partition table, with up to 15 primary partitions. It fills unused entries in the MBR with BootStar Dummy values.) |
b1H |
Officially listed as Reserved |
b3H |
Officially listed as Reserved |
b4H |
Officially listed as Reserved |
b6H |
Officially listed as Reserved |
B6H |
Windows NT mirror set (master), FAT16 file system |
b7H |
BSDI file system (secondarily swap), BSDI BSD/386 file system |
B7H |
Windows NT mirror set (master), NTFS file system |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
b8H |
BSDI BSD/386 swap partition (secondarily file system)
(BSDI (Berkeley Software Design, Inc.) was founded by former CSRG (UCB Computer Systems Research Group) members. Their operating system, based on Net/2, was called BSD/386.) |
bbH |
Boot Wizard hidden |
beH |
Solaris 8 boot partition |
c0H |
DR-DOS/Novell DOS secured partition |
C0H |
CTOS |
c0H |
REAL/32 secure small partition |
c0H |
NTFT Partition |
c1H |
DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition |
c2H |
Reserved for DR-DOS 7+ |
c2H |
Hidden Linux |
c3H |
Hidden Linux swap |
c4H |
DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition |
c5H |
DRDOS/secured (Extended) |
c6H |
DRDOS/secured (FAT-16, >= 32M)
(DR-DOS 6.0 will add C0H to the partition type for a LOGIN.EXE - secured partition so that User can not avoid the password check by booting from an MS-DOS floppy. Otherwise it seems that the types C1H, C4H, C5H, C6H and D1H, D4H, D5H, D6H are used precisely like 1H, 4H, 5H, and 6H.) |
c6H |
Corrupted FAT16 volume/stripe set (Windows NT)
(NTFS will add C0H to the partition type for disabled parts of a Fault Tolerant set. Thus, one gets types C6H, C7H.) |
c7H |
Windows NT corrupted NTFS volume/stripe set |
c7H |
Syrinx boot |
c8H |
Officially listed as Reserved |
c9H |
Officially listed as Reserved |
caH |
Officially listed as Reserved |
cbH |
Reserved for DR-DOS secured FAT32 |
ccH |
Reserved for DR-DOS secured FAT32 (LBA) |
cdH |
CTOS Memdump |
ceH |
Reserved for DR-DOS secured FAT16 (LBA) |
d0H |
REAL/32 secure big partition
(REAL/32 is a continuation of DR Multi-user DOS.) |
d1H |
Old Multi-user DOS secured FAT12 |
d4H |
Old Multi-user DOS secured FAT16 <32M |
d5H |
Old Multi-user DOS secured extended partition |
d6H |
Old Multi-user DOS secured FAT16 >=32M |
d8H |
CP/M-86 |
daH |
Non-FS Data |
dbH |
Digital Research CP/M, Concurrent CP/M, Concurrent DOS |
dbH |
CTOS (Convergent Technologies OS -Unisys) |
dbH |
KDG Telemetry SCPU boot
(KDG Telemetry uses ID DBH to store a protected-mode binary image of the code to be run on a 'x86-based SCPU (Supervisory CPU) module from the DT800 range.) |
ddH |
Hidden CTOS Memdump |
deH |
Dell PowerEdge Server utilities (FAT) |
dfH |
DG/UX virtual disk manager partition |
dfH |
BootIt EMBRM
(The boot manager BootIt manages its own partition table, with up to 255 primary partitions.) |
e0H |
Reserved by ST Microelectronics for a file system called ST AVFS. |
e1H |
DOS access or SpeedStor 12-bit FAT extended partition
(It is a SSTOR partition on cylinders more than 1023.) |
E2H |
DOS Read-Only |
e3H |
Storage Dimensions |
e4H |
SpeedStor 16-bit FAT extended partition < 1024 cylinders |
e5H |
Officially listed as Reserved |
e5H |
Tandy DOS with logical sectored FAT |
e6H |
Officially listed as Reserved |
ebH |
BeOS BFS (BFS1)
(BeOS is an operating system that runs on Power PCs) |
edH |
Reserved for Matthias Paul’s Sprytix |
eeH |
Indication that this legacy MBR is followed by an EFI Header |
efH |
Partition that contains an EFI file system |
f0H |
Linux/PA-RISC boot loader |
f1H |
Storage Dimensions |
f2H |
DOS 3.3+ secondary partition |
f2H |
Unisys DOS with logical sectored FAT |
f3H |
Officially listed as Reserved |
f4H |
SpeedStor large partition |
F4H |
Prologue single-volume partition |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
f5H |
Prologue multi-volume partition
(The type F4H partition contains one volume, and is not used anymore. The type F5H partition contains 1 to 10 volumes called MD0 to MD9. It supports one or more systems. Each volume can have as file system the NGF file system or TwinFS file system. ) |
f6H |
Officially listed as Reserved |
F6H |
Storage Dimensions SpeedStor |
faH |
MandrakeSoft's Bochs x86 emulator |
fbH |
VMware File System partition |
fcH |
VMware Swap partition
(VMware offers virtual machines in which one can run Linux, Windows, FreeBSD.) |
fdH |
Linux raid partition with auto detect using persistent super block |
feH |
SpeedStor more than 1024 cylinders |
feH |
LANstep |
feH |
IBM PS/2 IML (Initial Microcode Load) partition
(It is located at the end of the disk.) |
feH |
Windows NT Disk Administrator hidden partition
(Windows NT Disk Administrator marks hidden partitions, i.e. present but not to be accessed, as type FEH.) |
feH |
Linux Logical Volume Manager partition (old) |
ffH |
XENIX Bad Block Table |
Registro 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 disco rigido. La maggior parte delle applicazioni commerciali per il ripristino del disco sono in grado di rigenerare i record di avvio 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 in forma CHS possiamo dire C–H–S = 0–1–1 per la maggior parte delle unità.
Tuttavia, questa posizione può variare a seconda dell'SPT (Settori per traccia) del Drive. Ad esempio, su una vecchia unità da 245 MB con solo 31 SPT, il record di avvio si trovava nel 32° settore (settore assoluto 31).
Il DBR viene creato dal comando FORMAT di 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 utilizzando 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 ciascuna partizione DOS conterrà un record di avvio DOS (DBR) o un settore di avvio DOS. Il compito del DBR è caricare il sistema operativo dal disco rigido nella memoria principale del computer e dare il controllo del sistema al programma caricato.
Per fare ciò, 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 principale 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 rilassanti come,
“Invalid system disk or Disk I/O error,
Replace the disk, and then press any key…”
Sullo schermo e attende che l'utente inserisca un dischetto di avvio con i programmi sopra menzionati nell'unità floppy e prema un tasto.
Dato che il floppy non ha partizioni, quindi non ha MBR o Master Partition Table nel suo settore assoluto 0, invece contiene il DBR nel suo primissimo settore.
La tabella seguente fornisce una semplice mappa 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 della FAT, la Root Directory e l'inizio dell'Area Dati:
Logical Map of 3½ Inches, 1.44 MB floppy disk, Formatted with the FAT12 File System and having 18 Sectors Per Track, 80 Tracks, 2 Sides and 512 bytes per Sector (using 1 Sector per Cluster). |
Absolute Sectors |
Contents |
0 |
Boot Record |
1 – 9 |
FAT 1 |
10 – 18 |
FAT 2 |
19 – 32 |
Root Directory |
33 – 2879 |
Data Area |
Puoi anche creare sottodirectory nell'Area Dati con i file che sembrano essere contenuti al loro interno. In effetti, 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 ciascun file come la posizione del cluster iniziale di ciascun file, la data, l'ora e la 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 ad esempio:
- Codice salto + NOP
- Nome e versione OEM
- Byte per settore
- Settori per cluster
- Settori Riservati
- Numero di copie di FAT
- Numero massimo di voci nella directory principale (ma non disponibile per FAT32)
- Numero di settori nella partizione inferiore a 32 MB (quindi non disponibile per FAT32)
- Descrittore supporto (F8h per dischi rigidi)
- Settori per FAT (nei vecchi sistemi FAT e non disponibile per FAT32)
- Settori per traccia
- Numero di capi
- Numero di settori nascosti nella partizione
- Numero di settori in partizione
- Numero di settori per FAT
- FAT Descrittore informazioni Flag
- Versione di FAT32 Drive
- Numero del cluster dell'inizio della directory principale
- Numero di settore del settore delle informazioni sul file system
- Numero di settore del settore di avvio di backup
- Riservato
- Numero unità logica di partizione
- Firma estesa (29H)
- Numero di serie della partizione
- Nome volume della partizione
- Nome FAT
- Codice eseguibile
- Segnalino 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 in 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).
Seguendo 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. Questo è 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 blocco dei parametri del disco è un'area dati molto importante per DOS. Aiuta il DOS a trovare:
- Byte per settore
- Settori per cluster
- Settori Riservati
- Numero di FAT
- Numero di voci della directory principale
FAT32 DOS Boot Record Format |
Offset |
Description |
Size |
00H |
Jump Code + NOP |
3 Bytes |
03H |
OEM Name and Version |
8 Bytes |
0BH |
Bytes Per Sector |
2 Bytes |
0DH |
Sectors Per Cluster |
1 Byte |
0EH |
Reserved Sectors |
2 Bytes |
10H |
Number of Copies of FAT |
1 Byte |
11H |
Maximum Root Directory Entries (but Not Available for FAT32) |
2 Bytes |
13H |
Number of Sectors in Partition Smaller than 32MB (Therefore Not Available for FAT32) |
2 Bytes |
15H |
Media Descriptor (F8H for Hard Disks) |
1 Byte |
16H |
Sectors Per FAT (In Older FAT Systems and Not Available for FAT32) |
2 Bytes |
18H |
Sectors Per Track |
2 Bytes |
1AH |
Number of Heads |
2 Bytes |
1CH |
Number of Hidden Sectors in Partition |
4 Bytes |
20H |
Number of Sectors in Partition |
4 Bytes |
24H |
Number of Sectors Per FAT |
4 Bytes |
28H |
Flags (Bits 0-4 Indicate Active FAT Copy) (Bit 7 Indicates whether FAT Mirroring is Enabled or Disabled <Clear is Enabled>) (If FAT Mirroring is Disabled, the FAT Information is only written to the copy indicated by bits 0-4) |
2 Bytes |
2AH |
Version of FAT32 Drive (High Byte = Major Version, Low Byte = Minor Version) |
2 Bytes |
2CH |
Cluster Number of the Start of the Root Directory |
4 Bytes |
30H |
Sector Number of the File System Information Sector (Referenced from the Start of the Partition) |
2 Bytes |
32H |
Sector Number of the Backup Boot Sector (Referenced from the Start of the Partition) |
2 Bytes |
34H |
Reserved |
12 Bytes |
40H |
Logical Drive Number of Partition |
1 Byte |
41H |
Unused (Could be High Byte of Previous Entry) |
1 Byte |
42H |
Extended Signature (29H) |
1 Byte |
43H |
Serial Number or 32 – Bit Binary ID of Partition
(Binary ID of 32 Bits provided by the OS itself) |
4 Bytes |
47H |
Volume Name of Partition |
11 Bytes |
52H |
FAT Name (FAT32 in this case) |
8 Bytes |
5AH |
Executable Code |
420 Bytes |
1FEH |
Executable Marker or Magic Number (AAH 55H) |
2 Bytes |
- Settori totali nel volume logico (piccolo, per dimensioni del volume logico inferiori o uguali a 32 MB)
- Byte descrittore multimediale
- Numero di settori per FA
Queste informazioni ci aiutano a trovare la posizione di FAT e alcuni altri valori importanti. L'inserimento di informazioni errate qui o il danneggiamento di questi valori rende impossibile l'avvio dal disco rigido. A volte avere informazioni errate nel blocco dei parametri del disco impedirà l'avvio dall'unità disco rigido e dall'unità disco floppy.
I byte per settore sono quasi sempre 512. Se non è così anche allora deve essere una potenza intera di 2 (ad es. 64, 128 e 256).
Il numero di settori per cluster dipende dalle dimensioni del cluster. (Vedere la sezione Cluster fornita in questo capitolo in precedenza). Il numero di copie di FAT è quasi sempre 2.
Numero di directory principali: dipende dal file system e dalla dimensione del volume. (Vedi i limiti del file system forniti prima e la descrizione della directory principale fornita di seguito).
Numero totale di settori: esclude i settori nascosti. Se è 0 nel BPB, viene utilizzato il campo nelle informazioni sul 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 della 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 normali unità floppy 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 testata del primo cilindro è solitamente riservata alla tabella delle partizioni, anche se è solo il primo settore effettivamente utilizzato.
Descrittore supporto: utilizzato per fornire un'indicazione del supporto o del tipo di disco. I valori normali sono 0 per una partizione DOS estesa e F8H per un disco rigido. I valori di Media Descriptor Byte sono stati forniti nella tabella seguente.
Media Descriptors |
Type |
Capacity |
Size and type |
F0H |
2.88 MB |
3.5", 2-Sided, 36 Sectors per Track |
F0H |
1.44 MB |
3.5", 2-Sided, 18 Sectors per Track |
F9H |
720 KB |
3.5", 2-Sided, 9 Sectors per Track |
F9H |
1.2 MB |
5.25", 2-Sided, 15 Sectors per Track |
FDH |
360 KB |
5.25", 2-Sided, 9 Sectors per Track |
FFH |
320 KB |
5.25", 2-Sided, 8 Sectors per Track |
FCH |
180 KB |
5.25", 1-Sided, 9 Sectors per Track |
FEH |
160 KB |
5.25", 1-Sided, 8 Sectors per Track |
F8H |
--------- |
Fixed Disk |
Numero di Settori di FAT: Deve essere calcolato. Il metodo per calcolare la dimensione del FAT è stato fornito nella descrizione del FAT data nel capitolo.
Il DBR di un File System FAT32 è stato riportato nella figura seguente:
Settori per traccia (o settori per capo): i settori per capo è il numero di settori raggruppati sotto un capo. Allo stesso modo, Teste per cilindro riflette il numero di cilindri per testa. Se questa partizione è una partizione CHS, questi valori devono essere gli stessi di quelli restituiti dal BIOS. Se non sono uguali, 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 prima dell'inizio del volume, prima del settore di avvio stesso. Viene utilizzato durante la sequenza di avvio per calcolare l'offset assoluto rispetto alla directory principale e alle aree dati. Consideralo 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 danneggiato e la partizione inutilizzabile. Nota anche che la parola alta di solito contiene spazzatura nelle vecchie versioni di DOS.
Se sospetti che un Boot Sector sia danneggiato, puoi controllare molti dei campi sopra elencati per vedere se i valori elencati hanno un senso.
Ad esempio, i byte per settore saranno 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 di I/O del disco.", "Sostituire il disco, quindi premere un tasto qualsiasi", "Disco non di sistema o errore del disco", "Sostituisci e premi un tasto qualsiasi quando sei pronto." 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 "Inserisci un altro disco."
Ma ricorda che non dovresti considerare questo elenco come tutto compreso. Se trovi altri messaggi nel settore di avvio, ciò non indica necessariamente che c'è un problema con il settore di avvio. Versioni diverse di MS-DOS e Windows NT possono talvolta avere stringhe di messaggi leggermente diverse nei loro settori di avvio.
D'altra parte, se non trovi alcun testo, o se il testo chiaramente non è correlato a MS-DOS o Windows NT, dovresti considerare la possibilità che il tuo settore di avvio possa essere stato infettato da un virus o che alcuni potrebbe essersi verificata un'altra forma di danneggiamento dei dati.
Per eseguire il ripristino da un settore di avvio che è stato infettato da un virus, di solito è meglio utilizzare un programma antivirus commerciale. Molti virus e trojan faranno molto di più della semplice scrittura di 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 causare più danni che benefici. Comunque ci occuperemo di DBR nella sezione di programmazione di questo libro.
Se sospetti che il settore di avvio sia stato danneggiato per qualche altro motivo, potrebbe essere possibile ripristinare il settore di avvio danneggiato senza riformattare l'unità modificando manualmente i campi sopra descritti. In questo libro cercheremo di superare tali problemi con la programmazione in tecniche di programmazione di recupero.
Tabella di allocazione dei file (FAT)
Di seguito DBR sono le tabelle di allocazione dei file. La File Allocation Table (FAT) è stata introdotta nel 1977 per archiviare i dati su floppy disk per Microsoft Disk Basic autonomo. Il FAT è stato modificato più volte per soddisfare esigenze in espansione. È stato sviluppato per soddisfare i requisiti di un sistema veloce e flessibile per la gestione dei dati sia su supporti 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 viene comunemente utilizzato il file system FAT32.
Il primo file system FAT DOS (DOS 1.x) utilizzava un sistema FAT a 12 bit che è ancora in uso oggi per i floppy disk. DOS 2.x ha aggiunto il supporto per i dischi rigidi, è passato alle voci FAT a 16 bit a causa dei volumi più grandi.
Intorno al 1987, DOS 4.0 ha cambiato la gestione dei settori di basso livello per utilizzare parametri a 32 bit per superare il problema del supporto del disco di grandi dimensioni poiché abbiamo già discusso dei limiti dei file system.
FAT mantiene una mappa dell'intera superficie dell'unità disco in modo tale che, quale area è libera, quale area è danneggiata, quale area è occupata da quale file, ecc. Quando è necessario accedere ad alcuni dati archiviati sulla superficie del disco , il DOS consulta la FAT per scoprire le aree della superficie del disco rigido che contengono i dati.
Il tipo di FAT da utilizzare viene deciso dal programma FDISK durante la partizione del disco rigido. Ma la FAT effettiva è scritta dal programma FORMAT di DOS.
Il FAT non tiene traccia di ogni singolo settore sulla superficie del disco, ma gestisce l'area del disco in un gruppo di settori chiamato "cluster" o "unità di allocazione" (vedi il Cluster discusso prima, nello stesso capitolo) .
Un cluster è la più piccola unità di spazio su disco rigido che DOS alloca a un file, è costituito da uno o più settori a seconda delle dimensioni dell'unità. La dimensione del cluster viene decisa e fissata dal programma DOS FORMAT durante la formattazione di alto livello del disco rigido. (Vedi la discussione sulla "dimensione dei cluster", fornita prima)
In realtà, il FAT è un indice dei cluster dell'intero volume. Il FAT ha una voce per ogni cluster. Le prime due voci in una FAT contengono informazioni sulla FAT. La terza e le successive voci nella FAT sono assegnate a cluster di spazio su disco, a partire dal primo cluster disponibile per l'uso da parte dei file
Poiché la FAT è un elemento così importante, DOS conserva due copie della FAT, FAT o FAT1 primaria e FAT o FAT2 secondaria (normalmente ci sono due copie, tuttavia molti nuovi sistemi operativi creano più di due copie di FAT).
Ogni FAT occupa settori contigui sul disco, con la 2a FAT immediatamente successiva alla 1a FAT non fa utilizzare al DOS la 2a FAT per correggere il problema, invece quando la 1a FAT viene aggiornata il DOS la copia nella 2a FAT, corrompendo la Anche 2nd FAT, nel processo.
Questo aggiornamento viene eseguito ogni volta che DOS rileva che la prima e la seconda FAT non corrispondono. Quindi, in caso di danneggiamento della 1a FAT, si dovrebbe eseguire immediatamente la riparazione utilizzando alcuni software di editor 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 distinti valori a 32 bit moltiplicati per 512 byte per settore che producono 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 maggiore ospita il numero maggiore 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 questi byte vengono ora utilizzati per ospitare i byte aggiuntivi necessari per specificare il cluster iniziale in FAT32.
Come abbiamo già discusso, esistono versioni di FAT a 12 bit, 16 bit e 32 bit. Mentre la FAT a 32 bit consente uno storage molto più efficiente che può essere fino al 30% più efficiente e l'utilizzo di dischi rigidi più grandi.
Quando il file system di un sistema operativo viene invocato 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.
FAT32 Drive Layout |
Offset |
Description |
Start of Partition |
Boot Sector |
Start of Partition + Number of Reserved Sectors |
FAT Tables |
Start of Partition + Number of Reserved Sector + (Number of Sectors Per FAT * 2)
[Assuming that FAT Mirroring is Enabled, this is almost always true] |
Root Directory |
Start of Partition + Number of Reserved Sectors + (Number of Sectors Per FAT * 2) + Number of Sectors in root directory |
Data Area |
Le voci FAT possono contenere valori che indicano:
- Il prossimo cluster in una catena FAT per un determinato file
- I cluster gratuiti, ovvero i cluster non utilizzati da alcun file
- Le informazioni sui settori danneggiati, ovvero il cluster contenente uno o più settori che sono fisicamente danneggiati e non devono essere utilizzati.
- Il cluster finale di un file
Entries of FAT Table |
Number (Hex.) |
Description |
0 |
Free cluster |
???? |
Cluster in use, next cluster in chain |
FF0-FF6 / FFF0-FFF6 |
Cluster is reserved |
FF7 /FFF7 |
Cluster contains bad sectors |
FF8-FFF / FFF8-FFFF |
End of file |
Ogni voce FAT rappresenta un indirizzo cluster e contiene un puntatore all'indirizzo cluster successivo (voce FAT) per il file. L'ultima voce FAT per un file contiene il valore del cluster finale anziché 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 del disco di cui è questa voce FAT.
La terza e le successive voci nella FAT vengono 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 vuole trasmettere.
A 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.
Valore da FF0H a FF7H in 12 – Bit FAT indica i cluster riservati. Un FF7H in un FAT a 12 bit o FFF7H in FAT a 16 bit indica che il cluster corrispondente alla posizione del FAT è un cluster danneggiato, ovvero si tratta fondamentalmente di un cluster contenente settori danneggiati. Questo cluster non viene 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'improprio: spegnimento
È una cosa molto comune e spero che tu l'abbia notato molte volte durante l'utilizzo di Windows che, se presente in modo improprio - Arresto del computer, dovuto a qualsiasi motivo come interruzione di corrente, danneggiamento del software, spegnimento accidentale ecc., quando riavviare ulteriormente il computer, il messaggio di Improper – Shutdown viene visualizzato sullo schermo durante il processo di avvio e il sistema operativo esegue la scansione del disco alla ricerca di errori.
Le prossime due figure mostrano i 256 byte dell'inizio di una FAT a 32 bit, tuttavia abbiamo bisogno solo di 8 byte iniziali per discuterne.
In realtà, quando il sistema operativo Windows si è caricato in memoria, ovvero Windows è stato avviato, l'8° 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 sta accedendo.
Una volta avviato l'avvio di Windows, l'ottavo byte viene modificato in 07H o F7H che verrà reimpostato su 0FH o FFH solo se Windows viene spento correttamente.
Se si verifica un'interruzione di corrente, o l'interruttore di alimentazione del computer viene spento accidentalmente o il sistema viene riavviato manualmente a causa di qualche problema software, questo byte rimarrà come 07H o F7H che informa il sistema operativo Windows quando successivo volta che viene avviato che si è verificato un qualche tipo di arresto improprio e quindi Windows utilizza il suo programma di scansione del disco (Scandisk) per verificare la presenza di errori nel disco.
Directory principale
Dopo l'ultima FAT c'è la directory principale. La directory principale è come un sommario per le informazioni memorizzate sul disco rigido. La posizione della directory principale può essere facilmente stabilita sommando i valori del record di avvio, poiché è posizionata seguendo le FAT.
L'area della directory conserva le informazioni sul nome del file, la data e l'ora della creazione del file, l'attributo del file, la dimensione del file e il cluster iniziale del file particolare. Ogni voce di directory che descrive queste informazioni su un file è un'informazione di 32 byte.
La directory principale contiene informazioni sui file e le directory che si diramano dalla directory principale. Tutte le altre directory vengono salvate come file, nello stesso formato della directory principale. In precedenza la directory principale era di dimensioni fisse e si trovava in una posizione fissa sul disco, ma ora è libera di crescere secondo necessità poiché ora è trattata come un file.
Il numero di file che è possibile archiviare nella directory principale dipende dal tipo di FAT utilizzato. Ad esempio, per un floppy disk da 3½ pollici da 1,44 Mb con FAT a 12 bit, è limitato a 224 voci, se si tenta di memorizzare il 225° file DOS visualizzerà un "Errore di creazione file". Quando viene utilizzata una FAT a 16 bit, è possibile avere un totale di 512 voci nella directory principale. Ciascuna directory principale su un floppy o su un disco rigido, funge anche da voce della directory principale.
La tabella seguente elenca i limiti delle voci radice per diversi media e FAT:
Media and File System Description |
Maximum Root Directory Entries |
Single-sided 5¼ Inch 180K FDD |
64 |
Double-sided 5¼ Inch 320K FDD |
64 |
Double-sided 5¼ Inch 360K FDD |
112 |
Double-sided 3½ Inch 720K FDD |
112 |
Double-sided 5¼ Inch 1.2-megabyte FDD |
224 |
Double-sided 3½ Inch 1.44-megabyte FDD |
224 |
Double-sided 3½ Inch 1.68-megabyte DMF format disks (This is why Microsoft created CAB Files!) |
16 |
Double-sided 3½ Inch 2.88-megabyte FDD |
240 |
Hard Drives (FAT12 & FAT16) |
512 |
Hard Drives with FAT 32 (As it treats the route directory as a file) |
65,536 |
Ciò non significa che con FAT a 16 bit ci si limiti a memorizzare solo 512 file sul disco rigido. È possibile utilizzare le sottodirectory per archiviare un numero qualsiasi di file limitato solo dalla dimensione dell'unità.
Ricorda che l'etichetta del volume per un floppy è solitamente memorizzata all'interno del settore di avvio, ma l'etichetta del volume per un disco rigido è archiviata come voce della directory principale e lo spazio riservato nel settore di avvio viene lasciato vuoto con spazi. Il comando DIR di DOS restituisce quello nella directory se presente, o quello nel settore di avvio in caso contrario.
Le voci della directory contengono la voce nella catena di cluster e il nome del file. Pertanto le voci di directory più importanti sono della directory principale, perché contiene indici di cluster che puntano a tutte le sottodirectory.
Tutte le directory contengono due voci, "." per Directory corrente (questa sottodirectory) e ".." per la directory principale (directory principale di questa sottodirectory). Possiamo tenere traccia di queste voci facilmente poiché saranno sempre posizionate all'inizio di un cluster se il cluster contiene una directory.
La tabella seguente mostra il formato di una voce di directory nella directory principale. La tabella riportata di seguito mostra come vengono suddivisi i 32 byte della voce di directory di un file nella directory principale per memorizzare le varie informazioni su di esso:
Offset |
Size |
Description |
00H |
8 Bytes |
Filename
(Also see the next table for the special meaning of first character of file name) |
08H |
3 Bytes |
Extension |
0BH |
1 Byte |
File attributes(See The Table Of File Attributes) |
0CH |
10 Bytes |
Reserved |
16H |
2 Bytes |
Time Created or Last Updated (See Date–Time Format Table) |
18H |
2 Bytes |
Date Created or Last Updated (See Date–Time Format Table) |
1AH |
2 Bytes |
Starting or First cluster of file
(The value 0000H is used in Parent Directory ('..') entries to indicate that the Parent Directory is the Root Directory) |
1CH |
4 Bytes |
File size in Bytes. |
Nome file contiene il nome in maiuscolo e se la dimensione del nome file è inferiore agli 8 caratteri gli spazi vengono riempiti con caratteri spazio ASCII numero 32. Il campo Estensione contiene l'estensione del file, in maiuscolo.
Se il nome del file è più lungo degli 8 caratteri, Windows crea un nome file breve 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 sono archiviati in voci di directory LFN (Long File Name) da 32 byte appositamente formattate contrassegnate con byte di attributi impostati su 0FH. Per un determinato file o sottodirectory, un gruppo di una o più voci di directory con nome file lungo 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 raggruppa tutte le stringhe necessarie per comprendere un nome file lungo intero.
Questa è la causa, perché i nomi di file lunghi riducono il numero massimo possibile di voci di directory radice in un file system. Come Windows supporta i nomi di file lunghi, 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 tabella seguente:
First Character of File Name |
Value |
Meaning |
00H |
Indicates that this directory entry is unused. |
05H |
Indicates that 1st character of filename is character E5H But actually the file has not been deleted. (See the Meaning of E5H) |
E5H |
The file has been Erased and this directory entry is a deleted file’s directory entry. The data area previously occupied by that file is now free for allocation for another new file. |
2EH |
This is a Sub-directory. The cluster number field of this entry will contain the cluster number of the directory. |
2EH 2EH |
Two 2EH in a directory entry indicate the parent directory entry of a Sub–Directory. The cluster number of this entry will contain the cluster number of the parent directory of this directory. The cluster number will be zero 0000H if the parent directory is root directory. |
The Attributes è un campo con codice binario a 8 bit. La tabella seguente indica lo stato per il flag degli attributi per il file specificato:
Attribute Bits |
Attribute |
Bit |
Binary |
Hex |
Read Only File Flag |
0 |
.......? |
01H |
Hidden File Flag |
1 |
......?. |
02H |
System File Flag |
2 |
.....?.. |
04H |
Volume Label Flag
(Indicates that the entry is a volume label) |
3 |
....?... |
08H |
Sub–directory
(in same format as directory) |
4 |
...?.... |
10H |
Archive Bit
(File Modified Since Last Backup) |
5 |
..?..... |
20H |
Reserved (Contains 0) |
6 |
.0...... |
- |
Reserved (Contains 0) |
7 |
0....... |
- |
Un file può avere più attributi. Ad esempio, un singolo file può essere un file di sola lettura o un file nascosto o un singolo file può avere entrambi gli attributi, il file di sistema e il file nascosto. (Vedi l'esempio fornito di seguito per la codifica delle voci di directory).
Ora e data è un campo appositamente codificato di 32 bit (16 bit di ora e 16 bit di data). La suddivisione di questi Bit di codifica 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 relativa all'ora di creazione o all'ultimo aggiornamento del file, ovvero il 16° e il 17° byte nella voce della directory, ha il formato indicato nella tabella sopra. La codifica è la seguente:
- H è un numero binario per 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 secondi con incrementi di 2 secondi
- La voce per 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 dal 1980 al 2107
- M è il numero binario per 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 del cluster. Una volta che il DOS ha il valore del cluster iniziale di qualsiasi file dalla directory, il DOS può scoprire il file completo usando la FAT. L'Entry Cluster nella catena è il primo cluster che compone il file. Se il flag di directory degli attributi è impostato, questo campo punta a una nuova voce di directory.
La voce di Dimensione del file è 4 byte. Con questo possiamo calcolare come FAT32 supporta la dimensione massima di un file fino a 4.294.967.295 Byte che è di circa 4 GiB. I 4 byte hanno 32 bit e la dimensione massima possibile del file composta da qualsiasi binario a 32 bit potrebbe essere,
= 11111111 11111111 11111111 11111111 (B) Bytes
= 4,294,967,295 (D) Bytes
~ 4 GiB
Quindi FAT32 supporta la dimensione massima del file fino a 4 GiB.
La dimensione del file e il cluster di file iniziale possono essere una risorsa preziosa per il recupero dei dati durante il ripristino di file danneggiati poiché possiamo calcolare di quanti cluster dovrebbe essere costituito il file.
La figura precedente mostra la voce della directory principale per sette file diversi. La codifica di queste voci è stata fornita nella tabella seguente:
Nome file lungo (LFN)
Come abbiamo già discusso in precedenza in Discussione sulla directory principale, in precedenza la directory principale era fissata in termini di dimensioni e situata in una posizione fissa sul disco, ma ora è libera di crescere secondo necessità poiché ora è trattata come un file.
Questo è molto importante per i nomi di file lunghi perché ogni nome di file lungo utilizza più voci di directory. Aggiungere il supporto per nomi di file lunghi a un sistema operativo che utilizza 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 meno recenti, che si aspettano di ricevere non più di 11 caratteri, si arresteranno in modo anomalo perché un programma deve mettere da parte la memoria per memorizzare i nomi di file che legge e se lo mette da parte 16 byte per un nome file e il sistema operativo copia (diciamo) 32 caratteri in quello spazio, quindi altri dati vengono sovrascritti. Un modo sicuro per interrompere un'applicazione è copiare dati casuali nel suo spazio dati.
Per superare questo problema, è stata trovata una soluzione intelligente in Windows 95, al problema di supportare nomi di file lunghi preservando la compatibilità con le versioni precedenti di applicazioni DOS e Windows.
Quando la maggior parte delle applicazioni (ad eccezione delle utilità disco di basso livello come Norton Disk Doctor) interroga il sistema per i nomi di file e sottodirectory, non lo fa leggendo le voci di directory direttamente dal disco, ma utilizzando le funzioni di enumerazione integrate in il sistema operativo.
Come sappiamo, una voce di directory è contrassegnata con la combinazione di bit degli attributi di sola lettura, nascosto, etichetta di sistema e volume. Probabilmente, se l'attributo byte di Directory Entry contiene il valore 0FH, le funzioni di enumerazione integrate in tutte le versioni esistenti di DOS e tutte le versioni precedenti a Windows 95 di Windows salteranno quella voce di directory come se non fosse presente.
Quindi, la soluzione era 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 nomi di file lunghi. I nomi di file brevi sono archiviati nei formati 8.3 in voci di directory convenzionali a 32 byte.
Abbiamo già discusso del fatto che Windows crea un nome file breve 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 sono archiviati in voci di directory LFN (Long File Name) a 32 byte appositamente formattate contrassegnate con byte di attributi impostati su 0FH. Per un determinato file o sottodirectory, un gruppo di una o più voci di directory di nome file lungo precede immediatamente la singola voce di directory 8.3 sul disco.
Ogni voce di directory Nome file lungo contiene fino a 13 caratteri del nome file lungo e il sistema operativo ne raggruppa tutte le stringhe necessarie per comprendere un nome file lungo intero.
Per una voce di directory di nome file lungo, i nomi dei file vengono archiviati in formato Unicode, che richiede 2 byte per carattere anziché 1 byte di ASCII. I caratteri del nome file sono distribuiti in 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 altri
- Voci di directory di nome file lungo associate allo stesso file.
Se un nome file lungo richiede tre voci di directory LFN, il numero di sequenza del primo sarà 1, quello del secondo sarà 2 e il numero di sequenza del terzo sarà 3 e Bit 6 del primo Byte del terzo la voce è impostata su 1 per indicare che è l'ultima voce della sequenza.
Il campo dell'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 fino a dopo aver esaminato il byte dell'attributo. Anche il campo del numero del cluster iniziale viene visualizzato nella stessa posizione, ma nelle voci della directory LFN il suo valore è sempre 0. Il campo dell'indicatore del tipo contiene anche 0 in ogni nome di file lungo.
Uno dei problemi con i nomi di file lunghi è che consumano più spazio su disco di quelli corti. Non è un grosso problema quando i nomi lunghi sono archiviati nelle sottodirectory, perché finché lo spazio su disco è disponibile, le sottodirectory possono aumentare per accogliere le voci di directory aggiunte, ma il numero massimo di voci di directory disponibili nella directory principale è fisso e i nomi di file lunghi vengono sprecati spazio nella directory principale di dimensioni limitate.
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 è stato assegnato un nome di 128 caratteri.
Il problema scompare per FAT32 anche perché la directory radice in FAT32 può crescere anche perché nel sistema FAT32 la directory radice è trattata come un File che può aumentare di dimensioni.
Area dati (o Area file)
Seguendo la directory principale inizia l'Area dati (o Area file). Piuttosto possiamo dire che il resto del volume dopo Root Directory è l'area dati.
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, quindi dovremmo tenere presente mentre eseguiamo vari calcoli che il numero di cluster dovrebbe iniziare da 2.
Quando formattiamo un 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 ripristino del disco rigido formattato accidentalmente, cosa che non è possibile in tutti i casi di disco floppy formattato accidentalmente. Come in Full Format by Windows, l'area Dati del Floppy viene riempita da 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 questo valore del puntatore è zero, quando alcune informazioni vengono scritte su un particolare cluster, quel numero di cluster viene memorizzato nel puntatore LCU.
Dopo questo, ogni volta che si devono scrivere le nuove informazioni, DOS cerca un cluster libero dal numero LCU in poi. Ciò costringe i nuovi dati scritti sul disco a rimanere contigui poiché i dati vengono scritti nella nuova area non utilizzata.
Ora la comprensione dei dati in caso di eliminazione accidentale sarebbe molto più semplice poiché il file si trova in un'area contigua sul disco. Una volta raggiunta la fine del disco o ripristinato il sistema, il valore del puntatore LCU viene riportato a zero.
Ma il problema non dura qui. Non è praticamente possibile che crei solo nuovi file sul tuo disco e non elimini o modifichi mai alcun file di quelli precedentemente memorizzati. L'utilizzo della sola LCU presenta problemi se si eseguono molte operazioni di creazione ed eliminazione di file poiché ciò costringerà i nuovi dati a spostarsi sempre più nelle tracce interne del disco rigido.
Quindi se un qualsiasi file, che era memorizzato nel 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 essere scritti nuovi dati su di essi. In questo modo, il sistema operativo non ha bisogno di spostare tutti i dati nelle tracce interne del disco.
Ma molta eliminazione e creazione di file frammenta i dati sul disco e questo provoca la frammentazione dei dati.
Dati frammentati e deframmentati
Abbiamo già discusso del fatto che ogni file nel disco viene archiviato come un elenco collegato di cluster in base al quale i dati contenuti in un file possono essere posizionati in qualsiasi punto del disco. Se hai un file da 10 MB archiviato su un disco che utilizza cluster da 4.096 byte, utilizza 2.560 cluster. Questi cluster possono trovarsi su tracce diverse, diversi piatti del disco, infatti possono essere ovunque.
Sebbene un file possa essere distribuito su tutto il disco, questa è tutt'altro che la situazione preferita. Il motivo è la performance lenta indesiderabile. I dischi rigidi sono dispositivi relativamente lenti, principalmente perché contengono parti meccaniche. Ogni volta che l'hard disk deve spostare le testine su una pista diversa, ci vuole un tempo equivalente a migliaia e migliaia di cicli del processore.
Pertanto, vogliamo ridurre al minimo il grado di diffusione di ciascun file sul disco. Nel caso ideale, ogni file sarebbe infatti completamente contiguo. Ciò significa che ogni cluster che utilizza verrebbe posizionato uno dopo l'altro sul disco. Ciò consentirebbe di leggere l'intero file, se necessario, senza molti movimenti meccanici da parte del disco rigido.
In realtà, il file system inizia con tutto o la maggior parte dei suoi file contigui ma, a causa della creazione e dell'eliminazione di file in un periodo di tempo, i dati sul disco diventano sempre più frammentati.
Facciamo un semplice esempio per capire la frammentazione. La tabella seguente rappresenta l'utilizzo dei 12 cluster. Inizialmente la tabella è vuota:
cluster 1 |
cluster 2 |
cluster 3 |
cluster 4 |
cluster 5 |
cluster 6 |
cluster 7 |
cluster 8 |
cluster 9 |
cluster 10 |
cluster 11 |
cluster 12 |
Ora supponiamo di creare quattro file, File A, B, C e D in questo disco. Il file A richiede 1 cluster, il file B ne richiede 4, il file C ne richiede 2 e il file D ne richiede 3. Li archiviamo nello spazio libero disponibile e iniziano tutti contigui come mostrato nella figura seguente:
Dopo un po' cancelliamo 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 blocchi contigui sul disco che sono lunghi 3 cluster, quindi dobbiamo dividere E in due frammenti, usando parte dello spazio precedentemente occupato da C. Ora il nostro disco apparirà come la figura data di seguito :
Dopo un periodo di tempo, eliminiamo i file A ed E e creiamo il file F che occupa 5 cluster. Il disco ora ha l'aspetto della figura riportata di seguito:
Ora vediamo che il file F finisce per essere suddiviso in tre frammenti. Questo tipo di dati nel disco è chiamato dati frammentati. L'esempio fornito sopra è un esempio molto semplificato di frammentazione, perché i dischi reali hanno migliaia di file e migliaia di cluster, quindi il problema è amplificato. Questo ti dà un'idea generale di cosa succede però.
Quello che fa un programma di deframmentazione (come il programma DEFRAG di Microsoft, SpeedDisk di Norton) è riorganizzare il disco per riportare i file in 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:
I dati frammentati e deframmentati hanno molta importanza durante il recupero dei dati, in molti casi.
Consideriamo che abbiamo due dischi bloccati per il ripristino dei dati, uno ha dati frammentati e uno è stato deframmentato di recente. E devi eseguire il ripristino dei 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 ripristino sarà proporzionale alla deframmentazione dei dati nel disco.
Ovviamente il recupero dei dati dal disco deframmentato sarà facile e anche la percentuale di recupero dei dati sarà elevata ma d'altra parte il recupero dei dati dal disco frammentato sarà difficile e richiederà tempo così come la percentuale di anche i dati recuperati saranno deludenti.
Identificazione della causa del danneggiamento 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 ripristino come segue:
Avvia il sistema con un floppy avviabile
Avvia il tuo sistema con un floppy avviabile o un CD del sistema operativo che stavi utilizzando. Prova a leggere le unità logiche C: o D: o qualsiasi altra cosa. Se le unità sono accessibili, copiare semplicemente tutti i dati dall'unità. Ora puoi capire perché il disco non si avvia correttamente, con meno stress.
Verifica le informazioni sull'MBR
Il primo e più importante dato sul disco rigido è l'MBR e la tabella che contiene, la tabella delle partizioni. Il piccolo strumento di modifica del disco chiamato “TTEDITOR.EXE” è stato fornito nel disco incluso con questo libro. Oppure puoi utilizzare qualsiasi altro programma per analizzare il disco rigido.
Diskedit sarà il programma più adatto per analizzare il disco a scopo di recupero dati. Bene, qualunque programma ti senti facile da usare è su di te. Prova a leggere MBR e soprattutto 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 di sbagliato in esso. Questi messaggi di testo vengono visualizzati in modo simile a:
“Invalid partition table, Setup can not continue”
“Error loading operating system, Setup can not continue”
Se questi messaggi di errore non sono disponibili, ciò indica il danneggiamento di MBR. Potrebbero anche esserci dei messaggi illegali invece di questo tipo "Il tuo sistema è stato violato da….." o qualsiasi altro messaggio inaspettato. Indica che c'è qualcosa di gravemente 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 all'avvio. DOS ignora un'unità non partizionata. Se non è presente alcun floppy avviabile nell'unità A:, il sistema richiederà l'inserimento di 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, ripristina l'MBR dal backup.
Se il backup non funziona, anche dopo il completamento con successo del processo di ripristino, questo settore è danneggiato. Prova le tecniche di programmazione del recupero dati, fornite nei prossimi capitoli per recuperare i dati. Se non sei affatto un programmatore, meglio andare in qualsiasi buon centro di recupero dati.
Se non hai alcun backup di MBR, prova 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 i programmatori e inoltre non hanno alcun backup, possono utilizzare il metodo che ho utilizzato dal momento dello sviluppo del mio progetto di recupero dati, ai tempi del college.
Quello che devi fare è cercare il computer vicino a te, che ha quasi la stessa dimensione del disco, con lo stesso numero di partizioni e la cosa più importante lo stesso sistema operativo che era nel tuo computer.
Comunque funziona completamente, la maggior parte delle volte. Ma in caso contrario, almeno potrebbe 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 danneggiate.
Se l'MBR va bene, verifica DBR
Se l'MBR va bene, 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 informazioni molto importanti su FAT, cluster di directory radice e dimensioni della partizione, ecc. Utilizzare un'utilità simile a Diskedit per leggere le informazioni DBR se il DBR è danneggiato o ha alcune informazioni illegali ripristinare il DBR dal backup .
Tutti i software professionali per il recupero dati, sono in grado di riscrivere il DBR. Parleremo di come riscrivere il DBR della partizione con la programmazione, nei prossimi capitoli del libro.
Puoi anche riscrivere il DBR della partizione con l'aiuto di Diskedit fornendo le informazioni appropriate.
C'è anche un modo molto semplice per scoprire l'area della corruzione. I messaggi di errore visualizzati sullo schermo hanno una causa specifica da visualizzare. La descrizione di alcuni importanti messaggi di errore è la seguente:
Message |
Description |
“Sector not found reading drive” |
This message can appear during any DOS operation. Generally, it is caused either by fading or the loss of a sector ID. |
“Data error reading drive” |
This message can appear during any DOS operation. It is caused by failing the data check – CRC (Cyclic Redundancy Check) or ECC (Error Correction Code). This “Data check” refers to the mechanism used to check whether the data read from the disk is reliable. |
“ 0 hard disk(s) found" |
It is displayed if the hard disk is not detected by the BIOS of the computer. Check the power and data cable connections of the hard disk. If connections are all right, the problem may be due to some hardware error of hard disk. |
“Hard Drive failure, press F1 to continue” |
Same as above |
“Invalid drive specification” |
It is displayed in the condition when either the system does not recognize the hardware, or there is no partition information, or the device driver of the drive is missing. |
“Invalid configuration press F1 to continue” |
If the hard disk is available, Either the battery in the motherboard is dead, and the system has lost its configuration SETUP information or the disk is not responding. |
“Invalid partition table” |
This is the MBR error message. It is displayed when the partition table of the MBR does not have the valid partition information. |
“Error loading operating system” |
This is the MBR error message. It is displayed due to any type of MBR information corruption. |
“Missing operating system” |
Same as above. |
“Disk boot failure” |
It is the DBR error message. Normally, The Hard drive should be accessible if you boot from the floppy. Though it is not bootable but that should not affect the access to the data of the drive. |
“non system disk or disk error” |
Same as above. |
“Bad or missing command interpreter” |
This message is displayed due to Bad or Missing Command Interpreter. For example if the operating do not find the command.com in current path or the command.com is corrupted. |
Pagina modificata il: 10/03/2022