Instalando GNU/Linux en otro HDD sin disco de instalacion

Hoy estaremos viendo como migrar todos los datos desde un disco duro hacia otro, trabajo que podría resultar útil si por algún motivo necesitamos reemplazar el actual disco duro de nuestro ordenador por otro (de igual o diferente capacidad).

Hace unos días, en una visita casual a casa de un amigo (que coincidentemente migró a GNU/Linux hace algunos meses luego de mi persistencia), este me mostró muy alegre un nuevo Disco Duro que le habían regalado (un HDD de 500 Gb que aunque a muchos pueda parecerle un dispositivo de poca capacidad, acá en la Cuba Jurásica sigue siendo un gran paso hacia el gran almacenamiento de datos) y que necesitaba reemplazar el ya obsoleto y medio fallido disco de 160 GB.

Su propuesta en si era quitar el viejo disco y en su lugar colocar el de 500 GB, luego instalar Debian, que era la distro que yo le había instalado en el disco viejo, y emplear un rato en restablecer toda su configuración.

Mientras esto ocurría, un primo de mi amigo aguardaba la culminación de esta labor para llevarse el disco de 80 GB que a su vez reemplazaría uno de 40 GB en un ordenador mucho más vetusto.

El detalle de todo esto es que yo ni siquiera andaba con un disco de instalación de Debian, y menos con los repositorios a mano. Así que la idea de instalar sistema y aplicaciones no estaba a nuestro alcance, a menos que yo fuera a mi casa a buscar lo necesario, pero trasladarme de una punta a otra de la ciudad de Santiago de Cuba no iba a ser una alternativa para mi, en una ciudad donde el transporte oficial (motocicletas particulares) ha duplicado su tarifa en este nuevo año (la gracia me iba a salir en no menos de 40 pesos).

Ahí se me encendió la chispa: a clonar el disco. Se que esto de clonar el disco hubiera sido lo primero que se le hubiera ocurrido a muchos de ustedes, pero a mi, cuasianalfabeto en estos quehaceres, me pareció toda una repentina alternativa enviada directamente por los Dioses del Open Olimpus.

Luego de contada la necesaria introducción, vamos a los aspectos técnicos del caso en cuestión. Inicialmente tenemos un Disco Duro de 80 GB con el siguiente sistema de particionado:

/dev/sda1       /
/dev/sda5       swap
/dev/sda6       /home

Y el nuevo Disco Duro de 500 GB que particionaremos de la siguiente manera:

/dev/sdb1       /
/dev/sdb2      swap
/dev/sdb3      /home

Muchos de seguro han notado que en el caso del primer Disco Duro hay un salto de sda1 a sda5, esto se debe a que a la hora de definir las particiones, hay una partición primaria booteable que es sda1, y luego una partición extendida que se divide en dos: sda5 y sda6.

Además, en algún momento creo haber tenido que eliminar una partición donde antes mi amigo albergaba al desterrado Windows 7.

El disco duro de 500 Gb lo particionamos de manera que los números de las particiones se encuentren en forma consecutiva. Este Disco se nombra /dev/sdb porque al instalarlo en el puerto SATA, está compartiendo simultáneamente el sistema con el disco preexistente, /dev/sda.

Formateando las particiones

Para crear las particiones podemos usar alguna herramienta visual como gparted, o alguna aplicación desde consola como cfdisk. Recuerden que en este paso, estamos desde el sistema operativo en el primer DiscoDuro, el de 80 GB.

Es decir, desde este, creamos las tres particiones del nuevo Disco Duro. Una vez creadas las particiones, hay que formatearlas:

mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb3
mkswap /dev/sdb2

Lo que acabamos de hacer es formatear /dev/sdb1 y /dev/sdb2 en formato ext4 y /dev/sdb2 como SWAP.

La orden mkfs.ext4 es similar a mkfs -t ext4. Debemos tomar en cuenta que a la hora de reiniciar en el nuevo disco duro, hay que indicarle al sistema que tiene una nueva partición swap (partición de intercambio):

swapon /dev/sda2

Usamos sda2 y no sdb2, porque al terminar, quitaremos el disco viejo.

Clonando particiones

Ya vamos cayendo en el pollo del arroz con pollo. No hay una receta definitiva para clonar una partición. En nuestro caso, tenemos que hacer una copia exacta del contenido de /home, para esto haremos lo siguiente (como root):

cd /media
mkdir sdb3
mmount -t ext4/dev/sdb3 /media/sdb3
rsync -a /home/miamigo media/sdb3

