USB シリアルデバイスを使用して QEMU VM を起動すると、権限が拒否され、失敗しますが、VM の起動後に接続しても問題はありません。

USB シリアルデバイスを使用して QEMU VM を起動すると、権限が拒否され、失敗しますが、VM の起動後に接続しても問題はありません。

次の場所に定義されているUSBデバイスがありますvirt/usb-serial.xml

    <serial type="dev">
      <source path="/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2403534-if00"/>
      <target type="usb-serial" port="1">
        <model name="usb-serial"/>
      </target>
      <address type="usb" bus="0" port="5"/>
    </serial>

以下のように正常に接続しました。

virsh # detach-device hass4 virt/usb-serial.xml --persistent
Device detached successfully

VMはUSBデバイスに完全にアクセスできます。ただし、ホストデバイスを再起動した後、次のUSBシリアルデバイスは仮想マシンを起動しません。

virsh # start hass4
error: Failed to start domain 'hass4'
error: internal error: process exited while connecting to monitor: 2023-06-01T20:28:52.153257Z qemu-system-x86_64: -chardev serial,id=charserial1,path=/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2403534-if00: Could not open '/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2403534-if00': Permission denied

デバイスを切断すると、VMは正常に起動しますが、奇妙なことに、起動後にデバイスを再び正常に接続できます。

virsh # detach-device hass4 virt/usb-serial.xml --persistent
Device detached successfully

virsh # start hass4
Domain 'hass4' started

virsh # attach-device hass4 virt/usb-serial.xml
Device attached successfully

初めて起動したときになぜ失敗するのですか?権限の問題を解決するには?文脈に応じて、次のように定義しました/lib/udev/rules.d/51-qemu-usb-passthrough.rules

SUBSYSTEM=="usb", ATTRS{idVendor}=="1cf1" ATTRS{idProduct}=="0030" GROUP="libvirt"

このデバイスに対応するベンダーと製品IDは次のとおりです。

$ lsusb -d 1cf1:0030
Bus 003 Device 010: ID 1cf1:0030 Dresden Elektronik ZigBee gateway [ConBee II]

/etc/libvirt/qemu.conf私が設定したもの:

user = "henrik"
group = "libvirt"

henrikユーザーとして、私は次のコマンドを実行します。

関連情報