Publicado el Sábado 29 de Diciembre del 2007 @ 19:23 por Armonth.
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.
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:
Por último podemos usar apt-get clean para eliminar todo el repositorio local (los paquetes que nos hemos bajado para posteriormente ser instalados).
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…
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
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.
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:
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
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.
¿por que no has clonado el disco? con ghost o similar.
Muy buen artículo, sólo una pequeña pega:
SO: Sistema Operativo
SS OO: Sistemas Operativos
Saludos!
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 ^
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
¿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).
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. ;-)
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?
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.
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. :’(
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…
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.
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
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:
Saludos
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