Mover la partición Root a otro disco

En el tutorial de hoy, voy a explicaros cómo se puede mover la partición Root de nuestra distribución Linux a otra partición (sea en el mismo disco duro o no). Esta necesidad se me presentó a mediados del año pasado, cuando todavía usaba Chakra, y desde entonces es un proceso que he usado en más de una ocasión con resultados satisfactorios y cero problemas.

Si se siguen los pasos al pie de la letra es una operación 100% segura, relativamente rápida y totalmente reversible. Solo necesitaremos un Live CD de alguna distro que tengamos por ahí (uno de Ubuntu, por ejemplo, servirá para nuestro cometido), e identificar correctamente cuál es la partición de origen y la de destino.

Para obtener tal información, podemos recurrir a GParted o al Editor de Particiones de KDE. Al ejecutarlos, veremos una ventana similar a la de la captura de abajo. Ahí, debemos buscar nuestra partición root original y mirar a qué disco pertenece (sda, sdb, sdc…), qué número tiene (sda2, sdb1, sdj5, etc.) y cuál es su UUID (un código alfanumérico que encontraréis en el apartado de “información avanzada”). Obviamente, si vamos a mover una partición necesitaremos un lugar de destino, así que tenemos que crear previamente un hueco en el disco duro para realizar la mudanza, y anotar los datos correspondientes.

Antes de seguir, quiero dejar constancia de que en este tutorial solo hago referencia a Grub2; si usáis otro gestor de arranque algunos pasos o comandos pueden variar -de hecho, es mucho más sencillo con Grub Legacy-. Así pues, con la información de antes apuntada en un papel, nos ponemos manos a la obra:

1) Iniciamos el ordenador con el Live CD y esperamos a que se cargue el escritorio.

2) En una terminal metemos los dos siguientes comandos:

sudo mkdir /mnt/old

sudo mkdir /mnt/new

3) Acto seguido, tecleamos los siguientes comandos:

sudo mount /dev/sdaX /mnt/old (donde sdaX es la partición root original).

sudo mount /dev/sdbX /mnt/new (donde sdbX es la partición root nueva).

4) Después de haber montado cada partición, procedemos al copiado de los archivos mediante dos comandos (uno para archivos normales y otro para datos ocultos). Quizá el segundo no es estrictamente necesario, pero yo lo ejecuto por si las moscas. Esta parte llevará unos cuantos minutos:

sudo cp -rav /mnt/old/* /mnt/new
sudo cp -rav /mnt/old/.* /mnt/new

5) Desmontamos la partición vieja y tecleamos un par de comandos más:

sudo umount /mnt/old
sudo mount -o bind /dev /mnt/new/dev
sudo mount -t proc none /mnt/new/proc

6) Ahora hacemos chroot en la nueva partición con el objeto de reinstalar Grub2. El comando de instalación cambia en función del LiveCD que tengáis, puesto que cada distro tiene sus propias maneras de gestionar los paquetes. En Chakra y Arch se emplea sudo pacman -S grub, pero en las derivadas de Debian se hace así:

sudo chroot /mnt/new /bin/bash

sudo grub-install /dev/sdb (donde sdb es el disco duro en el que tenemos la nueva partición root, y no hay que ponerle número ni nada de eso).
7) Ahora, antes de reiniciar, tenemos que ajustar unos pequeños detalles del fstab y del grub.cfg. Para ello, editamos el grub.cfg con nuestro editor de texto preferido (kate, gedit, nano…):
sudo kate /boot/grub/grub.cfg

Como podéis ver en la imagen, he resaltado las partes más importantes en las que tenemos que fijarnos, pero puede haber más (buscadlas y modificadlas siguiendo la misma metodología). Con los datos de nuestra novísima partición root (UUID y compañía), procedemos a sustituir las referencias antiguas por las nuevas:
  • Donde ponga (hdX,Y), cambiamos las cifras de X y de Y atendiendo a lo siguiente:

X: indica el número de disco duro. Si el disco es sda, X es igual a 0. Si el disco es sdb, X es igual a 1. Si el disco es sdc, X es igual a 2, etc.
Y: indica el número de la partición. 1,2,3… Ejemplo: segunda partición del primer disco (hd0,2);  segunda partición del tercer disco (hd2,2)… ¿Captáis la idea?

  • El segundo campo a modificar es el UUID (el código de números y letras tan largo), que todavía apunta a la partición vieja. Lo cambiamos por el UUID de la nueva partición (recordad que esto lo podéis consultar en GParted, por ejemplo). ¡Revisad bien los datos!
  • La tercera modificación, y una de las más importantes, está relacionada con el pequeño rectángulo rojo que hay debajo del UUID, y que pone en la imagen “sdb2”. Ahí es donde tenéis que indicar la nueva partición de vuestro root que, por lógica, ha de corresponderse con (hdX,Y). Ejemplos: (hd0,1) –> sda1  //  (hd2,3) –> sdc3

Tened en cuenta que estos cambios, en principio, hay que repetirlos en función del número de entradas de nuestro sistema operativo presentes en el Grub. Yo tengo tres entradas de Chakra, por tanto he de cambiar esos datos 3 veces. Sin embargo, os aconsejo que cambiéis solo la primera entrada y, una vez que veáis que todo arranca correctamente, procedáis a modificar las restantes, ya desde vuestro sistema operativo real.

8 ) Solventado el asunto del Grub, pasamos al fstab.
sudo kate /etc/fstab
Buscamos el UUID de / y lo cambiamos por el nuevo, tal y como hicimos en el paso anterior. Guardamos.

9) Ya podemos reiniciar y comprobar que todo está en orden. Si el sistema operativo funciona bien, podemos proceder a reemplazar los datos que dejamos sin cambiar en las entradas restantes del archivo grub.cfg, así como a borrar la vieja partición root -si tal es nuestro deseo-.

Eso es todo por hoy.


17 comentarios

  1.   Ellery dijo

    Esto andaba buscando XD. gracias

  2.   santi dijo

    Es un procedimiento muy seguro, lo he utilizado en muchas ocasiones años atrás, y lo bueno es que la nueva partición / no contendrá fragmentación de archivos…

    Aunque no hace mucho intenté cambiar de partición raíz con la variante de cambiar también el sistema de archivos (de reiserfs a ext3), pero me fue imposible hacerlo por mas intentos y vueltas que dí, de alguna manera en el inicio del sistema fallaba la detección de / por el hecho de que buscaba una partición / con sistema reiserfs cuando la nueva fue formateada con ext3. Ingresando en modo mantenimiento y montando manualmente / como ext3 el sistema funcionaba correctamente, pero al siguiente inicio volvía a fallar por el mismo motivo. No hubo ni edición de grub o fstab que sirviera… siempre buscaba una partición / con reiserfs, no puede encontrar la solución…

    1.    Wolf dijo

      Eso tiene toda la pinta de que había algún archivo apuntando a la partición reiserfs. Quizá una línea poco visible del gestor de arranque o algo por el estilo, ya que en caso contrario debería haberse cargado correctamente la ext3.

      1.    santi dijo

        Si es lo que pensé… y pase horas buscando algo pero no encontré nada… ni siquiera buscando en Internet.
        Igual no puedo asegurar que en el pasado haya hecho el procedimiento sin problemas, es que pasarón unos 6 o 7 años de cuando solía realizarlo casi por gusto… la última vez lo intente hacer con Debian Lenny, probablemente la diferencia mas grande sea el kernel, antes tal vez utilizaba alguna distro con linux 2.4.x.
        En fin si legas a encontrar la solución, espero la compartas…

  3.   ren434 dijo

    Buen tip, …si lo hubiese sabido antes.

    Saludos.

  4.   Merlin El Debianita dijo

    Sí muy buen tip se parece mucho al procedimiento de cambiar el /home de disco, pero no sabía que se podía hacer con root.

    Muy buena info aunque tal vez no la use es bueno saberlo por sí las moscas. 🙂

    1.    Wolf dijo

      Sí, con el /home es mucho más sencillo, porque no tienes que reinstalar el Grub ni modificar el archivo de configuración del mismo. Con copiar todo lo necesario y editar el fstab es suficiente.

      1.    Merlin El Debianita dijo

        Pues claro estamos hablando del /home, es obvio que el /root requiere de más atención.

        No es como /Home que generalmente casi solo es cortar y pegar o en su defecto copiar y pegar.

  5.   keopety dijo

    muy buen manual,amigo, muchas gracias, me gustaria saber si se puede descargar de algún lado la versión pdf o cualquier otra, un saludo

    1.    Wolf dijo

      Aquí tienes, recién salida del horno ;):

      https://sites.google.com/site/rsvnna/baul/Mover%20Root.pdf

      1.    keopety dijo

        gracias amigo, esta muy bien

  6.   Rayonant dijo

    Muchas gracias! andaba buscando algo similar y lo que se me había ocurrido era hacer imágenes de las particiones y luego restaurarlas pero claro, faltaban más cosas como puntos de montaje etc. Asi que me va como anillo al dedo!

  7.   TheSandman86 dijo

    Muy buena info, siempre es útil tener estas cosas a mano por si acaso. Muchas gracias.

  8.   Krim dijo

    Si estás utilizando Grub2 ¿no sería grub2-install?

    Tened cuidado cuando hacéis estos manuales que metéis en un lio a cualquiera como no pongáis bien los comandos.

    1.    blacksheepx dijo

      En Arch la vercion antigua de grub se renombro a grub-legacy y grub 2 quedo como grub solamente asi que es correcto pero de igual manera es recomendable leer la documentacion de tu distribucion antes de hacer un movimiento importante como este para estar seguro de los nombres de los paquetes

      y gracias al autor andaba buscando el proceso detallado y esto me sirvio bien

  9.   Guillermo dijo

    El par de comandos más del punto 5 no me han funcionado, mejor esto:
    sudo su
    mkdir /media/kk (lugar donde esté montado la raíz del sistema instalado)
    mount -t ext4 -o rw /dev/sda /media/kk
    mount –bind /proc /media/kk/proc
    mount –bind /dev /media/kk/dev
    mount –bind /sys /media/kk/sys
    chroot /media/kk
    update-grub
    grub-install /dev/sda (o sdb, …)

  10.   Alengoan dijo

    Muchas gracias me sirvió de mucho, como alternativa después de copiar todo a la partición nueva pueden mover la instalación del grub con la herramienta boot-repair, asi se evita tener que hacer los pasos 5 en adelante

    sudo add-apt-repository ppa:yannubuntu/boot-repair
    sudo apt-get update
    sudo apt-get install boot-repair

    se ejecuta la aplicacion grafifa se activa opciones avanzadas; ubicación del grub y se elige la nueva partición para la instalación del grub.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *