Monday, May 25, 2009

Windows XP P2V con Clonezilla y VirtualBox




Este fin de semana largo estuve trabajando para migrar una máquina física con Windows XP a una máquina virtual en VirtualBox.

Tenia una notebook con varios años y dado que no era posible actualizarla, encontré una buena opción el virtualizarla.

Esto que seguramente con herramientas como VMWARE debe resultar medianamente sencillo, utilizando opensource requiere un poco mas de esfuerzo.

Por lo tanto, me propuse hacer un pequeño manual de migración, realmente no les prometo que esto sea fácil, como dijo Churchill "No tengo nada más que ofrecer que sangre, esfuerzo, sudor y lágrimas"

Todo comenzó con un articulo llamado "How to convert a physical server to a virtual one using the open source tool Clonezilla Live" .

La nota da pautas generales para hacer esta migración hacia VMWARE, pero mi intención fue hacerlo hacia VirtualBox.


Algo a tener en cuenta cuando realizamos P2V es el impacto del hardware actual sobre la plataforma virtual.





En esto la configuración del HAL ( Hardware Abstraction Layer ) puede traernos mas de un dolor de cabeza.

Como bien indica este link , mover una máquina con Windows instalado a otro equipo no es tan sencillo como Linux, dado que el kernel y los drivers dependen del hardware instalado.



Por lo tanto hay algunos pasos deben ser necesarios seguir antes de crear la copia.

Antes que nada realizar un backup/imagen de respaldo antes de tocar la configuración actual de la máquina.

En el siguiente link explican lo que debemos hacer en caso de mover un disco con Windows a otra plataforma :

Moviendo disco

Otro punto a tener en cuenta es sobre los drivers agp440.sys e intelppm.sys, los cuales pueden traernos problemas.

Antes de realizar la copia, se pueden renombrar, los mismos se encuentran en el directorio C:\Windows\SYSTEM32\drivers.

Recomiendo también tener un iso de Windows XP, seguramente se necesitara utilizar en caso de reparaciones.

Teniendo esto preparado, solo hay que cruzar los dedos para que funcione, no es raro encontrarse con pantallas azules luego de la migración.

No voy a entrar en detalles sobre Clonezilla, ya que de por si necesitaría un post dedicado a esta excelente herramienta, solo voy a decir que es un software que nos permite clonar una máquina, igual que lo hace Norton Ghost, incluso permite clonar varias máquinas en simultaneo.

Algunas de las características de este programa :

  • Clona solamente los bloques usados del disco.
  • Provee multiple filesystems y soporte de LVM, incluye ext2, ext3, xfs, jfs,LVM2 en GNU/Linux; FAT, NTFS en Microsoft Windows; y HFS+ en Mac OS.
  • Soporta CD/DVD, USB flash/hard drives, y PXE
  • El mismo Clonezilla Live permite crear y recuperar la copia.


En este link se puede bajar la version Live del software. Con el iso generaremos un CD o un USB, el cual nos serviría para bootear en el sistema que vamos a clonar.

Los pasos a seguir :




Arrancamos el sistema y se nos presentara un menu de arranque.

En mi caso seleccion la primera opción :

Clonezilla live ( Defaults settings, VGA 1024x768)

Luego de esto el sistema arranca y comienza a reconocer los dispositivos instalados.

Luego nos presenta un menu para seleccionar el lenguaje y en el próximo paso la distribución del teclado.


Seleccionado el teclado, elegimos si arrancamos Clonezilla o si salimos a un shell.
Por supuesto, seleccionamos iniciar Clonezilla.


Ahora debemos seleccionar que tipo de copia realizaremos :
  • device-device es para for device-to-device direct cloning.
  • device-image es para device-to-image backup.
La primera opción nos permite realizar el clonado del sistema completo creando una imagen del sistema.

El próximo paso es decir como almacenaremos la imagen, tenemos varias opciones.


En mi caso, dado que no contaba con un medio externo, elegi copiar la imagen por SSH a otro equipo.

También tenemos la posibilidad de hacerlo por NFS o Samba.

Teniendo ambas máquinas a 100MB FullDuplex, y dado que Clonezilla solo copia los sectores con datos, una imagen de 30GB tomo 60minutos.

Cuando seleccionamos SSH, tenemos que configurar la IP de la máquina, lo cual puede hacerse por DHCP o manualmente.

Una vez que recibimos la IP, debemos dar los datos del server SSH y luego usuario y directorio destino de la imagen. ( Este directorio debe estar previamente creado y contar con los permisos necesarios )



Con los datos, Clonezilla se conectara al server destino, nos mostrara la llave RSA y nos pedira aceptar la conexion. Luego de esto nos pedira ingresar la password del usuario.


Luego de esto, se nos mostrara las particiones del sistema, la de destino debería tener suficiente espacio para almacenar la imagen.

El próximo paso es elegir el modo en que realizaremos la clonación, dado que aun no conocemos bien el software, seleccionamos el modo Beginners.


Paso seguido debemos seleccionar que tipo de clonación realizaremos, el disco entero como imagen o particiones.

Esto es importante tenerlo en cuenta, ya que afectara el modo que realizaremos el restore.

