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
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:
Situazione del mio disco dopo aver copiato la root(/dev/hda6) nella nuova partizione (/dev/hda1)
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
Postato in: Ubuntu, gnome, guide, linux, partizioni








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…
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?
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 ^^’