Como restaurar fácilmente una partición con PartImage
http://farm3.static.flickr.com/2541/4034183201_aa846283fa_m.jpg
Muchos equipos nuevos se subministran con una imagen de restauración o con una partición oculta que nos permite reinstalar el sistema y dejarlo como cuando lo compramos. Pero el problema es que siempre se incluyen muchos programas que no nos interesan y además no se permite actualizar el contenido de esa imagen, para así permitirnos perder menos tiempo la próxima vez que nos interese restaurarla y tenerla lista para funcionar en un tiempo menor. La explicación la realizaré para crear una imagen de Windows XP con formato NTFS, ya que PartImage http://en.wikipedia.org/wiki/Partimage todavía no tiene soporte http://www.partimage.org/Supported-Filesystems para EXT4, a pesar de que para el resto de sistemas de ficheros soportados la explicación es la misma teniendo en cuenta los cambios que comento al final.
Cosas ha tener en cuenta antes de empezar:
La utilidad de esta explicación se puede apreciar mejor si sabemos para que entornos esta enfocada, aunque luego cada cual puede re-adaptarlas a sus propias necesidades. Para mi esta idea surgió como la necesidad de tener una herramienta de restauración gratuita y que además fuera sencilla de utilizar para cualquiera con conocimientos nulos de informática, lo cual implica que esta explicación sea algo más compleja de lo que realmente seria necesario a cambio de ofrecer mayor facilidad al usuario final al que esta destinado que lo utilice.
Para que necesitamos esto:
Mientras todo va bien no hay problemas, pero las cosas siempre fallan cuando más faltan nos hacen y hay lugares que la necesidad de seguir funcionando es un factor primordial, como puede ser el caso de los equipos en una empresa, donde estos deben ser siempre funcionales y que a ser posible estén el menor tiempo posible sin funcionar. Este caso es interesante en equipos para empresas, donde que un equipo no funcione es fácil que implique que haya como mínimo un empleado menos haciendo su trabajo (en función de la importancia de ese equipo implicará a más o menos usuarios).
Y siempre hay leyes http://es.wikipedia.org/wiki/Ley_de_Murphy que apoyan estas ideas:
- Si hay alguna posibilidad de que las cosas salgan mal, saldrán mal.
- Los sucesos fortuitos tienden a suceder todos juntos.
- Si una serie de sucesos puede salir mal, saldrá mal en la peor secuencia posible.
- Si la ley de murphy puede salir mal, lo hará.
Mis pre-condiciones eran las siguientes:
- El sistema operativo y las cuentas de usuarios deben ir por separado: cuando tengamos la necesidad de restaurar el equipo, los usuarios no deben perder nada de sus cuentas de usuarios. Esto implica que el sistema operativo, en este caso Windows XP estará en una unidad que por defecto siempre es la unidad C, y los documentos de los usuarios deberán estar en otra, por ejemplo la D. Por los documentos de los usuarios no me refiero a la carpeta "Mis documentos", me refiero a "Documents and Settings" que siempre se instala por defecto en la unidad C, en la cual se almacena toda la información relativa a su cuenta (esta carpeta viene a ser el símil de la /home en Linux, por si alguien quiere hacer lo mismo en sistemas GNU/Linux, así que la /home debería ser otra partición).
- La imagen de restauración puede actualizarse: ya sea manteniendo la copia anterior y la nueva, o borrando la anterior y haciendo una nueva. Yo lo explicaré para solo tener una única copia (por razones de espacio), si queremos guardar la anterior que sabemos que funciona, deberemos hacer una copia de seguridad de ella de forma manual.
- Cualquiera con conocimientos nulos de informática ha de poder utilizar este sistema de crear una imagen de la partición principal y poderla restaurar.
Que nos implican estas pre-condiciones:
- Deberemos tener el disco duro con múltiples particiones: serán un mínimo de 3 y un máximo de 5.
- Deberemos utilizar scripts y que estos se ejecuten desde de GRUB/GRUB2
Como lo ponemos en practica?
Aunque ponerlo en practica parezca muy complicado, no lo es tanto como pueda parecer a simple vista, es un proceso que es largo, pero no tiene complicación. Con la explicación anterior sabemos que deberemos tener el disco duro particionado de la siguiente forma:
- Partición donde se encuentra instalado Windows XP
- Partición donde se guardará "Documents and Settings" y si fuera necesario, en esta unidad se instalarían otros programas que deban mantener sus datos una vez restaurada una imagen de disco.
- Partición para la distribución GNU/Linux que usemos para realizar las copias de seguridad.
Particiones adicionales (algo más avanzado y que no explicaré):
- Muchas distribuciones recomiendan el uso de una partición swap, por si la cantidad de RAM es baja o por si se necesita más RAM en algún momento y no se dispone de ella, que se haga uso de la partición swap.
- Partición para tener la /home de GNU/Linux a parte, y así guardar la imagen de restauración aquí en lugar de la partición en la que se encuentra instalada la distribución GNU/Linux. De este modo podríamos guardar diferentes imágenes de disco con mayor facilidad y sin preocuparnos tanto por el espacio restante de disco.
Así que el disco duro quedaría de la siguiente forma, visto desde GParted:
http://farm3.static.flickr.com/2565/4034579388_19568c1c23_o.png
La partición /dev/sda1 es donde se encuentra Ubuntu, la cual incluye una instalación completa y funcional a nivel de usuario además de la imagen de disco para restaurar Windows XP. La partición /dev/sda2 es donde se encuentra Windows XP, instalación completa y funcional con todos los programas de uso común instalados a necesidad del usuario. El tamaño de esta partición diferirá según las necesidades de cada usuario, y por ende, la partición anterior también, ya que si la partición de Windows XP es mayor, necesitaremos más espacio para guardar su imagen de disco. La partición /dev/sda3 es donde se encuentran "Documents and Settings" y los programas que deban mantener sus datos una vez restaurada una imagen de disco.
Sabiendo todo esto ya podemos realizar el proceso:
- Arrancamos el equipo con el CD de instalación de Ubuntu, seleccionamos nuestro idioma y arrancamos con la opción "Probar Ubuntu sin alterar su equipo" y ejecutamos el instalador que tenemos en el escritorio y configuramos todos los pasos hasta llegar a "Preparar particiones", donde crearemos las particiones de este modo (el espacio asignado variará en función de vuestras necesidades), seleccionando que formatee las 3 particiones: http://farm3.static.flickr.com/2786/4033837845_8bc1af82fe_o.png
- Seguimos pulsando "Adelante" para que particione y formatee el disco como queremos, y cuando nos pida los datos de usuario ya tendremos el disco preparado, ahora reiniciamos el equipo sin seguir la instalación, e iniciamos con el disco de instalación de Windows XP.
- Instalamos Windows XP en la segunda partición de las 3 que ha autodetectado, las 2 con formato NTFS, deben estar preasignadas con unidad C y unidad D por estar en formato NTFS y la primera partición debe aparecer como partición en formato desconocido. Una vez instalado Windows XP, iremos a Mi PC y le daremos formato a la partición D que aún no ha sido formateada. Cuando acabe, crearemos un nuevo usuario con privilegios de administrador y le asignaremos contraseña (su nombre y contraseña son indiferentes), cerraremos la sesión actual y accedemos con este usuario. Desde este usuario será desde el que moveremos "Documents and Settings" a la otra partición, para esto haremos lo siguientes pasos (extraído de http://www.trucoswindows.net/contentid-410-TRUCO-Mover-carpeta-Documents-and-Settings-a-otra-particion.html o http://www.aweba.com.ar/windows/mover_docs_and_settings.html):
- Inicio -> Ejecutar -> Escribimos "cmd" y lo ejecutamos.
- Aquí escribimos el comando siguiente: XCOPY “C:\Documents and Settings\*.*” “D:\Documents and Settings” /E/C/H/K/X
- Cuando este proceso finalice habremos copiado la carpeta "Documents and Settings" a la nueva partición, pero los referentes al usuario que estamos utilizando actualmente se habrán copiado de forma incompleta por que lo estamos utilizando, por eso mismo creamos este usuario.
- Inicio -> Ejecutar -> Regedit.exe y lo ejecutamos.
- Buscamos en el Editor del Registro lo siguiente: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList
- Y cambiamos cualquier referencia de "C:\Documents and Settings" a "D:\Documents and Settings". En algunas versiones se ha cambiado por la siguiente forma: "%SystemDrive%\Documents and Settings", asi que si vemos este formato, cambiaos %SystemDrive% por D:, pero solo si hace referencia a "Documents and Settings", ya que de otro modo dejaremos incoherencias en el registro, y nosotros solo queremos mover esta carpeta.
- En principio con estos cambios debería bastar según la documentación en Microsoft, pero este no fue mi caso con un SP3 y no puedo garantizar que realmente baste con eso debido a mi propia experiencia. Así que para asegurarnos buscaremos (pulsando CTRL+B aparece el buscador) la cadena "Documents and Settings" seleccionando todas las opciones, y allí donde veamos que sigue haciendo referencia a "C:\Documents and Settings" o "%SystemDrive%\Documents and Settings" lo remplazaremos por "D:\Documents and Settings". Es importante que nos aseguremos que no queda ninguno por remplazar, ya que sino dejaríamos inconsistencias en lo relativo a esta carpeta y su ubicación, y nos interesa que realmente haga uso de ella en la nueva ubicación.
- Ya solo nos falta reiniciar el equipo e iniciarlo en "Modo a prueba de fallos" pulsando F8 cuando este arrancando, iniciar sesión como Administrador y comprobar que realmente ya se esta utilizando la nueva ubicación de Documents and Settings. Podemos comprobarlo accediendo a la carpeta Mis documentos y mirando que ruta aparece en la barra de direcciones, si aparece "D:\Documents and Settings\..." se ha realizado correctamente y ya podemos borrar la vieja "C:\Documents and Settings" (si Windows siguiera haciendo uso de esta ubicación aparecerían errores mientras se intenta eliminar, así que esto también servirá para asegurarnos que no la este usando). También debemos eliminar el usuario que creamos anteriormente para realizar la copia a la nueva ruta ya que no lo necesitaremos más y eliminar su carpeta de usuario de "D:\Documents and Settings\" si Windows no lo hiciera de forma conjunta al eliminar al usuario del sistema.
- Reiniciamos de nuevo y iniciamos sesión normalmente.
- Este es el momento para instalar y configurar el software necesario que queramos tener en la imagen de disco que haremos más adelante, así como dejar instaladas todas las actualizaciones que sean posibles para que en futuras posibles restauraciones el sistema se encuentre lo más actualizado posible.
- Arrancamos de nuevo el equipo con el CD de instalación de Ubuntu, seleccionamos nuestro idioma y arrancamos con la opción "Probar Ubuntu sin alterar su equipo" y ejecutamos el instalador que tenemos en el escritorio y configuramos todos los pasos hasta llegar a "Preparar particiones", donde ahora no crearemos las particiones, sino que le indicaremos como debe utilizar las que ya creamos en el paso 1. Seleccionaremos cada una de las particiones e iremos pulsando el botón "Editar partición" para ir rellenando todos los campos para dejarlo como aparece en la captura (el más importante es que el punto de montaje este indicado para las particiones NTFS), a no ser que el proceso obligue a formatear de nuevo la primera partición, no será necesario, ya que ya lo hicimos en el primer paso. http://farm3.static.flickr.com/2786/4033837845_8bc1af82fe_o.png
- Seguimos pulsando "Adelante", esta vez lo hará más rápido ya que no debe particionar ni formatear nada, solo saber como deberá montar cada una de las particiones. Configuramos la cuenta de usuario, esperamos a que se instale completamente y cuando acabe pulsamos en "Reiniciar ahora".
- Ahora podemos ver que al arrancar el equipo, nos encontramos con que nos ofrece un arranque dual, seleccionamos iniciar con Ubuntu, y proseguiremos con los últimos pasos.
- En este punto es cuando instalaremos PartImage, GParted, añadiremos los scripts necesarios para la restauración de imagen y creación de imagen, bastará con que copiéis y peguéis los siguientes comandos en una terminal:
- sudo su
- apt-get install partimage parted
- cd ~
- wget http://shawe.ewahs.googlepages.com/backup-winxp.sh
- wget http://shawe.ewahs.googlepages.com/restore-winxp.sh
- chmod +x backup-winxp.sh
- chmod +x restore-winxp.sh
- gedit /etc/event.d/rc-default
- En este archivo buscaremos y añadiremos las líneas en negrita:
if grep -q -w -- "-s\|single\|S" /proc/cmdline; then telinit S
if grep -q -w -- "init 3" /proc/cmdline; then telinit 3
if grep -q -w -- "init 4" /proc/cmdline; then telinit 4
elif [ -r /etc/inittab ]; then
- mv backup-winxp.sh /etc/init.d/backup-winxp
- mv backup-winxp.sh /etc/init.d/restore-winxp
- ln -s /etc/init.d/backup-winxp /etc/rc4.d/S29backup-winxp
- ln -s /etc/init.d/restore-winxp /etc/rc3.d/S29restore-winxp
Esto nos permitirá utilizar el runlevel 3 como opción para restaurar la imagen del equipo, y el runlevel 4 como opción para crear una nueva imagen del equipo.
- ln -s /etc/init.d/backup-winxp /root/backup-winxp
- ln -s /etc/init.d/restore-winxp /root/restore-winxp
- Y finalmente, configuraremos GRUB para que muestre las opciones desde el arranque del equipo:
- cp /boot/grub/menu.lst /boot/grub/menu.lst.backup
- gedit /boot/grub/menu.lst
- Buscaremos algo similar a lo siguiente y añadiremos las lineas en negrita basándonos en las del (recovery mode):
title Ubuntu 9.04, kernel 2.6.28-11-generic uuid ba134259-04dd-4721-8d90-db98c3fb7f65 kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=ba134259-04dd-4721-8d90-db98c3fb7f65 ro quiet splash initrd /boot/initrd.img-2.6.28-11-generic quiet
title Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode) uuid ba134259-04dd-4721-8d90-db98c3fb7f65 kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=ba134259-04dd-4721-8d90-db98c3fb7f65 ro single initrd /boot/initrd.img-2.6.28-11-generic
title Restaurar imagen de disco de Windows XP uuid ba134259-04dd-4721-8d90-db98c3fb7f65 kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=ba134259-04dd-4721-8d90-db98c3fb7f65 ro init 3 initrd /boot/initrd.img-2.6.28-11-generic
title Hacer nueva imagen de disco de Windows XP uuid ba134259-04dd-4721-8d90-db98c3fb7f65 kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=ba134259-04dd-4721-8d90-db98c3fb7f65 ro init 4 initrd /boot/initrd.img-2.6.28-11-generic
title Ubuntu 9.04, memtest86+ uuid ba134259-04dd-4721-8d90-db98c3fb7f65 kernel /boot/memtest86+.bin quiet
- Para hacernos más fácil el añadir las líneas en negrita, copiaremos la sección que hace referencia al "(recovery mode)", y lo pegaremos 2 veces, la primera la usaremos para restaurar la imagen y la segunda para crearnos imágenes nuevas. A parte de cambiar la línea que hace referencia a "title" en la línea referente al "kernel" deberemos cambiar "single" por "init 3" e "init 4" respectivamente.Si no queremos que los usuarios puedan hacer imágenes nuevas no añadiremos dicha sección, si más adelante queremos hacer una imagen nueva aprovechando que el script de hacer backups también esta añadido, cuando veamos al GRUB mostrándonos las diferentes posibilidades seleccionaremos "Restaurar imagen de disco de Windows XP" y en lugar de pulsar Intro pulsaremos "e" (Editar) nos situaremos encima de la linea "kernel ..." pulsaremos "e" de nuevo, y cambiaremos el "3" por un "4", pulsamos Intro para aplicar el cambio y pulsamos "b" para arrancar. Este cambio no se guardará de forma permanente y nos permitirá hacer la copia de seguridad sin necesidad de hacerla manualmente, cabe tener en cuenta que el script para crear una imagen nueva sobrescribe la imagen anterior, así que si queréis guardar una copia de esta imagen, deberéis arrancar de forma normal y copiar la imagen que esta guardada en el directorio /root.
- Ahora que ya tenemos el equipo preparado, es el momento de hacer la primera imagen de disco, cuando acabe de hacerla, el equipo se reiniciará automáticamente.
- ./root/backup-winxp.sh
- Y por última y no menos importante que las anteriores probar que la imagen de disco que hemos creado funciona correctamente. No podemos confiar en una imagen de disco que no hayamos probado que funciona correctamente, y por tanto hay que tener siempre una copia de la última imagen de disco que funciona correctamente (a ser posible una copia aparte, ya sea en el mismo equipo o en una unidad externa), y siempre que la última copia de la imagen de disco que tengamos falle por el motivo que sea, podremos utilizar la imagen anterior a esta que sabemos que funciona correctamente.
Anotaciones finales: Estos scripts son de elaboración propia, y por tanto, hechos a medida para mis necesidades, pero he intentado dejarlos con los comentarios suficientes para que podáis modificar-los más fácilmente y usando variables PARTITION para indicar la partición a restaurar y DISP_PARTITION para indicar a que dispositivo hace referencia.
En mi script el valor para DISP_PARTITION puede observarse que se obtiene automáticamente, ya que la partición a restaurar cumple 2 características, es NTFS y esta marcada como bootable y con ese comando se obtiene ese tipo de partición, pero tal como se puede ver en la captura de pantalla de GParted, ese valor es /dev/sda2 en mi caso y podría poner ese valor directamente en lugar de obtenerlo automáticamente. Esto lo explico por si queréis utilizar el mismo script para restaurar una partición de GNU/Linux (OJO con el tipo de formato de la partición http://www.partimage.org/Supported-Filesystems) y así esta misma explicación, sería re-utilizable para hacer la imagen de disco de cualquier otra partición soportada por PartImage.
Alternativas: http://www.clonezilla.org/ +http://www.howtoforge.com/back-up-restore-hard-drives-and-partitions-with-clonezilla-live
Útil para realizar imágenes de disco y restaurarlas desde particiones, disco duros externos o en red en formato LiveCD disponible con interfaz en español. Ver capturas de pantalla http://www.clonezilla.org/screenshot/?in_path=/01_Clonezilla.
Complemento para administradores de sistemas: Cómo utilizar la herramienta Sysprep.exe para automatizar la correcta implementación de Windows XP http://support.microsoft.com/kb/302577/es
Explicación para utilizar 1 imagen de disco para poderla utilizar en equipos con hardware diferente (útil para aprovechar la misma imagen en equipos con hardware diferentes, o por sí algún día existe la necesidad de cambiar alguna pieza y que Windows XP no deje de arrancar por que considere que se esta usando esta imagen con un equipo nuevo), esta explicación debería realizarse antes del paso 5 de esta guía.