En el post anterior quedo documentado como instalar Ubuntu 9.04 en un Dell Vostro 1400, en el proceso deje una partición de 20GB vacía, en esta continuación voy a documentar como instalar Windows XP en esta partición de tal forma que pueda ser ejecutado a través de VirtualBox en Ubuntu y a la vez poder empezar el computador booteando desde esta partición, siguiendo los pasos que se explican claramente en este sitio y dándole un par de toques personales.

Introducción:

VirtualBox es un programa OpenSource principalmente desarrollado por Sun, este permite poder aprovechar las tecnologías que traen los procesadores modernos para ejecutar un sistema operativo dentro de otro, haciéndole creer que tiene el control sobre la maquina, siendo que la verdad se comunica con la maquina real a través de "hardware virtual", a este proceso se le llama Virtualización.

Una alternativa a usar la virtualización para ejecutar programas de Windows es Wine, que es una aplicación que crea una capa entre las aplicaciones de Windows y el sistema operativo en que se están ejecutando, traduciendo las llamadas que hacen las aplicaciones de Windows a instrucciones que pueden ser respondidas por el sistema operativo en que se esta ejecutando, esta es una muy buena alternativa para poder ejecutar software de Windows sin tener que recurrir a la piratería o a gastar dinero de mas, pero a pesar que cada vez es mas estable y adquiere mas características nuevas, sigue siendo distinto a ejecutar el programa en Windows directamente, lo cual es posible lograr a través de la virtualizacion.

El problema de virtualizar es que si no se tiene un equipo que tenga los suficientes recursos para ejecutar los 2 sistemas operativos, es bastante lento y poco practico, además que como es una tecnología "relativamente nueva" (desde el 2004 para ser mas especifico) y tiene poco tiempo de desarrollo en comparación con Wine, aun no se desarrollan características que permiten ejecutar algunas aplicaciones que requieren de comunicación directa con el hardware, como lo son algunos juegos que requieren de la aceleración 3D que proporciona la tarjeta gráfica, aunque esta brecha cada vez es menor, ya que en la version 3.0 de VirtualBox implementan drivers virtualizados compatibles con Direct3D 8/9, yo solo intente utilizar las pruebas que vienen con dxDiag, y por lo menos funciona el Direct3D 9, pero se ve que van por buen camino.

Normalmente cuando uno instala una maquina virtual, se utiliza un disco duro virtual (que para el sistema operativo Host, termina siendo solo un archivo), este disco duro solo puede ser accedido desde la maquina virtual a través de VirtualBox, de tal forma q si quisiéramos correr un programa que requiera mas recursos que los que podemos virtualizar, tendríamos que instalar Windows en una partición aparte, terminando con duplicación de los datos y mas cosas que mantener actualizadas, en cambio, si tenemos Windows virtualizado y a la vez corriendo en su propia partición es que uno puede ejecutar el sistema operativo en forma virtualizada para realizar tareas que requieren pocos recursos (hacer debugging de IExplorer 6 o usar aplicaciones el Visual Studio o Microsoft Office) sin tener que reiniciar el computador, y se tiene la opción de que si el programa que se quiere ejecutar no corre por falta de recursos, simplemente se reinicia el computador y se le dan los recursos reales a Windows para que trabaje bien.

ADVERTENCIA: No es recomendable realizar estos pasos si no entiendes lo que estas haciendo, asumo que alguna vez has usado VirtualBox y sabes hacer lo básico (crear maquinas virtuales normales, manejar particiones virtuales y manejar las configuraciones basicas), también es recomendable hacer un respaldo previo de la información importante. También cabe señalar que muchos de estos pasos no son recomendados por los creadores de VirtualBox para los usuarios normales, ya que errores de uso pueden llevar a la perdida completa de la partición o la corrupción de los datos en la partición. Yo no me hago responsable si alguien intenta seguir estos pasos y no obtiene los resultados esperados, terminando con daños físicos, mentales o problemas irreparables de software o hardware, yo me voy a saltar un montón de pasos de la guía original que se encuentra en este sitio, ya que solo estoy documentando la forma en que me funciono a mi con mi Hardware especifico.

Requerimientos:

PC con Ubuntu 9.4 una partición libre: el tamaño depende de el uso, yo le di 20GB para instalar las aplicaciones importantes, los juegos los tengo en un disco duro externo, obviamente puedes intentar con otra distro de Linux, yo estoy documentando con esta nomas.
CD o Imagen de Windows XP: Cualquier versión de XP sirve.
CD o Imagen de Ubuntu 9.04: Otra distro tambien sirve, esta fue la que use y documentare.
VirtualBox: duh?

Paso 1: Preparar la Particion y crear un VMDK que la represente:

