본문 바로가기
리눅스

QEMU with hardware graphics acceleration

by 다움위키 2023. 12. 22.

QEMU를 사용하면서 조금 안타까운 점은, 그래픽 성능이 VirtualBox 또는 VMware에 비해서 못하다는 점입니다. 몇 가지 기술들이 소개되고 있지만, 비교적 쉽게 접근할 수 있는 방법을 소개하고자 합니다.

QEMU는 호스트 컴퓨터의 그래픽 어댑터 OpenGL 기능에 접근할 수 있는 해결책, Virgil을 지원하도록 컴파일할 수 있습니다. 이렇게 하면 QEMU에서 설치된 게스트에서 그래픽 렌더링을 가속화하기 위해 호스트 하드웨어 그래픽 카드를 사용할 수 있습니다.

안타깝게도 대부분의 배포판에서 QEMU를 배포할 때, 이 기능은 제외하고 컴파일을 합니다. 그렇기 때문에, 이것을 추가해서 QEMU 패키지를 다시 컴파일해야 합니다.

또한, 비록 호스트의 그래픽 카드에서 DRM을 지원할지라도, 코드에서 지원하는 DRM인지를 확인해야 합니다. 예를 들어, 엔비디아 그래픽 카드를 사용하고 있다면, 엔비디아에서 제공하는 독점 드라이버가 성능이 좋기 때문에, 대부분 그 드라이버를 사용합니다. 그렇지만, Virgil을 사용하기 위해서는 nouveau를 사용해야 할지도 모릅니다. 인텔 iGPU는 동작을 보장하고, AMD 카드는 대부분 동작한다고 알려져 있습니다.

Nvidia GTX 1060에서, 엔비디아 독점 드라이버는 지원하지 않는 것으로 확인이 되었습니다. 가상 기계에서 그래픽 성능을 높이기 위해서 호스트의 그래픽 성능을 낮출 수는 없을 것으로 보입니다.

한편, 이 기술은 오직 리눅스 게스트에 대해 지원되고, 윈도우 게스트는 실험적인 수준으로 알려져 있습니다.

Recompile QEMU

다음과 같이 새롭게 컴파일할 수 있습니다.

  • mkdir qemu
  • cd qemu
  • apt source qemu
  • qemu-2.12+dfsg
  • gvim debian/control
# --enable-gtk --with-gtkabi=3.0 --enable-vte
 libgtk-3-dev, libvte-2.91-dev,
# --enable-opengl      여기부터 추가 4줄을 추가합니다.
 libgl1-mesa-dev, libgbm-dev, libepoxy-dev, libdrm-dev,
# --enable-virglrenderer
 libvirglrenderer-dev,
  • dvim debian/control-in
# --enable-gtk --with-gtkabi=3.0 --enable-vte
 libgtk-3-dev, libvte-2.91-dev,
# --enable-opengl     여기부터 추가 4줄을 추가합니다.
 libgl1-mesa-dev, libgbm-dev, libepoxy-dev, libdrm-dev,
# --enable-virglrenderer
 libvirglrenderer-dev,
  • gvim debian/changelog (optional)
qemu (1:2.12+dfsg-3ubuntu8.3) cosmic; urgency=medium

  * Enable virgl and opengl

 -- user <user@email.com>  Tue, 22 Jan 2019 15:38:43 +0900

qemu (1:2.12+dfsg-3ubuntu8.2) cosmic; urgency=medium
  • sudo apt build-dep qemu
  • dpkg-buildpackage -i -us -uc -b
  • cd ..
  • dpkg -l | grep qemu
ii  qemu-block-extra:amd64                     1:2.12+dfsg-3ubuntu8.2
ii  qemu-kvm                                   1:2.12+dfsg-3ubuntu8.2
ii  qemu-system-common                         1:2.12+dfsg-3ubuntu8.2
ii  qemu-system-data                           1:2.12+dfsg-3ubuntu8.2
ii  qemu-system-gui:i386                       1:2.12+dfsg-3ubuntu8.2
ii  qemu-system-x86                            1:2.12+dfsg-3ubuntu8.2
ii  qemu-utils                                 1:2.12+dfsg-3ubuntu8.2
  • sudo dpkg -i qemu-block-extra_2.12+dfsg-3ubuntu8.3_amd64.deb qemu-kvm_2.12+dfsg-3ubuntu8.3_amd64.deb qemu-system-common_2.12+dfsg-3ubuntu8.3_amd64.deb qemu-system-data_2.12+dfsg-3ubuntu8.3_all.deb qemu-system-gui_2.12+dfsg-3ubuntu8.3_amd64.deb qemu-system-x86_2.12+dfsg-3ubuntu8.3_amd64.deb qemu-utils_2.12+dfsg-3ubuntu8.3_amd64.deb

한꺼번에 설치하셔야 의존성 문제가 됩니다.

Settings

이제 게스트 설정에서 다음 부분에서

  • Display Spice

OpenGL을 활성화하십시오.

  • Video QXL

이것이 기본값이지만,

  • Model: Virtio
  • 3D acceleration: 체크

로 바꿀 수 있습니다.

External Resources