spostarewinelinuxsuharddiskpiùgrande

Spostare Win e Linux su hard disk più grande

AVVERTENZA:

L'autore non si prende alcuna responsabilità per danni a cose o persone, diretti o

indiretti, dovuti a questo articolo: è solo una raccolta di esperienze personali che

penso possano risultare utili agli altri, ma non danno alcuna garanzia né di

salvaguardia dei dati, né di riuscita positiva e completa. Seguite queste istruzioni

a vostro totale rischio e pericolo!

Introduzione e motivazioni

Vista l'accelerazione e la quantità di lavori diversi che mi sono capitati di recente, mi sono visto costretto, mio malgrado, a fare l'upgrade dell'hard disk sul mio vecchio portatile. La macchina è vecchiotta, ma ancora funzionale, e non avevo tempo da perdere per reinstallare da capo Windows e Ubuntu, e poi trasferirci tutti i dati e le impostazioni. Il vecchio hard disk da 20GB, oltre a essere lento, cominciava ad avere problemi nel contenere tutto il necessario al lavoro quotidiano, a causa soprattutto della condivisione tra Win e Linux.

Per errore di sbaglio, mi sono trovato a dover gestire e sviluppare due siti/applicazioni LAMP, e nonostante una macchina con Gentoo in ufficio, è andata a finire che il lavoro e il test vengono fatti sul mio anziano HP ZE4318: continuo a ritenere Ubuntu una distribuzione poco seria e scomoda per questo genere di lavoro, però funziona. Al contrario, nonostante le giornate spese dal collega fissato di Gentoo, lì sopra non ci ha mai funzionato una benemerita cippa (termine tecnico, ndr).

Approfittando di una lunga attesa dal fotografo, sono entrato nel negozio di PC antistante e ho chiesto se per caso avevano un hard disk per notebook: un bel Toshiba 80GB 5400RPM. Il prezzo era un po' altino e, inaspettatamente, alla mia richiesta di sconto mi sono visto tagliare il prezzo del 25%!! Si vede che i drive IDE non li vuole più nessuno... Così mi sono anche accattato il case esterno USB2 in metello dell'italiana Nickel, che raccomando a tutti.

Arrivato a casa, spacchetto l'hd e lo pongo dentro il case metallico. Inserisco il cavo USB e... SBAM! Non succede nulla: tutto morto. Comincia a salire il sangue alla testa, pensando alla fregatura presa, finché non osservo meglio il cavo USB: avevo inserito un cavo strano, più fino e più corto del resto del cavo: cambio spinotto e... SBAM! Tutto riconosciuto al primo colpo. Avvio la Gestione disco dagli Strumenti di Amministrazione di XP e suddivido l'hd in tre partizioni: quella più grande per il famelico XP, un'altra per il parco Ubuntu, e la minipartizione di swap. La struttra è identica all'hd vecchio, a parte la dimensione delle partizioni, ma questo ha poca importanza alla fine dei conti.

Formatto (mi raccomando, solo NTFS) la partizione Windows per sicurezza, per controllare che tutto funzioni, specie con il mio HP che possiede solo USB 1.1, e vado a fare una bella merenda e due chiacchiere in giro per l'azienda o con gli amici... Nel modo più assoluto, non fate assegnare a Windows una lettera alla partizione durante la formatazione!!! Ciò vi semplificherà enormemente la vita in seguito.

Spostare Windows

Il problema più semplice da risolvere è stato trovare un software in grado di spostare Windows su un altro hard disk senza perdersi nulla e dentro una partizione più grande. Tra le innumerevoli soluzioni a pagamento, ne ho trovata una totalmente gratuita: Drive Image XML. Consiglio di scaricarsi anche l'help in linea che risolve alcuni dubbi sulle opzioni disponibili e tenere a portata di mano una stampata della pagina di FAQ presente sul sito del produttore. Installato il software minimo, avvio i servizi di Windows che il produttore consiglia di attivare e faccio partire il programma.

Seleziono la modalità "Drive to drive" e seguo passo passo le istruzioni del wizard. Confermo il drive e la partizione su cui voglio che venga fatta la copia: il bello è che deve essere una partizione uguale o più grande di quella originale, proprio come volevo io. Non è invece possibile fare la copia su una partizione più piccola. La sorpresa sgradita è che i famosi servizi di Windows avviati in precedenza per la replica dell'hd in realtà sembrano non voler proprio funzionare con Drive Image XML, ma la copia funzionerà lo stesso utilizzando il lock completo del volume.

Avvio la copia e me ne vado a nanna: alla fine scoprirò che invece delle 9 ore previste ce ne ha messe solo 7 e un quarto (grazie a USB 1.1). La replica della partizione è talmente perfetta che se provo a montare l'hd sotto Ubuntu, questo si incasina pensando che sia esattamente lo stesso hd montato però su due device diversi e non ti permette più di fare l'umount. A questo punto il più è fatto. Consiglio di staccare il disco e attaccarlo tramite USB ad un altro PC qualsiasi: sempre da Strumenti di Amministrazione -> Gestione disco rendete Attiva la partizione Windows, altrimenti una volta fatto il trapianto di hd, Windows non partirà neanche a calci (e neanche dopo milioni di fixmbr/fixboot).

Spostare Linux (Ubuntu)

