Se l'accesso ai dispositivi USB dal sistema operativo guest Xen diventa una vera sfida per te, la nostra guida passthrough Xen USB ti aiuterà a risolvere questo problema. In questo articolo troverai semplici descrizioni dei modi più comuni per reindirizzare le periferiche USB alla macchina virtuale Xen.
Xen è un hypervisor multipiattaforma che supporta una serie di funzionalità avanzate ed è ampiamente utilizzato sia su computer consumer che su server di dati aziendali.
L'hypervisor Xen funziona direttamente sull'hardware del sistema. Ciò che fa è aggiungere un livello di virtualizzazione tra l'hardware del sistema e le macchine virtuali, trasformando l'hardware del sistema in un pool di risorse logiche di elaborazione che possono essere allocate dinamicamente a qualsiasi sistema operativo guest dall'hypervisor. I sistemi operativi in esecuzione in macchine virtuali interagiscono con le risorse virtuali come se fossero risorse fisiche.
Una delle caratteristiche principali dell'hypervisor Xen è il supporto per la paravirtualizzazione, una modalità kernel del sistema operativo speciale. Contrariamente all'emulazione di un ambiente separato separato e set di hardware per ogni macchina, tale modalità consente di ottenere prestazioni molto migliori.
Con ciò, la modalità di paravirtualizzazione ha i suoi limiti: sono vietate operazioni privilegiate, incapacità di passare dalla modalità 32 bit a 64 bit e viceversa "al volo", la virtualizzazione hardware del processore non è supportata. Nessuno di questi fattori, tuttavia, può influire in modo significativo sulle prestazioni e sull'usabilità del sistema.
Basato sulla tecnologia passthrough USB, l'app consente di reindirizzare i dispositivi USB sulla rete (Ethernet, WAN, Internet) rendendoli accessibili da un sistema operativo guest. La soluzione software è disponibile per i sistemi operativi Windows, Linux e Mac e supporta connessioni multipiattaforma.
Una volta connesso, il dispositivo apparirà in Gestione dispositivi del sistema operativo guest come se fosse collegato fisicamente alla macchina virtuale.
Nonostante i suoi numerosi vantaggi, la soluzione Xen presenta ancora un grosso inconveniente. Come qualsiasi hypervisor bare metal, Xen ha problemi a reindirizzare le porte USB a un sistema operativo host. Allo stesso tempo, ci sono alcuni modi per ottenere l'accesso a un dispositivo USB da un dominio ospite Xen. Il metodo sopra descrive come farlo con l'aiuto di un software passthrough USB Xenserver, ma parliamo di alcuni metodi "nativi" per accedere anche a USB da Xen.
Più comunemente, i dispositivi USB sono specificati dal loro indirizzo bus (bus.device) o dal loro tag dispositivo (vendorid: deviceid).
È possibile elencare i dispositivi USB sul sistema utilizzando il comando lsusb:
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 003 Device 002: ID f617:0905
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0424:2640 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 005: ID 0424:4060 Standard Microsystems Corp. Ultra Fast Media Reader
Bus 001 Device 006: ID 046d:c016 Logitech, Inc. Optical Wheel Mouse
Ad esempio, se è necessario reindirizzare il mouse Logitech, è possibile specificare 046d: c016 o 1.6.
In genere, i singoli dispositivi host vengono inoltrati a un SO guest tramite un controller di dispositivo USB emulato o PVUSB.
1. Il primo metodo implica che il modello del dispositivo (qemu) presenti un controller USB emulato al guest. Successivamente, il processo del modello del dispositivo prende il controllo del dispositivo dal dominio 0 e trasmette i comandi USB tra il sistema operativo guest e il dispositivo USB host.
Questo metodo può essere utilizzato solo con domini HVM e non è disponibile per domini eseguiti con domini stub modello di dispositivo.
Per quanto riguarda Xen 4.6, xl supporta solo la USB emulata, dal file di configurazione.
You can enable the emulated USB hub by using usb=1. Then, you'll need to specify devices in the list of devices in the config file together with other emulated devices by using host:USBID. For instance:
usb=1
usbdevice=['tablet','host:1.6','host:0424:460']
USB 1.1 è il controller USB predefinito creato da qemu. Per alcuni dispositivi, tuttavia, questo non è sufficiente. In tal caso, a partire dalla 4.6, è possibile utilizzare usbversion per specificare anche la versione del controller USB. Tuttavia, attualmente questo non è compatibile con usbdevice , quindi è efficace solo in combinazione con il reindirizzamento USB delle spezie. Questa opzione non è disponibile per qemu-tradizionale.
2. Il secondo metodo, PVUSB, utilizza un'interfaccia front-end / back-end paravirtualizzata, simile alla tradizionale rete Xen PV e ai protocolli del disco.
Per poter utilizzare PVUSB, è necessario usbfront nel sistema operativo guest e si utilizza il backup in dom0 o il backend USB in qemu (o il dominio del driver USB).
Il supporto per PVUSB in xl / libxl (per entrambi i dispositivi PVUSB da file di configurazione e hot plug e un-plug del dispositivo PVUSB) è disponibile da Xen 4.7. Ora funziona con USB 1.1 e USB 2.0.
Ecco cosa dovresti fare per passare i dispositivi USB host al guest con PVUSB:
usbctrl=['type=qusb,version=2,ports=4', 'type=qusb,version=1, ports=4', ]
usbdev=['hostbus=2, hostaddr=1, controller=0,port=1', ]
Inoltre, puoi specificare solo usbdev, ad esempio:
usbdev=['hostbus=2, hostaddr=1, ]
Per esempio:
#xl usbctrl-attach test_vm version=1 ports=8
Un altro modo popolare per ottenere l'accesso a un dispositivo USB da un dominio guest Xen è una soluzione di terze parti dedicata che funziona in rete. In questo caso avrai bisogno di un server USB (hardware o software) e un client USB (software). Quest'ultimo è in realtà un driver speciale per il sistema operativo. Ora diamo un'occhiata più da vicino a questo modo semplice ed efficiente per ottenere il supporto passthrough Xen USB nella tua macchina virtuale.