콘텐츠로 건너뛰기

libvirt (virt-manager) USB Passthrough 오류 해결하기 (RHEL, Ubuntu, Debian)

  • 기준

(24.07.28, RHEL 9.4, Ubuntu 24.04,Debian 12 기준)

libvirt 윈도우 11 VM에 USB 무선랜카드(RTL8832BU)를 passthrough했다.
윈도우에서 드라이버 설치 후 처음에는 잘 작동했지만 재부팅한 뒤로는 와이파이 목록이 뜨지 않거나 무선랜카드가 아예 작동하지 않았다. DriverStoreExplorer로 드라이버를 제거하고 다시 설치해도 문제는 여전했다. 장치 관리자에 들어가서 확인하니 ‘이 장치를 시작할 수 없습니다. (코드 10)’ 에러가 있었다.

다른 무선랜카드인 MT7601U, 인텔 AX210 블루투스를 passthrough해도 문제는 여전했다. (인텔 AX210 블루투스는 USB로 인식된다.) 신기한 건 USB 메모리 passthrough는 VM 내에서 읽기/쓰기가 정상적으로 됐다.

/etc/default/grub에 이미 amd_iommu=pt를 추가했었기에 IOMMU 문제는 아니었다.

레딧을 봤을 때 주로 무선랜카드, 유선랜카드, 블루투스 등이 문제가 발생하는 것 같았다.

드라이버를 블랙리스트로 등록하면 문제가 해결 된다는 레딧 게시글이 있었다. 레딧 게시글과 레드햇 문서를 참고하여 무선랜카드 드라이버를 블랙리스트로 등록했다. 무선랜카드 드라이버는 재부팅 후 호스트에 로드되지 않았지만 VM 내에서는 여전히 작동하지 않았다.
https://www.reddit.com/r/qemu_kvm/comments/15xzhxi/usb_nic_with_realtek_rtl8153_chip_can_not_be/
https://access.redhat.com/solutions/41278

여러 포럼 글과 문서를 참고하여 거의 12시간을 삽질하다 해결했다.

1) XML 수정 (CLI)

Cockpit이나 virt-manager에서 생성한 VM의 XML 구성은 위와 같이 되어있다.

USB가 정상적으로 작동하게 하기 위해서는 /etc/libvirt/qemu/VM_이름.xml의 domain 태그에 xmlns:qemu=’http://libvirt.org/schemas/domain/qemu/1.0′를 아래 사진과 같이 추가한다.
(virtsh edit 또는 libvirt API를 사용하는 다른 애플리케이션을 사용하여 수정해야 한다고 나와있지만 nano를 사용해도 된다.)

<qemu:capabilities>
  <qemu:del capability="usb-host.hostdevice"/>
</qemu:capabilities>

위의 코드를 </domain> 태그 위에 추가한다. 아래 사진과 같이 추가하면 된다.

virsh define /etc/libvirt/qemu/vm_name.xml

virsh define 명렁어를 이용하여 변경된 XML 설정 파일을 Libvirt에 다시 로드한다.

2) virt-manager를 이용한 XML 수정 (GUI)

가상 머신 관리자 실행 > 가상머신 더블 클릭 > 가상 머신 상세 정보 표시 (전구 모양) > 개요 > XML로 들어간다.

domain 태그에 xmlns:qemu=’http://libvirt.org/schemas/domain/qemu/1.0′를 아래 사진과 같이 추가한다.

<qemu:capabilities>
  <qemu:del capability="usb-host.hostdevice"/>
</qemu:capabilities>

위의 코드를 태그 위에 추가한다. 아래 사진과 같이 추가하고 적용 버튼을 누르면 된다.

참고 포럼, 문서

https://www.reddit.com/r/VFIO/comments/wbsqy1/how_to_fix_onboard_intel_bluetooth_error_code_10/

https://gitlab.com/libvirt/libvirt/-/issues/99

https://libvirt.org/drvqemu.html#qemu-feature-configuration-for-testing

Join the conversation

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다