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의 "devices" 블록에 요소로 추가하면 됩니다.

<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

이 문제가 발생하는 모든 사람에게 이것이 간단하고 유용한 해결책이 되기를 바랍니다.

관련 정보