Fdisk howto
Il Primo HOW-TO scritto da Ferdinando Ferranti per il MajaGLUG. Il presente HOW-TO si propone di dare delle nozioni sul corretto utilizzo del programma fdisk.
Fdisk, un grande amico per i nostri nuovi dischi
| Author: | Ferdinando Ferranti |
|---|---|
| Contact: | zap@teppisti.it |
| Revision: | 0.1 |
| Date: | 27/04/2005 |
| Copyright: | Questo documento viene rilasciato sotto licenza GPL |
Questo semplice documento nasce da uno scambio di messaggi sulla Mailing List del MajaGLUG e visto che l'argomento potrebbe interessare molti, abbiamo pensato di pubblicarlo. Vi potrà essere utile se dovete comprare o avete appena acquistato un nuovo disco.
Il problema
E` capitato ad alcuni di incappare, durante l'installazione di un nuovo Sistema Operativo, in un inconveniente piuttosto antipatico, ovvero, arrivati alla fine, quando sembra essere andato tutto bene, da un controllo sulla tabella delle partizioni ci accorgiamo che è rovinata, magari il SO sembra funzionare ma in futuro sicuramente ci riserverà delle amare sorprese. Potremo vedere minacciosi avvertimenti che ci faranno capire che fdisk rileva che le partizioni non sono allineate ai cilindri! :-(
Leggere i dati del disco
Una premessa... un disco fisso viene rappresentato da tre valori: Cilindri, Testine e Settori/Tracce (Cylinders, Heads and Sectors/Track). Anche hdparm ci potrebbe essere utile, ma per non complicare la situazione cerchiamo di capire come e cosa fare per non capitare in queste situazioni, quindi vediamo come i tre protagonisti principali, il BIOS, l'MBR su disco ed il Kernel Linux, reperiscono le informazioni:
Il BIOS
Il BIOS ovviamente è l'attore principale, a meno che non si debba ricorrere ad alchimie strane per far riconoscere il nostro disco alla scheda madre, i dati del nostro disco rilevati dal BIOS sono fondamentali. Questi dati possono essere rappresentati in tre modalità differenti: large, normal ed LBA. Quest'ultima modalità di rappresentazione, LBA è la più conveniente, quella che poi adotteremo come riferimento.
Naturalmente occorre prendere nota di come viene riconosciuto il nostro disco e quindi di Cilindri, Testine e Settori.
L'MBR
Prima che un disco venga "usato" da un qualsiasi SO, dovranno esservi scritti al suo interno delle informazioni concernenti le partizioni in cui è stato suddiviso e la struttura del disco. Tutti questi dati vengono scritti (insieme alle informazioni del bootloader) nell'MBR, ovvero nei primi 512Kb del disco.
Per vedere com'è la situazione:
# fdisk -l /dev/hda | head -n 4 Disk /dev/hda: 82.3 GB, 82348277760 bytes 255 heads, 63 sectors/track, 10011 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Il Kernel Linux
Il Kernel Linux tra i molti pregi ne ha anche uno che può trarre in inganno e darci dei grossi fastidi, come in questo caso... In breve il kernel, autonomamente, senza tener conto delle informazioni del BIOS e neanche di quelle scritte sul disco, rileva i dati del dispositivo che gli si presenta, ad esempio, il mio disco:
# dmesg | grep CHS hda: 160836480 sectors (82348 MB) w/1863KiB Cache, CHS=65535/16/63, UDMA(33)
Come vedete il mio kernel-2.6.8 rileva una quantità spropositata di settori! ;-)
Intendiamoci, questo funzionamento presenta anche dei punti a favore e cioè permette di gestire dischi che magari il BIOS della nostra scheda madre non riuscirebbe a gestire. Il difetto è quello di cui tratta questo breve documento, ma se sappiamo come funziona la cosa, saremo anche in grado di fronteggiarlo.
Analizzare i dati con fdisk
Adesso, finalmente, veniamo a noi, quindi analizziamo i dati in nostro possesso e vediamo cosa possiamo fare per migliorare la situazione.
Chiariamo che, così come stanno le cose, se BIOS, MBR e Kernel vedono valori differenti potranno esserci grossi problemi se proveremo ad installare un altro SO, vedete i problemi con il vecchio installer di Fedora, altri problemi rilevati con il ramo 5.x di FreeBSD... La cosa buffa però è che non capita a tutti di trovarsi con la tabella delle partizioni rovinata, questo come si spiega?
In realtà è semplice, se il BIOS rileva il disco allo stesso modo in cui viene riscontrato tramite la lettura dell'MBR, non ci saranno mai problemi, in nessun caso.
Una vista d'insieme del disco, visto da fdisk e dal kernel:
# fdisk -l /dev/hda | head -n 4 ; dmesg | grep CHS Disk /dev/hda: 82.3 GB, 82348277760 bytes 255 heads, 63 sectors/track, 10011 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes hda: 160836480 sectors (82348 MB) w/1863KiB Cache, CHS=65535/16/63, UDMA(33)
Questo è il riassunto dei dati visti sopra (le prime 3 righe per fdisk e la quarta per il kernel Linux), non ci si deve preoccupare se il kernel riconosce diversamente il disco, l'importante è che i dati letti nell'MBR coincidano con quelli del BIOS.
Sia i SO Windws che i vari *BSD, in fase di installazione riconoscono il disco attingendo ai dati forniti dal BIOS e dall'MBR, quindi questi sono i dati più importanti. Nel caso invece di installazioni di SO basati su kernel Linux, normalmente si occupa di tutto il kernel che può riconoscere il disco diversamente, da kernel a kernel. Provate con più versioni di Knoppix, con kernel diversi se vengono mostrati gli stessi valori...
Backup
Adesso dovrebbe essere finalmente chiaro che la cosa migliore da fare, avendone la possibilità, è controllare ed eventualmente sistemare un disco prima di cominciare ad usarlo. Se non si è fatto e si vuole rimediare, sarà necessaria una politica di backup di tutte le partizioni che contengono i dati ma soprattutto dovremo fare un backup della tabella delle partizioni originale su disco e del suo intero MBR.
Per quanto riguarda la tabella, molto semplicemente potremo salvare nel file hda.out la tabella delle partizioni:
# sfdisk -d /dev/hda > hda.out
Nel caso serva, per ripristinare la tabella delle partizioni:
# sfdisk /dev/hda < hda.out
Invece, per quanto riguarda l'intero MBR:
# dd if=/dev/hda of=/hda.img bs=512 count=1
Correggere i dati dell'MBR
Adesso, dopo che avrete preso nota di come il BIOS vede il disco, potremo finalmente procedere a sistemarlo.
In realtà è molto semplice (anche se pericoloso, fate i backup!), occorre lanciare fdisk sul nostro disco, che supponiamo essere hda, dopo aver cancellato tutte le nostre partizioni:
# fdisk /dev/hda The number of cylinders for this disk is set to 10011. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): x Expert command (m for help): m Command action b move beginning of data in a partition c change number of cylinders d print the raw data in the partition table e list extended partitions f fix partition order g create an IRIX (SGI) partition table h change number of heads m print this menu p print the partition table q quit without saving changes r return to main menu s change number of sectors/track v verify the partition table w write table to disk and exit Expert command (m for help):
Come potete notare, selezionando con le opzioni c, h ed s
potrete impostare i valori corretti di Cilindri, Testine e Settori nel vostro disco, risparmiandovi così grattacapi futuri.
Adesso non vi resta altro da fare che creare le partizioni.
- Login o registrati per inviare commenti

Bookmark this site
Bookmark this page
Make Us your homepage