IronHide / BumbleBee con una VirtualBox VM. Passerà attraverso l'accelerazione video alla scheda fisica?


8

Qualche idea se è possibile eseguire una VM Windows tramite IronHide per l'accelerazione della scheda grafica? Mi piacerebbe giocare / guardare bluray ecc utilizzando la mia scheda video.


1
Ho eseguito con successo un Windows VM con Bumblebee, ma senza alcun effetto visibile, stai cercando qualcosa di più specifico?
david.libremone,

1
Bene, vorrei sapere se virtualbox passerebbe attraverso l'accelerazione video dalla VM di Windows per giocare / guardare il bluray ecc.
mwjackson

1
Sto programmando di testarlo da solo, ti farò sapere i risultati se qualcun altro non risponde per primo - forse adattare la tua domanda per essere più specifici?
david.libremone,

Sono un po 'confuso con quello che hai chiesto, vuoi che la VM utilizzi la GPU nvidia per la sua accelerazione 3D? , come l'accesso diretto all'hardware grafico tramite la VM ?.
Uri Herrera,

1
@jacko potresti incrociare questo post
david.libremone il

Risposte:


9

Forse una spiegazione tra la grafica di un ospite virtuale e l'hosting O / S reale potrebbe aiutare qui.

Prima le basi:

Tutto in un guest virtuale è un'astrazione - ciò significa che ogni dispositivo e driver in un O / S guest virtuale non dipende dal dispositivo host e dal driver effettivi.

Per darti un semplice esempio. Un mouse è visto come un dispositivo specifico: il kernel Linux vede questo dispositivo e consente al sistema operativo guest di utilizzare quel dispositivo. Questo "dispositivo virtuale" viene mappato sul dispositivo fisico reale dallo strumento di virtualizzazione - VirtualBox, VMWare, Xen ecc. Pertanto, il sistema operativo guest non deve mai capire cos'è il mouse fisico, vede solo ciò che lo strumento di virtualizzazione ha mappato su di esso . Il valore di questo approccio è che puoi spostare l'ospite virtuale su host diversi: funzionerà allo stesso modo perché non c'è dipendenza diretta dall'host stesso.

Per dimostrarlo in pratica è possibile eseguire lsusbsia l'host che il guest - sul mio host O / SI sono disponibili i seguenti dispositivi 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

Sul mio ospite oneiric O / SI può vedere i seguenti dispositivi USB, che sono diversi dall'host:

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

Qualsiasi O / S guest, sia Windows che Linux, vedrà solo questo dispositivo guest virtuale.

Grafica host vs grafica ospite

È lo stesso per la grafica.

La mia grafica host è:

 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)

Sul mio guest oniric O / S può vedere la seguente scheda grafica - puoi vedere che non è la stessa dell'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

Allo stesso modo - un O / S guest Windows vedrà solo un dispositivo guest virtuale simile.

Nel mondo oscuro di VirtualBox, le Aggiunte Guest che è possibile installare manualmente (o in 11.10 - jockey vede e consiglia di installarlo) installa moduli kernel aggiuntivi (o driver di dispositivo per Guest Windows) per consentire all'O / S guest un accesso migliorato a la tua grafica O / S host. Ancora una volta non è una mappatura diretta, ma consente di vedere la grafica accelerata 3D.

Se un'applicazione all'interno della tua macchina virtuale utilizza funzionalità 3D tramite l'interfaccia di programmazione OpenGL (o per un O / S guest Windows - le sue chiamate DirectX), invece di emularle nel software (che sarebbe lento), VirtualBox tenterà di utilizzare il tuo host Hardware 3D.

Ancora una volta sottolineo che l'O / S guest non vede la tua scheda grafica effettiva, ma passa semplicemente la chiamata OpenGL (o DirectX) dall'ospite direttamente all'hardware host per l'elaborazione.

inserisci qui la descrizione dell'immagine

