Gravatar de Armonth

Consejos al migrar GNU/Linux a otro disco duro

Después de años con un disco duro de 40GB para el sistema operativo y luego otro de 120GB conectado por USB (en realidad primero el de 40GB, luego uno de 80GB y vuelta al de 40GB para usar el de 80GB en otro sitio) me he pillado un disco duro de 320GB y, una vez más, toca migrar…

Si bien se dice que “GNU/Linux no se formatea jamás” y se asocia a su seguridad, estabilidad y/o que siempre hay una solución que evita el borrado yo creo que los tiros van por otros lados: puedes llegar a personalizarlo tanto que si bien formatear y reinstalar son 20 minutos, luego el dejarlo “como estaba” es mucho más largo.

Por ello lo que se suele hacer es seguir una misma lógica de particiones y/o sistema de ficheros para copiar los ficheros (no hay “ficheros bloqueados”) de un disco duro a otro, reinstalar el cargador de sistemas operativos (normalmente GRUB) y adelante.

Preparándolo todo

Lo primero de todo es tener los dos discos duros funcionando, el “nuevo” puede ser conectado con una caja USB pero esto luego puede crearnos alguna pequeña complicación.

Una buena idea es perder diez minutos en hacer limpieza del sistema para ahorrar tiempo luego al copiar ficheros.

Podemos eliminar con apt-get remove –purge todos los kernels (linux-image-*) y sus kbuild (linux-kbuild-*) salvo los que utilices tú o sean dependencias de otros programas. Lo mismo con sus cabeceras (linux-headers-*).

Lo mismo con los programas que no sean utilizados, además con dpkg -l | grep ^rc podemos ver los programas desinstalados pero que todavía dejan restos (y con dpkg --purge eliminar los restos).

Con deborphan podemos ver bibliotecas “huerfanas”: bibliotecas que no son utilizadas por ningún programa. Es recomendable ejecutar antes ldconfig para evitar “falsos positivos” y revisar que con el borrado no se vaya a borrar realmente algo que utilicemos.

Algunos sitios más donde mirar si “sobran” ficheros:

  • /usr/share/doc (si no necesitas “documentación”).
  • /usr/src (¿código compilado por ti?).
  • Y obviamente… tu $HOME.

Por último podemos usar apt-get clean para eliminar todo el repositorio local (los paquetes que nos hemos bajado para posteriormente ser instalados).

Particionando

Veamos el esquema del disco duro viejo (40GB) y el nuevo:

HD viejo                  HD nuevo
hda1 100MB ext2 /boot     hda1 200MB ext2 /boot
hda2 5GB ext3 /           hda2 2GB swap 
hda3 resto ext3 /home     hda3 10GB ext3 /
                          hda4 resto ext3 /home

Primera sorpresa: ¿dónde c*ño esta la swap? Resulta que en la última repartición me olvide ^_^U. Lo gracioso es pensar que he estado codificando vídeo, viendo varias docenas de pestañas y reproduciendo vídeo o música… todo a la vez y sin swap, sólo con los 512MB de RAM de mi equipo (sí, se me va quedando anticuado xD).

Para crear las particiones utilizo cfdisk, todas las particiones son primarias (no me han gustado nunca las extendidas), de “Tipo de partición” elijo 83 (Linux) para todas menos la segunda que es 82 (Linux swap / Solaris).

Una vez hecho, toca darles formato (presupongo que el disco es hda por concordancia con lo anterior):

mkfs.ext2 /dev/hda1 -L "/boot"
mkswap /dev/hda2
mks.ext3 /dev/hda3 -L "/"
mks.ext3 /dev/hda4 -L "/home" -m 2

El parametro “-m” sirve para poner un % de la partición reservada al administrador distinto del por defecto (5%), en el ejemplo lo bajo a 2% ya que al ser datos de usuario sobra…

Copiándolo todo

Primero montamos las nuevas particiones en /media:

cd /media
mkdir {hda1,hda3,hda4}
mount -t ext2 /dev/hda1 hda1
mount -t ext3 /dev/hda3 hda3
mount -t ext3 /dev/hda4 hda4

Luego copiamos todo el /boot y el /home:

