mercoledì 6 gennaio 2010

Sostituzione di un hard disk senza re-installazione del sistema

Situazione iniziale: un pc con hard disk da 120 Gb partizionato con NTFS (30 Gb) e ext3 (70 Gb) + altre piccole partizioni per swap linux e recovery di sistema. Il sistema ha un dual boot sulla partizione ext3 (con ubuntu) e sulla prima partizione NTFS (Windows Vista inizialmente preinstallato sul pc ma non più usato).
L'HD segnala tramite S.M.A.R.T. molti settori danneggiati quindi decido di sostituirlo con uno nuovo da 160 Gb. Situazione finale che vorrei ottenere: hd da 160 Gb partizionato con ext3 interamente + una partizione di swap da 1Gb. Vorrei copiare il sistema linux interamente senza reinstallarlo e mantenendo quindi esattamente gli stessi dati presenti nel HD da sostituire. La partizione windows NTFS non è più necessaria (eventualmente tenterò di avviarla con una macchina virtuale ma questa è un'altra storia). Non possedendo una "scatoletta" per contenere un hd SATA come quello da sostituire sono obbligato ad effettuare l'operazione in due passi: prima copierò la partizione su un HD esterno USB, poi sostituirò il disco e la copierò su quello nuovo.
Ecco la procedura che ho seguito: 1. Avvio il pc con il cd di Ubuntu avviando il sistema dal CD. 2. Dal terminale copio la partizione ext3 da 70 Gb (sda6) sul disco esterno USB (montato in /media/LACIE) comprimendola con gzip (vediamo quanto si guadagna): sudo dd if=/dev/sda6 | gzip - >/media/LACIE/sda6.gz 3. Spengo il pc, sostituisco il disco e riavvio da cd 4. Creo due partizioni primarie sul nuovo disco con fdisk (sda1 e sda2). 5. Copio i dati della vecchia sda6 in sda1 (non la riempiranno completamente ma per ora va bene così): sudo gunzip -c /media/LACIE/sda6.gz | sudo dd of=/dev/sda1 6. controllo che la partizione sia stata generata correttamente: sudo e2fsck -f /dev/sda1 7. Ridimensiono del filesystem in modo che occupi tutta la partizione sudo resize2fs /dev/sda1 8. Installo il boot loader:
Prima devo montare la partizione perché voglio installare la versione di grub presente su quella p sudo mkdir /mnt/temp sudo mount -t ext3 /dev/sda1 /mnt/temp/
Poi installo grub sudo grub-install --root-directory /mnt/temp/ /dev/sda
Finito. Riavvio il sistema dopo aver tolto il CD ed è fatta.