101 Libros de Informática Gratis

miércoles, 21 de abril de 2010

Cambiar instalación de Linux a una partición ó disco duro diferente

Esta es una solución muy buena cuando quieres cambiar tu instalación de linux a otro disco duro, por que te has quedado sin espacio, o por que te has comprado un disco nuevo y quieres instalar ahí tu linux pero no quieres tener que volver a instalar o compilar todos los programas que tenias.

Lo único que se necesita es: la partición o disco duro donde queremos migrar nuestro linux, y un liveCD de una distribución de linux (yo usaré Ubuntu karmic koala 9.10).


Lo primero que debemos hacer si lo vamos a migar a otro disco duro, y no a otra partición, es apagar el PC y conectar el nuevo disco duro, evidentemente.

Lo segundo, es arrancar el PC con el liveCD, y arrancamos en modo "Probar sin alterar el equipo".

Abrimos un terminal (Aplicaciones/Accesorios/Terminal) desde el liveCD y ponemos:

# sudo fdisk -l

Y nos saldrá algo como esto (lo que nos aparezca dependerá de la cantidad de discos duros y particiones que tengamos):


Vamos a necesitar instalar gparted, en Ubuntu (que es el que estoy utilizando yo, ya viene instalado), abrimos gparted (en mi caso, Sistema/Administración/Gparted) y en la pestaña de arriba a la derecha, donde aparece /dev/sda, seleccionamos nuestro disco duro o partición donde hemos migrado nuestra instalación, yo seleccionaré /dev/sdb.

Si este disco duro no tiene hecha la partición de linux (ext3 o ext4, la que vayamos a usar) y la partición swap o de intercambio, las deberemos crear ahora, si vuestro disco duro tiene alguna partición borrarla (habiendo salvado los datos previamente, si es que teníais archivos importantes).

Ahora sobre el espacio sin asignar pincháis con el botón derecho y seleccionáis nuevo, se abre una ventana donde crearemos nuestras particiones (si es un disco nuevo o no usado y no tiene ni estructura de datos nos saldrá una ventana que nos dirá que se va a crear una estructura de tipo msdos, damos a crear), después volvemos a seleccionar nuevo.

En mi caso solo tengo dos particiones en el disco donde tengo linux, una donde está toda la instalación (dev/sda1) de formato ext4, y la partición swap (dev/sda2).

Primero voy a crear la partición ext4: en el campo "Tamaño nuevo (MiB)" escogemos la capacidad de la partición, yo voy a coger todo menos 2GB que voy a dejar para la partición swap, en el campo "crear como" ponemos "partición primaria", y en "sistema de archivos" seleccionamos nuestro sistema de ficheros (en mi caso ext4).

Para crear la partición swap pinchamos con el botón derecho sobre el espacio sin asignar y como sistema de archivos seleccionamos "linux-swap", y pinchamos en añadir. Dejando que coja todo el espacio restante, que son los 2 GB que dejé.

Ojo, el numero de particiones debe ser el mismo que el que tenemos en el disco duro donde está linux instalado. En cuanto al tamaño de cada una de ellas, las de /dev/sdb, ninguna debe ser inferior a las de /dev/sda, por lo tanto serán iguales o superiores.

El resultado de mi disco duro particionado es el siguiente:


Recordar que los cambios realizados sobre el disco duro no van a tener efecto hasta que pinchemos sobre el tick verde, pincha si están las particiones bien hechas.

En mi caso yo quiero migrar la instalación a otro disco duro, que será: /dev/sdb1 desde /dev/sda1. Lo primero que hay que hacer es montar las dos particiones en /mnt, para diferenciarlas y no mezclar los archivos vamos a crear dos directorios dentro de /mnt:

# sudo mkdir /mnt/from          (este será /dev/sda1, que es donde tengo mi instalación de linux)

# sudo mkdir /mnt/to            (este será /dev/sdb1, que es donde voy a migrar mi instalación)

Ahora montamos las dos particiones:

# sudo mount /dev/sda1 /mnt/from

# sudo mount /dev/sdb1 /mnt/to

Para migrar la instalación simplemente copiamos todo lo que hay en /mnt/from (mi instalación de linux) a /mnt/to (el disco al que quiero migrar):

# cp -avf /mnt/from/* /mnt/to

Para que arranque el sistema tenemos que modificar el archivo /mnt/to/etc/fstab para colocar el identificador UUID del nuevo disco duro para que lo identifique a la hora de arrancar el sistema. Para poder modificarlo hay que tener los permisos de root sobre el sistema de archivos de nuestra instalación:

# sudo chroot /mnt/to

# sudo gedit /mnt/to/etc/fstab               (gedit es el editor de textos que tiene Ubuntu, podéis usar el que tengáis)

Abrís el gparted (si es que lo habéis cerrado), volver a seleccionar el disco /dev/sdb, pinchamos sobre la partición /dev/sdb1, con formato ext4, con el botón derecho y seleccionamos información, donde pone "UUID:" copiamos la secuencia de caracteres que hay detrás.


Una vez abierto el archivo /etc/fstab buscamos en él la línea en la que pone /dev/sda1 y debajo donde pone "UUID=....." reemplazamos la secuencia de caracteres que ya hay por los que copiamos de la ventana de información, no reemplacéis nada más que la linea de caracteres (como se ve en la captura).



Hay que realizar el mismo proceso para la partición swap y el resto de las particiones que halláis hecho, en gparted nos fijamos en el número que hay después de /dev/sdb y sustituimos su UUID correspondiente en /etc/fstab.

De tal forma que si mi UUID para /dev/sdb1 (partición ext4) es: 8c79ef89-1986-4723-92c0-08dfccc6ab4f y el UUID para /dev/sdb2 (partición swap) es: 2f3c6da3-ae90-4073-aef1-106e4b422f9f, mi archivo fstab quedará de esta forma:


Ahora solo queda reinstalar el gestor de arranque GRUB en el nuevo disco duro.

Primero desmontaremos los dos discos duros para asegurarnos de que lo instalamos donde corresponde.

# sudo umount /dev/sda1

# sudo umount /dev/sdb1

Borramos los dos directorios que ya no nos sirven.

# sudo rm -r /mnt/to

# sudo rm -r /mnt/from

Montamos el nuevo disco para instalar en él GRUB.

# sudo mount /dev/sdb1 /mnt

Montamos todos los dispositivos.

# sudo mount --bind /dev /mnt/dev

Damos permisos de root sobre el sistema de ficheros, ya que al haber iniciado con el LiveCD no somos los dueños de él.

# sudo chroot /mnt

Vemos que la linea principal del terminal (el prompt) ha cambiado, ya no pone ubuntu@ubuntu: sino root@ubuntu:.

Reinstalamos el GRUB.

# grub-install --recheck /dev/sdb

Ya hemos acabado, y con esto nuestro linux debería iniciar desde el disco duro nuevo sin problemas.

En caso de que tengáis otras instalaciones (windows, por ejemplo) hay que ejecutar el siguiente comando.

# update-grub         (seguimos estando como root del sistema montado en /mnt)

Listo, comentar vuestras dudas.

2 comentarios:

  1. me sirvió bastante.Gracias!

    ResponderEliminar
  2. Además de hacer el mount --bind /dev /mnt/dev hay que hacer:
    mount --bind /sys /mnt/sys
    de paso, siempre también hago un mount --bind /proc /mnt/proc por si fuera necesario para algún proceso.
    También estaría bien indicar cuando hay que salir o no del chroot, para que el que no sepa no se confunda, aunque por otro lado eso le ayudará a aprender :-P

    ResponderEliminar