Cambiando de disco duro sin reinstalar

Una de las tareas más horribles que un friki hace por propia voluntad es la de reinstalarse su propio ordenador. En mi caso puedo tardar días en tener todo tal como me gusta: colores, imágenes, aplicaciones, configuración del sistema…

Por ese motivo he creado este mini artículo / tutorial. Una forma sencilla de pasar de un disco duro a otro sin muchas complicaciones.


Escenario inicial

Dispongo de 2 discos IDE de 40 GB que conforman mi sistema de ficheros actual:

/ hda3 (7.4 GB)
/home hda5 (12 GB)
/home/public hdb1 (37 GB)

Estos van a ser sustituidos un flamante SATA de 160 GB con la siguiente distribución:

/ sda3 (10 GB)
/home sda6 (110 GB)

La idea es traspasar todos los datos sin necesidad de reinstalar el sistema de nuevo.

El sistema operativo es Linux, una distribución KUbuntu edgy (6.10) que llevo usando desde hace dos años. He ido actualizándola sin reinstalar desde breezy, y tampoco me gustaría hacerlo ahora.

Conectando físicamente

Los primero es solucionar el tema físico de la conexión del nuevo disco duro. Esto os lo dejo a vosotros, pues dependerá del tipo de disco y de lo que ya tengáis montado en vuestro ordenador. Lo que si debe quedar claro es que se trata de conectar el nuevo disco sin quitar los viejos.

Pasando información

Creamos las particiones en el nuevo disco duro:

$ cfdisk /dev/sda
$ mkefs2 /dev/sda3
$ mkefs3 /dev/sda6
$ mkswap /dev/sda4

Una vez creadas las particiones y formateado el nuevo disco, vamos a pasar la información de un sistema de ficheros a otro.

Para evitar problemas entramos en modo single. No es del todo necesario pero os lo recomiendo. Para elo podéis usar la opción

$ sudo /sbin/telinit 1

Montamos el nuevo disco, nuevo sistema de ficheros en un directorio (por ejemplo /mnt/nuevo_disco), en mi caso:

$ sudo su
$ mkdir /mnt/nuevo_disco
$ mount -t ext3 /dev/sda3 /mnt/nuevo_disco
$ mkdir /mn/nuevo_disco/home
$ mount -t ext3 /dev/sda6 /mn/nuevo_disco/home

Y ahora ya viene la parte de copiar los ficheros de un disco a otro. Hay que aclarar que aquellos directorios dinámicos, que se crean al arrancar, no hay que copiarlos, tal es el caso del /proc, /sys

Para ello creamos un fichero de texto cuyo contenido sea los directorios y ficheros que no queramos copiar

$ vi lista_excluidos
proc/*
sys/*

Y a continuacuín a copiar:

$ ( tar --exclude-from=lista_excluidos -cpf - * )|( cd /mnt/nuevo_disco; tar -xf - )

Después de un buen rato se habrán copiado todos los ficheros de un disco a otro.

Preparado para reiniciar

Antes de reiniciar modificaremos el nuevo fstab:

$ vi /mnt/nuevo_disco/etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
#
UUID=48931479-9f7b-47db-bcd9-3a75d0d3c923 / ext3 defaults,errors=remount-ro 0 1
UUID=495c24ca-4bc4-459e-9e95-4069c4993fab /home ext3 defaults 0 2
UUID=f20c8241-8e19-463e-8646-90234111aefd none swap sw 0 0
#
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

La cadena después del UUID es el identificador de la partición, podéis obtenerla con el comando vol_id:$ vol_id -u /dev/sda3
48931479-9f7b-47db-bcd9-3a75d0d3c923

Por último queda configurar el grub para que bote del nuevo disco. Hay que hacer dos cambios, por un lado modificar el UUID allí donde toque. En mi caso:

$ vi /mnt/nuevo_disco/boot/grub/menu.lst
[...] ## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
## kopt_2_6_8=root=/dev/hdc1 ro
## kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=48931479-9f7b-47db-bcd9-3a75d0d3c923 ro

A continuación actualizamos el grub, para ello:

$ chroot /mnt/nuevo_disco
$ update-grub
$ grub-install /dev/sda

Apagamos el PC, desconectamos los discos antiguos y a disfrutar.

Share this Story

One Comment


  1. javier

    1 Abril 2008 at 1:00

    Hola, bastante sacador de dudas tu artículo. Por mi parte tengo un amd k6-2 con su respectiva placa y las demás partes están recicladas de otros pcs. Le instalé windows98 para probar y ahora intenté instakarle una distribución de ubuntu entre otras distribuciones de linux, pero como el disco duro es muy pequeño (1,3GB) no me lo instala completamente. Así que voy a instalar un disco mayor, el cual espero que la bios me lo reconozca. Lo único para lo que necesito la pc es como procesador de texto, ver una que otra película, fotos que saco y nada más, es para un uso casero nada más; aparte no juego a ningún jueguito en la pc.

    Bueno, lo único que te pediría como gran favor loco, es que si podría escribirte para sacarme de alguna duda que tenga, desde ya muchas gracias.

    Te doy mi mail: illa@bolivia.com

    Saludos

Leave a Reply

Your email address will not be published. Required fields are marked *