Wenn der Zugriff auf USB-Geräte von Ihrem Xen-Gastbetriebssystem aus eine echte Herausforderung für Sie darstellt, hilft Ihnen unser Xen USB-Passthrough-Handbuch bei der Lösung dieses Problems. In diesem Artikel finden Sie einfache Beschreibungen der gängigsten Methoden zum Umleiten von USB-Peripheriegeräten zur virtuellen Xen-Maschine.
Xen ist ein plattformübergreifender Hypervisor, der eine Vielzahl erweiterter Funktionen unterstützt und sowohl auf Computern für Endverbraucher als auch auf Unternehmensdatenservern weit verbreitet ist.
Xen Hypervisor funktioniert direkt auf der Systemhardware. Dadurch wird eine Virtualisierungsebene zwischen der Systemhardware und den virtuellen Maschinen hinzugefügt, wodurch die Systemhardware in einen Pool logischer Computerressourcen umgewandelt wird, die vom Hypervisor dynamisch jedem Gastbetriebssystem zugewiesen werden können. Betriebssysteme, die in virtuellen Maschinen ausgeführt werden, interagieren mit virtuellen Ressourcen, als wären sie physische Ressourcen.
Eine der Hauptfunktionen von Xen Hypervisor ist die Unterstützung der Paravirtualisierung, einem speziellen Betriebssystem-Kernel-Modus. Im Gegensatz zur Emulation einer separaten isolierten Umgebung und eines separaten Hardwaresatzes für jede Maschine können Sie in diesem Modus eine viel bessere Leistung erzielen.
Damit hat der Paravirtualisierungsmodus seine Grenzen: Privilegierte Operationen sind verboten, die Unfähigkeit, vom 32-Bit- in den 64-Bit-Modus zu wechseln und umgekehrt, die Hardware-Virtualisierung des Prozessors wird nicht unterstützt. Keiner dieser Faktoren kann jedoch die Leistung und Benutzerfreundlichkeit des Systems wesentlich beeinflussen.
Basierend auf der USB-Passthrough-Technologie können mit der App USB-Geräte über das Netzwerk (Ethernet, WAN, Internet) umgeleitet werden, sodass sie von einem Gastbetriebssystem aus zugänglich sind. Die Softwarelösung ist für Windows-, Linux- und Mac-Betriebssysteme verfügbar und unterstützt plattformübergreifende Verbindungen.
Sobald die Verbindung hergestellt ist, wird das Gerät im Geräte-Manager Ihres Gastbetriebssystems so angezeigt, als wäre es physisch an die virtuelle Maschine angeschlossen.
Trotz ihrer vielen Vorteile hat die Xen-Lösung immer noch einen großen Nachteil. Wie bei jedem Bare-Metal-Hypervisor hat Xen Probleme, USB-Anschlüsse auf ein Host-Betriebssystem umzuleiten. Gleichzeitig gibt es einige Möglichkeiten, über eine Xen-Gastdomäne auf ein USB-Gerät zuzugreifen. Die obige Methode beschreibt, wie dies mithilfe einer Xenserver USB-Passthrough-Software durchgeführt wird. Lassen Sie uns jedoch einige "native" Methoden für den Zugriff auf USB auch von Xen aus erläutern.
Am häufigsten werden USB-Geräte entweder durch ihre Busadresse (bus.device) oder ihre Gerätekennzeichnung (vendorid: deviceid) angegeben.
Sie können die USB-Geräte im System mit dem Befehl lsusb auflisten:
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
Wenn Sie beispielsweise die Logitech-Maus umleiten müssen, können Sie entweder 046d: c016 oder 1.6 angeben.
In der Regel werden einzelne Hostgeräte entweder über einen emulierten USB-Gerätecontroller oder PVUSB an ein Gastbetriebssystem weitergeleitet.
1. Die erste Methode impliziert, dass das Gerätemodell (qemu) dem Gast einen emulierten USB-Controller präsentiert. Danach übernimmt der Gerätemodellprozess die Kontrolle über das Gerät von Domäne 0 und überträgt die USB-Befehle zwischen dem Gastbetriebssystem und dem Host-USB-Gerät.
Diese Methode kann nur mit HVM-Domänen verwendet werden und ist nicht für Domänen verfügbar, die mit Stub-Domänen des Gerätemodells ausgeführt werden.
In Bezug auf Xen 4.6, xl unterstützt nur den emulierten USB aus der Konfigurationsdatei.
Sie können den emulierten USB-Hub mit usb = 1 aktivieren. Anschließend müssen Sie Geräte in der Liste der Geräte in der Konfigurationsdatei zusammen mit anderen emulierten Geräten mithilfe von host: USBID angeben. Zum Beispiel:
usb=1
usbdevice=['tablet','host:1.6','host:0424:460']
USB 1.1 ist der von qemu erstellte Standard-USB-Controller. Für einige Geräte ist dies jedoch nicht ausreichend. In einem solchen Fall können Sie ab 4.6 usbversion verwenden, um auch die USB-Controller-Version anzugeben. Derzeit ist dies jedoch nicht mit usbdevice kompatibel und daher nur in Verbindung mit der Gewürz-USB-Umleitung effizient. Diese Option ist für qemu-traditional nicht verfügbar.
2. Die zweite Methode, PVUSB, verwendet eine paravirtualisierte Front-End / Back-End-Schnittstelle, ähnlich den herkömmlichen Xen PV-Netzwerk- und Festplattenprotokollen.
Um PVUSB verwenden zu können, benötigen Sie usbfront in Ihrem Gastbetriebssystem und usbback in dom0 oder usb backend in qemu (oder Ihrer USB-Treiberdomäne).
Die Unterstützung für PVUSB in xl / libxl (sowohl für PVUSB-Geräte aus der Konfigurationsdatei als auch für Hot-Plug- und Un-Plug-Vorgänge für PVUSB-Geräte) ist seit Xen 4.7 verfügbar. Jetzt funktioniert es mit USB 1.1 und USB 2.0.
Folgendes sollten Sie tun, um mit PVUSB über Host-USB-Geräte an den Gast zu gelangen:
usbctrl=['type=qusb,version=2,ports=4', 'type=qusb,version=1, ports=4', ]
usbdev=['hostbus=2, hostaddr=1, controller=0,port=1', ]
Außerdem können Sie nur usbdev angeben, zum Beispiel:
usbdev=['hostbus=2, hostaddr=1, ]
Zum Beispiel:
#xl usbctrl-attach test_vm version=1 ports=8
Eine weitere beliebte Möglichkeit, über eine Xen-Gastdomäne auf ein USB-Gerät zuzugreifen, ist eine dedizierte Drittanbieterlösung, die über das Netzwerk funktioniert. In diesem Fall benötigen Sie einen USB-Server (Hardware oder Software) und einen USB-Client (Software). Letzteres ist eigentlich ein spezieller Treiber für das Betriebssystem. Schauen wir uns nun diese einfache und effiziente Methode genauer an, um Xen USB-Passthrough-Unterstützung in Ihrer virtuellen Maschine zu erhalten.