Virtio-Venus
- ネイティブに近い 3D アクセラレーション
Linux, BSD, Android などの libvulkan を使用する OS では、仮想マシンからの呼び出しを Vulkan に変換し、GPU に直接送信して仮想マシンに返すことで、VM をパススルーさせることなく、ネイティブに近いパフォーマンスを実現できます。
残念ながら VMM は Virtio-Venus に対応していないため、qemu-cli を使用する必要があります。
仮想マシンに付けた名前と、その仮想マシンの場所をメモしておいてください。
qemu-cli で Virtio-Venus を使用する
Section titled “qemu-cli で Virtio-Venus を使用する”対応している仮想マシンをインストールした後、ターミナルを開いて仮想マシン用の qemu-cli コマンドを作成できます。以下は CachyOS の仮想マシンの一例です。
qemu-system-x86_64 \ -enable-kvm \ -M q35 \ -smp 6 \ -m 12G \ -cpu host \ -net nic,model=virtio \ -net user,hostfwd=tcp::2222-:22 \ -device virtio-sound-pci,audiodev=my_audiodev -audiodev pipewire,id=my_audiodev \ -device virtio-vga-gl,hostmem=4G,blob=true,venus=true \ -vga none \ -display gtk,gl=on,show-cursor=on \ -usb -device usb-tablet \ -object memory-backend-memfd,id=mem1,size=12G \ -machine memory-backend=mem1 \ -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fd \ -drive if=pflash,format=raw,file=.config/libvirt/qemu/nvram/archlinux_VARS.fd \ -drive file=.local/share/libvirt/images/archlinux.qcow2-smp 6で 6コア の CPU を割り当て-m 12Gで 12GB の RAM を割り当て-net user,hostfwd=tcp::2222-:22でホストのポート 2222 を仮想マシンのポート 22 へ転送- これにより、ほかのデバイスから仮想マシンに SSH 接続したい場合は、以下のコマンドで行うことができます。
ssh -p 2222 <仮想マシンユーザー名>@<仮想マシンIPアドレス>-device virtio-vga-gl,hostmem=4G,blob=true,venus=trueVenus ドライバを指定- 残念ながら、まだ virt-manager では対応していません。Venus ドライバが実装されれば、ここでのユーザーモード以外に関する手順はすべて変更されます。
-hostmem=4Gでホスト GPU の VRAM のうち 4GB を割り当て-object memory-backend-memfd,id=mem1,size=12Gここでは、size は先ほど割り当てた RAM- 今回の例では 12GB になります。
-drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fdで仮想マシンで利用するファームウェアファイルのパスを指定-drive if=pflash,format=raw,file=.config/libvirt/qemu/nvram/archlinux_VARS.fdで仮想マシンの NVRAM を指定- 指定しない場合や読み取り専用である場合は仮想マシンは動作しません。
-drive file=.local/share/libvirt/images/archlinux.qcow2で仮想マシンのストレージとなる .qcow2 ファイルのパスを指定
(今回の例においてオーディオデバイスはich9ではなくpipewireになっていますが、とくに意味はありません。)