IronHide / BumbleBee con una VM VirtualBox. ¿Pasará la aceleración de video a la tarjeta física?

8

¿Alguna idea de si puede ejecutar una VM de Windows a través de IronHide para la aceleración de la tarjeta gráfica? Me gustaría jugar juegos / ver bluray, etc. utilizando mi tarjeta de video.

mwjackson
fuente
1
He ejecutado con éxito una máquina virtual de Windows con abejorro, pero sin ningún efecto visible, ¿estás buscando algo más específico?
david.libremone
1
Bueno, me gustaría saber si VirtualBox pasaría a través de la aceleración de vídeo de la máquina virtual de Windows para jugar / ver bluray etc.
mwjackson
1
Estoy planeando probar eso en algún momento, le haré saber los resultados si alguien más no responde primero, ¿tal vez ajustar su pregunta para que sea más específica?
david.libremone
Estoy un poco confundido con lo que pediste, ¿quieres que la VM use la GPU nvidia para su aceleración 3D? , como acceso directo al hardware de gráficos a través de la VM ?.
Uri Herrera
1
@jacko es posible que desee publicar
david.libremone

Respuestas:

9

Tal vez una explicación entre los gráficos en un invitado virtual y el O / S del host real ayudaría aquí.

Primero lo básico:

Todo en un invitado virtual es una abstracción; lo que esto significa es que cada dispositivo y controlador en un O / S de invitado virtual no depende del dispositivo host y controlador reales.

Para darte un ejemplo simple. Un mouse se ve como un dispositivo específico: el kernel de Linux ve este dispositivo y permite que el sistema operativo invitado lo use. La herramienta de virtualización asigna este "dispositivo virtual" al dispositivo físico real: VirtualBox, VMWare, Xen, etc. Por lo tanto, el sistema operativo invitado nunca necesita comprender qué es el mouse físico, solo ve lo que la herramienta de virtualización le ha asignado. . El valor de este enfoque es que puede mover el invitado virtual a diferentes hosts: funcionará de la misma manera porque no hay una dependencia directa del host en sí.

Para mostrar esto en la práctica, puede ejecutar lsusbtanto en el host como en el invitado: en mi host, O / SI tiene los siguientes dispositivos USB:

Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0402:9665 ALi Corp. 
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

En mi invitado, oneiric O / SI puede ver los siguientes dispositivos USB: estos son diferentes del host:

Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet

Cualquier invitado O / S, ya sea Windows o Linux, solo verá este dispositivo invitado virtual.

Gráficos de host frente a gráficos de invitado

Es lo mismo para los gráficos.

Mis gráficos de host son:

 sudo lshw -class display
  *-display               
       description: VGA compatible controller
       product: Core Processor Integrated Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 18
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:41 memory:90000000-903fffff memory:80000000-8fffffff ioport:3050(size=8)

En mi O / S oneiric invitado, puede ver la siguiente tarjeta gráfica: puede ver que no es lo mismo que el host:

sudo lshw -class display
  *-display UNCLAIMED     
       description: VGA compatible controller
       product: VirtualBox Graphics Adapter
       vendor: InnoTek Systemberatung GmbH
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: vga_controller bus_master
       configuration: latency=64
       resources: memory:e0000000-e7ffffff

Del mismo modo, un Windows Guest O / S solo verá un dispositivo virtual invitado similar.

En el mundo turbio de VirtualBox, las adiciones de invitados que puede instalar manualmente (o en 11.10 - jockey lo ve y recomienda que lo instale) instala módulos de kernel adicionales (o controladores de dispositivo para invitados de Windows) para permitir que el invitado tenga acceso mejorado a O / S Su host O / S gráficos. Una vez más, no es un mapeo directo, pero permite ver gráficos acelerados en 3D.

Si una aplicación dentro de su máquina virtual usa funciones 3D a través de la interfaz de programación OpenGL (o para un invitado de Windows O / S - sus llamadas DirectX), en lugar de emularlas en un software (lo que sería lento), VirtualBox intentará usar el host Hardware 3D

Una vez más, enfatizo, el invitado O / S no ve su tarjeta gráfica real, solo pasa la llamada OpenGL (o DirectX) del Invitado directamente al hardware del Host para procesar.

ingrese la descripción de la imagen aquí

