En este caso me gustaría empezar de cero, ya que no he comentado nada sobre este tema, quisiera aclarar antes para ser más comunicativo y por si hay alguien que aun no sepa sobre esto y le pueda ser de utilidad. Aclararé brevemente en qué consiste una máquina virtual, en el siguiente apartado introductorio, pese a que va a quedar el post tipo biblia (algo extraño en mi XD). Los que sepan este concepto, pueden ir directamente al título "Aceleracion 3D en máquina virtual VM-Ware" situado más abajo.
Introducción breve sobre máquina virtualNo es mas que un programa que "simula" bajo la ejecución de este, un hardware que realmente no existe en el ordenador, sino que el hardware que este software dice que existe hace referencia al físico disponible con ciertas capacidades digamos estandar, es decir, posee una tarjeta grafica, teclado, ratón, memoria, etc, ... entre otros elementos que se han ido incorporando al cabo de la evolución informática. Vamos como si fuese un ordenador como el nuestro, pero que realmente no hay. Bien ¿simular un ordenador dentro de otro? ¿y todo esto para qué?
La respuesta es bien simple. Si somos usuarios de un sistema operativo en concreto (véanse Linux, Windows, Solaris... entre sus propias variantes y otros más) y en determinadas ocasiones nos vemos obligados a usar algo (comunmente un programa) que no tenemos disponible para el actual, lo que haríamos sería instalar ese otro sistema para poder usarlo, con el inconveniente de tener que reinciar continuamente nuestro PC (según el caso) si necesitamos herramientas de uno u otro sucesivamente, sería un calvario tanto reinicio, o necesitaríamos el uso de tantos PCs como sistemas necesitemos (esto último sería ridículo). El ejemplo sería para aquellos forofos de sistemas Windows (novatos en informática) y empiecen en la carrera necesitando usar Linux para realizar las prácticas, por ejemplo.
Terminando de aclarar lo de la máquina virtual, esta posee la capacidad de hacerse notar como un hardware autonomo, la cual tras ser ejecutada hará lo que haría cualquier ordenador: determinar hardware existente, configuración del sistema (BIOS) y arrancar de una unidad un sistema operativo. Pues solo quedaría ejecutar esta máquina virtual desde nuestro sistema actual (sistema base) e instalar en la maquina virtual cuando esta arranque (insertando el CD de instalación del sistema operativo que deseamos instalar, como si se fuese a instalar en nuestro ordenador cuando nuevo), pero resulta que el ordenador no se reinicia, ya que se sigue ejecutando el actual. Tras todo este proceso tendríamos en nuestro ordenador, dos sistemas operativos funcionando de manera paralela e independiente. Inconvenientes: aumenta la carga de proceso, con lo que ejecutar programas en nuestra máquina virtual se le hace más pesado a nuestro ordenador, aunque todo depende de que tan bueno sea el sistema base instalado ;-) y por el ordenador que poseamos. Generalmente los programas a ejecutar, no harán una notoriedad excesiva de esto (salvo excepciones), y además evitaremos el cambio continuo (reinicio constante) de sistema operativo para esa tarea, haciendo todo sobre la marcha sin necesidad de estar guardando trabajo pendiente y moviendonos por nuestro sistema como siempre.
Para todo esto de manera más avanzada aclararé que se podría realizar (sin uso de máquina virtual) de un "emulador" del sistema deseado para ejecutar el programa deseado, como si fuera del nuestro, con la salvedad que sufren todos los emuladores actualmente (no todos los programas funcionan correctamente). Véase el caso de
WINE (Wine Is Not an Emulator), que permite la ejecución de programas Windows, bajo entorno Linux, entre muchos otros.
Aceleracion 3D en máquina virtual VM-WareSabido lo que es una máquina virtual (ventajas e inconvenientes), queda a parte comentar el interés real de este post. La dificultad de las maquinas virtuales, es el que trabajan con un hardware que no existe realmente y es el que te detectaría el sistema operativo que se instala en ella, para mantener una homogeneidad en el hardware y poderla exportar al sistema base manteniendo compatibilidad. Pongamos por ejemplo que se tiene una ATI X800 o una nVidia 6600GT (cualquier aceleradora 3D actual), en la máquina virtual es detectada como una VGA estandar 2D y ni si quiera es de una marca en concreta, sino es el nombre que le determina la máquina virtual. Esta tarjeta gráfica hace las veces de la nuestra, en nuestra máquina virtual, pero no es físicamente la misma, con lo que se llega a la conclusión que el hardware que posee la maquina virtual es un pseudónimo que trata de exportar al sistema base, las carácteristicas más comunes y relevantes para que la maquina virtual las implemente en la física instalada.
Por otro lado hay muchas y muy variopintas máquinas virtuales, para todo tipo de sistemas, entre las que destaco QEmu, de la cual soy usuario. Entre todas ellas me centro en la
VM-Ware (Virtual Machine Ware), pues es en la que he hallado una fase que pretenden desarrollar e innovar, ya que pretenden que el harware no sea virtual en si, sino que este sea tratado como si se tratase del sistema base, es decir, acceder al hardware "directamente".
A partir de su version 5.0, mantienen el proyecto y uso del 3D acelerado por hardware, pero no hay ninguna opción disponible que lo diga, ya que aun anda en fase beta (de pruebas). Imaginaros si queréis usar una aplicación 3D, véase 3D Studio MAX y familiares o dado el caso el de un juego 3D, en una máquina virtual (sistema más cargado) y con el 3D emulado por software. Se hace practicamente inviable el uso de software 3D en una máquina virtual (va de pena). Es lo que pretenderé determinaros y es el meollo de todo este ir y venir de conceptos :-). Tanto rollo os he expuesto para unos breves pasos muy concretos, pero me gusta poner en situación para los no tan expertos y que pudiesen estar intenresados ;-).
Bien, en la
página oficial os determinan tres sencillos pasos para esta conclusión:
- Tener aceleración 3D activada en nuestro sistema base.
- Activar la aceleración 3D de nuestra máquina virtual.
- Habilitar la aceleración 3D en el sistema operativo de la máquina virtual.
Paso 1/3
Este es muy obvio. Si en el sistema base no se tiene conocimiento de una aceleración 3D, poco se podrá hacer desde la máquina virtual que usa a éste. Pondremos el caso de Linux -> Windows y viceversa. Si posees en tu PC un Linux instalado (da lo mismo la distribución) deberás tener los controladores necesarios para tu tarjeta en tu sistema.
Los usuarios de Windows lo tienen más sencillo, pues "el fabricante ya soporta a Windows" (los linuxeros no XD) y da sus controladores para este sistema, con lo que bastaría tenerlos instalados y que nos detecte nuestra tarjeta gráfica. Para Linux y el caso de N-Vidia hace tiempo que ya estan bien soportados y habrá que seguir las instrucciones (que no es motivo de este artículo) del fabricante para estas tarjetas, aunque para ATI estan saliendo cada vez mejores, los cuales tendréis que instalar.
Concluimos aqui que para nuestro sistema base Linux o Windows, ya tenemos los controladores del fabricante ya instalados y funcionando. Probad para ello, un salvapantallas 3D por ejemplo, o un juego que será lo más usual.
Paso 2/3
Este realmente es el meollo de todo el asunto y lo que se supone que realmente hay que hacer para tener la aceleración bajo el sistema VM-Ware. No se debe hacer estos pasos bajo una maquina virtual que ya tengamos creada, si esta está funcionando o está suspendida/hibernada, puesto que habría que cerrarla normalmente (no suspendere/hibernar el sistema).
Debeis ir al directorio de configuración del VM-Ware, creado en vuestra cuenta de usuario en Linux generalmente es ".vmware" pero no es este exactamente el directorio, ya que podéis crear la máquina virtual y haberla guardardo donde hayáis querido. Bien, localizado el archivo de configuración de la máquina virtual (*.vmx) en cuestión, en mi caso "Windows XP Professional.vmx", procederemos a editar este archivo con un editor de "texto plano": bloc de notas (Windows), vi, kwrite/kate, gedit (en Linux). En dicho archivo deberemos añadir (no estan previamente) por ejemplo al final del mismo, las siguientes líneas y guardarlo luego:
mks.enable3d = TRUE
svga.vramSize = 67108864
vmmouse.present = FALSE
La primera línea activa la fase en pruebas de aceleración 3D, en la máquina virtual en concreto a la que le queremos añadir esta característica. La segunda línea determina la memoria virtual que se desea usar para la aceleración: 67108864 = 64MB y 134217728 = 128MB que sería lo máximo (en el ejemplo ponen 64MB). La última línea indica la desactivación del sistema de coordenadas absolutas del ratón. Si se establece esta opción a TRUE, se deberá desactivar la opción de "Ungrabwhen cursor leaves window" (desanclar el ratón de la máquina virtual cuando deje la ventana) si tenéis VM-Ware en inglés como yo. Esta opción de la VM-Ware está en la barra de menú "Edit -> Preferences", seleccionando "Input" y desactivar (si esta activa) la opción "Ungrab when cursor leaves window", con lo que para hacer que el cursor retorne a nuestro sistema base deberemos presionar típicamente CTRL+ALT. Por otro lado comentar que esta manera de proceder es requerida para ciertas funciones de las DirectX a pantalla completa, con juegos del tipo "Shooter" o denominados jugador en primera persona.
Paso 3/3
Una vez hechos los pasos anteriores, sólo queda iniciar nuestra máquina virtual y una vez en el sistema operativo en cuestión, instalar las "VMware Tools", si aún no las tenermos instaladas (barra de menú "VM -> Install Tools" y os montará un CD virtual con la aplicación en el sistema operativo de la máquina virtual, al cual tenéis que acceder e instalar la aplicación que alli se encuentre.
Posteriormente, si el sistema operativo que estamos usando en la máquina virtual es Windows, deberemos instalar las DirectX 9.0c que también podremos conseguir en alguno de los últimos juegos que tengamos. Para Linux no es necesario, ya que no hay nada más a parte de los controladores de la tarjeta y las GLX.
Concluyo como nota final, que el hardware detectado en el sistema operativo invitado, se seguirá detectando la misma tarjeta gráfica, sólo que esta vez usa la capacidad aceleradora de la física de la cual dispongamos para renderizar modelos 3D.
Con todo esto y sin ánimo de alargar más, espero que os sirva de ayuda a aquellos que os interese la utilidad que nos brindan el uso de una máquina virtual, para ejecutar aplicaciones y ahora juegos 3D sin soporte Linux.