Como en la genial novela de Philip K. Dick, esa es la interesantísima pregunta que se hace Jon Galloway: ¿puede un sistema operativo reconocer que está corriendo en una máquina virtual? La pregunta no resulta en absoluto banal: en un mundo en el que prácticamente cualquier máquina puede emular a cualquier otra, las ventajas competitivas derivadas de la dependencia entre máquina y sistema operativo pueden empezar a volverse como mínimo difusas. Si Microsoft, por ejemplo, cimienta parte de su ventaja en la utilización del canal de distribución de los fabricantes de PCs nuevos, pero de repente su sistema puede ser instalado en ordenadores Apple corriendo plataformas como Boot Camp o Parallels, el incentivo para los Dell o HP se diluye, y el atractivo de las máquinas Apple, salvado el escollo de la presunta incompatibilidad, se incrementa. Al revés, obviamente, podría ocurrir lo mismo, y quizás incluso de manera más virulenta: ¿para qué gastarse el dinero extra que cuestan algunas máquinas Apple, si su sistema operativo puede ser ejecutado en una plataforma virtual sobre un PC mucho más barato?
Así, nos encontramos con que el EULA de Windows Vista en sus versión Home prohíbe específicamente su ejecución en máquinas virtuales, mientras que la versión Ultimate afirma que en caso de ser ejecutada en este tipo de máquinas, restringirá el acceso a aplicaciones que utilicen DRM. Pero la pregunta que se hace Jon, con todo fundamento, es la siguiente: ¿se trata de restricciones hechas a nivel de EULA, es decir, verborrea jurídica sin fundamento alguno ni posibilidad de control o, por el contrario, son capaces los sistemas operativos de saber en qué tipo de máquina se están ejecutando y si ésta es de tipo virtual? Según su información, el sistema operativo puede, efectivamente, identificar si está corriendo en una máquina virtual mediante dos procedimientos: direct hardware fingerprinting o inferred hardware fingerprinting. En el primer caso, se pide al sistema operativo que intente detectar hardware que siempre está presente en una máquina virtual. Por ejemplo, la placa madre en máquinas virtuales Microsoft siempre es de marca «Microsoft Corporation». En el segundo caso, se hacen llamadas directas a nivel de máquina a la CPU, llamadas que permiten revelar si esa CPU es real o está virtualizada, como llamadas que no están soportadas por CPUs virtuales o, por contra, que sólo tendrían sentido en máquinas virtuales, como llamadas al sistema operativo hospedador para optimizar sus recursos.
Por supuesto, esto son posibilidades actuales, pero… ¿y si programásemos los entornos virtuales del futuro para «engañar» a los sistemas operativos facilitando respuestas engañosas? Eso daría lugar a un auténtico juego del ratón y el gato, en el que los sistemas operativos intentarían buscar métodos más fiables para detectar la virtualización, mientras las máquinas virtuales buscarían más y mejores maneras de ocultar su naturaleza. Verdaderamente impresionante.
El tema es profundamente interesante. A nivel práctico la respuesta para un Windows en un PC es claramente Ã?«síÃ?»: las emulaciones no son perfectas y hay muchos agujeros por los que un sistema puede saber dónde está corriendo, de modo que es una cuestión de ingenio y la clásica guerra de medidas y contramedias, como en las protecciones informáticas.
A nivel teórico y filosófico la respuesta no está tan clara, en cambio. En principio puede parecer que Ã?«noÃ?» es lo más razonable: si la simulación es suficientemente pefecta, emulará todos los detalles y por tanto sería indistinguible de la realidad. Hay algunas novelas basadas en esto, también el muy interesante Are You Living In a Computer Simulation? que explica que si estuviéramos viviendo en una especie de Matrix no tendríamos forma de saberlo realmente.
Otro punto de vistas es el de autores como David Deutsch, en The Fabric of Reality: The Science of Parallel niverses and Its Implications, donde habla de los ordenadores cuánticos y de si un ordenador convencional podría simular procesos cuánticos o no, lo cual implica todo tipo de complejas simulaciones de otros ordenadores de tipo convencional (inferior). No recuerdo bien las conclusiones sobre simulaciones porque el tema que trata es otro, pero a lo largo del libro se explica cómo los ordendadores cuánticos pueden hacer a veces cálculos siendo conscientes de que si obtienen la respuesta es porque lo han hecho gracias a la Ã?«ayudaÃ?» de otros ordenadores en universos paralelos, algo realmente curioso también. Digamos que si un sistema operativo pudiera intentar hacer cierta operación y fuera consciente de que si obtiene la respuesta es porque está corriendo en una simulación (porque por sí mismo no podría) sería algo parecido.
Otro detalle interesante es que los temas de la Ã?«velocidadÃ?» de la simulación no tienen por qué ser un problema, digamos que la Ã?«percepción internaÃ?» de cómo pasa el tiempo Ã?«dentroÃ?» del ordenador frente a la realidad es muy… relativa. En la novela Ciudad Permutación de Greg Egan (una maravilla) se describe precisamente mundos virtuales simulados donde las Ã?«personasÃ?» que allí viven se mueven en realidad a una fracción del Ã?«tiempo realÃ?», en realidad, de hecho, según la cantidad de dinero que paguen por ciclos de CPU.
Toda la vida han existido emuladores. Yo hace 10 años usaba un emulador en una máquina HP-UX para emular windows. El problema que tienen los emuladores es que el rendimiento suele ser una puta mierda y de vez en cuando cascasn.
En fin, los emuladores son una mierda
#1 y #2, OMFG!, nunca he leído tantas tonterías en tan poco espacio.
Una máquina virtual NO es igual a «emulador» (que emula instrucciones de un procesador en otro con un juego diferente).
En las máquinas virtuales de la misma plataforma de procesador no se «emula», sino que existen diferentes niveles de ejecución y ejecución de los ya conocidos entre espacio «userland vs kernel» pero llevado al extremo de hacer lo mismo para otras instancias de sistemas operativos (donde también se «enmascaran» interrupciones).
Así aparecen técnicas como los «hypervisors» y que ya vienen con soporte de hardware en los nuevos Intel y AMD64. No es nada nuevo, se exactamente hace desde los años 60 ( http://en.wikipedia.org/wiki/Hypervisor ), sólo que ahora es ya una «commodity».
PD: El «Parallels» de Mac no es un emulador, es un virtualizador como el que comento, por eso sólo funciona sobre plataformas Intel.
«Parallels Desktop for Mac is the leading virtualization solution for the Mac, enabling Mac users to run Windows simultaneously with their Mac OS X on any Intel-powered iMac, Mac mini, MacBook, MacBook Pro, and Mac Pro Towers.»
La virtualización, además de una palabra de moda, es una de las tendencias tecnológicas de los Centros de Datos (o Data Centers) y es la base de conceptos como el de Computer Utility.
Permitiría a los dueños de los data centers hacer «rodajas virtuales» de data centers, y venderlas o alquilarlas a diferentes clientes, haciendo abstracción del hardware subyacente. Sería una manera más eficiente de sacarle provecho al hardware.
Las máquinas virtuales son una pieza más de la estrategia de virtualización del DC, pero no la única: en el mundo de los discos de almacenamiento, los IBM, EMC y HP hace tiempo que tienen el concepto de discos virtuales. Cisco ha desarrollado el concepto de VSAN (Virtual SAN) en las redes de almacenamiento (redes SAN) que está en proceso de estandarizarse. En el mundo del networking existen conceptos como los de VLAN, o VRF (Router Virtual). En el mundo de la seguridad de red existen los Virtual Firewalls, y los Virtual IPS.
Concretando, la virtualización es una tendencia tecnológica, que supone un mayor y más flexible aprovechamiento del hardware. Se trata de una tendencia apoyada por gigantes de la industria, o sea, que se trata de una tendencia del sector, no del capricho o visión de un único fabricante. Las máquinas virtuales son parte necesaria en la virtualización del DC, y efectivamente afecta a la facturación del tipo licencia por máquina, como es el caso de Microsoft.
Pero no creo que la estrategia de MS vaya a ser mantener ese sistema de licenciamiento por máquina contra viento y marea, iniciando una espiral de contra-invenciones tecnológicas para evitarlo. Sería estrellarse contra un muro. Mas bien creo que MS buscará sistemas de facturación alternativos.
La virtualización tiene mucho más sentido en la parte de servidores (habilitada por software como Microsoft Virtual Server o VMWare ESX/GSX o el nuevo «Hypervisor» que llevara Windows Server 2007/Longhorn) que en el Desktop. Al comprar una Licencia de Windows Server 2003 R2 (versión actual), Microsoft te ofrece la posibilidad de que con esa sola licencia la instales en un servidor físico y en 4 máquinas virtuales . Es decir, que Microsoft no veta la virtualización, más bien la fomenta con su licenciamiento en servidores por el cual con una licencia puedes montar 5 servidores (1 físico y cuatro virtuales).
Para Windows Vista, puede ser un «error» en la interpretación de la EULA o algo que se cambiará en el futuro, pero hoy por hoy todos los sistemas operativos Desktop de Microsoft (incluído WinXP) se pueden virtualizar (eso sí, requieren una licencia al montarse en máquina virtual igual que en máquina física, en la parte desktop no hay «ventaja» como en la server).
Coincido con Jesús, la virtualización es una tendencia tecnológica que esta imponiéndose con fuerza, no es una moda, es una solución.
Las máquinas virtuales en un data center permiten un aprovechamiento muchísimo mas óptimo del hardware, facilitan muchísimo el trabajo del administrador del sistema, te permiten crear entornos de prueba en un par de horas, hacen más fáciles los planes de DRA por la independencia del hardware….
La virtualización viene para quedarse, y si MS le esta poniendo pegas en su licencia la única intención que le veo es la de frenar a VMWare y ganar tiempo para su virtualpc. Dudo mucho que MS desprecie el gran negocio que hay en este campo.
Ese juego del ratón y el gato ya ocurre con las protecciones que detectan al cd original en su correspondiente unidad y las unidades virtuales que montan isos o similares.
Hace años usabamos un software que precisaba de una «mochila», para funcionar, una «llave digital» que se enchufaba en la salida paralela de la impresora.
Nadi de los que yo he conocido utilizaba la «mochila» sino un programita simulador que engañaba al software y no porque el programa fuera pirata, sino porque los tenian guardados para que no los robaran.
Engañar a un software siempre es posible porque lo que comprueba es la existencia de una determinada secuencia de bit de respuesta, a una determinada secuencia de bits de pregunta, pero no es capaz de saber que mecanismo ha generado los bits, solo que existe la resouesta correcta.
#1 Que buen viaje traes Alvy !
jejeje, es broma, saludos !
Creo que la pregunta original, desbarradas «Blade Runner» aparte, es buena. Una de las aplicaciones de la virtualización es permitir a las empresas hacer un uso eficiente de sus recursos, reduciendo costes al permitir el empleo de una plataforma menos heterogénea que simplifica la gestión. Si un fabricante de OS trata de introducir restricciones a su uso virtualizado, para beneficiar a determinados fabricantes de hardware o proteger sus esquemas de protección DRM basados en HW, se estará pegando un tiro real y nada virtual en un pie.
[taliban traductor ON]
La pregunta original del artículo de Galloway no es «¿Sueñan los androides con ovejas eléctricas?» sino «¿Saben los androides que están soñando con ovejas eléctricas?» que evidentemente tiene mucho más sentido. La primera vez que leí la anotación no entendí a qué venía el título.
[taliban traductor OFF]
Nos leemos,
La virtualización es más vieja que mear en pared. Desde la epoca de los MAINFRAMES ya existia la virtualización. Y con la consolidación que es una moda para vender máquinones mas gordos viene otra vez la virtualización.
En un país donde hasta un licenciado en historia puede ser director de sistemas si está bien enchufado es lógico que surgan este tipo de dudas metafísicas.
No sé, me parece que Galloway no tiene ni idea de lo que habla. Si la máquina virtual está bien hecha el soft no sabe si está corriendo en una máquina virtual. Y si no se lo creen ustedes, fíjense que hay infinidad de programas DOS que se ejecutan sin problemas en una máquina virtual DOS desde los tiempos de Windows 3.0 (5 años antes de Windows 95). Y eso que esa máquina virtual no es perfecta (hay una función para saber si Windows se está ejecutando, y también otras imperfecciones, unas deliberadas y otras no tanto).
Tal y como Galli ha dicho, no tiene porqué haber una penalización apreciable de rendimiento en una máquina virtual (no es lo mismo que un emulador).
todo esto es cuestión de tiempo, el EULA puede decir lo que quiera, es el futuro y se hará,
con más o menos acierto, pero el mercado va en esa dirección.
saludos
Por lo que yo sé, Microsoft no se opone a esta tecnologÃa. Más bien al contrario, pues en su EULA especifica que podemos instalar varias copias de Windows Server 2008 en una máquina fÃsica pagando una sola licencia. De esta forma, en vez de correr una sola copia de Windows con varios servicios activados, podemos ejecutar varias copias virtualizadas, ejecutando cada una de ellas un solo servicio. Que no se pueda correr las versiones Home del Windows Vista en máquinas lo veo anecdótico, aunque dudo que esta restricción tenga alguna utilidad. Y dudo que el SO se dedique a detectar si está siendo virtualizado o no.
El que sà que ha puesto serias restricciones al tema de la virtualización es Apple. En el EULA de Leopard se especifica explÃcitamente que sólo se autoriza su uso sobre máquinas Apple, y si queremos virtualizar debe ser sobre máquinas Apple y pagando una licencia por cada SO virtual que ejecutemos.