Tranquilos, les explico:

Dentro de /media hemos creado un directorio con nombre sdb3 (que deberá coincidir con el nombre de la partición del nuevo disco), para que al montarla no cree confusiones.

Luego vamos a emplear el comando rsync para sincronizar los archivos y carpetas de /home dentro de /media/sdb3, ya que la partición sdb3 va a ser /home.

El flag -a nos va a servir para mantener los permisos, el propietario, la fecha y los directorios.

Inteligentemente hemos utilizado /home/miamigo y no /home/miamigo/, porque si hubiera puesto la barra al final de miamigo, me copiaría exclusivamente los archivos y carpetas dentro de /home/miamigo. Lo que hicimos es equivalente a poner:

rsync -a /home/ /media/sdb3

Como en el caso de mi amigo, solo tiene un usuario en home, da lo mismo poner una u otra línea de comandos.

Llegó el momento de clonar la partición raíz /, que, como es obvio. es un momento crítico y delicado, ya que algún fallo puede dejarnos la partición sin booteo, y por tanto un disco duro sin sistema.

Un consejo antes de el siguiente paso, es hacer algo de limpieza en nuestra partición raiz con tal de ahorrar espacio y disminuir el tránsito de datos innecesarios de un disco duro a otro.

Es bueno vaciar previamente la papelera de reciclaje (incluso antes de clonar home), eliminar los paquetes que no están siendo utilizados y paquetes específicos que no necesitemos:

dpkg -l | grep ^rc
dpkg --purge paquete

También podemos asegurarnos de eliminar los paquetes del repositorio local: los que nos hemos bajado en cada actualización o instalación desde los repositorios, y se han almacenado en cache:

apt-get clean

Al hacer los pasos anteriores de seguro se darán cuenta que pueden liberar algunos GB de espacio. Bueno, vamos a clonar de una buena vez nuestra raíz /.

En el caso de la partición raíz lo recomendable es copiar bit a bit los datos. Tardará menos que home porque evidentemente es menor cúmulo de información y haciéndolo bit a bit la tendencia a fallos es casi nula y no existirán errores con permisos especiales.
La línea de comandos en este caso es:

dd if =/dev/sda1 of =/dev/sdb1

En este caso no hemos tenido que montar nada. El tiempo para completar la operación será un poco mayor, pero valdrá la pena.

Preparando el reinicio

Al llegar a este punto, ya la partición /dev/sdb1 es un clon de la raíz del sistema instalado en nuestro viejo disco. Llegó el punto de asegurarnos que al retirar el disco de 80 GB, nuestro ordenador reconozco y bootee desde el disco de 500 GB.

Es hora de tocar el conocido archivo fstab (el del disco de 500 que se encuentra en /media/sdb1/etc/fstab).

nano /media/sdb1/etc/fstab

Y nos saldrá algo similar a esto:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

proc    /proc   proc    nodev,noexec,nosuid     0       0
#Entry for /dev/sda1 :
UUID=6b192eef-e188-4e07-94de-14c95e02de78       /       ext4    errors=remount-ro       0      $
#Entry for /dev/sda2 :
UUID=3bd60ec0-92f3-4ea6-a4d3-aaaf27dd8b8e       none    swap    sw      0       0
#Entry for /dev/sda3 :
UUID=3828f973-3b20-4019-9fe2-8296c755be31       /home   ext4    defaults        0       2

Ahora necesitamos cambiar las UUID antiguas (las que están en ese archivo fstab son pertenecientes al disco de 80 GB) por las UUID nuevas (pertenecientes al disco nuevo de 500 GB). Para ello, lo que hay que hacer es encontrar los dispositivos por su UUID, y eso se hace de varias maneras:

Una opción puede ser con el comando:

ls -l /dev/disk/by-uuid

Y también usando como root:

blkid

Ahora solo nos resta reemplazar los UUID del fstab por los correctos.

Garantizando el arranque. Instalando Grub2

El Debian Wheezy instalado en el viejo Disco Duro de mi amigo usa Grub2 como arranque de sistema, por lo que en el MBR (Master Boot Record) del Disco Duro nuevo (el de 500 GB) tendremos que instalar un nuevo GRUB.

Es cierto que los archivos de configuración ya están escritos en el directorio /boot, pero el MBR (el primer sector (“sector cero”) del disco duro.) está en blanco, por lo que tal como están las cosas, no sería booteable.

