Hiparco

Recetas y trucos de GNU/Linux e informática en general

Alojado en http://guimi.net

Cómo virtualizar una partición Windows ya existente

Este es un artículo escrito por el administrador de kriptopolis con licecia CC.

Al final del artículo incluyo como solucionar algunos problemas a los que me he enfrentado siguiendo este tutorial.

Artículo original en Kriptopolis del 21. Junio 2007 – 14:08.
Actualización a Junio de 2009: Llevo un tiempo probando VirtualBox, y lo recomiendo, ya que es software libre y funciona igual de bien que VMWare (más rápido en algunas cosas, más lento en otras).

La situación de partida más común es la siguiente: dispones de un sistema con arranque dual (Windows, Linux) y aunque utilizas habitualmente Linux, de vez en cuando aún necesitas ejecutar algo en Windows. En un tutorial anterior ya explicamos cómo utilizar para ello una copia virtualizada, pero ahora vamos un paso más lejos: lo que utilizaremos virtualizado será nuestra propia partición windows real, de forma que las modificaciones que realicemos quedarán guardadas en él, y no en una simple copia. Además, si VMware algún día nos fallara, siempre seguiríamos disponiendo de la posibilidad de arrancar nuestro Windows nativo tal y como veníamos haciendo.

Para este tutorial he utilizado VMware Workstation 6 para Linux, un programa comercial con 30 días de prueba.También es posible virtualizar la partición Windows con VMware Player, pero éste carece -si no me equivoco- de la posibilidad de instalar posteriormente las VM Tools, lo que obliga a realizar unas cuantas maniobras más para lograr nuestro objetivo, y a ello quizás dediquemos otro tutorial. Es posible que este tutorial pueda seguirse también con VMware Server, que sí es gratuito; espero que algún lector que lo utilice pueda confirmar o desmentir este extremo…

PRECAUCIONES PREVIAS

Es muy probable que al arrancar Linux vengas montando automáticamente tu partición Windows para disponer de acceso a ella. Lo primero es desmontarla y desactivar ese montaje automático comentando la línea correspondiente en tu fichero /etc/fstab. De lo contrario podría ocurrir que intentaras acceder desde dos sistemas diferentes a la misma partición, con resultados imprevisibles, pero probablemente desastrosos. Por tanto, comienza con un umount /mnt/windows (o lo que corresponda en tu caso) y escribe el carácter almohadilla en la línea de fstab que hace referencia a tu partición windows.

Otra posibilidad que podría llevarnos a un desastre aún peor (porque podría destruir tu sistema Linux) sería elegir Linux por error desde el menú de arranque de la máquina virtualizada, lo que equivaldría a intentar arrancar Linux desde dentro de Linux. Para prevenir este otro posible desastre lo mejor es comentar de momento el timeout del fichero menu.lst de grub y seleccionar Windows como el sistema de arranque por defecto.

PREPARAR WINDOWS

La idea aquí es crear un nuevo perfil de hardware (que puedes denominar “virtual” o “vmware”) con un Windows tan “limpio” como sea posible, eliminando dispositivos o controladores que puedan resultar conflictivos. No puedo darte normas generales, excepto que crees un nuevo perfil virtual y le des un nombre, aunque sólo sea una copia exacta del actual. En cualquier caso también es buena idea establecer la opción que permite esperar hasta que se seleccione un perfil de hardware y colocar el perfil virtual como opción por defecto.

En mi caso (insisto, disco Serial ATA) fue imprescindible desinstalar los controladores IDE y sustituirlos por controladores estándar. En este caso -y otros similares- existen diferencias entre el controlador IDE que utiliza Windows y el de la máquina virtual. El diagnóstico es fácil: al tratar de arrancar la máquina virtual, nos da un error de BOOT.INI y el intento de arranque entra en un ciclo sin fin. Si estás en un caso similar, aquí tienes instrucciones más detalladas:

Arrancamos Windows XP nativo.

Panel de Control -> Sistema -> Hardware -> Perfiles de Hardware

Copiar el perfil actual como vmware.

Arrancar de nuevo seleccionando el perfil vmware

Panel de Control -> Sistema -> Hardware -> Gestor de dispositivos -> Controladores IDE ATA/ATAPI

Haz clic derecho en uno de ellos y elige Actualizar controlador. Arranca el Asistente para actualizar el hardware. Elige “No, no esta vez” y Siguiente. Elige la opción avanzada y siguiente. Elige “No buscar.Elegiré el controlador a instalar” y siguiente. Selecciona el driver IDE estándar y Finalizar. No reinicies.

