Come spostare partizione Linux in un’altra partizione

Ciao a tutti era da un bel po’ che non mi facevo sentire, ho avuto i miei motivi comunque…. in effetti in questi giorni sono stato a scervellarmi su come potevo ingigantire la mia partizione di root non avendo spazio libero (non allocato) contiguo, intuitivamente la soluzione è semplice: basta crearmi una partizione dello stesso tipo più grande e spostarci dentro l’attuale root (/)… “eeeh hai detto niente!?!!??!” mi sono risposto dopo 😉

Supponete di avere un hard disk fisico di 160gb diviso in questo modo:

  • Una partizione Windows NTFS 85GB
  • Una partizione di root ext3 7 GB
  • Una partizione di home ext3 di 17GB
  • Una partizione di swap linux-sawp di 1GB
  • E infine una partizione dati di tipo reiserFS di 43Gb

Ovviamente le partizioni linux root e linux swap erano incluse in un’unica partizione estesa altrimenti avrei sforato il limite massimo di partizioni primarie che è 4…
Di seguito il riassunto dei passi che ho seguito per spostare l’attuale partizione di root in una partizione più grande:

  • Ho eliminato la partizione di Windows che non usavo già da tempo e in cui non avevo dati importanti da backappare.
  • Da questa ho preso 20 giga e li formattati con file system ext3
  • Ora dobbiamo solo copiare i dati nella nuova partizione appena creata:
    • Procuriamoci una live e riavviamo il sistema (io ho usato quella di Gutsy Gibbon)
    • Una volta entrati nella live apriamo il terminale e diamo i seguenti comandi

    sudo mkdir /media/actualRoot

    sudo mkdir /media/newRoot

    sudo mount /dev/hda6 /media/actualRoot

    sudo mount /dev/hda1 /media/newRoot

    cd /media/actualRoot/

    sudo cp -av ./bin/ ./boot/ ./dev/ ./etv/ ./home/ ./initrd/ ./lib/ ./lost+found/ ./mnt/ ./opt/ ./proc/ ./Recycled/ ./root/
    ./sbin/ ./srv/ ./sys/ ./tmp/ ./usr/ ./var/ /media/newRoot

Dopo alcuni minuti il comando cp avrà copiato tutto nella partizione /media/newRoot, ma prima di procedere alcune delucidazioni sulle operazioni appena svolte: quando entrate nel cd Live viene montato un file system temporaneo per non dire “fittizio” insomma di sicuro non è il file system che interessa a noi, quindi dobbiamo sapere quale tra i dispositivi nella directory dev corrisponde alla partizione che ci interessa montare su actualRoot (cioè la nostra / attuale) e quale, tra lo stesso insieme di dispositivi, corrisponde alla partizione in cui verrà spostata la actualRoot. Niente paura con GParted la cosa è molto più semplice basta aprirlo e vi dirà lui qual dev corrisponde alle rispettive partizioni.
Se volete seguire i comandi sopra riportati assicuratevi che abbiate montato le giuste partizioni e cosa più IMPORTANTE che passiate solo il necessario al comando “cp”, infatti non occorre passare tutto il contenuto della partizione di root al comando cp, ad esempio io ho la dircetory home montata su un’altra partizione e non ho avuto bisogno di includere questa directory tra quelle da copiare.
In generale:

  • Non includete i link simbolici presenti nella radice potrete ricrearli successivamente col comando ln -s
  • Non includete le directory in cui è montato un file system di una partizione diversa da /
  • La maggior parte delle volte non è necessario includere /dev /proc /tmp /var
  • Non dimenticate assolutamente l’opzione “-a” vicino al comando “cp” altrimenti vi ritroverete solo con un mucchio di file senza senso

Ok ora siamo pronti per preparare la nuova partizione all’avvio , consiglio di non cancellare la vecchia finchè non avrete testato la nuova.

Preparare la nuova partizione all’avvio significa ricreare i link simbolici che c’erano prima, ricreare le directory su cui verranno montati dei file system diversi da root , risitemare la tabella dei file system editanto il file “fstab” einfine riconfigurare e reinstallare GRUB nell’ MBR.

Pensavate di essere vicini alla fine vero?:D:D:D

Sostanzialmente ciò sopra detto si riassume in questi comandi. Dalla directory /media/newRoot:

sudo mkdir [tutte le direcotry non incluse prima nel comando cp]

sudo ln -s [percorso file da collegare/file da collegare] [percorso del collegamento/file del collegamento]

