Partition Rescue mini HOWTO Jean-Daniel Dodin 27 luglio 2000 Wow! Il mio disco rigido è vuoto! Il mio Linux è scomparso! Se hai o temi di avere un giorno o l'altro un problema del genere, leggi questo... Cosa c'è dentro

Questo mini-HOWTO tratta solo i problemi di "perdita della tabella delle partizioni". Questi possono verificarsi se:

non riesci più ad avviare il tuo computer e si visualizza il messaggio "no operating system" ("nessun sistema operativo"), hai installato un nuovo sistema (ad es. Windows) e non "vedi" più Linux, e Windows occupa tutta la capacità del disco.

Qui imparerai che se conosci la via giusta e la segui, Linux emerge integro da queste situazioni. Anche Windows può, ma ci vuole più fortuna.

Vedremo per prima cosa cosa puoi fare prima che il problema si presenti per facilitare il recupero in futuro, e cosa devi fare dopo per riparare il danno. C'è poco da fare per prevenire la cancellazione di un disco; di solito succede per colpa di programmi automatici di installazione di Windows o Linux che si comportano male, o di errori dell'utente - non si può far nulla per prevenire, se non fare attenzione; ma stai già attento, no?

Può anche accadere a causa dell'uso dell'fdisk di MSDOS/Windows. Evitalo più che puoi, ma probabilmente non puoi.

Ho seguito questo metodo molte volte sul mio computer e su quelli di altre persone, e ho ripristinato Linux la maggior parte delle volte ed alcune volte Windows. Buona fortuna!

Cosa fare adesso?

Se stai leggendo per curiosità o solo per informazioni e sei su un sistema Linux funzionante, fai immediatamente quanto segue:

