domenica 6 gennaio 2013

Errori su disco e cure miracolose

Allora, si magnifica da sempre la leggendaria "stabilità" del Pinguino rispetto a Winblows, ma se il sistema ti va in kernel panic per l'innocente reinserimento di un'Internet key all'uscita dalla sospensione, allora qualche dubbio ti viene... Se poi il successivo reboot si pianta sotto una pioggia di I/O errors sull'hard disk, va in panic anche l'utente!

Può ben darsi che tutto ciò sia dovuto a incipiente disintegrazione del disco, ma porca miseria che non si riesca neanche a ripartire con il LiveCD di openSUSE 12.2 è il colmo! Dici: masterizzo il DVD d'installazione e me la cavo con la modalità "rescue system", peccato che detto DVD, masterizzato su un host Windows 7, sul mio Toshiba impinguinato non riesca a partire al boot!

La cosa più preoccupante è che udev non riesce a montare né la partizione di root, né la home: il terrore è che si siano fottuti i dati, va bè, c'è un backup prima di Natale, ma uffa!

Trascorso l'intero weekend della Befana con l'ansia addosso per le tremila cose da fare con urgenza sul PC, pian piano riesco a risolvere tutto in maniera abbastanza indolore: per venire a capo di una rogna come questa non c'è altro che armarsi di pazienza e scartabellare il web alla ricerca degli strumenti giusti.

Anzitutto, il problema di riuscire a partire in un modo qualsiasi te lo risolve il mitico Knoppix, il cui udev a quanto pare non va a ficcanasare sull'hard disk come fa il LiveCD di openSUSE. A questo punto si possono condurre le operazioni con tutto comodo e, in particolare, si può cominciare a salvare il salvabile con l'eccellente recovery tool ddrescue di GNU: attacco al PC il mio bel discone USB e rilascio un comando del tipo

$sudo ddrescue -r 1 <input_device> <output_device> <log_file>

(mi raccomando, non dimenticare di specificare il file di log, perché torna molto comodo in caso di restore o di interruzione del comando)

Fatto questo, procedo alla riparazione vera e propria: la prima cosa da trovare è la locazione su disco dei superblock di scorta. Il comando

$sudo mke2fs -n <device>

 restituisce questa informazione in calce al suo output. A questo punto non occorre fare altro che riparare la partizione con il comando

$sudo e2fsck -b <superblock> <device>

ponendo in il primo indirizzo della lista restituita da mke2fs, dopodiché si fa il reboot. Se ci sono ancora problemi, si ridà il comando di cui sopra tentando il successivo superblocco della lista, e così via.

Alla fine sono riuscito a ripartire. Rimarrà ovviamente da fare qualche verifica sull'hard disk, ad esempio utilizzando gli Smartmontools oppure TestDisk, disponibile fra l'altro sul CD di Knoppix.

SITOGRAFIA