libvirt и один USB-порт с возможностью горячей замены с virt-manager — почти готово?

libvirt и один USB-порт с возможностью горячей замены с virt-manager — почти готово?

Описание

USB не виден на гостевой системе Debian. Я не вижу ничего очевидного в журналах, но поскольку у меня нет большого опыта в виртуализации, я предполагаю, что пропустил какой-то шаг в настройке, возможно, что-то очень маленькое и очевидное для кого-то с большим опытом.

Программное обеспечение

Эмулятор QEMU версии 5.0.0 (Debian 1:5.0-5ubuntu6~ppa00)

Хост: Ubuntu 20.04

Гость: Debian 11

Горячий плагин

Действия по воспроизведению

  • Добавлятьppa:jacob/виртуализациядля qemu-kvm, так как в репозитории Ubuntu 20.04 есть только 4.x, а обратные порты вызывают много ошибок.

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

  • Если вы столкнулись с ошибкой «необходимо указать путь к хранилищу», обойдите ее, переместив установочный ISO-образ в место, которое вы хотите использовать для хранения, снова выберите его там, после чего вы сможете создать том для хранения.

  • Установите Debian 11, не внося никаких других изменений в virt manager.

Моймонитор.pyвыход при поочередном подключении и отключении ключей USB 2 и USB 3 был следующим:

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

Оставьте USB-накопитель отключенным.

  • /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"
  • Редактировать /etc/libvirt/qemu/debian.xml

Я получал сообщения об ошибках, связанных с тем, что xhci не найден, пока не объединил верхние 4 строки с аргументами qemu, предложенными в readme-файле hotplugger, чтобы сформировать:

<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

  • Отредактируйте qemu.conf согласно файлу readme, чтобы обойти проблему apparmor.

  • Выполните действия по устранению неполадок, удалив hotplugger/tmp, перезагрузив систему, перезагрузив udev и просмотрев файл журнала udev.

  • Загрузите Debian и после входа в систему подключите USB-ключ к порту, после чего убедитесь, что хост видит его нормально, но на Debian его нет. Сделайте это во второй раз, чтобы продемонстрировать, что первоначальная ошибка udev возникла только из-за перезагрузки.

Есть ли что-то очевидное в описанной мной настройке или в приложенных журналах, что могло бы подсказать, в чем проблема и как ее можно решить?

hotplugger.log udev.log libvirt_debian.log

Связанный контент