Dischi e partizioni con riferimenti a GNU/Linux
Il partizionamento è alle basi dell'informatica di base ma in molti non conoscono a pieno i concetti, vediamo di rinfrescarci la memoria. Un disco deve necessariamente essere diviso in una o più partizioni, cioè suddivisioni logiche, quindi ogni disco, anche con un solo sistema operativo installato, presenta una tavola delle partizioni. Al momento esistono due tipi di partizionamento MBR e GPT.
Partizionamento MBR
Nel partizionamento MBR il Master Boot Record (l'MBR appunto) è conservato nei primi 512 byte del disco e, oltre a contenere la tavola delle partizioni, specifica quale delle partizioni presenti sul disco è quella di avvio. La partizione di avvio può essere solo una e deve essere una partizione primaria, senza di essa il sistema operativo Windows non è in grado di iniziare la fase di avvio. Questo limite non è sussiste negli altri sistemi operativi, GNU/Linux può essere avviato da qualsiasi tipo di partizione utilizzando un boot manager (i più comuni sono GRUB e LILO). Il partizionamento MBR prevede la creazione di massimo 4 partizioni primarie, una delle quali può essere estesa, la quale non contiene dati bensì altre partizioni, le partizioni logiche che possono essere fino a 64. Riepilogando abbiamo 3 tipi di partizioni:
- primarie: permettono l'avvio del sistema operativo Windows (se impostato il "Flag Avviabile)" e possono essere fino a 4
- estese: è una partizione primaria che non contiene "fisicamente" dati ma altre partizioni (non è possibile impostarvi il "Flag Avviabile")
- logiche: nascono da partizioni estese, possono essere fino a 64, non permettono l'avviamento del sistema operativo Windows (non è possibile impostarvi il "Flag Avviabile").
Non possono esistere partizioni logiche senza partizioni estese. Il sistema di partizionamento MBR ha un limite importante, che si inizia a notare solo adesso che i dischi crescono di dimensione, le partizioni non possono superare i 2 terabyte.
Partizionamento GPT
Il GPT (GUID Partition Table) è relativamente recente, fa parte dello standard EFI (Extensible Firmware Interface) e necessita nella maggior parte dei casi di una motherboard con BIOS UEFI (Unified Extensible Firmware Interface) o di un BIOS tradizionale che lo supporti. Superato il limite di partizioni primarie, estese e logiche utilizza degli "identificativi globali" (GUID) per riferirsi al contenuto di ciascuna partizione presente all'interno del disco. Utilizzando GPT è possibile creare un numero di partizioni teoricamente illimitato anche se la maggior parte dei sistemi operativi ne riduce il numero a 128. Non è però soltanto questa la differenza tra GPT e MBR: mentre MBR limita la dimensione di ciascuna partizione a 2 Terabyte, GPT consente di arrivare addirittura sino a 9,44 Zettabyte ossia ad oltre 9 miliardi di Terabyte. Il sistema di partizionamento GPT conserva le informazioni sull'organizzazione del disco non solo all'inizio ma anche alla fine dell'unità, quest'importante caratteristica permette di ripristinare il corretto caricamento dei sistemi operativi nel caso in cui i dati del blocco d'intestazione iniziale dovessero rovinarsi. Per compatibilità con i vecchi BIOS la tavola delle partizioni GPT contiene anche un classico MBR.
Quale partizionamento è utilizzato sul mio disco?
Per avere questa informazione su Windows si utilizza da prompt di MSDOS il comando:
diskpart
mentre su GNU/Linux si usa il comando:
sudo fdisk -l device
Scopriremo quale device mettere nel prossimo paragrafo. Vediamo il risultato sul mio portatile tuttofare con disco SATA (/dev/sda):
Nella sesta riga appare "Disklabel type: GPT" quindi la mia tavola è di tipo GPT. Le partizioni non sono in ordine di posizione fisica sul disco ma di numero e hanno un tipo specifico (il GUID). La confusione viene dal fatto che ho modificato molte partizioni in corso d'opera (le partizioni Windows erano molto più grandi all'inizio). Vediamo il risultato sul mio Raspberry Pi che ha creato una tavola MBR su una scheda SD (dev/mmcblk0):
Qui oltre al "Disklaberl type: msdos" (quindi MBR) è presente anche una partizione estesa (la p2) contenente 3 partizioni logiche (5, 6 e 7).
Il kernel Linux, la cartella /dev e i dischi
Il kernel Linux associa a tutti i device presenti sulla macchina un file speciale all'interno della directory /dev. Tutti non è un'esagerazione in quanto sono presenti file che vanno dai bus, alla scheda video, alla scheda di rete, fino ad arrivare nel nostro caso a dischi e partizioni. Curiosità: la cartella /dev contiene anche altri file che, come vediamo qui possono essere molto versatili.
Dischi fissi meccanici, dischi fissi a stato solito, chiavette USB, schede SD e partizioni
I **dischi fissi SATA* (lo standard ormai) e le chiavette USB (gestite dal kernel in emulazione SATA) hanno identificativo sdX dove l'ultimo carattere è variabile. Mi spiego meglio, il primo device collegato (o rilevato, come nel caso del disco di avvio) è identificato come /dev/sda, il secondo /dev/sdb e così via. Quando scolleghiamo un disco esterno o una chiavetta USB il file nella cartella /dev viene liberato ed è quindi riassociato alla prima occasione. Per i dischi alla stato solido eMMC e le schede SD la gestione è diversa dai dischi SATA. Il primo device collegato (o rilevato come nel caso del disco di avvio) è identificato come /dev/mmcblk0, il secondo /dev/mmcblk1 e così via. Le partizioni sono numerate, quindi la prima partizione su disco SATA o chiavetta USB è /dev/sda1, la seconda /dev/sda2, ecc. Su disco eMMC o scheda SD** si aggiunge il carattere p prima del numero della partizione, quindi /dev/mmcblk0p1, /dev/mmcblk0p2, ecc. Come si nota anche negli screenshot precedenti, nel partizionamento MBR le partizioni primarie sono numerate da 1 a 4 (la estesa è considerata come primaria) mentre le logiche sono numerate dal 5 in poi.
Punti di mount
Ecco le mie partizioni, montate sul mio portatile con partizionamento GPT, si nota la separazione della cartella /home e il montaggio automatico della partizione contente il boot EFI. Non è mia abitudine montare le partizioni Windows non essendoci dati all'interno.