apri un terminale di root o un xterm, digita "/sbin/fdisk -l" (l'ultimo carattere è la l di Lima).

sarai premiato con una lista di tutte le partizioni correnti su tutti i dischi presenti sul tuo computer.

Copiala su carta (o dai "/sbin/fdisk -l | lpr" per stamparla) e conservala in un luogo sicuro, per il futuro.

Se non sei l'amministratore del sistema, il problema non dovrebbe riguardarti e puoi fare a meno di continuare a leggere.

Robe legali

Questo mini-HOWTO è Copyright (c) 2000 di Jean-Daniel Dodin. Tutti i diritti riservati. Puoi farne (quasi) tutto ciò che vuoi. Non mi interessa. Solo, assicurati di mantenere intatto il mio nome. Spero solo che esso sia utile a qualcuno, nella comunità Linux.

Non sono responsabile di alcun danno su qualsiasi computer come risultato della lettura da parte di chicchessia di questo HOWTO. Se provochi qualche danno, _è colpa TUA, NON MIA!_ Stai attento quando partizioni i dischi, e non fare alcun errore, perché potrebbe essere fatale! Fai un backup di tutti i tuoi dati importanti e controlla che tutto ciò che fai sia corretto! Ciò che è descritto qui ha funzionato sul mio computer, ma sul tuo può valere come no. Anche se dovrebbe funzionare per tutti, non posso garantire nulla. Questo è l'ultimo avvertimento: _FAI IL BACKUP DEI DATI IMPORTANTI!_ O, in poche parole: utilizza a tuo rischio e pericolo!

Cosa devo sapere ora?

Devi sapere che in caso di qualsivoglia grave problema col tuo disco rigido, devi smettere cmpletamente di usarlo in scrittura, almeno per il tempo necessario a capire che succede. Le informazioni, lì, sono molto evanescenti...

Se per caso una mattina, svegliandosi, il tuo computer dice "non posso caricare, nessun sistema installato", non devi cominciare a reinstallare tutto.

Se hai Windows installato, non posso promettere che potrai recuperare i tuoi dati, ma è probabile che recupererai tutto ciò che riguarda Linux, ammesso che non sia posto troppo in basso nella struttura del disco. Questo perché alcuni virus di Windows cancellano proprio il primo cilindro del disco, qualunque cosa ci sia sopra. Comunque non ho mai sperimentato tali virus e non saprei dire per certo. Prova lo stesso.

Devi anche sapere che tutte queste informazioni son proprio solo per questo scopo - d'informazione. Né io né chiunque altro che te stesso possiamo esser ritenuti responsabili per problemi che i tuoi dati possono avere dall'utilizzo di queste. Ci sono troppi sistemi diversi nel mondo perché qualcuno possa promettere qualcosa. Posso solo augurarti buona fortuna e sperare che tu, come me, sia felice, avendo recuperato i tuoi dati.

Dischi

Un disco rigido è fatto di settori numerati da 0 al massimo.

dmesg dà, ad esempio :

hdb: ST34321A, 4103MB w/128kB Cache, CHS=523/255/63

CHS vuol dire Cylinders, Heads, Sectors (Cilindri, Testine, Settori).

523*255*63=8401995 settori di 512 byte, da qui i 4103 Mbyte. Questa è solo una mappa logica, non è necessario ciò che è scritto sull'etichetta del disco (tranne che per la dimensione totale).

La vera dimensione dei settori non è di alcun interesse per noi dato che non vogliamo modificare alcunché, ma ripristinare uno stato precedente. Ai nostri fini, la dimensione predefinita data da fdisk va bene.

La dimensione vista dal sistema dipende direttamente dal funzionamento del BIOS (Basic Input/Output System - la ROM del PC). La modalità (mode) in cui opera il disco rigido indicata dal BIOS è essenziale. Su un nuovo disco, è meglio avviare il riconoscimento automatico del disco rigido nel BIOS e dare "yes". Comunque, ogni modifica a questo livello può distruggere tutti i dati del disco, perciò non giocherellare con questa impostazione se non per ragioni particolari.

Questo valore è probabilmente quello che il disco usa, per cui non temere.

Partizioni

I dischi ora sono molto grandi, 13 Gb non son rari, perciò non è molto comodo avere tutta questa roba impacchettata in una sola parte. Solo Windows lo fa, e se usi Linux forse è perché sei conscio di quanto inefficiente è l'altro.

Perciò un disco rigido viene di solito diviso in alcuni pezzi chiamati "partizioni" (vedi il "partition mini HOWTO" per maggiori dettagli, e leggi anche il file /usr/doc/package/util/README.fdisk).

Diamo un'occhiata a (una parte di) ciò che risulta da fdisk -l nel mio caso:

Disk /dev/hdb: 255 heads, 63 sectors, 523 cylinders Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System

/dev/hdb1 1 153 1228941 83 Linux

/dev/hdb2 154 166 104422+ 82 Linux swap

/dev/hdb3 * 167 291 1004062+ 83 Linux

/dev/hdb4 295 523 1839442+ 5 Extended

/dev/hdb5 295 422 1028128+ 83 Linux

/dev/hdb6 423 523 811251 6 FAT16

Questo è il mio secondo hard disk, che riflette varie prove e tentativi (il primo è troppo semplice per essere interessante).

/dev/hdb è il mio secondo disco ide (slave sull'interfaccia primary),

/dev/hdb1 è la prima partizione primaria (primary partition), che va dal primo blocco (1) al blocco 153.

Ci possono esser quattro di queste partizioni primarie. Se se ne vogliono più di 4, una di esse deve essere "extended" ("estesa", non necessariamente la quarta) e tutte le altre partizioni saranno dette "logical" ("logiche") e sono poste dentro quella estesa. Nota che la partizione numero 5 e la numero 4 hanno lo stesso inizio. La numero cinque è logica, la numero 4 estesa. Le partizioni logiche cominciano sempre alla 5, anche se non ce ne sono 4 primarie.

Dove sorge il problema ?

Il problema è che tutti i sistemi operativi installati devono dividersi il disco e poiché all'avvio il BIOS legge solo il primo, ci deve essere una cosiddetta "partition table" (tabella delle partizioni) all'inizio di questo disco. Questa tabella delle partizioni è posta nel Master Boot Record (MBR),fianco a fianco col boot loader.

Qualunque uso sbagliato dell'MBR da parte di qualcuno dei sistemi operativi porta a problemi. Quando provi ad installare qualche sistema, la risposta affermativa a domande tipo "partizionamento automatico?" probabilmente creerà guai... Questo è particolarmente vero con Windows, specialmente per le installazioni personalizzate fatte da speciali costruttori di PC (quando non è fornito nessun CD di Windows vero e proprio). Ma vale anche per i nuovi programmi di installazione "intelligenti" (mica tanto!) di Linux forniti con le distribuzioni più recenti.

Risolvere il problema

Per favore, stai attento! Seguire le spiegazioni date qui ti porterà a tornare a un sistema precedente, perdendo tutti quelli che hai installato più di recente, se ce ne sono! Devi scegliere...

Il caso più semplice

Tutto è semplice se hai a portata di mano:

un disco (floppy o CD) capace di caricare Linux da sè stesso, e in modo che fdisk sia disponibile - la maggior parte dei rescue disk di qualsiasi distribuzione può farlo, un foglio con il risultato di fdisk -l.

È sufficiente

avviare Linux, avviare fdisk /dev/hda (o qualunque sia il disco da riparare), usare fdisk per cancellare (opzione d) tutte le partizioni esistenti sul disco danneggiato, usare fdisk per creare tutte le partizioni primarie (1-4) elencate sul foglio, dargli il tag appropriato (opzione t): 82 è per una partizione swap di Linux, 83 per una partizione principale di Linux (L fornisce una lista), 5 per una partizione estesa, e deve essere fatta prima di creare partizioni logiche. creare le partizioni logiche.

fdisk è un programma piccolo e molto intelligente. Ce ne sono molti altre versioni, ma preferisco sempre quello nudo e crudo (parlo ovviamente di quelli per Linux, non degli altri...).

Sappi che fdisk non scrive nulla sul disco prima che tu digiti w e return. Se temi di aver sbagliato, digita q (quit) o Ctrl C (\^{ }C) per uscire in tutta sicurezza.

Quando la tua nuova tabella delle partizioni è scritta, avvia Linux. C'è la possibilità che tu non possa farlo come al solito: LILO può esser stato danneggiato, e avrai bisogno di un dischetto di boot o di avviare da un CD (scegli l'opzione "avvio di una partizione installata").

Se di solito avvii con LILO, appena sei entrato nel sistema come root, digita "lilo" e premi return per reinstallare il tuo boot loader preferito.

Il tuo Linux dovrebbe essere tutto di nuovo qui; provalo. Prova anche ad avviare Windows, nel caso. Se non puoi, c'è una (molto scarsa) possibilità che tu possa leggere i tuoi dati da Linux, magari con una lettura settore per settore, a basso livello. Se riesci ad identificare i settori del disco su cui sono i tuoi dati, usando dd puoi copiarli su un file. Questo è saggio solo per il testo. Questo tipo di recupero NON è l'ambito di questo mini-HOWTO.

Un caso non così semplice A mano

Questo metodo spiega come fare quando il caso precedente non è applicabile, per mancanza del foglio di fdisk o se non funziona perché se ne usa uno obsoleto.

Per prima cosa, sappi che finchè non scrivi sul disco (con altri programmi che fdisk), non rischi di cancellare i tuoi dati, perciò puoi provare blocco per blocco. Il che vuol dire che hai bisogno di sapere l'inizio della partizione, tanto per cominciare. Se, diciamo, un 153 non calza, prova un 154, e così via.

Questo può essere noioso, ma se ti ricordi approssimativamente la dimensione della partizione Linux, c'è una possibilità di riuscire.

gpart

Ma c'è un modo migliore se puoi ancora accedere alla rete o hai a disposizione "gpart".

"gpart - guess PC-type hard disk partitions" ("gpart - indovina le partizioni in stile PC di un disco rigido") è la prima riga della pagina man di gpart (man gpart).

"gpart prova ad indovinare che partizioni ci sono sul disco rigido. Se la tabella delle partizioni primaria è andata perduta, sovrascritta o distrutta, le partizioni esistono ancora sul disco, ma il sistema operativo non può accedervi.". Questo è esattamente ciò di cui abbiamo bisogno.

gpart è ancora in beta, ma è già uno strumento davvero buono.

La questione è la seguente: il primo blocco di ogni partizione è etichettato. Ma non viene mai "dis-etichettato" se non è sovrascritto. Perciò su un disco usato sono presenti molti "blocchi di inizio partizione", e gpart prova a fare del suo meglio per indovinare qual'è quello buono. In effetti non è troppo difficile provare, nulla viene scritto sul disco da gpart.

Qui c'è il risultato di gpart sul disco hdb visto in precedenza:

root@charles:/home/jdd > gpart /dev/hdb

Begin scan...

Possible partition(Linux ext2), size(1200Mb), offset(0Mb)

Possible partition(Windows NTFS), size(1200Mb), offset(1200Mb)

Possible partition(Linux ext2), size(1004Mb), offset(2402Mb)

Possible partition(Windows NTFS), size(1600Mb), offset(4102Mb)

End scan.

Checking partitions...

* Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) ends beyond disk end .