Primero tenemos que confirmar que partición es la que estamos usando dentro de nuestro disco duro:

sudo VBoxManage internalcommands listpartitions -rawdisk /dev/sda

En mi caso, la particion es la 3 (type 0x07 y 19077Mb) así que para crear el archivo vmdk use el siguiente comando:

sudo VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/rawDiskXP.vmdk -rawdisk /dev/sda -partitions 3 -relative

La opcion -relative sirve para que Virtualbox solo interactué con esa partición cuando quiera trabajar con la maquina virtual.

Luego de esto debemos de alguna forma hacer que VirtualBox pueda escribir directamente en esta partición (en otras palabras, darle permiso de escritura sobre /dev/sda3), en el tutorial muestran 3 formas de hacer esto, siendo la primera la mas simple e insegura (correr VBox con sudo), la ultima mas segura, pero requiere instalar un montón de scripts... lo que termina siendo difícil de mantener, yo intente de optar por la otra opción, que es darme permisos de escritura sobre la partición. Siendo que Vbox al instalarse, crea un grupo de usuarios al que deben pertenecer los usuarios que van a usar la maquina virtual, pensé simplemente cambiar el grupo de la partición de "disk" a "vboxusers" (no es muy seguro, ya que otros programas también quedan con permiso para escribir en esta partición, pero peor es nada), así que intente con el comando

sudo chown :vboxusers /dev/sda3

Para mi sorpresa esto no funciono xD ya que después de un rato volvía a su grupo original (disk), así que luego de investigar en internet descubrí que Ubuntu usa un sistema llamado Udev, que maneja la generación de los nodos dentro de la carpeta /dev, manteniendo los permisos de los archivos que están adentro, pero que de todas maneras se pueden modificar creando un archivo con reglas apropiadamente (para mas detalles, revisen la documentación de udev xD), yo lo hice con gedit, pero se puede resumir en el siguiente comando

sudo echo 'KERNEL=="sda3", GROUP:="vboxusers"' > /etc/udev/rules.d/60-vboxgroup.rules

Luego reinician el sistema y agregan el archivo.vmdk usando el Virtual Disk Manager, si hicieron todo bien con lo de los permisos, no deberían tener problemas.

También es una buena idea evitar que Ubuntu Automonte la partición, ya que si por alguna razón la partición esta montada mientras esta corriendo la maquina virtual, se podrían hechar producir inconsistencias en los datos, y perdidas de información, esto se puede hacer agregando la siguiente linea en /etc/fstab

/dev/sda3 /mnt/native ntfs ro,noauto,umask=117 0 2

Con eso basta para que no pase nada con la partición de forma automática (uno siempre la puede cagar manualmente).

Paso 2: Instalar Windows desde la maquina virtual

Antes de empezar a instalar Windows, es necesario hacer un arreglo archivo vmdk, ya que si intentamos instalar Windows, este va a querer instalar los archivos de inicio donde nosotros tenemos instalado el GRUB (y no queremos eso), así que lo que haremos es primero entrar a la partición a través de una maquina virtual que corra el LiveCD de Ubuntu, y usar el programa Gparted para setear nuestra partición como el lugar de booteo, esto solo se va a setear dentro de el archivo vmdk, así que no deberían haber problemas al instalar Windows después de esto.

Luego creamos nuestra maquina virtual para instalar Windows, usando el archivo VMDK preparado. Antes de proceder a instalar Windows debemos revisar las siguientes opciones en la maquina virtual:

* [I/O APIC] No lo enciendan, va a hacer que su maquina virtual sea mas lenta y terminaran con errores si lo desactivan después. Nota: ACPI tiene que estar encendida de todas maneras.

* [SATA Controller] Actívenlo si están usando la versión de código cerrado de VBox

* [Network] Activen solo una tarjeta virtual, y asignarle la misma dirección MAC que su tarjeta de red fisica.

* [Devices] Aparte de la tarjeta de red, todos los otros dispositivos deberian quedar apagados, estos los activaremos mas adelante.

Ya teniendo esto listo, montamos el disco de Windows XP en la maquina virtual y nos disponemos a instalarlo (solo el sistema operativo por ahora). Cuando Windows ya este corriendo, seguimos los siguientes pasos:

1) Creamos un segundo Perfil de HardWare ("MiPC" -> Propiedades -> Hardware) El segundo perfil de Hardware que creamos vamos a usarlo para la maquina virtual, así que es buena idea nombrar los perfiles adecuadamente (yo les puse "Nativo" y "Virtual"), después de terminar no es recomendable equivocarse de perfil, ya que se perdería la configuración, y todo este atado seria en vano, también es recomendable no usar timeout para no cometer errores al intentar de iniciar.

