GNU/Linux Articoli

Spostiamo GNU/Linux


TuxMove Di recente mi sono deciso ad acquistare un disco più capiente per la mia LinuxBox (il disco da 80Gb che usavo sia per Linux che per gli "esperimenti" con altre distro cominciava prmai a starmi davvero stretto). Ho quindi acquistato un nuovo HardDisk (doppia capienza, 160Gb), con l'intenzione di dedicare tutto il nuovo disco al "mio" Linux, e tenere il vecchio come HD per backup ed esperimenti.
Mi sono trovato quindi con il nuovo disco e nessuna(nessunissima!) voglia di reinstallare Linux (operazione che oltretutto ho fatto da poco, installando una Debian Testing che funziona divinamente). Il problema, quindi è di passare l'intero sistema operativo dal disco vecchio a quello nuovo. Il disco vecchio era così partizionato:

hda1 (primaria-avvio) /boot 100Mb
hda2 (primaria) /tmp 6Gb
hda3 (estesa)
hda5 (logica) / 17Gb
hda6 (logica) swap 1Gb
hda7 (logica) /home 55Gb
Per il nuovo disco avevo in mente un partizionamento più lineare, cioèhda1 (primaria-avvio) /boot 100Mb
hda2 (primaria) / 30Gb
hda3 (primaria) swap 1Gb
hda4 (primaria) /home 120Gb
Dopo un fallimentare tentativo con Ghost4Linux (ottimo programma di ghosting, ma per funzionare le partizioni d'origine e di destinazione devono - giustamente - avere la medesima dimensione), ho deciso di fare le cose "a manina". Avevo già partizionato il nuovo disco nel modo sopra descritto. Ho quindi spento il pc e messo come "master" il nuovo disco e come "slave" il vecchio. Ho quindi preso il CD della buona Grml (una distro live pensata per il disaster recovery e l'analisi forense), l'ho schiaffato nel lettore e ho riavviato la macchina. Dopo il boot del sistema live (che parte senza caricare il server X, inutile per operazioni di ripristino) ho creato due directory hda e hdb all'interno delle quali ho poi montato rispettivamente il nuovo e il vecchio HardDisk, con i seguenti comandi:# mount /dev/hda2 hda
# mount /dev/hdb5 hdb
# mount /dev/hdb1 hdb/boot
# mount /dev/hdb7 hdb/home
In questo modo avevo "sottomano" entrambi i dischi. All'interno di hda ho quindi creato tutte le directory presenti in hdb:# cd hda
# mkdir bin boot etc dev home initrd lib media opt proc root sbin srv sys tmp usr var
Ora potevo montare le partizioni relative al nuovo /boot e alla nuova /home:# mount /dev/hda1 /boot
# mount /dev/hda4 /home
Ho quindi cominciato a copiare, cartella per cartella, il tutto (escludendo ovviamente le directory "particolari" di Linux, cioè proc, sys e tmp). Ho usato il normale comando cp seguito da un paio di opzioni, -R per indicare la copia ricorsiva, -p per preservare i permessi e gli attributi dei files copiati, e -v per aumentare la "verbosità" del comando in modo da avere sott'occhio cosa stava succedendo:# cp -Rpv ../hdb/bin/* bin/ Ho ripetuto la procedura indicata qui sopra per tutte le directory.
Alla fine avevo "clonato" la mia LinuxBox nel nuovo disco. Rimaneva solo da sistemare il bootloader, e per quest'ultimo passaggio occorre fare chroot nella root del nuovo disco. Supponendo quindi di essere già dentro la directory hda, si deve dare il comando:# chroot . /bin/bash Una volta dentro, occorre modificare i riferimenti relativi alla partizione di /boot (nel mio caso non era necessario) e della partizione di root. Ho quindi aperto con Vi il file /boot/grub/menu.lst e mi è bastato modificare le voci di boot da root=/dev/hda5 a root=/dev/hda2, salvare il file e dare il comando# grub-install /dev/hda. Ecco tutto. Al successivo riavvio avevo la mia "vecchia" LinuxBox sul nuovo fiammante disco! :-)