Ahora has de repetir el proceso con el Canal IDE Primario y el Secundario, eligiendo siempre el controlador estándar.

CREAR NUEVA MÁQUINA VIRTUAL

A continuación te muestro el proceso en imágenes:

Este paso es muy importante. No olvides elegir la partición donde tienes tu Windows (por supuesto) y también aquella desde la que arrancas (donde has instalado el grub):

Continuamos.

Y así queda nuestra máquina (de momento):

Al arrancar Windows así en mi caso (disco Serial ATA) acabo en una pantalla azul de la muerte. Si cambio “buslogic” por “ide” en Windows XP.vmdk, vmware me avisa y si acepto acabo también igual, con otro BSOD:

Lo que hago es editar Windows XP.vmx y la línea scsi0.present = “TRUE” la cambio a “FALSE”. También cambio las tres líneas que comienzan por scsi0:0 a ide0:0. A partir de ese momento ya no tuve problemas.

Tras arrancar aparece el menú de grub:

Elegimos Windows y nuestro nuevo perfil virtual:

Vamos por buen camino:

Cuando arranques por primera vez tu Windows dentro de VMware es posible que te comience a detectar nuevo hardware y te pida instalarlo. Contesta a todo que no. Otro posible problema es que tu copia de Windows pida ser reactivada; por lo que se dice en Internet eso no parece ocurrir, pero nunca se sabe y desde luego no me atrevo a poner la mano en el fuego en ese tipo de asuntos.

REMATES FINALES

Ahora que todo funciona (o debería) coincidiréis conmigo en que sería muy bueno que no volviera a presentarse el menú de arranque de Grub, para prevenir definitivamente el posible error fatal de tratar de arrancar el sistema equivocado. Disponer de este lujo nos supondrá un pequeño esfuerzo adicional, pero creo que merece la pena, porque después de eso siempre arrancará Windows sin más riesgos ni complicaciones.

Arrancamos VMware y nos vamos a “Edit virtual machine settings” -> Hardware -> Floppy

Seleccionamos “Use a floppy image” y “Connect at power on”. Le damos el nombre “bootdisk.img” y pulsamos “Create”. Lo guardamos en el directorio de vmware para nuestra nueva máquina Windows.

Ahora añadiremos grub al fichero de imagen de disco:

# cd /home/xxxx/vmware/Windows\ XP/

En Arch Linux*:

# dd if=/usr/lib/grub/i386-pc/stage1 of=bootdisk.img count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 5,3224e-05 s, 9,6 MB/s

# dd if=/usr/lib/grub/i386-pc/stage2 of=bootdisk.img seek=1
196+1 records in
196+1 records out
100586 bytes (101 kB) copied, 0,0023119 s, 43,5 MB/s

NOTA*: La localización de los ficheros stage varía en cada distribución. En Ubuntu están en /lib/grub/i386-pc. En Gentoo, en /usr/lib/, etc.

Haremos también una copia de seguridad así:

# cp bootdisk.img grubdisk.img

Echa un vistazo al fichero menu.lst de tu grub para ver con qué opciones arrancas tu Windows real. En mi caso:

# cat /boot/grub/menu.lst

Y la parte que necesito es ésta:

title Windows XP
rootnoverify (hd0,3)
makeactive
chainloader +1

Ahora arrancaré mi máquina virtual y al llegar al menú de Grub teclearé lo siguiente:

grub> root (hd0,3)
grub> chainloader +1
grub> boot

Lo que debe hacer que arranque Windows. Ten cuidado al teclear porque es posible que las teclas no respondan exactamente a lo esperado (en mi caso los paréntesis había que teclearlos con la tecla que ocupa una posición a la derecha de los originales y el signo + con el teclado numérico):

Windows arrancó correctamente, así que ahora configuraremos nuestra imagen de disco para que no haga falta volver a teclear esos comandos, sino que arranque Windows automáticamente. No apagues la máquina virtual; desde dentro de tu Windows virtualizado vas a formatear el disquete virtual con las opciones por defecto. Desde Mi PC : Unidad A: -> Formatear. Cierra la máquina virtual.

Teclearemos ahora unos cuantos comandos más desde Linux:

# mount bootdisk.img /mnt -o loop
# mkdir -p /mnt/boot/grub
# cp /boot/grub/stage[12] /boot/grub/fat_stage1_5 /boot/grub/menu.lst /mnt/boot/grub
# vi /mnt/boot/grub/menu.lst

