Libvirt und Hotswap-fähiger einzelner USB-Anschluss mit Virt-Manager – fast geschafft?

Libvirt und Hotswap-fähiger einzelner USB-Anschluss mit Virt-Manager – fast geschafft?

Beschreibung

USB auf Debian-Gast nicht sichtbar. Ich kann aus den Protokollen nichts Offensichtliches erkennen, aber da ich nicht viel Erfahrung mit Virtualisierung habe, gehe ich davon aus, dass ich einen Schritt in der Konfiguration übersehen habe, möglicherweise etwas sehr Kleines und für jemanden mit mehr Erfahrung Offensichtliches.

Software

QEMU-Emulator Version 5.0.0 (Debian 1:5.0-5ubuntu6~ppa00)

Host: Ubuntu 20.04

Gast: Debian 11

Hotplugger

Schritte zum Reproduzieren

  • Hinzufügenppa:jacob/Virtualisierungfür qemu-kvm, da das 20.04-Repo von Ubuntu nur 4.x hat und Backports viele Fehler verursachten.

  • sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

  • Wenn der Fehler „Es muss ein Speicherpfad angegeben werden“ auftritt, umgehen Sie ihn, indem Sie die ISO-Datei des Installationsprogramms an den Speicherort verschieben, den Sie für die Speicherung verwenden möchten. Wählen Sie sie dort erneut aus. Anschließend sollten Sie in der Lage sein, ein Volume für die Speicherung zu erstellen.

  • Installieren Sie Debian 11, ohne weitere Änderungen am Virt-Manager vorzunehmen.

Meinmonitor.pyDie Ausgabe für das abwechselnde Anschließen und Trennen eines USB 2- und USB 3-Schlüssels lautete:

DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-2
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb4/4-2
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0
  • config.yaml:
virtual_machines:

  debian:
    socket: /tmp/my-vm-sock
    delay: 1
    hubs:
      - xhci0.0
      - xhci1.0
    ports:
      - /devices/pci0000:00/0000:00:14.0/usb3/3-2
      - /devices/pci0000:00/0000:00:14.0/usb4/4-2

Lassen Sie den USB-Stick getrennt.

  • /etc/udev/rules.d/99-zzz-local.rules:
SUBSYSTEM=="usb", ACTION=="add", RUN+="/bin/bash -c 'python3 /home/anonymousaard/hotplugger/hotplugger.py >> /tmp/hotplugger.log' 2>&1"
SUBSYSTEM=="usb", ACTION=="remove", RUN+="/bin/bash -c 'python3 /home/anonymousaard/hotplugger/hotplugger.py >> /tmp/hotplugger.log' 2>&1"
  • Bearbeiten Sie /etc/libvirt/qemu/debian.xml

Ich erhielt Fehlermeldungen, dass xhci nicht gefunden wurde, bevor ich die oberen 4 Zeilen mit den in der Hotplugger-Readme-Datei vorgeschlagenen QEMU-Argumenten zu folgendem Formular kombinierte:

<qemu:arg value="-device"/>
<qemu:arg value="nec-usb-xhci,id=xhci0"/>
<qemu:arg value="-device"/>
<qemu:arg value="nec-usb-xhci,id=xhci1"/>
<qemu:arg value="-chardev"/>
<qemu:arg value="socket,id=mon1,server=on,wait=off,path=/tmp/my-vm-sock"/>
<qemu:arg value="-mon"/>
<qemu:arg value="chardev=mon1,mode=control,pretty=on"/>
</qemu:commandline>
</domain>
export EDITOR=nano
sudo virsh edit debian

debian.xml.txt

  • Bearbeiten Sie qemu.conf gemäß der Readme-Datei, um das Apparmor-Problem zu umgehen.

  • Führen Sie die Schritte zur Fehlerbehebung durch, indem Sie hotplugger/tmp löschen, das System neu starten, udev neu starten und die Protokolldatei von udev anzeigen.

  • Booten Sie Debian und schließen Sie nach der Anmeldung den USB-Stick an den Port an. Anschließend beobachten Sie, dass der Host ihn problemlos erkennt, aber bei Debian keine Spur davon zu sehen ist. Tun Sie dies ein zweites Mal, um zu beweisen, dass der anfängliche Udev-Fehler nur vom Neustart herrührt.

Gibt es in dem von mir beschriebenen Setup oder den beigefügten Protokollen irgendetwas Offensichtliches, das einen Hinweis darauf gibt, wo das Problem liegt und wie ich es lösen kann?

hotplugger.log udev.log libvirt_debian.log

verwandte Informationen