2) Bajar MergeIDE

3) Deshabilitar el hardware que instalo VirtualBox (solo debería ser la tarjeta de red en este caso, esto se hace desde el Device Manager).

4) Ejecutar MergeIDE con el disco de instalación de Windows montado para dejar lista la partición Nativa, esto se hace a través del siguiente comando:

MergeIDE X

Donde X es la letra del lector de CDs de la maquina virtual (en la mia era D).

ADVERTENCIA: Después de este paso, nunca mas deberían ingresar a la maquina virtual con el perfil Nativo, o sino se lo van a hechar.

5) Apagar la maquina virtual y (ahora si) activar todos los dispositivos en el panel de configuración de esta (Usb y sonido si queremos xD), luego la abrimos denuevo desde la maquina virtual usando el perfil correcto y procedemos a instalar VBGuestAdditions (si quieres instalar Direct3D, instala GuestAdditions en Modo Seguro y sin olvidar elegir el perfil de hardware correcto).

6) Ahora hay que hacer los programas que tienen que iniciar solo en la Maquina virtual solo lo hagan en esta, para hacer esto, primero abrimos la linea de comandos de Windows y ejecutamos el siguiente comando:

ipconfig /all

Este nos va a devolver información sobre la conexión, pero lo que a nosotros nos interesa es el nombre de la tarjeta de red, ya que la maquina virtual usa una tarjeta de red que va a ser distinta a la que tenemos instalada, si instalaron Windows ingles debería aparecer "AMD PCNET Family PCI Ethernet" como el nombre (para mi no fue el caso =P), suponiendo esto, crean un archivo de texto y escriben en el el siguiente script:

ipconfig /all | find "AMD PCNET Family PCI Ethernet"
if NOT ERRORLEVEL 1 start "" %1 %2 %3 %4 %5 %6 %7 %8 %9


Este archivo lo renombran como vm_only.cmd y lo guardan en %windir%\system32\

Luego se meten al registro de Windows y entran a "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", ahí van a estar los programas que se inician al comienzo del sistema, los que queramos que solo sean iniciados por VirtualBox (en nuestro caso, GuestAddins) debemos cambiarlos de esta forma.

C:\WINDOWS\system32\VBoxTray.exe

Pasaria a:

cmd /c vm_only C:\WINDOWS\system32\VBoxTray.exe

En el tutorial original hay un par de tips opcionales mas, como desactivar servicios inútiles para la maquina virtual (como el Bluetooth o el Wifi), instalar Intel Matrix Storage Manager para aprovechar mejor el disco SATA, o activar soporte para múltiples procesadores en el modo nativo, pero no los cubriré, si quieren saber, vallan a la otra guía.

Paso 3: Dentrar a Picar en modo Nativo

Para entrar en modo nativo, primero tenemos que agregar las siguientes lineas en /boot/grub/menu.lst:

title Windows XP
root (hd0,2)
chainloader +1


Ya con esto listo podemos reiniciar el computador y partir en modo Nativo, siendo esta la primera vez que Windows va a ver todos los dispositivos reales, habrá que esperar un rato a que termine de detectar todo (hasta el mouse), luego procedemos a instalar los drivers que faltaron (en mi caso, yo ya los tenia respaldados con un Timestamp, asi que solo tuve que revisar en Dell que drivers estaban desactualizados, bajar los nuevos, remplazar los viejos en el respaldo y cambiar el Timestamp XD).

Ya teniendo lo básico listo, seguimos el mismo paso 6, la única diferencia es que no es necesario verificar la tarjeta, solo copiamos el mismo script y probamos con el caso opuesto, el nuevo script se va a llamar n_only.cmd:

ipconfig /all | find "AMD PCNET Family PCI Ethernet"
if ERRORLEVEL 1 start "" %1 %2 %3 %4 %5 %6 %7 %8 %9


Solo tuve q copiar y borrar el NOT, ya esto listo, se meten al registro y hacen lo mismo que hicieron con VBoxGuestAddins, pero al revés, el q creo el tutorial quedo con esta configuración (yo quede con una mas grande, pero es lo que hay xD).

Ya, y eso fue todo, ahora solo queda instalar el software que quieran, pero eso ya no es asunto mio xD, si quieren activar Windows hay algunos detalles que deben revisar, pero eso lo pueden ver en el Tutorial original. Espero que esto le halla servido a alguien mas, lo que es a mi, me sirve de ayuda de memoria xD.

1 comentario:

  1. Geraz.............

    Esta exelente la explicacion completa, los destalles y la fluidez del texto, llevaba meses tratando de encontrar algo como esto.

    GENIAL!!!!!!!!!!

    ResponderEliminar