Sostituire l’hard disk di un portatile con Linux

Hard DiskIl mio portatile aveva un disco troppo piccolo per le mie necessità, così ho deciso di sostituirlo con uno più capiente. Ovviamente non volevo perdere in miei dati originali, ne la configurazione dual boot (Windows XP + Linux). Ecco come ho fatto.

Prima di iniziare

Quello che state per fare è potenzialmente pericoloso, potreste perdere tutti i vostri dato e/o distruggere il vecchio o il nuovo disco. Quindi due consigli fondamentali:

  1. Fate backup di tutti i vostri dati. Fatto il backup controllate che il backup contenga i dati che vi servono e che sia leggibile. Meglio se fate una prova di ripristino dei dati.
  2. Prima di maneggiare gli dischi assicuratevi di non avere accumulato elettricità statica. Se non avete un degli appositi bracciali, scaricatevi su qualcosa di metallico, ad esempio un termosifone, un rubinetto.

Cosa serve per iniziare

Prima di iniziare assicuratevi di avere gli oggetti seguenti:

  • Il nuovo hard disk da 2.5 pollici.
  • Un contenitore di hard disk da 2.5 pollici esterno con interfaccia USB2 e apposito cavetto. Se ne trovano economici a meno di 20 €. Servirà per fare l’operazione e vi rimarrà per usare il vecchio disco come disco esterno supplementare.
  • Un cacciavite a stella piccolo.
  • Il CD/DVD di installazione di Fedora Core 4.

Fase 1: partizionamento del nuovo disco

Collegate il nuovo disco al portatile, usando il cavo USB. Il sistema riconoscerà il nuovo disco e lo chiamerà /dev/sda. Potete verificarlo leggendo le ultime righe di /var/log/messages.

Ora potete partizionare il nuovo disco, con il vostro programma preferito, ad esempio gparted. Create le nuove partizioni in modo identico al vecchio disco, avendo cura di creare le nuove partizioni ext3 di dimensioni leggermente maggiori al vecchio disco. Create invece le partizioni Windows della stessa dimensione delle originali. Visto che il nuovo disco era più capiente ho aumentato la dimensione della partizione di home fino a riempire tutto lo spazio disponibile.

Dovete anche assegnare la label msdos al vostro nuovo disco.

Se avete una partizione windows dovete settarle i flag boot e lba.

Fate molta attenzione a non confondere il nuovo disco, /dev/sda, con il vecchio, che presumibilmente si chiamerà /dev/hda. Voi dovete partizionare /dev/sda e non /dev/hda.

Fase 2: copia dei dati

Ora fate il boot del portatile da CD/DVD di FC4 e appena vi compare il prompt digitate:

linux rescue

Quando il sistema vi chiederà se montare il disco /dev/hda rispondete di no. Dovreste quindi trovarvi con la shell come utente root. E’ il momento di copiare le partizione dal vecchio al nuovo disco. Copiate tutte le partizioni tranne quella di swap. I comandi sono questi:

dd if=/dev/hda1 of=/dev/sda1 bs=2048
dd if=/dev/hda2 of=/dev/sda2 bs=2048
dd if=/dev/hda3 of=/dev/sda3 bs=2048
dd if=/dev/hda5 of=/dev/sda5 bs=2048

Attenzione: questa è la fase più critica, se indicate per sbaglio una partizione del disco vecchio come parametro di of=, perdete tutto il contenuto della partizione.

Ora dobbiamo effettuare il resize delle nuove partizioni ext3, in modo che i dati contenuti riempiano l’intera partizione. I comandi sono questi:

resize2fs /dev/sda2
resize2fs /dev/sda3
resize2fs /dev/sda4
resize2fs /dev/sda5

Se una delle partizioni è l’area di swap (es. /dev/sda5), dovete attivarla, con questo comando:

mkswap -L swap /dev/sda5

Fase 3: installazione del nuovo disco

Ora installiamo fisicamente il nuovo disco. Spegnete il portatile, svitate le il coperchio dell’alloggiamento del disco, togliete il disco. Eseguire l’operazione al contrario con il nuovo disco.

Fase 4: Attivazione del nuovo disco

Fate ora il boot del portatile dal CD/DVD di FC4, ancora una volta nella modalità linux rescue, ma questa volta confermate il mount del disco e in modalità read/write. Quando vi compare il prompt della shell, digitate:

chroot /mnt/sysimage
grub-install /dev/hda

Fase 5: Boot e test di funzionamento

Il lavoro è terminato, fate il reboot del portatile normalmente, senza CD/DVD di FC4 e verificate che tutto funzioni. Tenete al sicuro il vecchio disco finché non siete sicuri che tutti i vostri dati siano a posto.

