libvirt 和 virt-manager 的熱插拔單 USB 連接埠 - 快到了嗎?

libvirt 和 virt-manager 的熱插拔單 USB 連接埠 - 快到了嗎?

描述

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 管理器進行任何其他變更。

我的監視器.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
  • 配置.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

在我將前 4 行與熱插拔器自述文件中建議的 qemu 參數組合起來形成之前,我收到了 xhci not being found 的錯誤:

<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 以解決 apparmor 問題。

  • 完成故障排除步驟:刪除 hotplugger/tmp、重新啟動系統、重新啟動 udev 以及查看 udev 的日誌檔案。

  • 啟動 Debian,登入後將 USB 密鑰連接到端口,然後觀察主機看到它正常,但 Debian 上沒有任何跡象。再次執行此操作以證明初始 udev 錯誤只是由於重新啟動而導致的。

我描述的設定或附加的日誌中是否有任何明顯的內容表明問題是什麼以及我如何解決它?

熱插拔器日誌 udev日誌 libvirt_debian.log

相關內容