In precedenza, abbiamo visto la struttura dell'MBR (settore 0): il codice del boot loader seguito da 4 voci della tavola delle partizioni da 16 byte ciascuna e dalla firma AA55. Le voci della tavola delle partizioni di tipo 5 o F o 85 (Hex) hanno un significato speciale: descrivono le partizioni estese, che sono porzioni di disco che verranno ripartizionate in partizioni logiche (una partizione estesa non è che un contenitore di partizioni logiche e non può essere utilizzata di per se stessa). Solo la posizione del primo settore di una partizione estesa è importante. Questo primo settore contiene una tavola delle partizioni con quattro voci: una per la partizione logica, una per quella estesa e due inutilizzate. In questo modo si ottiene una catena di tavole delle partizioni, sparse per il disco, dove la prima descrive tre partizioni primarie e una estesa mentre le tavole seguenti descrivono una partizione logica e la posizione della prossima tavola.
È importante capire questo: quando qualcuno fa qualcosa di stupido partizionando un disco si chiede: "I miei dati ci sono ancora?" La risposta è: sì. Ma, se si creano partizioni logiche verrà riscritta la tavola delle partizioni che le descrive e ogni dato presente è perso.
Il programma sfdisk mostrerà l'intera catena. Ecco un esempio:
# sfdisk -l -x /dev/hda
Disk /dev/hda: 16 heads, 63 sectors, 33483 cylinders
Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/hda1 0+ 101 102- 51376+ 83 Linux
/dev/hda2 102 2133 2032 1024128 83 Linux
/dev/hda3 2134 33482 31349 15799896 5 Extended
/dev/hda4 0 - 0 0 0 Empty
/dev/hda5 2134+ 6197 4064- 2048224+ 83 Linux
- 6198 10261 4064 2048256 5 Extended
- 2134 2133 0 0 0 Empty
- 2134 2133 0 0 0 Empty
/dev/hda6 6198+ 10261 4064- 2048224+ 83 Linux
- 10262 16357 6096 3072384 5 Extended
- 6198 6197 0 0 0 Empty
- 6198 6197 0 0 0 Empty
...
/dev/hda10 30581+ 33482 2902- 1462576+ 83 Linux
- 30581 30580 0 0 0 Empty
- 30581 30580 0 0 0 Empty
- 30581 30580 0 0 0 Empty
#
È possibile costruire una tavola delle partizioni scorretta. Molti kernel entrano in un loop se qualche partizione estesa punta a se stessa o ad una precedente nella catena. È possibile avere due partizioni estese in una tabella delle partizioni così che la tabella si divide (questo capita per esempio con fdisk che non riconosce ogni 5, F e 85 come partizioni estese e che crea una 5 dopo una F). Programmi non standard tipo fdisk possono risolvere queste situazioni anche se richiedono del lavoro manuale per riparare le partizioni. Il kernel di Linux accetta una divisione nei livelli più esterni. In questo modo è possibile avere due catene di partizioni logiche. Talvolta può essere utile - per esempio, si può usare il tipo 5 che è visto dal DOS e il tipo 85, invisibile al DOS, così che il DOS FDISK non vada in crash perché la partizione logica supera il cilindro 1024.