13 pensieri su “Sostituire l’hard disk di un portatile con Linux

  1. –Alcune osservazioni–
    Se il portatile è vecchio potrebbe non avere una usb2, volendo si può usare anche una connessione ethernet.
    L’eventuale hd connesso alla porta usb non è detto che sia riconosciuto come sda: potrebbe essere sdb, sdc..
    A parte questi dettagli mi chiedo se una copia bitstream sia la soluzione più appriopriata tanto più che avanti nell’articolo si propone un resize del filesystem di tutte le partizioni ext2 per adeguarle a nuove più grandi partizioni.
    Io opterei come ho suggerito anche in un recente articolo di questa natura di creare le nuove partizioni con gparted (..o qtparted, parted, ecc.). Gparted appongiandosi anche a programmi esterni come ntfsprogs può creare partizioni e filestems. Volendo le partizioni ntfs possono essere create anche con il format di winz in una partizione preparata con gparted.
    Una volta create le partizioni grandi abbastanza da contenere almeno i dati che si vogliono trasferire quest’ultimi possono essere trasferiti usando find in pipe con cpio: find /mnt/vecchio-disco-part2 -depth -print0 | cpio -pvdm –null /mnt/nuovo-disco-part2 (x esempio).
    I dati possono essere filtrati semplicemente con un “grep -v” in pipe dopo find permettendo, per esempio, di filtrare tutti i file .cab ed addirittura usare una partizione più piccola di quella originale.
    Secondo la mia opinione se non si deve compiere una indagine di tipo investigativa sui settori non allocati, sullo slackspace la copia dei dati è più conveniente, flessibile e razionale della copia bitstream, molti software commerciali di backup, nelle versioni più recenti, hanno introdotto questo criterio.
    Sarà anche un’occasione per “rinfrescare” il filesystem e liberarsi definitivamente anche dei dati cancellati….anzi visto che ci siete ripulite o ricreate anche il pagefile.sys (file di swap di winz).
    Saluti
    Max
    bmax-AT-gmx.it

  2. Se funziona, meriti un bacio in fronte, si fa per dire.
    Giusto in questi giorni dovrò fare il lavoro da te descritto e sai che palle reinstallare tutto.
    Grazie in anticipo.

  3. Ho fatto una cosa simile, cioè spostare ubuntu da una partizione ad un’altra. Ebbene, tutto liscio, solo un copia e incolla con nautilus, tranne naturalmente per il file /etc/fstab e /boot/grub/menu.lst. Dov’è l’inghippo? I permessi speciali come sticky e suid sono stati azzerati, cosicché non funzionava nemmeno sudo e l’automount. L’ho capito subito e ho risolto. Sarà il filesystem (reiserfs) o un problema di mv (il comando di shell su cui si appoggia nautilus)? È un baco o un comportamento predefinito, causa sicurezza? Ciao.

  4. x bmax:
    Se manca l’usb2 si potrebbero usare degli adattatori pcmcia/usb2, gli slot pcmcia sono presenti nei portatili da sempre.
    Il sistema assgna nomi /dev/sdb, /dev/sdc ecc. solo se ci sono altri dispositivi SCSI collegati.
    La copia con byte a byte ha il vantaggio che è indipendente dal file system definito per la partizione e non devi preoccuparti della sequenza di flag giusta da passare a cpio, tar o altro. Se invece il disco è danneggiato, meglio usare altri sistemi.

    x Alex:
    certamente la copia con Nautilus è da evitare: nel file system ci sono anche file strani, come i device o la directory /proc.

  5. invece di dd, puoi usare ddrescue, che previene errori nel copiare file particolari tipo dispositivi o code fifo!

  6. x mauro: grazie per il suggerimento su ddrescue, che però è utile solo se ci sono degli errori di I/O. Dispositivi e code fifo sono definiti a livello di file system, per cui non sono un problema con dd e neppure con ddrescue.

  7. xMalex.
    Era la soluzione più immediata e non ho copiato i vari /sys /proc /dev.
    Quello che volevo sapere è perché i permessi speciali non sono stati copiati.

  8. Se volevi potevi utilizzare il programma ghost, copia bit a bit i due dischi la cosa importante è che entrambi i dischi abbiano la medesima grandezza o quello nuovo sia più capiente del disco originale. Il programma funziona con tutti i sistemi operativi su piattaforma X86. Provalo.

    CIAO

    ANGELO

  9. Angelo,
    stai parlando di Norton Ghost? Quello un programma a pagamento per Windows, che me ne faccio?

  10. x Malex.
    Probabilmente Angelo si riferiva a ghost4linux, un programma simile (a livello di risultati ottenibili: infatti è semigrafico, quindi scordati le interfacce tradizionalia norton ghost. Ecco il link se ti interessa:

    http://sourceforge.net/projects/g4l

  11. Per Malex:

    Ho bisogno un aiuto: voglio trasferire la mia Slack 10.2 (per mantenere le vecchie inpostazioni e aggiornarla più avanti alla versione 11)da un HD da 40GB a un nuovo HD da 80GB.
    Voglio evitare che prima o poi il “vecchio” mi abbandoni, dato che il Kernel mi “invia” messaggi poco rassicuranti.
    Ho seguito la Tua guida e infatti riesco tranquillamente a far partire il tutto sul nuovo disco (ho modificato a dovere il file fstab).
    Dato che le mie partizioni sono Reiserfs, ho cercato una guida (e l’ho trovata) su come effettuare il Resize del file system.
    Ho iniziato con il Resize del file system e poi con fdisk modifico le dimensioni della partizione. Fin qui ok!
    La mia partizione hda6 (/) è di circa 10GB di cui solo 5 sono occupati. Quando la vado a copiare sul nuovo disco, è uguale a quella del vecchio, ma io vorrei aumentare le dimensioni della partizione (visto che ho parecchio spazio più di prima), solo che mi incasino, cioè faccio tutte le operazione (forse sbagliando, dato che ho provato in diversi modi, ma il risultato finale è sempre quello) e alla fine, se aumento la partizione (eliminandola e ricreandola stando attendo al cilindro di partenza), mi risulta quasi completamente occupata, cioè non mi rimane spazio nonostante sia da 25GB.
    Dove sbaglio? (forse non ho capito niente!?)

    ciao e grazie.

  12. Fabrizio,
    da quello che scrivi sembra che tu faccia il resize del file system prima di copiare la partizione sul nuovo disco. Il resize va fatto sulla partizione sul nuovo disco, dopo aver fatto la copia dal vecchio.

I commenti sono chiusi.