Per chiarezza è bene partire dalle nozioni di base.
Per prima cosa vediamo come funziona il meccanismo di avvio di un PC.
Quando viene acceso, l’unico software presente è il BIOS (Basic Input Output System) che
controlla una serie di dispositivi in un ordine modificabile tramite il programma
di setup del BIOS stesso.
I BIOS moderni possono gestire diversi dispositivi per il BOOT della
macchina, ma in questo momento ci interessano solo i dispositivi
tradizionali di BOOT, come i floppy disk e gli hard-disk. Per effettuare
il BOOT con un floppy, deve esistere sul floppy una piccola porzione del
disco, in una posizione ben precisa, segnata come contenente informazioni
di BOOT. Nello stesso modo, anche sugli hard-disk deve esserci questa
sezione, che contiene effettivamente le procedure di base del sistema
operativo (kernel). In questo caso però, essendo molto capienti, è
molte volte consigliabile suddividerli in partizioni. Le informazioni
sul partizionamento dell’hard-disk vengono scritte in un altro settore
speciale e, tra le varie informazioni, c’è un flag per indicare quale
sia la partizione avviabile che deve contenere il record di avvio,
esattamente come per i floppy, con l’unica differenza che ora il
settore con le informazioni di boot è su un settore qualsiasi del disco,
ma comunque in una posizione ben precisa all’interno della partizione.
Possono esistere moltissimi tipi di partizione, ma in ogni caso l’unica
differenza per il BIOS è il codice che ne identifica il tipo. Esiste
una tabella universalmente riconosciuta che associa un numero a un tipo
ben preciso di partizione. Il DOS prevedeva solo due tipi, una primaria
che può essere avviabile, e una estesa che funge solo da contenitore
per unità logiche (diciamo sotto partizioni). Le partizioni estese per
definizione non possono contenere dati, ma solo una ulteriore tabella di
partizionamento, che verrà usata per la definizione delle unità logiche.
Questo meccanismo fondamentalmente permette l’estensione dei limiti
della tabella delle partizioni, perché le sue ridotte dimensioni
permetterebbero la definizione di al massimo quattro partizioni, mentre in
questo modo è possibile definirne sette (tre primarie e una estesa con dentro
altre quattro partizioni).
Per cui, rispondendo alla domanda, si può dire che la differenza principale
è che una partizione primaria contiene dati, una estesa contiene altre partizioni e
nessuna delle sue partizioni è avviabile. In realtà alcuni sistemi come
Linux permettono di ovviare a questo inconveniente, ma spesso si ottiene
questo risultato con appositi programmi detti BOOT-Loader. In altre parole
il sistema installa in una partizione avviabile non il kernel vero e
proprio, ma un programma molto piccolo che reindirizza il processo di
caricamento del kernel sulla partizione prescelta. Questo approccio
inoltre permette una interessante funzionalità, il multi BOOT. Ossia è
possibile far coesistere più sistemi operativi sulla stessa macchina,
e all’avvio si può scegliere quale kernel caricare.