Partition(Linux ext2 filesystem): primary

Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): primary

Partition(Linux ext2 filesystem): primary

Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary

Ok.

Guessed primary partition table:

Primary partition(1)

type: 131(0x83)(Linux ext2 filesystem)

size: 1200mb #s(2457880) s(63-2457942)

chs: (0/1/1)-(152/254/61)d (0/1/1)-(152/254/61)r

Primary partition(2)

type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)

size: 1200mb #s(2457880) s(2457944-4915823)

chs: (152/254/63)-(305/253/60)d (152/254/63)-(305/253/60)r

Primary partition(3)

type: 131(0x83)(Linux ext2 filesystem)

size: 1004mb #s(2056256) s(4919781-6976036)

chs: (306/61/49)-(434/60/47)d (306/61/49)-(434/60/47)r

Primary partition(4)

type: 000(0x00)(unused) size: 0mb #s(0) s(0-0) chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Come vedi, la partizione primaria può essere recuperata, mentre per quelle estese c'è ancora strada da fare.

Le partizioni Dos sono etichettate "windows NTFS" perché sono state create provando ad installare Windows 2000 (un'esperienza proprio terribile!). Quella "invalid" è, nei fatti, la partizione estesa.

Detto ciò, si può usare fdisk e tentare di ri-creare la tabella delle partizioni (ricorda, questo non comporta rischi, l'originale è già persa).

Il caso del riccone

Partition Magic è un prodotto commerciale, non così economico se rapportato alle poche occasioni in cui se ne deve far uso (approssimativamente centocinquantamila lire), ma con una reputazione molto elevata. Comunque, non l'ho mai usato e non ne darò giudizi. Se ne dice che è in grado di fare tutto con le partizioni, compreso recuperarle.

L'originale partition-rescue mini HOWTO di Ralf era essenzialmente basato sull'uso di Partition Magic, per cui presumo sia una soluzione molto buona se hai dati preziosi sulla tua partizione Linux, e poche possibilità riguardo a Linux. Comunque ci sono versioni molto recenti di Partition Magic e penso sia meglio consultare il manuale.

Autori

L'autore di questo HOWTO è Jean-Daniel Dodin. Posso essere raggiunto a jdanield@dodin.net o a jdanield@linux-france.org.

Il mio sito web è a http://www.dodin.net. Le pagine su Linux, che son quelle che ti posson interessare, sono a www.linux-france.fr/article/jdanield.

La traduzione italiana è opera di Germano Rizzo, reperibile a manomano@ciaoweb.it.

Vorrei ringraziare Rolf Klausen (E-mail: rolfk@romsdal.vgs.no http://www2.romsdal.vgs.no/˜rolfk/) che ha scritto il precedente partition-rescue mini HOWTO;anche se l'ho riscritto quasi del tutto, ha avuto lui per primo la buona idea.

Ogni altro membro della comunità Linux e tutti coloro che supportano Linux e scrivono documentazioni e programmi per Linux e tutti gli autori dell'LDP e virtualmente ogni persona coinvolta in qualunque cosa abbia a che fare con Linux. In particolare Linus B. Torvalds - è _Il Re_!!!

Vorrei anche ringraziare Michail Brzitwa <mb@ichabod.han.de> per aver scritto gpart!

Versioni aggiornate

La versione più aggiornata di questo mini-HOWTO è reperibile sul mio sito web di Linux, a www.linux-france/article/jdanield/