Wie aktiviere ich USB-Geräte in einer QEMU-VM?

Melden
  1. Vorbereitung: Voraussetzungen und Berechtigungen
  2. Direktes Durchreichen mit QEMU-Kommandozeile (usb-host)
  3. USB-Controller in der Gastechnik konfigurieren
  4. Libvirt/virt-manager: Geräte per GUI oder XML weiterreichen
  5. Dynamisches Ein- und Ausstecken (Hotplug)
  6. Fehlerbehebung und Sicherheitshinweise

Vorbereitung: Voraussetzungen und Berechtigungen

Bevor Sie USB-Geräte in einer QEMU-VM aktivieren, stellen Sie sicher, dass auf dem Host die notwendigen Pakete installiert sind (qemu-system-*, ggf. libvirt, virt-manager) und der Benutzer Zugriff auf die USB-Geräte hat. Auf Linux bedeutet das üblicherweise, dass udev-Regeln gesetzt oder die Gruppenmitgliedschaft (z. B. plugdev, libvirt) geprüft werden muss. Für direkte Geräteweitergabe benötigt der qemu-prozess ausreichende Rechte; bei systemd- oder libvirt-Setups übernimmt der Dienst meist die Rechteverwaltung.

Direktes Durchreichen mit QEMU-Kommandozeile (usb-host)

Zum direkten Durchreichen eines USB-Geräts an eine QEMU-VM lässt sich die Option -device und -usb oder -usbdevice (ältere Syntax) nutzen. Moderne Beispiele verwenden -device usb-ehci,id=usb.0 -device usb-host,hostbus=BUS,hostaddr=ADDR. BUS und ADDR ermitteln Sie mit lsusb (Format: Bus AAA Device BBB) oder durch Angabe der Vendor/Product-ID als vendorid=0xVVVV,productid=0xPPPP. Beim Starten muss das Gerät frei auf dem Host sein (nicht von einem anderen Treiber genutzt). Beispiel: qemu-system-x86_64 -m 2048 -usb -device usb-host,vendorid=0x1234,productid=0xabcd,hostbus=1,hostaddr=4 -hda disk.img.

USB-Controller in der Gastechnik konfigurieren

Damit Gastsysteme USB-Geräte überhaupt nutzen können, müssen passende USB-Controller emuliert werden. Übliche Controller sind usb-ehci (USB 2.0) oder usb-xhci (USB 3.0). Fügen Sie vor den usb-host-Geräten einen Controller hinzu, z. B. -device qemu-xhci,id=xhci oder -device usb-ehci,id=ehci. Neuere qemu-Versionen bieten qemu-xhci für USB3, was besser für moderne Geräte ist. Ohne passenden Controller kann das Gastbetriebssystem das Gerät zwar erkennen, aber nicht korrekt nutzen.

Libvirt/virt-manager: Geräte per GUI oder XML weiterreichen

Bei Nutzung von libvirt/virt-manager empfiehlt es sich, Geräte über die GUI unter "Add Hardware -> USB Host Device" hinzuzufügen oder die XML-Domäne zu editieren. In der XML verwenden Sie mit . Libvirt sorgt für Rechte und Device-Detach/Attach beim Starten/Stoppen der VM.

Dynamisches Ein- und Ausstecken (Hotplug)

USB-Hotplug ist möglich: Bei QEMU-Kommandozeile verwenden Sie das QMP- oder monitor-Interface, z. B. mit "device_add usb-host,...". In libvirt kann virt-manager Geräte dynamisch hinzufügen, sofern der Gastbetriebssystemtreiber vorhanden ist. Achten Sie darauf, dass das Hostgerät beim Hotplug frei ist; sonst schlägt das Hinzufügen fehl.

Fehlerbehebung und Sicherheitshinweise

Wenn das Gerät nicht im Gast erscheint, prüfen Sie zuerst lsusb auf dem Host, ob das Gerät belegt ist. Entfernen Sie ggf. Host-Treiber (unbind) oder stoppen Sie Dienste, die das Gerät nutzen. Überprüfen Sie qemu-Ausgaben und libvirt-Logs (/var/log/libvirt/qemu/VMNAME.log). Beachten Sie Sicherheitsaspekte: Durchreichen erlaubt dem Gast direkten Hardwarezugriff, also nur vertrauenswürdigen Gästen Zugriff gewähren. Gegebenenfalls udev-Regeln erstellen, um konsistente Berechtigungen sicherzustellen.

Wenn Sie konkrete Angaben zu Ihrem Hostsystem (Distribution), QEMU-Version und Gerätetyp nennen, kann ich präzisere Befehle und Beispiele liefern.

0

Kommentare