Aprite il file fstab e modificatelo opportunamente:

sudo gedit etc/fstab

Ora rimane solo da riconfigurare il grub. Entrate nella partizione /media/actualRoot e aprite il file ci configurazione grub:

sudo gedit boot/grub/menu.lst

Lasciate tutto come sta e aggiungete alla fine un qualcosa del genere:

title Ubuntu 7.10(test nuova partizione)
root (hd0,0)
kernel /boot/vmlinuz-2.6.22-14-generic root=/dev/hda1 ro quiet splash locale=it_IT vga=792
initrd /boot/initrd.img-2.6.22-14-generic
quiet

dove hd(0,0) corrisponde a /dev/hda1 cioè la nuova partizione in cui abbiamo copiato root e abbiamo montato su /media/newRoot

salvate e chiudete. Ora dobbiamo chroottarci nella vecchia partizione di root ed eseguire grub-install quindi:

sudo mount -o bind /dev/ /media/actualRoot/dev/

sudo mount -t proc /proc/ /media/actualRoot/proc/

sudo chroot /media/actualRoot

Se tutto è andato bene ora siete utenti root nella vecchia partizione di linux, spostiamoci quindi nella directory /boot/grub/ ed eseguiamo il comando:

grub-install /dev/hda

A questo punto riavviate e se tutto è andato bene vi ritroverete la nuova riga inserita prima nel menu di grub, ora non vi resta che scegliere la nuova opzione per testare la nuova partizione, se tutto va bene potrete anche cancellare la vecchia root e rimettere a posto l’insieme delle partizioni ad esempio io alla fine ho disposto così il mio disco:

Partizioni

Situazione del mio disco dopo aver copiato la root(/dev/hda6) nella nuova partizione (/dev/hda1)

PartizoniDOpo

Situazione del mio disco dopo aver risistemato lo spazio non allocato e cancellato la root vecchia

Conclusioni:

Dopo questa avventura ho capito molto più a fondo la struttura del file system Linux e cosa molto più gratificante con un semplice comando di copia e u editor di testo sono riuscito ad effettuare operazioni alla stregua di Norton Ghost per Windows: la soluzione più semplice è sempre la più efficiente!!

Ciao e spero che questa recensione possa esservi di aiuto non esitate a postare commenti al riguardo:

nonSolO1x

Annunci

4 Risposte

  1. ciao,
    ottima guida, grazie mille! con magic parted ed i tuoi appunti son riuscito a spostare la root in modo indolore.

    Seguendo alla lettera la configurazione per grub al riavvio entrando con la nuova partizione, se si va sotto /boot/grub/menu.lst ci si ritrova il vecchio grub senza i riferimenti alla nuova partizione inserita.
    Probabilmente, è quindi meglio, (quando si è fatto il boot da live cd) modificare il menu.lst presente nella newRoot/boot/grub/ … in questo modo anche installando il bootloader (con il successivo grub-install) al riavvio avremo le nostre modifiche nella nuova partizione… giusto per tener allineato il menu.lst con grub.

    Comunque, dico probabilmente perchè non l’ho verificata ma a rigor di logica…

  2. si teoricamente mi trovo infatti al primo tentativo avevo provato nello stesso modo da te descritto ma sfortunatamente l’immagine del bootlader nella partica risultava inconsistente… quindi non so che dirti dovrei fare un’altra prova con più calma magari ho sbagliato qualcosa ma tu l’hai provato in quel modo?

  3. ehm, no, purtroppo no… mi sono accorto di avere il menu.lst non aggiornato solo dopo aver terminato le operazioni per spostar la root ed aver riavviato ^^’

  4. Debian Etch – Gnome
    La mia intenzione era quella di ingrandire la /usr da 4.1Gb a xx. Pensavo di replicare /home, /usr/ /var /tmp e swap su partizioni di un disco di appoggio, montarle e verificare il funzionamento del sistema; quindi ingrandire la /usr originale sul primo disco. Ha funzionato per tutte tranne che per la nuova /tmp. Dopo averla montata al login/pwd un messaggio mi dice che la mia sessione è durata solo 10 secondi e fra le opzioni possibi funzionanti c’è solo il terminale di emergenza.

    Sapreste indicarmi cosa accade ??? (i permessi sulla nuova /tmp sono identici all’originale) e per il mount delle nuove partizioni editavo di volta in volta fstab e riavviavo la macchina.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: