この記事を作った動機
簡易的に GTX 1080 Ti と Linux 環境において、Virtio(OpenGL) や Venus(Vulkan) による GPU アクセラレーションを利用する方法について、今まで諦めていた。それでも諦めきれずに定期的に調べていたところ、対処方法が見つかった。それについて、簡易的に症状とやったことを記録したい。
デモ
以下の動画は、RDP 経由で Venus による 仮想 GPU を利用して Vulkan や OpenGL のアプリが動作している事を示している。マインクラフトの操作については、今回の RDP セットアップの仕様上、絶対座標しか送られておらず視点を動かすことができていなかったり、VPN など遠隔地から RDP 接続をして動かしているため、ラグが大きくぎこちないものとなっている。
前座
Virtio における GPU 加速
Virt-Manager において標準で利用できる仮想 GPU である。AMD や Intel の GPU 環境では特別なことをしなくても、私個人の体験としては利用できたが、Nvidia 環境ではそうならなかった。
Venus における GPU 加速
最近あたらしい GPU 加速手段の一つとして実装されたもので、デフォルトでは Virt−Manager などからはまだ利用できるようにはなっていない模様である。これについては直接 QEMU をコマンドラインから起動することが私が現在できていることであり、Virt-Manager からは XML の設定をいじってみたものの成功していない。
今回犠牲になっている事
今回提示する解決策は、最低限 仮想 GPU が Nvidia の GTX1080Ti において動作するようにする事を目的としており、以下の負担や犠牲がある。
- 仮想 GPU 有効時は、Virt-Manager や QEMU によるホストマシン上の GUI による画面描画は正常に動作しない。
- 仮想マシンに対して、CPU によるソフトウェアレンダリングで OS をインストールし、外部ネットワークから RDP 出来るように環境構築していること。私の場合は、仮想マシンに対して DNAT を行うことでこれを実現しているが、それも紆余曲折あった。詳細は、QEMU(virt-manager) で動かしている仮想マシンと、外部ネットワーク間において、ポート転送ができず時間を溶かす を参照。
- 仮想マシンに対して、Virtio に関連するドライバを事前に導入していること。
- あくまで、EGL の初期化エラーを避けて、仮想マシンが起動でき、RDP 経由ではある程度動作する事。
- 少なくとも GTX 1080Ti における Venus の加速は、RDP を経由してもかなりグリッチがあり、出来ることが限られる。Blender を動かしたり、マインクラフトを動かしたりすることはできたが、特に通常の GUI 描画に弱くブラウザを使ったりするとグリッチがかなり発生したりする。これは、Nvidia 社の GTX1080Ti における Vulkan 実装が不完全であることが原因であると思われる。
- 今回の記事は主に、Windows 環境については、Virt-Manager で標準で利用できる OpenGL による仮想 GPU を想定しており、Linux 環境については、Venus を使って実現できる Vulkan による仮想 GPU を想定している。なお、Linux 環境でもVirt-Manager で標準で利用できる OpenGL による仮想 GPU は Venus に比べて安定して利用可能である。
- OpenGL や Vulkan の仮想マシン上における利用は、Venus 経由の仮想 GPU によって実現され、Virt-Manager 標準の Virtio による OpenGL を使った仮想 GPU では、私が試した範囲ではできていない。
本題
症状
EGL の初期化に失敗し、仮想マシンを起動できなくなる。CPU 加速しか利用できず、GUI 描画がもたつき、CPU を使いまくる。
改善した方法
/etc/libvirt/qemu.conf にて Nvidia GPU に対して適切な権限を設定する
以下の項目を最後辺りに追記する。
# ...
cgroup_device_acl = [
"/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm",
"/dev/nvidiactl", "/dev/nvidia0", "/dev/nvidia-modeset", "/dev/dri/renderD128"
]
仮想マシンに適切なドライバやスタックを導入する
Linux かつ Venus 環境の場合
少なくとも、Gnome 環境をインストールした Arch Linux 仮想マシン環境において、Vulkan を適切に動作させるには、以下のパッケージが必要であった。
yay -S vulkan-virtio
# sudo pacman -S vulkan-virtio
- Arch Linux - vulkan-virtio 1:26.2.1-1 (x86_64)
https://archlinux.org/packages/extra/x86_64/vulkan-virtio/ (2026年8月29日)
Windows かつ Virt-Manager 環境の場合
以下のサイトから、OS にあわせた ISO を取得し、仮想マシンにマウントして、必要なドライバをインストールする。
- Index of /groups/virt/virtio-win/direct-downloads/archive-virtio
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D (2026年8月29日)
以下のように表示されていれば、GPU 加速を利用する準備ができている。
- ホストマシンにて
- 仮想マシンにて
おまけ
Arch Linux や Arch ベースの Linux の仮想マシンで、Venus 環境下において、Blender を起動したい
以下に示す古い Blender をインストールし、blender が Intel HD Graphics 4000 で動かない にて示されるワークアラウンドを試すと、とりあえず起動できる。ただしレンダリングしようとしたりするとクラッシュするので実用的ではない。
- AUR (en) - blender-4.2-bin
https://aur.archlinux.org/packages/blender-4.2-bin (2026年8月29日)
yay -S blender-4.2-bin
Linux 仮想マシンかつ Venus 環境下において、もっと安定して動かしたい。
/etc/environmentにて、以下の変数を設定し、アプリ起動時に反映されるようにする。以下の設定は垂直同期についての設定らしいが、私はまだよく理解していない。動かしてみて例えば glxgear のフレームレートが 50 FPS ほどあがるなど、安定性やパフォーマンスの違いを個人的には体感したという程度の話である。
vblank_mode=0
Arch Linux 環境にて、OpenGL や Vulkan の動作確認をしたい
以下のパッケージをインストールすれば、OpenGL のテストには glxgears コマンドが、Vulkan のテストには vkcube が利用可能である。
- Arch Linux - vulkan-tools 1.4.357.0-1 (x86_64)
https://archlinux.org/packages/extra/x86_64/vulkan-tools/ (2026年8月29日) - Arch Linux - mesa-utils 9.0.0-7 (x86_64)
https://archlinux.org/packages/extra/x86_64/mesa-utils/ (2026年8月29日) - Arch Linux - lib32-mesa-utils 9.0.0-4 (x86_64)
https://archlinux.org/packages/multilib/x86_64/lib32-mesa-utils/ (2026年8月29日)
yay -S vulkan-tools
# sudo pacman -S vulkan-tools
yay -S mesa-utils lib32-mesa-utils
sudo pacman -S mesa-utils lib32-mesa-utils
関連する記事とか
- QEMU(virt-manager) で動かしている仮想マシンと、外部ネットワーク間において、ポート転送ができず時間を溶かす
- blender が Intel HD Graphics 4000 で動かない
参考にしたサイトとか
-
QEMU with VirtIO GPU Vulkan Support
https://gist.github.com/peppergrayxyz/fdc9042760273d137dddd3e97034385f (2026年8月29日) -
How to enable VirtIO-GPU Venus on QEMU explained | tm23forest.com
https://tm23forest.com/contents/how-to-enable-virtio-gpu-venus-on-qemu-explained (2026年8月29日) -
Doesn’t work egl-headless and gl.rendernode=/dev/dri/renderD128 on nvidia card · Issue #938 · virt-manager/virt-manager
https://github.com/virt-manager/virt-manager/issues/938 (2026年8月29日) -
Configuring QEMU bridge helper after “access denied by acl file” error – Just another Linux geek
https://blog.christophersmart.com/2016/08/31/configuring-qemu-bridge-helper-after-access-denied-by-acl-file-error/ (2026年8月29日) -
Benchmarking - ArchWiki
https://wiki.archlinux.org/title/Benchmarking (2026年8月29日) -
Arch Linux - vulkan-virtio 1:26.2.1-1 (x86_64)
https://archlinux.org/packages/extra/x86_64/vulkan-virtio/ (2026年8月29日) -
3D acceleration with virt-manager and nvidia gpu - Fedora Discussion
https://discussion.fedoraproject.org/t/3d-acceleration-with-virt-manager-and-nvidia-gpu/161332 (2026年8月29日) -
Windows VirtIO Drivers - Proxmox VE
https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers (2026年8月29日) -
Index of /groups/virt/virtio-win/direct-downloads/archive-virtio
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D (2026年8月29日) -
Vulkan - ArchWiki
https://wiki.archlinux.org/title/Vulkan (2026年8月29日) -
AUR (en) - blender-4.2-bin
https://aur.archlinux.org/packages/blender-4.2-bin (2026年8月29日) -
Arch Linux - vulkan-tools 1.4.357.0-1 (x86_64)
https://archlinux.org/packages/extra/x86_64/vulkan-tools/ (2026年8月29日) -
Arch Linux - mesa-utils 9.0.0-7 (x86_64)
https://archlinux.org/packages/extra/x86_64/mesa-utils/ (2026年8月29日) -
Arch Linux - lib32-mesa-utils 9.0.0-4 (x86_64)
https://archlinux.org/packages/multilib/x86_64/lib32-mesa-utils/ (2026年8月29日) -
ローカルLLM (Gemma4-12b-qatやGemma4-31B) (2026年8月29日)