La configuración se guarda dentro de /boot/grub/grub.cfg, pero este archivo se crea por grub-mkconfig, por lo que no sería recomendable editarlo a mano.

Lo mejor es, una vez montada la partición nueva (recuerden que la partición raíz recién clonada no está montada, dd clona sin montar la partición):

mount -t ext4 /dev/sdb1 /media/sdb1

Ahora nos toca cargar el GRUB2 en el MBR haciendo lo siguiente:

grub-install /dev/sdb

Y listo, así de sencillo, ya tenemos GRUB configurado en el MBR del Disco Duro de 500 GB.

Pasos finales

Ahora apagamos el ordenador, retiramos el Disco Duro de 80 Gb de mi amigo, se lo entregamos al primo (ver historia inicial), volvemos a encender el ordenador, cruzamos los dedos y…

Fuente: http://swlx.cubava.cu

Comparte para difundir

Si te ha gustado nuestro contenido ahora puedes ayudar a difundirlo en las redes sociales de manera sencilla usando los siguientes botones:

Envía
Pinea
Print

16 comentarios

  1.   Gabriel dijo

    Amigo, no sé si estoy errado pero creo -creo- que antes de utilizar el comando ‘dd’ la partición destino debe tener exactamente el mismo tamaño que la partición origen. Si no es así mil disculpas.

    1.    nabucodonosor dijo

      Es lo mismo que pienso yo
      dd clonara la partición y el excedente lo dejará sin asignar,de modo que al requerir más espacio por instalar nuevas aplicaciones,no lo permitirá.

    2.    John Edisson Ortiz dijo

      No importa si la partición de destino es mayor que la partición de origen, luego se puede decir al sistema de ficheros que use el tamaño adicional.

  2.   eliotime3000 dijo

    Eso es épico. A ver si podré instalar Debian pero al estilo de Arch (puros comandos).

  3.   RudaMacho dijo

    Podrias haber utilizado dd para clonar el MBR:

    dd if=/dev/sda of=/dev/sdb bs=512 count=1

    No creo que haga falta que las particiones sean exactamente iguales, por lo menos en la wiki de arch no lo menciona, habria que probar. Saludos.

    1.    Canales dijo

      Parece buena esa, pero no entiendo por qué al hacer un dd if=/dev/sda of=/dev/sdb se salta los primeros 512 bytes?

      1.    Canales dijo

        Vale ya he entendido, la diferencia es que al principio se clona solo la partición y por eso se salta los 512 bytes del MBR. Muchas gracias por el consejo RudaMacho.

    2.    El Pelu dijo

      Hola tiene pensado actualizar su sistema? Lo digo por windows xp

  4.   adr14n dijo

    Hola elav, me parece que usando el clonezilla la tarea hubiera sido mucho más sencilla, pero que bueno que experimentaste de esta forma, al fin y al cabo es el espíritu “hacker”

    Saludos!

  5.   vidagnu dijo

    En Slackware he ocupado tar para hacer la copia completa de archivos entre discos, lo cual conserva los permisos asi como también aprovecho para hacer un backup, el archivo fstab es mucho más sencillo por lo que no es necesario modificar uuid basta conque hayas creado las particiones en el mismo orden, como se utiliza lilo es más sencillo crear el arranque…

  6.   petercheco dijo

    Muy bueno 😀

  7.   mitcoes dijo

    En mi experiencia gparted copia – clona – particiones más rápido

    Y si las necesitas ampliar o recortar también se puede

  8.   Canales dijo

    Magnífica guía elav, muchas gracias por compartir.

    Me ha quedado una duda: ¿es necesario hacer uso del comando swapon para que el sistema detecte la partición swap, o bastaría con cambiar el UUID en fstab?

  9.   alunado dijo

    hace 6 meses estaba aburrido con debian stable y kde 4.8. Queria el ultimo KDE !! no tenia disco de instalacion ni memoria usb.. asi que clone mi stable con casi los mismos metodos que describe elav y actualize a sid.
    Recomiendo esta practica para todo linuxnero que anda por alli, nuestro sistema no necesita mas de 15 gb. por particion raiz. y el doble o un poco menos no es mucho.

  10.   Victor Challa dijo

    Excelente aporte nunca hubiera sido tan facil que con tan llana y clara explicacion… Felicidades bro eres todo un docente en gnu/linux!!!

  11.   YoeLoco dijo

    Muy Buen Tutorial. Muy Claro!
    También esta el comando “dd”

Deja un comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.