En la configuración de VirtualBox, debe cambiar la memoria de la tarjeta de video y la configuración de la tarjeta gráfica 3D. Su O / S invitado verá una "tarjeta acelerada 3D" con 128Mb de RAM. No importa si su tarjeta gráfica host es mejor que esto: su O / S invitado solo verá esta tarjeta gráfica virtual "simple" abstraída.

Como mencionó que está utilizando un O / S de invitado de Windows, la casilla de verificación 2D se aplica a usted ya que se realiza una transferencia similar de las llamadas de la interfaz de programación.

Bumblebee / IronHide es un mecanismo de conmutación de gráficos o bien: está utilizando gráficos integrados o los gráficos NVidia / ATI de mayor capacidad, pero no ambos al mismo tiempo.

Dado que la capacidad de OpenGL (o DirectX) de los gráficos intercambiables más altos es mayor que el conjunto de chips integrados, verá un rendimiento gráfico relativamente mejorado con las aplicaciones intensivas de gráficos Guest O / S. Sin embargo, esta mejora no es tan dramática como ejecutar la misma aplicación de forma nativa en el host, ya que todavía funciona dentro de las limitaciones del dispositivo gráfico de invitado virtual de 128 MB.

fuente

fossfreedom
fuente
Además: en este momento no podemos hacer abejorros (renderizar en la tarjeta nvidia) en máquinas virtuales, ya que VMware y VirtualBox requieren que sus binarios estén configurados para funcionar.
allquixotic
5

Una respuesta anterior https://askubuntu.com/a/85138/38052 explica cómo todo lo que ve el invitado O / S es una especie de abstracción. Si bien esto solía ser completamente cierto, creo que las cosas están cambiando y puede que ya no sea completamente cierto.

Algunos procesadores más nuevos también admiten la virtualización de E / S MMU. Las tecnologías se denominan Intel VT-d para la versión de Intel y AMD-Vi para la versión de AMD. Para citar el artículo de Wikipedia sobre virtualización x86:

Virtualización de I / O MMU de Intel (AMD-Vi y VT-d) Artículo principal: IOMMU

Una unidad de administración de memoria de entrada / salida (IOMMU) permite que las máquinas virtuales invitadas usen directamente dispositivos periféricos, como Ethernet, tarjetas gráficas aceleradas y controladores de disco duro, a través de DMA e interrupción de la reasignación. Esto a veces se llama paso a través de PCI. Tanto AMD como Intel han lanzado especificaciones:

AMD's I/O Virtualization Technology, "AMD-Vi", originally called "IOMMU".
Intel's "Virtualization Technology for Directed I/O" (VT-d).

Esto suena bastante interesante, pero ya puedo prever algunos problemas. Por un lado, en las computadoras portátiles Optimus, Intel IGP siempre está representando el resultado final en pantalla. No me queda claro cómo el Guest O / S y el Host O / S van a manejar el IGP. Un pensamiento es que si es posible ejecutar el Host sin ningún gráfico mientras los invitados se están ejecutando, esto podría funcionar, pero no me queda claro cómo se podría hacer esto.

sarang
fuente
1

OK, tenía curiosidad, así que intenté esto.

QEMU, y ahora VirtualBox, son compatibles con la transferencia de dispositivos PCI a la máquina invitada. Eso significa que si tiene una segunda tarjeta gráfica, puede pasarla a un invitado de Windows en un host Linux y obtener un rendimiento 3D completo (juegos) en un entorno de Windows virtualizado. Ese es el caso de una plataforma de escritorio con dos tarjetas gráficas. El administrador de dispositivos mostrará "NVIDIA GTX ... lo que sea" en lugar de decir "Adaptador de gráficos Virualbox".

Optimus siempre es más complicado. Estoy probando esto en un ASUS UX501. Pude pasar el chip NVidia al invitado de Windows y se muestra en el administrador de dispositivos como "Controlador de video 3D". Pero no pude instalar ningún controlador de Windows para admitirlo. Parece que la presencia de los gráficos de Intel es un requisito previo.

Sarang tenía razón al sospechar. Parece que el chip nvidia no es un "adaptador de pantalla" como manejaría un monitor, sino solo un acelerador para el chip intel integrado. No parecen funcionar como dos dispositivos separados independientemente.

Mathew Hart
fuente