Aquí comentaremos (o borraremos) todo lo que queramos, hasta dejar sólo lo imprescindible. En mi caso:

timeout  0
default  0
color light-blue/black light-cyan/blue
title Windows XP
rootnoverify (hd0,3)
makeactive
chainloader +1

Seguimos tecleando comandos:

# chmod -R a-w /mnt/boot
# umount /mnt

Arrancamos VMware y vamos de nuevo a Edit virtual machine settings. En la opción floppy seleccionamos la copia de seguridad grubdisk.img que creamos en un paso anterior. Haz un ls -l sobre el directorio de tu máquina Windows en vmware para asegurarte de que grubdisk.img pertenece a tu usuario y no a root. Si no es así, utiliza chown para cambiarlo.

Al arrancar de nuevo tu máquina debes llegar al prompt de grub, pero esta vez no teclees nada. Selecciona VM en el menú de VMware Workstation y cambia el floppy a bootdisk.img de nuevo.

Resetea después la máquina virtual pulsando “Reset”. Si todo fue bien, ya no trata de arrancar desde el disco duro, sino desde la imagen de disquete. En cuanto tengas tu windows virtualizado y en marcha no olvides instalar las VM Tools desde el correspondiente menú de VMware. Eso te permitirá aumentar la resolución de pantalla y algunos “lujos” más.

Como ya ha desaparecido el riesgo de arrancar con grub el sistema equivocado podemos volver a editar nuestro menú de arranque original del disco duro para restaurar el timeout que quitamos al inicio del tutorial.

Con esto hemos acabado y espero que con éxito. Como siempre (y esta vez quizás más) surgirán montones de dudas. Por mi parte baste decir que este tutorial, aunque tal vez no lo parezca, es el que más horas me ha llevado. De hecho, tras haber bebido en múltiples fuentes (que me hicieron perder mucho tiempo, sólo para llegar a soluciones insatisfactorias) acabé por ver la luz en este sitio, que ha sido finalmente mi guía para sistematizar un poco todo el proceso.

Como siempre vuestros comentarios acabarán de despejar las dudas y elevarán -espero- este tutorial a la categoría de algo verdaderamente útil. Gracias anticipadas a todos por vuestras aportaciones.



Algunos problemas habituales y sus soluciones

  • INSTALACION VMWARE
  • USO VMWARE
    • Problemas de acceso al disco
      • Incluir el usuario en el grupo que tenga acceso a los discos (ls -ld /dev/xxx) generalmente disk
    • El disco se creo como SCSI y lo intentas usar como IDE
      • Además de modificar el vmx como indica el tutorial, modificar el vmdk quitando las lineas ddb.geometry.biosxxxx y poniendo ddb.adapterType = “ide”
    • Error, tabla de particiones invalida
      • Debe ser windows el ultimo que escriba en la tabla de particiones, un modo de conseguirlo es eliminar desde windows la particion swap y volver a crear la particion. Despues desde linux se modifica -sin eliminar y volver a crear- la ‘nueva’ particion para volver a tener swap
    • Windows XP pide activacion
      • O bien arrancar nativamente windows y volver a activar
      • O bien seguir el ayudante de activacion que aparece

Cómo virtualizar una partición Windows ya existente, virtualiza windows, vmware

Category: GNU/Linux, Windows
  • miguel says:

    muy buen tutorial, pero tengo el siguiente problema. una vez iniciado sin problemas mi windows xp, me pide que lo active. tengo licencia original oem de windows xp home, por lo que la licencia es para solo una pc. probe usando otras licencias de internet, de cualquier sitio pero estan todas activadas ya, mismo problema cuando hablo con microsoft. alguna sugerencia? cuando arranco nativamente no tenog ningun problema con la activacion, puedo usar normalmente mi windows xp. gracias de antemano.

    22 November 2009 at 23:11
  • Güimi says:

    Hola,
    gracias por lo poco que me toca.

    Normalmente cuando ocurre eso basta con:
    * O bien arrancar nativamente Windows y volver a activar
    * O bien seguir el ayudante de activacion que aparece

    Si no te sirve ninguna de las dos opciones tambien puedes utilizar herramientas que eviten la validación de Windows.

    Otra opción a considerar es hacer una nueva instalación de Windows sobre virtualbox. No es el objetivo original de este post, pero ya tiene 2 años y cada vez tengo más olvidado el windows (por suerte) ;-)

    Saludos
    Güimi

    23 November 2009 at 11:21