Particiones: Copiando una instalación GNU/Linux a otro disco

Hoy trabajaremos con particiones, aprenderemos a copiar una instalación de una distribución GNU/Linux de un disco o partición a otro, manteniendo las aplicaciones y el arranque con grub.


Motivaciones

Esta mini guía surgió como necesidad hace dos días, ya que agregué un disco nuevo a mi computadora, para reemplazar uno anterior… justo el disco en el que tenía instalado mi distro de GNU/Linux.

Particularmente esta guía me ha servido para ArchLinux, pero con pocos o ningún cambio debe ser útil también para otras distribuciones.

La idea fue mover el directorio de instalación, a otra partición Linux en otro disco, y reescribir el GRUB para que el sistema pueda seguir iniciando sin inconvenientes.

La tarea funcionó a la perfección, de hecho, esto lo estoy escribiendo desde mi nuevo/viejo sistema operativo 😀

Moviendo los datos entre particiones

fstab linux particion disco root directory chroot grub particionesManos a la obra. Lo primero que tenemos que hacer, es identificar las particiones Linux de origen (la actual, donde tenemos instalado el sistema) y destino (donde vamos a mover la instalación).

Para ello podemos utilizar comandos como:

parted -l

Que nos mostrará los discos y particiones disponibles, y por el nombre/número o tamaño podemos saber cuál será la de origen, y la de destino.

Para el caso, supongamos que mi partición actual de sistema es /dev/sdXY, y la partición donde vamos a mover el sistema es /dev/sdWZ.

Lo primero que tenemos que hacer, es bootear el equipo con un live-cd/dvd/usb para poder copiar la información sin tener en uso las particiones ni el sistema.

Una vez que estamos en la distro live (en mi caso utilicé un Linux Mint LMDE, pero va cualquier distro live), vamos a montar las dos particiones, tanto la de origen como la de destino.

Supongamos que creamos los puntos de montaje para no confundirnos:

Copiamos el contenido de todo el directorio raiz de origen a destino, la nueva ubicación:

No olvidar el “*” en la ruta de origen para copiar todo su interior.

Este comando copia todo el contenido, incluido aquel que es virtual… por lo que quizás, una buena opción es utilizar algo similar a esto:

rsync -aAXv /mnt/origen/* /mnt/destino –exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/var/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} 

A este punto, ya tenemos toda la información de la instalación del sistema en nuestra nueva partición, por lo que podemos desmontar el disco o partición vieja:

umount /mnt/origen

Actualizando el /etc/fstab en Linux

Lo primero que tenemos que hacer es verificar que en el archivo /etc/fstab tengamos configurado correctamente el UUID del nuevo disco o partición donde se montará nuestro root filesystem (o el nombre del dispositivo).

Para ello, chequeamos los UUID… si vemos, por ejemplo, en mi fstab tengo este contenido:

UUID=7e66e8ac-1f1a-4b5f-ace2-58c2b3b08bac / ext4 rw,noatime,data=ordered 0 1

Y la salida del comando blkid, que permite asociar los dispositivos con los UUID, me muestra esto (el nombre del dispositivo está modificado para ser consistente con el ejemplo):

/dev/sdWZ: UUID="61fa8590-3acb-498b-982e-1b6a7b1ee9a7" TYPE="ext4" PARTUUID="000a5999-02"

Conclusión, debemos colocar el UUID devuelto por el segundo comando en el fstab, reemplazando al anterior. Quedaría así:

UUID=61fa8590-3acb-498b-982e-1b6a7b1ee9a7 / ext4 rw,noatime,data=ordered 0 1

Instalando el GRUB en el disco nuevo

Para ello haremos uso del chroot, una herramienta que nos permite “cambiar” el root directory por uno cualquiera… en nuestro caso, el punto de montaje de nuestra “nueva” instalación: /mnt/destino.

Primero, montamos en nuestro “directorio raíz” /mnt/destino, los directorios virtuales necesarios… en la jerga, “bindeamos” los directorios virtuales del sistema live, a nuestro “root directory” montado:

Ahora vamos a montar los directorios virtuales /proc, /sys y /dev del sistema en ejecución, para poder utilizar nuestro sistema nuevo:

Y por último, realizamos el chroot para acceder a la instalación duplicada:

chroot /mnt/destino /bin/bash

Una vez adentro, vamos a proceder a instalar el grub en el MBR del disco, para poder utilizar nuestro sistema:

Nótese que he utilizado el dispositivo /dev/sdW en la primera de estas dos líneas. Ese es el nombre del dispositivo, SIN el número de partición, ya que debemos instalarlo en el disco para que sea posible bootear. Si, por caso, el dispositivo hubiera sido /dev/sda2, la partición donde está la nueva instalación, en este comando del grub deberíamos haber especificado /dev/sda solamente.

Luego de realizado este paso, simplemente salimos del entorno chroot, desmontamos la partición y apagamos el equipo.

Conclusiones

Con el equipo apagado, extraemos el medio live de la distro que utilizamos, y por supuesto, desconectamos el disco “viejo”. Al reiniciar el ordenador deberíamos poder arrancar el grub y sin ningún inconveniente, acceder a nuestro sistema operativo, el mismo que teníamos corriendo en el otro ordenador 🙂

En otros artículos hemos hablado ya de particiones y discos… entre los que pueden ser de ayuda:

Espero les sea útil!

Hasta la próxima!


Fuentes:

http://www.linuxjournal.com/content/copy-your-linux-install-different-partition-or-drive

https://www.rdeeson.com/weblog/157/moving-arch-linux-to-a-new-ssd-with-rsync