[hack] Spostare la nostra Installazione

John Doe john_doe@inwind.it
Ven 25 Apr 2003 19:32:24 CEST


Salve, l'altra sera passando dall' Officina ho trovato Thomas che cercava di spostare la propria installazione (solo la root, ovvero il mount point / ) da una partizione a un altra 
(non vi sto a elencare i motivi), l'ho aiutato e, dato che la cosa è 

a) utile, nel caso ad esempio uno si trovi a installare linux sul secondo hd (dual boot con win) e poi decida che linux necessita un posto "in prima fila" senza win di mezzo, ma anche per altre ragioni

b) facile ma non sempre chiaro, specie se uno viene da un ambito win dove la logica è tutta un altra (formattare... mamma mia che stupida perdita di tempo...)

c) veloce

d) facile da spiegare

ho deciso di scrivere due righe a proposito (sotto consiglio di alex.u e Thomas)

Allora: innanzitutto io non sono responsabile se tentando di fare quello che sta scritto sotto subite una perdita di dati, fatevi un backup delle cose importanti prima di inziare (anche se la procedura è praticamente indolore per la vostra installazione, potrebbe non esserlo per la partizione di destinazione, anzi, non lo è affatto)

#---------------------------------------------------------------------------------#
# INTRO: Cenni sulla nostazione                                                   #
#---------------------------------------------------------------------------------#

. Si intende ovviamente che siate connessi come root
. Tutte le volte che scrivo un comando da dare da consolle lo faccio con
	# <nome_comando> <parametri>
. Ovviamente, ci deve essere una partizione di destinazione e una partizione iniziale, quella dove attualmente è installata la vostra distribuzione...
	di seguito, per tutto il resto del testo, sarà chiamata la prima DEST e la seconda SOURCE.
. Si suppone che sappiate su che partzione avete installato la root dir da spostare, quindi se essa è /dev/hda3 oppure /dev/hdc1 o altro, e allo stesso modo si suppone
  	che sappiate qual'è la partizione di destinazione

#---------------------------------------------------------------------------------#
# PASSO 1: Prepariamo l'hard disk                                                 #
#---------------------------------------------------------------------------------#

La DEST se non c'è va creata, lo potete fare con i vari diskdrake - tool grafici o con il più universale 