Molto più semplice (come al solito, o quasi) spostare Linux sul nuovo hd. Avvio Ubuntu, lascio fargli montare il nuovo drive USB e formatto le partizioni non Windows, la prima (più grande) con ext3, e l'altra come swap. Dopo un po', è tutto pronto per il grande travaso. Seguendo delle indicazioni generiche trovate sulla rete, smonto la partizione Windows:

umount /dev/hda1

La guida consiglia di smontare anche la rete: io mi sono limitato a staccare il cavo.

Apro un bel terminale e passo a single user senza interfaccia grafica:

sudo telinit 1

A Ubuntu la cosa piace poco, ma la fa. Provo ad usare un metodo consigliato sulla rete che ricorre a tar e pipe per trasportare l'installazione, ma Ubuntu non è d'accordo. Per fortuna c'è anche un altro sistema che funziona egregiamente:

cd /

sudo cp -ax . /media/usb-disk

Le opzioni di cp usate permettono di copiare tutti i file ricorsivamente, mantenendo i permessi, senza però copiare i filesystem montati (altrimenti ricopierebbe anche l'hd USB montato dove stiamo copiando!). Inoltre crea la dir /proc ma non prova a copiarla, fortunatamente. Hd interno ed esterno frullano come trottole, ma nel giro di un paio di ore la copia è finita. (In verità, l'hard disk nuovo continua a frullare ancora per diversi minuti e a segnalare scrittura in corso dopo che il sistema è tornato utilizzabile).

A questo punto c'è l'unico vero scoglio: bisogna modificare due file sul nuovo hd se vogliamo che tutto funzioni. Prima eseguo il comando:

sudo vol_id /dev/sda2

Viene restituito un insieme di valori, compreso un UUID: lo segno e mi assicuro di averlo scritto correttamente. A scanso di problemi, visto che ho la partizione Windows perennemente montata, faccio lo stesso con la partizione Windows:

sudo vol_id /dev/sda1

Il valore di UUID risulta essere molto più corto: è giusto così, e lo segno anche lui insieme all'altro.

Adesso apro il file /boot/grub/menu.lst dell'hd nuovo (nel mio caso in /media/usb-disk) e modifico gli UUID che ci trovo dentro con quelli che avevo segnato prima: come prova del nove, se sono uguali ho preso gli ID dell'hd sbagliato, e dovo ricominciare (provando con /dev/sdb1, hdb1, ecc.). Ribadisco il concetto: vanno sostituiti tutti gli UUID, anche quelli che sembrano commentati perché preceduti da #.

Salvo e passo al file /etc/fstab (sempre del nuovo hd), e anche qui vado a sostituire gli UUID: caso a parte è l'ID della partizione Windows. Poiché ho fatto in precedenza una copia immagine, l'ID dovrebbe essere del tutto identico: altrimenti c'è qualcosa di sbagliato...

La prova del fuoco

E' ora di passare alla prova del fuoco: prima di fare ciò, e di mettere quindi mano allo sbudellamento del notebook, mi assicuro di aver reso la partizione Windows Attiva. Disseziono il PC, stacco il vecchio hd, smonto quello nuovo dal case USB e lo trapianto nel PC; allo stesso tempo, rimonto il vecchio nel case esterno, in maniera provvisoria, senza stringere alcuna vite per paura di aver fatto qualche vaccata, e avvio il notebook. Windows funziona senza colpo ferire: faccio clic sull'hd e vedo un rassicurante "51GB liberi". Anche il tempo di avvio è sceso di un po', il che non fa proprio schifo... Riavvio e passo sotto Ubuntu: il sistema sembra pensarci un po' (o forse è l'ansia che sale), ma alla fine tutto si risolve per il meglio. Per fare le cose pulite fino in fondo, cancello la cartella /media/usb-disk creata dal cp precedente, unica traccia rimasta del trasferimento, ovviamente dopo essermi assicurato che è vuota e non vi è stato montato alcun device.

Ora che tutto sembra funzionare, avvito il vecchio hd all'interno del case metallico USB e lo metto da parte: nei prossimi giorni, se non noterò problemi nel sistema "trapiantato", lo attaccherò ad un altro PC per piallarlo e renderlo fruibile come memoria di scambio estesa.

Come ultima raccomandazione, vi dico di tenere a portata di mano sia il CD di installazione di Windows che quello di Ubuntu: in caso di mancato avvio potrete sistemare il settore di boot e l'MBR per fare il boot dentro Windows, e usare la live di Ubuntu per ripristinare, in un secondo momento, grub.

Ovviamente per queste operazioni vi rimando alle centinaia di guide che trovate sulla rete.

Come è facile intuire, i consigli dati in questa paginetta valgono anche nel caso di un cambio di hard disk nel computer desktop di casa, e dovrebbero essere addirittura più semplici nel caso di altre distro che non ricorrono agli UUID, ma solo al nome delle partizioni per fare riferimento alla partizione di root. Inoltre, variando di poco le cose, dovrebbe essere possibile trasferire solo alcune dir in partizioni diverse (ad es. /home o /var).

In bocca al lupo, nel caso vi trovaste nelle mie stesse condizioni!

Scritto da: Giacomo Magnini (giacomo.magnini@mozillaitalia.org)

Contenuto rilasciato sotto licenza Creative Commons 3.0: Attribuzione - Condividi allo stesso modo 3.0

Ultima modifica: 17 Settembre 2007