NOME
fdisk − Manipolatore della tabella delle partizioni per Linux
SINTASSI
fdisk [−b] [−u] [dispositivo]
fdisk −l [−b] [−u] [dispositivo ...]
fdisk −s partizione ...
DESCRIZIONE
I dischi rigidi possono essere divisi in uno o più dischi logici chiamati partizioni. Questa divisione è descritta nella tabella delle partizioni trovata nel settore 0 del disco.
Nel mondo BSD si parla di ’fette di disco’ (’disk slices’) e di ’etichetta di disco’(’disklabel’, come nel seguito).
Linux necessita almeno di una partizione, segnatamente per il suo root file system. Può usare file e partizioni swap, ma queste ultime sono molto più efficienti: quindi, è normale voler dedicare una seconda partizione Linux ad una partizione swap. Sull’hardware Intel compatibile, il BIOS che inizializza il sistema può spesso accedere solo ai primi 1024 cilindri del disco. Per questo motivo chi ha grandi dischi spesso crea una terza partizione, solo di qualche mega e tipicamente montata su /boot, per immagazzinare l’immagine del kernel e pochi altri file ausiliari di cui si ha bisogno al momento del boot, per essere certi che questa roba sia accessibile dal BIOS. Ci possono essere motivi di sicurezza, semplicità di amministrazione e backup, o prove, per usare partizioni in numero superiore al minimo.
fdisk (nella prima forma di invocazione) è un programma a menu per la creazione e manipolazione di tabelle di partizione. Riconosce tabelle di partizione di tipo DOS e disklabel di tipo BSD o SUN.
Il dispositivo è normalmente uno dei seguenti:
/dev/hda
/dev/hdb
/dev/sda
/dev/sdb
(/dev/hd[a-h] per dischi IDE, /dev/sd[a-p] per dischi SCSI, /dev/ed[a-d] per dischi ESDI, /dev/xd[ab] per dischi XT). Un nome di dispositivo si riferisce all’intero disco.
La partizione è un nome di dispositivo seguito da un numero di partizione. Per esempio, /dev/hda1 è la prima partizione del primo disco rigido IDE del sistema. I dischi IDE possono avere fino a 63 partizioni, gli SCSI fino a 15. Si veda anche /usr/src/linux/Documentation/devices.txt.
Un disklabel BSD/SUN può descrivere 8 partizioni, la terza delle quali dovrebbe occupare l’intero disco (’whole disk partition’). Una partizione, come una di swap, che usa davvero il suo primo settore non deve iniziare al cilindro 0, poiché ciò distruggerebbe il disklabel. Una tabella di partizione di tipo DOS può descrivere un numero illimitato di partizioni. Nel settore 0 c’è posto per la descrizione di quattro partizioni (chiamate ’primary’). Una di queste può essere una partizione estesa; si tratta di una scatola che possiede partizioni logiche, con descrittori trovati in una lista concatenata di settori, ognuno che precede le partizioni logiche corrispondenti. Le quattro partizioni ’primary’, che siano o no presenti, ricevono i numeri 1-4. La numerazione delle partizioni logiche comincia da 5.
In una tabella di partizione di tipo DOS l’offset di inizio e la dimensione di ciascuna partizione vengono conservati in due modi: come un numero assoluto di settori (espresso in 32 bit) e come una tripla Cylinders/Heads/Sectors (cilindri/testine/settori) (espressa in 10+8+6 bit). La prima forma va bene --- con settori di 512 byte funziona fino a 2 TB. L’altra forma ha due diversi problemi: innanzi tutto, questi campi C/H/S possono essere riempiti solo quando siano noti il numero di ’heads’ e il numero di settori per traccia; in secondo luogo, anche quando sappiamo quali dovrebbero essere questi numeri, i 24 bit che sono disponibili non sono sufficienti. DOS usa solo C/H/S, Windows usa entrambi, Linux non usa mai C/H/S.
Se possibile, fdisk otterrà la geometria del disco automaticamente. Non si tratta necessariamene della geometria fisica (effettivamente, i dischi moderni non hanno davvero nulla di simile a una geometria fisica, certamente nulla che possa essere descritto in una semplicistica forma Cilindri/Teste/Settori), ma è la geometria del disco che MS-DOS usa per la tabella della partizione.
Normalmente tutto va bene usando i valori predefiniti, e non ci sono problemi se Linux è l’unico sistema sul disco. Nondimeno, se il disco deve essere condiviso da altri sistemi operativi, è spesso una buona idea quella di far sè che l’fdisk di un altro sistema operativa crei almeno una partizione. Quando Linux parte, guarda la tabella delle partizioni e cerca di dedurre quale (falsa) geometria sia richiesta per una buona cooperazione cogli altri sistemi.
Ogni qualvolta viene stampata una tabella delle partizioni, viene eseguito un test di coerenza sulle voci della tabella delle partizioni. Questo controllo verifica che i punti di inizio e fine logica siano identici, e che la partizione inizi e termini sul confine di un cilindro (eccezion fatta per la prima partizione).
Alcune versioni di MS-DOS creano una prima partizione che non comincia sul confine di un cilindro, bensì sul settore 2 del primo cilindro. Le partizioni che cominciano nel cilindro 1 non possono iniziare sul confine di un cilindro, ma è improbabile che ciò causi difficolta, a meno che si abbia OS/2 sulla propria macchina.
Dopo l’aggiornamento della tabella delle partizioni e prima di uscire, vengono eseguite una sync() e unaioctl() BLKRRPART (rilegge la tabella delle partizioni da disco).
Molto tempo fa era necessario ripartizionare dopo aver usato fdisk. Non ritengo che questo sia ancora il caso --- per il vero, ripartire troppo velocemente potrebbe causare perdita di dati non ancora scritti. Notare che sia il kernel sia l’hardware del disco potrebbero ’bufferizzare’ dati.
AVVERTENZE PER DOS 6.x
Il comando FORMAT di DOS 6.x cerca alcune informazioni nel primo settore dell’area di dati della partizione, e tratta questa informazione come più affidabile di quella nella tabella delle partizioni. Il FORMAT del DOS si aspetta che l’FDISK del DOS ripulisca i primi 512 byte dell’area di dati di una partizione ogni volta che intervenga una modifica della dimensione. Il FORMAT del DOS guarderà questa informazione extra anche se è stato usata l’opzione /U --- noi consideriamo tale fatto come un baco nel FORMAT del DOS e nell’FDISK del DOS.
L’idea di base è che se si usa cfdisk o fdisk per cambiare le dimensioni di una voce della tabella delle partizioni DOS, allora si deve anche usare dd per azzerare i primi 512 byte di quella partizione, prima di usare il FORMAT del DOS per formattare quella partizione. Per esempio, se si stesse usando cfdisk per creare una voce della tabella delle partizioni per /dev/hda1, allora (dopo essere usciti da fdisk o cfdisk e aver fatto ripartire Linux per validare l’informazione della tabella delle partizioni) si dovrebbe usare il comando "dd if=/dev/zero of=/dev/hda1 bs=512 count=1" per azzerare i primi 512 byte di quella partizione.
SI PRESTI ESTREMA ATTENZIONE all’utilizzo del comando dd, poiché un piccolo refuso potrebbe rendere inutilizzabile tutti i dati del disco.
Per migliori risultati, si dovrebbe sempre usare un programma di partizionamento specifico al sistema operativo. Per esempio, si dovrebbero creare partizioni DOS col programma FDISK di DOS e partizioni Linux col programma fdisk, o cfdisk, di Linux.
OPZIONI
−v |
Stampa il numero di versione del programma fdisk ed esce. | ||
−l |
Elenca le tabelle di partizione per /dev/hd[a-d], /dev/sd[a-h], /dev/ed[a-d], e quindi esce. | ||
−b |
Quando elenca tabelle di partizione, introduce anche una colonna ’Begin’ (inizio), come facevano per opzione predefinita le meno recenti versioni di fdisk. Nota: i valori in questa colonna, quando espressi in unità di cilindri, non possono essere più grandi di 1023. Non c’è nulla di errato se Begin e Start non corrispondono, almeno per quanto concerne Linux. | ||
−u |
Quando elenca tabelle di partizione, esprime la dimensione in settori anziché in cilindri. |
−s partizione
La dimensione (size) della partizione (in blocchi) è stampata sullo standard output. Questo valore è normalmente passato come argomento al programma mkfs(8) per specificare la dimensione della partizione che deve essere formattata (le versioni più vecchie di fdisk lo farebbero solo se l’identificativo della partizione fosse maggiore di 10, in un tentativo di rifiutare le partizioni DOS; questo test è stato cancellato). Si noti che sfdisk -s dà risposte diverse (ossia, corrette). Le ragioni della differenza sono che il kernel e fdisk non hanno bisogno di avere la stessa opinione circa la numerazione della partizione (per esempio, in caso abbiate le ’slices’ del BSD), e hanno diverse idee sulla dimensione di una partizione estesa.
BACHI
Ci sono in giro molti programmi *fdisk. Ognuno ha i suoi problemi e i suoi vantaggi: l’ordine in cui vanno provati è cfdisk, fdisk, sfdisk.