USB in Xen OS: Mögliche Optionen
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:
- Geben Sie zunächst in der Konfigurationsdatei USB-Controller und USB-Hostgeräte an usbctrl und usbdev. Zum Beispiel:
usbctrl=['type=qusb,version=2,ports=4', 'type=qusb,version=1, ports=4', ]
usbdev=['hostbus=2, hostaddr=1, controller=0,port=1', ]
- Dann können Sie für den Typ auto angeben (Standard: xl versucht, den am besten geeigneten Typ auszuwählen), qusb (paravirtualisiertes qemu-basiertes Backend, sollte für von HVM-Domänen verwendetes pvUSB angegeben werden), pv (paravirtualisiertes kernelbasiertes Backend, nicht unterstützt von) aktuelles Standard-Linux) oder Devicemodel (qemu emulierter USB-Controller, noch nicht unterstützt).
Außerdem können Sie nur usbdev angeben, zum Beispiel:
usbdev=['hostbus=2, hostaddr=1, ]
- Danach werden automatisch ein USB-Controller (Version 2.0) und 8 Ports erstellt und das USB-Gerät an den ersten Port dieses neuen Controllers angeschlossen.
- Um das PVUSB-Gerät im Hot-Plug-Modus zu entfernen und zu entfernen, können Sie die Befehle usbctrl-attach, usbctrl-attach, usb-list, usbdev-attach und usbdev-separate verwenden.
Zum Beispiel:
#xl usbctrl-attach test_vm version=1 ports=8
Zugriff auf USB-Geräte über das Netzwerk
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.