# man cfdisk 
(quasi obbligatorio a meno non siate già "esperti" nell'utilizzo)

Poi, potete vedere quanto state usando di spazio per la root dir, e dimensionare la nuova partzione di conseguenza (se usate 5 gb e non pianificate altre grosse installazione è inutile una partizione de 15 gb... cmq fate come meglio credete)

# df -h /

questo è il mio output

>>>	jdoe@waste-bin jdoe $ df -h /
>>>	Filesystem         Dimens. Usati Disp. Uso% Montato su
>>>	/dev/sda2             5.6G  4.0G  1.7G  72% /

Quindi fate 

# cfsidk /dev/hdX 

dove X rappresenta la lettera relativa al disco fisso su cui deve riedere la partizione di DESTNAZIONE che state per creare
OCCHIO CHE QUESTA E' LA FASE IN CUI POTETE FARE DANNI, OVVERO SE CANCELLATE UNA PARTZIONE TUTTI I DATI CHE CI SON SOPRA VANNO 
PERSI... FATE UN BACKUP
(scusate l'urlo)

Una volta creata la partzione (che sara qualcosa del tipo /dev/hdXY), dobbiamo creare un filesystem. Qui la scelta è varia, ma si può restringere a ext3 reiserfs e xfs

# mkfs.reiserfs /dev/hdXY
oppure
# mkfs.ext3 /dev/hdXY
oppure
# mkfs.xfs /dev/hdXY

Ok, adesso DIST è pronta. Per SOURCE non c'è niente da fare (nel senso buono, ovvio :P )

#---------------------------------------------------------------------------------#
# PASSO 2: Montiamo DEST e iniziamo la copia                                      #
#---------------------------------------------------------------------------------#

Nulla di difficile ne di pericoloso qui:

# mkdir /mnt/DEST
crea la cartella dove DEST verrà montata con il seguente comando
# mount /dev/hdXY /mnt/DEST

tutto qui :)
ora iniziamo la copia semplicemente digitando

# cp -vax / /mnt/DEST

spiegazione : 
-a : archive, mantiene tutti i permessi come sono in origine, scende anche nelle sotto directory e non dereferenzia i link simbolici (uguale a -dpR )
-v : verbose, serve per vedere quelo che sta facendo
-x : salta le sotto directory che sono su altri filesystem diverso da quello di partenza (nel nostro caso / ), quindi salta tutto cioè che è montato (cdrom, devfs proc ecc ecc)

Questa fase è abbastanza lunga, dipende da quanta roba avete sotto /. Può anche metterci un ora o più


#---------------------------------------------------------------------------------#
# PASSO 3: Configuriamo il boot-loader (lilo o grub)                              #
#---------------------------------------------------------------------------------#


Allora, anche qui nulla di difficile.
Faccio la distinzione LILO - GRUB, molti avranno lilo, chi ha RH probabilmente ha grub, io uso grub :P
Uso come editor di riferiemento vim, ma potete farlo con l'editor che preferite
------
LILO :
------

# vim /etc/lilo.conf

nell'editor, portatevi con il cursore sopra la prima lettera del entry riguardante la vostra attuale distibuzione
sarà qualcosa del tipo:

>>>	image = /boot/vmlinuz  # your zImage file
>>>	  root = /dev/hda1       # your root partition
>>>	  label = Linux          # or any fancy name
>>>	  read-only              # mount root read-only

quindi spostatevi sulla "i" di image. Premete il tasto "v" una volta sola e muovetevi fino ad arrivare su la "y" di read-only (nel commento).
Vedrete che tutto il testo è selezionato.
Premete quindi il tasto "y"

Muovetevi verso il fondo del file, insomma andate in basso finchè potete e premete il tasto "p"
Il testo sopra selezionato sarà quindi incollato a partire dalla riga sotto a quella dove siete ora.

Entrate in modalità "inserimento" premendo il tasto "INS" o "i", e modificate il testo nel seguente modo

>>>	image = /mnt/DEST/boot/vmlinuz  # your zImage file
>>>	  root = /dev/hdXY       # your DEST partition
>>>	  label = Linux-new      # or any fancy name
>>>	  read-only              # mount root read-only

dove hdXY è la partizione dest che avete creato prima.

ora salvate, premete ESC finchè non fa biiip e digitate quindi :x

usciti da vim digitate

# /sbin/lilo 

------
GRUB :
------

# vim /boot/grub/grub.conf

oppure, per versioni più vecchie

# vim /boot/grub/menu.lst

Selezionate la riga relativa alla root ce volete copiare
ecco la mia (anche la vostra sarà qualcosa di questo tipo):

>>>	#Gentoo Linux
>>>	title=Gentoo Linux 1.4
>>>	kernel (hd0,0)/bzImage-2.4.20 hdc=ide-scsi vga=791 root=/dev/sda2 

La selezionate/copiate/incollate come descritto sopra (per lilo)

eppoi la modificate in 

>>>	#Gentoo Linux
>>>	title=Gentoo Linux 1.4 - NEW
>>>	kernel (hdW,Z)/bzImage-2.4.20 hdc=ide-scsi vga=791 root=/dev/hdXY

dove W Z è l'indicazione in notazione grub di X e Y ( per dettagli: # info grub )

Salvate e uscite.


#---------------------------------------------------------------------------------#
# PASSO 4: Riavviamo e incrociamo le dita!!!                                      #
#---------------------------------------------------------------------------------#


# reboot

selezionate la nuova entrata che avete creato nel menù di lilo o di grub
Se avete fatto tutto per bene vi dovrebbe fare il boot tranquillamente.
Appena arrivati nella consolle potete verificare che siate effettivamente up con la copia

# mount


>>> /dev/hdXY on / type reiserfs (rw,noatime)

verifica che siete su DEST e nn su SOURCE

Ecco fatto.
Spero di non aver dimenticato nulla, specie da ultimo, ma scrivendola mi son un po' fuso.
consgigli specie su lilo son ben accetti

Giacomo













Maggiori informazioni sulla lista golem-hack