Dado que mi máquina tenia dos particiones y solo quería clonar la primera, elegí, guardar las particiones como imagen ( saveparts ).


Dando ok, Clonezilla nos mostrara el nombre que tendra la imagen


En el siguiente paso seleccionaremos las particiones a clonar. Esto se hace mediante la barra espaciadora. En este ejemplo que vemos, solamente hay una partición.


Cuando damos ok, el sistema nos muestra el comando que utiliza para la clonación. Si luego queremos repetir esto, lo podemos hacer directamente desde el shell mediante el siguiente comando :

/opt/drbl/sbin/ocs-sr -q2 -c -j2 -z1 -i 2000 -p true saveparts "2009-05-27-02-img" "hda1"

Luego de un par de confirmaciones, comenzara la copia.


Terminada la creación de la imagen, podemos reiniciar el sistema.

En este momento estamos en este punto :

La máquina a clonar fue preparada, se realizo una imagen, la cual se encuentra
en el Host.

Ahora vamos a crear una máquina virtual en VirtualBox, algo relativamente sencillo.

Hacemos click en el icono New y seguimos los pasos habituales.




Una vez creada la máquina virtual, montamos el ISO de Clonezilla en el CDROM para poder bootear con el.


Ya estamos listos para comenzar la tercer y ultima etapa.


Arrancamos la máquina virtual y nos encontraremos con la misma pantalla que al realizar la imagen.

Seleccionamos el primer item.


Damos ok al lenguaje preferido y a la distribución de teclado.

Luego de esto seleccionaremos "Iniciar Clonezilla"


Ahora seleccionaremos la opción "device-image", ya que recuperaremos la copia desde una imagen.

Ahora debemos seleccionar el método por el cual recuperaremos la imagen.
Como en el caso de la creación tenemos, Disco local, SSH, Samba, NFS.

En este punto, quiero aclarar algo. Intente realizar la recuperación desde una particion local, copie la imagen a una partición que cree especialmente, ya que VirtualBox permite el acceso a dispositivos raw desde el SO cliente. Es decir que podemos hacer que el SO Cliente monte una particion del SO Host.

Lamentablemente en mi caso, no pude lograr que Clonezilla detectara la imagen. Fue bastante frustrante, de todas maneras para quienes quieran hacer la prueba les dejo el comando para que VirtualBox monte una particion Raw y la deje disponible para el cliente.

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -register


Esto creara un archivo .vmdk el cual puede montarse como un disco mas, como podemos apreciar en la siguiente imagen.


Bien sigamos con la recuperación.

En este punto seleccione que se realice por medio de ssh...

Nuevamente se pidio una IP para el equipo, usuario, directorio donde estaría la imagen, ingresar el password.

Exactamente igual al momento de la clonacion.


El siguiente paso es seleccionar el método, Beginner o Expert. En este caso seleccionaremos Expert, ya que mas adelante debemos ingresar algunas opciones en forma manual.

Ahora, el siguiente paso es diferente a los dados en la creación de la imagen.

Debemos seleccionar que haremos, si crear una imagen o restaurar. Por supuesto que en este momento restauraremos una imagen, pero dado que solo queremos restaurar una partición ( recordemos que fue lo que seleccionamos en el momento de hacer la imagen ), la opción a elegir es "restoreparts"


Ahora la pantalla nos mostrara todas las imágenes que tengamos hechas. Dado que yo realice diferentes pruebas, tengo tres imágenes. Solamente seleccionaremos la que pensemos utilizar.

El próximo paso es elegir las particiones destino donde restauraremos el SO.


Ahora se nos preguntara por las opciones de recuperación, seleccionaremos las siguientes :

-e1 auto
-c
-t1
-r
-cm


En la próxima pantalla seleccionaremos

-j0

Por ultimo, indicaremos que luego de finalizar haga un reboot. Esto mediante :

-p reboot



El comando para ingresar cuando necesitemos repetir el procedimiento quedo :

/opt/drbl/sbin/ocs-sr -e1 auto -c -t1 -r -j3 -cm -j0 -p reboot restoreparts  "Sys01-2005-09-28-img" "hda1"



Se nos pedira una confirmación y luego comenzara la restauración.




Terminada el restore, deberemos quitar el ISO del driver del CD y arrancar el sistema.

Seguramente aparecerá una pantalla diciendo que Windows no se apago bien y si queremos arrancar a modo prueba de fallos.

No es necesario eso, por lo tanto seleccionamos arrancar Windows normalmente.

Si tenemos suerte y todo funciono, tendremos nuestra máquina virtualizada.


Si les da BSOD, no se preocupen, yo estuve dos dias enteros buscando por internet la solucion, si seguimos los consejos de preparación, solamente deberemos arrancar en modo reparación la máquina con un ISO de Windows XP.




Una vez en el prompt de Windows en modo recuperación, deberemos copiar los siguientes archivos del CD original al directorio Windows/system32/drivers/

Atapi.sys, Intelide.sys, Pciide.sys, y Pciidex.sys


Bueno con esto termina este supermega post. Espero en la semana hacer un documento un poco mas respetable en pdf y compartirlo por aca.


