libvirt y un único puerto USB intercambiable en caliente con virt-manager: ¿ya casi estás ahí?

libvirt y un único puerto USB intercambiable en caliente con virt-manager: ¿ya casi estás ahí?

Descripción

USB no visible en el invitado Debian. No puedo ver nada obvio en los registros, pero como no tengo mucha experiencia en virtualización, supongo que me perdí un paso en la configuración, posiblemente algo muy pequeño y obvio para alguien con más experiencia.

Software

Emulador QEMU versión 5.0.0 (Debian 1:5.0-5ubuntu6~ppa00)

Anfitrión: Ubuntu 20.04

Invitado: Debian 11

enchufe caliente

Pasos para reproducir

  • Agregarppa:jacob/virtualizaciónpara qemu-kvm ya que el repositorio 20.04 de Ubuntu tiene solo 4.x y los backports causaron muchos errores.

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

  • Si encuentra el error "se debe especificar una ruta de almacenamiento", solucione esto moviendo el ISO del instalador a la ubicación que desea usar para el almacenamiento, comience nuevamente seleccionándolo allí y luego debería poder crear un volumen para el almacenamiento.

  • Instale Debian 11 sin realizar ningún otro cambio en virt manager.

Mimonitor.pyLa salida conectando y desconectando una llave USB 2 y USB 3 a su vez fue:

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
  • configuración.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

Deje la llave USB desconectada.

  • /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"
  • Editar /etc/libvirt/qemu/debian.xml

Estaba recibiendo errores porque no se encontraba xhci antes de combinar las 4 líneas superiores con los argumentos de qemu sugeridos en el archivo Léame de hotplugger para formar:

<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

  • Edite qemu.conf según el archivo Léame para solucionar el problema de la apariencia.

  • Complete los pasos de solución de problemas eliminando hotplugger/tmp, reiniciando el sistema, reiniciando udev y viendo el archivo de registro de udev.

  • Inicie Debian y una vez que haya iniciado sesión, conecte la llave USB al puerto y luego observe que el host lo ve bien pero no hay señales de ello en Debian. Haga esto por segunda vez para demostrar que el error inicial de udev se debe simplemente al reiniciarlo.

¿Hay algo obvio en la configuración que describo o en los registros adjuntos que pueda sugerir cuál es el problema y cómo puedo resolverlo?

hotplugger.log udev.log libvirt_debian.log

información relacionada