cp -v /boot/* media/hda1 -rfp
cp -v /home/* media/hda4 -rfp

El -v para hacernos una idea de cómo anda el asunto y la “p” final para preservar los permisos por lo que es sumamente importante.

¿Por qué no hago lo mismo con el sistema de ficheros raíz? En el sistema de ficheros raíz se crean ficheros “dinámicos” de proceso (en /proc) y de sistema (en /sys) así que no es buena idea copiar sin más.

cd hda3/
mkdir {boot,home,proc,sys,tmp}
cp -v /bin /dev /etc /initrd.img /lib /media /mnt /root \
/sbin /usr /var /vmlinuz . -rfp

Algunos detalles…

Como hemos cambiado de particiones tocar hacer un pequeño cambio en los ficheros del nuevo disco duro. En /etc/fstab toca cambiar raíz y home (hda2 y hda3) por hda3 y hda4. De la misma forma en /boot/grub/menu.lst hay que cambiar root=/dev/hda2 por root=/dev/hda3.

Grub

Por último falta instalar GRUB en el nuevo disco duro, en principio con un “grub-install /dev/hda” sobra pero esto no será posible si el dispositivo es vía USB.

En tal caso o lo metemos de una vez en el ordenador (vía IDE o SATA) y arrancamos desde el viejo primero o, si no tenemos espacio como es el caso, “jugamos” un poco:

  1. Sustituimos el disco duro viejo por el nuevo
  2. Arrancamos un LiveCD cualquiera (Ubuntu mismo).
  3. Montamos el /boot del disco duro en /media/hda1.
  4. grub-install /dev/hda --root-directory=/media/hda1.

Por último se puede dar el caso al arrancar desde disco duro (me ha pasado sólo 2 veces, supongo que depende del grub a instalar) que no coja el menu.lst y suelte un grub> a pelo esperando comandos.

root (hd0,0)
cat /boot/grub/menu.lst

# Copia las líneas del menu.lst, por ejemplo:
kernel /vmlinuz-2.6.23 root=/dev/hda3 ro vga=791
initrd /initrd.img
boot

Lo único que cambia es que en el menu.lst pone “savedefault” en lugar del boot (no lo necesita). Una vez arrancado desde nuestro sistema operativo se instalará correctamente el grub:

grub-install /dev/hda
update-grub

Conclusión

Requiere poco tiempo aunque parezca complejo. En realidad he tardado más en escribirlo que en hacerlo. Pero el tiempo que me ahorro en lugar de instalar un S.O nuevo y configurarlo (+ personalizarlo) es mucho, pero que mucho mayor.

19 Comentarios (feed)

  1. Gravatar de javierrocam javierrocam nos comenta:

    ¿por que no has clonado el disco? con ghost o similar.

    Sábado, 29 de Diciembre/2007 @ 19:46

  2. Gravatar de Armonth Armonth nos comenta:

    Javier pues por existir diferencias de tamaño entre uno y otro disco… aparte de que nunca me han ido muy bien esos programas :\

    Sábado, 29 de Diciembre/2007 @ 20:00

  3. Gravatar de lector lector nos comenta:

    Muy buen artículo, sólo una pequeña pega:

    SO: Sistema Operativo
    SS OO: Sistemas Operativos

    Saludos!

    Sábado, 29 de Diciembre/2007 @ 20:58

  4. Gravatar de Forenaits Forenaits nos comenta:

    Muy interesante, yo soy de los que prefieren perder el tiempo reinstalando y configurando todo de nuevo (llámame raro) porque siempre acabo configurando algo nuevo y dejo el sistema muy diferente al anterior. Pero es muy útil saberlo para no perder tiempo cuando el ordenador no es el tuyo ^

    Sábado, 29 de Diciembre/2007 @ 21:33

  5. Gravatar de xunilung xunilung nos comenta:

    1.- Amb un liveCD (systemRescue p.e) crees les particions del disc nou .
    Com que és més gran, se suposa que les particions seran més grans que les originals, per tant…cap problema.
    2.- Amb el partimage pots crear i guardar les imatges de les particions en un disc .
    3.- Després simplement has de copiar les imatges a les noves particions.
    Amb el partimage va de conya, és MOLT ràpid, fàcil i supermegafiable :-).
    T’ho recomano. http://xunilung.balearweb.net/post/30553

    Sábado, 29 de Diciembre/2007 @ 22:13

  6. Gravatar de Armonth Armonth nos comenta:

    Xunilung, mis disculpas por no contestarte en catalán. Me he leído el artículo y no tiene mala pinta, desconocía (o mejor dicho no se me había ocurrido) que con “dd” se pudiera rescatar el MBR al limitar la recuperación a los 512 primeros bytes…

    El sistema que comentas lo veo perfecto (al menos en apariencia mucho más limpio que un “ghost”) para montar por ejemplo un cyber…

    Sábado, 29 de Diciembre/2007 @ 22:57

  7. Gravatar de Samuel Samuel nos comenta:

    ¿Y por qué no separas el /var y el /tmp?, según he leído en varios sitios es una práctica recomendable ¿no?.

    (el motivo de la pregunta es aprender más sobre este tema, porque yo de linux estoy en pañales todavía).

    Domingo, 30 de Diciembre/2007 @ 1:53

  8. Gravatar de corsaria corsaria nos comenta:

    Me quedo esta entrada porque seguro que me va a hacer falta. Gracias Héctor. :-)

    320Gb!! los llenarás de anime… :P

    Que tengas un buen año 2008. ;-)

    Domingo, 30 de Diciembre/2007 @ 11:21

  9. Gravatar de Super Coco Super Coco nos comenta:

    Me ha parecido muy interesante la entrada.

    Sin embargo, veo una cosa que no me queda clara: la copia de los ficheros de /dev. Actualmente los ficheros de dispositivo son creados dinámicamente por el udev trabajando con el hotplug y es también un sistema de ficheros virtual, como sys o como /proc:

    udev on /dev type tmpfs
    tmpfs on /dev/shm type tmpfs
    devpts on /dev/pts type devpts

    Yo diría que lo que hay que copiar al nuevo son los ficheros de dispositivo de /dev/.static/dev/ a /dev/ en el nuevo disco o usar el MAKEDEV para crear los ficheros de dispositivo estáticos en el nuevo disco…

    ¿Tú que opinas?

    Domingo, 30 de Diciembre/2007 @ 11:31

  10. Gravatar de Armonth Armonth nos comenta:

    Samuel: esto suele ser así por que en /var suelen haber datos de las webs de Apache (/var/www) o de MySQL.

    En /tmp es recomendable para poder restringir permisos, por ejemplo noexec. Pero dado que normalmente se monta un sistema de ficheros tmpfs (ver comentario justo debajo del tuyo de Super Coco) no es necesaria otra partición.

    Super Coco: que tienes razón, pero que si no lo he hecho es porque yo no monto una partición virtual con udev (no uso las líneas 1 y 3 de tu ejemplo).

    Supongo que es lo que tiene ser “de vieja escuela”: consola para tratamiento de ficheros, aplicaciones de “desktop” típicas en KDE mayormente y GTK2 unas pocas y sin usar un “Desktop Environment” como KDE/Gnome: sólo un “Window Manager” como IceWM personalizado, sin iconos en el fondo de pantalla y — eso sí — con muchos hotkeys…

    El udev es demasiado moderno para mí xD

    Domingo, 30 de Diciembre/2007 @ 15:24

  11. Gravatar de MarioQuartz MarioQuartz nos comenta:

    A lo mejor es un poco off-topic, fuera de tema, pero quisiera saber como pasar/crear un sistema minimo en un disco duro partiendo de otro.
    Me explico tengo un ordenador antiquisimo (unos 8 o 10 años) y quiero usarlo para servidor. Y dejarlo pelado. E intentado usar Ubuntu-Server porque me reconoce la tarjeta wifi y el Net-inst de Debian. Pero petan cada vez en un sitio diferente. Pero estoy seguro que si serviria para su función.

    Estoy buscando una manera de instalar un sistema minimo en el disco duro sin usar los tipicos instaladores. Y este articulo es lo mas parecido que he encontrado.

    Aunque pensado un poco podria instalarlo en otro ordenador con otro disco duro y luego seguir este articulo.

    Domingo, 30 de Diciembre/2007 @ 20:52

  12. Gravatar de Armonth Armonth nos comenta:

    MarioQuartz: Debian por defecto daba antes (ahora no sé) una lista de tareas (Tasksel) a instalar, simplemente no eliges ninguna y luego además desinstalas todo lo que no te interese y/o no “pete” la base del sistema (vamos: no intentes desinstalar libc6 xD).

    Para eliminar exim hace falta un MTA… utiliza nullmailer ;)

    Domingo, 30 de Diciembre/2007 @ 22:47

  13. Gravatar de MarioQuartz MarioQuartz nos comenta:

    Al final use un netinst, pero lo hice en un ordenador y luego conecte el disco duro a otro distinto.
    Ahora da un error con el root local file sistem. Lo monta pero luego se queda al inciar eso. :’(

    Lunes, 31 de Diciembre/2007 @ 16:05

  14. Gravatar de Armonth Armonth nos comenta:

    MarioQuartz ¿IDE o SATA? En cualquier caso asegurate que en el nuevo equipo al montar el disco duro tenga la misma unidad asignada (hdX o sdX). Si es IDE y lo tienes maestro del primer canal (hda) en un equipo tenlo = en el otro…

    Lunes, 31 de Diciembre/2007 @ 20:38

  15. Gravatar de MarioQuartz MarioQuartz nos comenta:

    Efectivamente, estaba conectado al ide2 en vez de al ide1.
    Ahora ya puedo buscar la manera de la debian que instale se parezca mas a como estoy acostumbrado a usar la terminal en Ubuntu. Dotar al cutre-servidor de conexión wifi tambien. Ademas que la placa me reconozca un disco duro de 80 gigas, uno me ha dicho que la placa es antigua y no lo hara. ¿Este otro va en el conector que sobra en el ide1 o con otro cable en el ide2? ya probare… Y luego hacer una caja nueva…

    Trabajo para rato…

    Perdon por hacer estas preguntas hoy… me aburro, mientras llega la gente a comer…

    Martes, 1 de Enero/2008 @ 13:34

  16. Gravatar de Iván Iván nos comenta:

    Muy interesante, la verdad es que he aprendido algunas cosas que no sabía. Me lo guardo porque seguro que me resultará útil en el futuro.

    Saludos, Iván.

    Miércoles, 2 de Enero/2008 @ 23:32

  17. Gravatar de Pescao Pescao nos comenta:

    Al final me vino algo bien y todo ^_^

    Año y medio sin tocar el windows, y ayer me digo, voy a reinstalarlo, y la madre que lo parió y su manía de hacer cosas sin preguntar.

    Me ha tocado recuperar particiones, mover archivos, rehacer particiones y volver a mover.

    Y eso que ni lo instalaba en el mismo hdd, xdddddddddd

    Jueves, 3 de Enero/2008 @ 14:35

  18. Gravatar de Super Coco Super Coco nos comenta:

    Gracias por la respuesta.

    Sí, resulta un poco difícil seguir todos los cambios que se van introduciendo en este mundillo. Demasiado rápido para poder seguir todo puntualmente :-)

    Pero en concreto, en el caso del udev, a mí me resulta extremadamente útil e interesante. Hace tiempo escribí sobre qué se puede hacer con este sistema. Me permito dejar un enlace a la entrada:

    Creación de reglas udev para personalizar el nombre de los ficheros de dispositivo de las memorias USB

    Saludos

    Lunes, 7 de Enero/2008 @ 15:55

  19. Gravatar de Heladio Heladio nos comenta:

    Buen articulo, en mi caso lo que he hecho es copiar solo el /home, ya que seguido cambio de PC, entocen lo que me interesa conservar son los archivos multimedia, esto se puede hacer teniedo otra particion

    /
    /boot
    /home (configuracion de escritorio fondos, enlaces y carpetas del escritorio)
    /multimedia donde guardamos los archivos multimedia

    Saludos

    Jueves, 21 de Febrero/2008 @ 19:47

No seas tímido, da tu opinión

Sé respetuoso con los demás, la diferencia de opiniones enriquece la discusión, los comentarios bajo ciertas circunstancias pueden ser moderados y requerir aprobación.