Links interesantes :

Migrating Real Windows to VirtualBox

HowTo Convert Physical to virtual

You receive a Stop 0x0000007B error after you move the Windows XP system disk to another computer

http://www.virtualbox.org/wiki/Migrate_Windows

14 comments:

Cortex said...

Símplemente GENIAL tu post.
De verdad que muchas gracias por tan excelente contenido...

Julio Jaime said...

Bueno gracias, espero sea util.

slds

amash // said...

Julio, te comento que con esta guia, me ahorraste bastante trabajo, porque uno de los chicos con los que laburo estaba en algo parecido =)
Desde aca en la office te agradecen!

Abrazo y buena info =)

Julio Jaime said...

Amash esos comentarios "me ahorraste trabajo" estan prohibidos en este Blog.
Si continuas con ese tipo de mensajes me voy a ver obligado a cobrarles.

Sdls

PD : Contame si pudieron migrar y que problemas encontraron, me interesa.

Cortex said...

Jajajajajaja "voy a empezar a cobrar" jajaja, ahí me hiciste reir :-P

Oye, no sé, estaba pensando en crear esta "guía" en formato video (obviamente con tu consentimiento) y publicarlo en el blog en el que escribo (www.dragonjar.org).

Me gustaría saber tu opinión al respecto... Gracias!

Julio Jaime said...

Ningun problema, solo te pido que cites la fuente.

Slds

Julio

Cortex said...

Por supuesto Julio, así será! ;)

Yo te estaré comentado, Gracias! ;)

Vicent said...

Este post me ha parecido genial.
Yo lo he probado, pero me falla... una vez me pregunta si quiero a modo de fallos el XP, le digo que arranque win normalmente y se queda la pantalla en negro con el promt que ni responde
Que puede ser?
Copio los archivos que comentas: Atapi.sys, Intelide.sys, Pciide.sys, y Pciidex.sys?
Mil gracias

Julio Jaime said...

Hola Vicent

Aplique esto solo un par de veces, no soy un experto, por lo que no puedo darte mucha ayuda.

Solo dos recomendaciones : Antes de clonar la maquina, debes quitar todos los drivers especiales ( video por ej. ) para que la maquina quede como recien instalada.

Luego realizar el clonado.

Por ultimo esos archivos que mencionas deben copiarse una ves que levantes la maquina en modo de fallo.

Posiblemente tu pantalla se ve asi, ya que la clonaste con algun driver de video instalado.

Vicent said...

voy a buscar solución a ello, a ver si puedo quitar los driver de video.
tu sabes como limpiar de drivers la maquina a clonar, quiza si los quito todos...?
de todos modos gracias

Roberto said...

Gracias Julio por este magnifico post. Estaba buscando info para hacer algo parecido.

Me compré un netbook hace poco con XP preinstalado. Soy usuario Ubuntu y pretendo instalar en este equipo la version para netbook, pero no quiero perder la licencia XP porque para algunas cosas lo necesito.

En mi caso se facilita en parte la labor ya que es el mismo equipo y no tendría problemas de drivers.

Pero me preocupa algo el tamaño de la partición original. Actualmente el XP usa una partición de 149Gb, sólo usados unos 10Gb. Dices que Clonezilla sólo toma los bit usados... pero a la hora de montar la imagen, ¿es posible que desde VirtualBox se cree el disco duro virtual con el tamaño que queramos? Me explico, Podría montar esa copia en un disco duro virtualizado de, por ejemplo, 20Gb ó me daría error al no poder disponer de los 149Gb. Se que puedo usar gparted para redimensionar el tamaño de la partición, pero soy de los que piensan que ese tipo de herramientas son para cuando no queda otra.

Julio Jaime said...

Hola Roberto

Clonezilla copia los datos, pero guarda el tamaño de la particion.

Es decir, de un disco de 100Gb con 10GB de datos, copiara la estructura del disco y solo los datos. Al momento de restaurar la imagen, la particion sera de 100GB.

Yo haria lo siguiente :

Primera recomendacion es clonar el disco.

Utilzar una herramienta que redimensione la particion de la notebook.

Verificaria que funcione.

Generaria la imagen de virtualizacion.

De todas maneras la licencia no viene en una etiqueta debajo del equipo ?

No te vino un CD de Xp de reinstalacion ?

Saludos y suerte.

Julio

Roberto said...

Hola Julio, gracias por contestar. Al final tuve que redimensionar la partición, pero con gparted en el usb live, ningún problema.

Te escribo desde el netbook, con ubuntu remix instalado. La máquina virtual configurada y con el mismo problema que reporta Vincent.

Este equipo tiene una tarjeta gráfica con driver especiales, pero no entiendo una cosa, si fuesen problemas con los driver, al arrancar en modo prueba d fallos no cargaría los driver, verdad? entonces por que no arranca, se queda con la pantalla en negro y no tengo forma de volver a la conf del XP preinstalado. Toca seguir investigando.

Un saludo,

adrianh said...

Hola Como has hecho para crear la imagen iso, por que el clonzill me crea una carpeta con todos los archivos detro.
Gragias