USBデバイスをQemu KVMに転送

USBデバイスをQemu KVMに転送

Windows仮想マシンにUSBペンドライブにアクセスしようとしていますが、このUSBを仮想マシンに転送するのに問題があります。

私のLinuxホストでlsusbを実行し、私のデバイスは次のように識別されます。

Bus 001 Device 018 : ID 8564:1000 Transcend Information, Inc. Jetflash

いくつかのガイドを見て、次のコマンドを使ってこのUSBをkvmに渡してみました。

qemu-system-x86_64 -m 3G --enable-kvm "Windows 10.qcow2" -usb -device usb-host,hostbus=1,hostaddr=18

何を試しても、「usb-host」が有効なデバイスではないというエラーが発生します。

lsusb -tを実行すると表示されるデバイスクラスなので、usb-storageに変更してみましたが、デバイスIDに何を渡すべきかわかりません。空白のままにすると、「.drive」属性は期待どおりに欠落しているとマークされます。

私はいくつかの情報を印刷することを試みますls /sys/bus/usb/devices

1-0:10 1-1 1-1.1 ........usb1 usb2

しかし、どのIDをコマンドに渡そう qemu-system-x86_64 -m 3G --enable-kvm "Windows 10.qcow2" -usb -device usb-storage,drive=<one of the above>としても

与えられた値のそのような属性が存在しないと言います。

だから、

  1. usb-hostが有効なデバイスではないかどうか心配する必要がありますか?
  2. usb-storageデバイスIDが機能するにはどうすればよいですか?
  3. qemu-kvmはUSB 2、3、ストリーミングカメラをサポートしていますか?

私はそれを使用していますQEMU emulator version 4.1.0

答え1

ただ、私は2セントを投げるべきだと思いました。仮想マシンにUSBプリンタを追加しようとし、完全な「qemu-kvm」コマンドパスを試しましたが、役に立ちませんでした。最後に、仮想マシンのドメインxmlにxmlエントリを手動で追加しました。ライブラリ仮想マシン協会。ホストシステムで実行:

lsusb

USBデバイスを表す行を探します。

Bus 001 Device 003: ID 03f0:1617 HP, Inc LaserJet 3015

「ID」は、コロンで区切られたプロバイダIDと製品IDを表します。次に、以下のxmlコードでデバイスベンダーと製品ID(16進数0xを含む)を置き換えて、VMの「デバイス」ブロックに要素として追加します。

<hostdev mode='subsystem' type='usb'>                                                            
  <source startupPolicy='optional'>                                                              
    <vendor id='0x03f0'/>                                                                        
    <product id='0x1617'/>                                                                       
  </source>                                                                                      
  <boot order='2'/>                                                                              
</hostdev>

幸運を祈り、これが役に立つことを願っています。参考までに、ドメインのxmlファイルを編集するには:

virsh dumpxml yourdomain

それから

virsh edit yourdomain

これにより、編集可能なxmlファイルがロードされます。

答え2

グラフィックフロントエンドが利用可能な場合は、 virt-managerUSBパススルーも問題ありません。

情報セクションをクリックしadd Hardwareて選択しますUSB Host Device

私はこれをWindows 10ゲストにペンドライブを渡すために使用しましたが、これまで問題はありませんでした。

USBデバイスを追加した場合、デバイスが検出されないとマシンは起動しません。つまり、仮想マシンを起動するにはペンドライブを接続する必要があります。

答え3

私はこのプラットフォームを初めて使用しますので、フォーマットを指定することをご了承ください。前述したように、すべては次のように始まります。

lsusb

バスとデバイス番号(あなたの場合は1と18)を取得します。次に、次を含む jetflash.xml ファイルを作成します。

<hostdev mode='subsystem' type='usb' managed='yes'>
  <source>
    <address bus='1' device='18'/>
  </source>
</hostdev>

数字がどこに行くのかわかります!これで、実行中のvmIDに接続/分離します。

virsh attach-device vmID /path/to/jetflash.xml
virsh detach-device vmID /path/to/jetflash.xml

これが役に立つことを願っています。

答え4

私は非常に似た問題がありましたが、virtマネージャを使用していて、問題が何であるかを調べるために数時間を費やしました。最初は私のxmlファイルに問題があると思いました。ところで実行してみるとこんな問題が発生しましたね。sudo pacman -Syu

何らかの理由で、qemu-hw-usb-hostが見つからないため、USBホストが有効なデバイス名として認識されなくなりました。

私の解決策はlibusbを再インストールすることでした sudo pacman -S libusb(必要かどうかわからない)sudo pacman -S qemu-hw-usb-host

この問題が発生しているすべての人にとって、これが簡単で便利な解決策になることを願っています。

関連情報