Nelle impostazioni di VirtualBox è necessario modificare la memoria della scheda video e l'impostazione della scheda grafica 3D. Il tuo O / S ospite vedrà quindi una "scheda accelerata 3D" con 128 Mb di RAM. Non importa se la tua scheda grafica host è migliore di questa: il tuo O / S ospite vedrà solo questa "semplice" scheda grafica virtuale astratta.

Poiché hai menzionato che stai utilizzando un sistema operativo guest Windows - la casella di controllo 2D è applicabile per te poiché viene eseguito un pass-through simile delle chiamate dell'interfaccia di programmazione.

Bumblebee / IronHide è un meccanismo di commutazione grafica / o - stai usando la grafica integrata o la grafica NVidia / ATI di capacità superiore ma non entrambe allo stesso tempo.

Poiché la capacità OpenGL (o DirectX) della grafica commutabile più elevata è maggiore rispetto al set di chip integrato, vedrai una prestazione grafica relativamente migliorata con le applicazioni ad alta intensità di grafica Guest O / S. Tuttavia, questo miglioramento non è così drammatico come l'esecuzione nativa della stessa applicazione sull'host poiché funziona ancora entro i limiti del dispositivo grafico guest virtuale da 128 MB.

fonte


Aggiunta: non possiamo fare bumblebee (render su scheda nvidia) nelle macchine virtuali in questo momento, poiché VMware e VirtualBox richiedono entrambi che i loro binari siano impostati per funzionare.
allquixotic,

5

Una risposta sopra https://askubuntu.com/a/85138/38052 spiega come tutto ciò che vede l'O / S ospite è una sorta di astrazione. Mentre questo era completamente vero, credo che le cose stiano cambiando e potrebbe non essere più completamente vero.

Alcuni processori più recenti supportano anche la virtualizzazione MMU I / O. Le tecnologie sono chiamate Intel VT-d per la versione Intel e AMD-Vi per la versione AMD. Per citare l'articolo di Wikipedia sulla virtualizzazione x86:

Virtualizzazione MMU I / O Intel (AMD-Vi e VT-d) Articolo principale: IOMMU

Un'unità di gestione della memoria di input / output (IOMMU) consente alle macchine virtuali guest di utilizzare direttamente i dispositivi periferici, quali Ethernet, schede grafiche accelerate e controller del disco rigido, tramite DMA e rimappatura degli interrupt. Questo è talvolta chiamato passthrough PCI. Sia AMD che Intel hanno rilasciato specifiche:

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

Sembra abbastanza interessante, ma posso già prevedere alcuni problemi. Per uno, nei laptop Optimus, Intel IGP esegue sempre il rendering dell'output sullo schermo finale. Non è chiaro per me come Guest O / S e Host O / S guideranno entrambi l'IGP. Un pensiero è che se è possibile eseguire l'host senza alcuna grafica mentre gli ospiti sono in esecuzione, questo potrebbe essere fatto funzionare, ma non mi è chiaro come si potrebbe effettivamente fare questo.


1

OK, ero curioso, quindi ho provato questo.

QEMU, e ora VirtualBox, supportano il pass-through dei dispositivi PCI al computer guest. Ciò significa che se si dispone di una seconda scheda grafica, è possibile passarla a un guest Windows su un host Linux e ottenere prestazioni 3D complete (giochi) in un ambiente Windows virtualizzato. È il caso di un impianto desktop con due schede grafiche. Il gestore dispositivi mostrerebbe "NVIDIA GTX ... qualunque cosa" invece di dire "Virualbox Graphics Adapter".

Optimus è sempre più complicato. Sto testando questo su un ASUS UX501. Sono stato in grado di passare il chip NVidia al guest Windows e questo viene mostrato in Gestione dispositivi come "Controller video 3D". Ma non sono stato in grado di installare alcun driver di Windows per supportarlo. Sembra che la presenza della grafica Intel sia un prerequisito.

sarang aveva ragione a essere sospettoso. Sembra che il chip NVIDIA non sia un "adattatore di visualizzazione" come potrebbe guidare un monitor, ma solo un acceleratore per il chip Intel integrato. Non sembrano funzionare come due dispositivi separati in modo indipendente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.