Przejdź do głównej zawartości

Virtio-Venus

  • Akceleracja 3D zbliżona do natywnej

W systemach operacyjnych, które używają libvulkan, takich jak Linux, BSD i Android, można osiągnąć wydajność zbliżoną do natywnej poprzez tłumaczenie wywołań z maszyny wirtualnej do Vulkana, a następnie bezpośrednio do procesora graficznego i z powrotem, bez konieczności przekazywania ich do maszyny wirtualnej.

Niestety, Virtio-Venus nie jest dostępne w VMM, dlatego będzie wymagało użycia qemu-cli. Musisz zanotować nazwę, którą nadałeś swojej maszynie wirtualnej i gdzie się ona znajduje.

Po zainstalowaniu dowolnej kwalifikującej się maszyny wirtualnej możesz otworzyć terminal i utworzyć polecenie qemu-cli dla swojej maszyny wirtualnej. Oto przykład mojej maszyny wirtualnej CachyOS:

Terminal window
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 oznacza 6 rdzeni procesora
  • -m 12G oznacza 12 GB pamięci RAM
  • -net user,hostfwd=tcp::2222-:22 oznacza, że port 22 jest przekierowywany z hosta do maszyny wirtualnej jako port 2222, więc jeśli chciałbyś nawiązać połączenie SSH z maszyną wirtualną z innego urządzenia, zrobiłbyś to tak:
Terminal window
ssh -p 2222 nazwa_uzytkownika_vm@adres_ip_vm
  • -device virtio-vga-gl,hostmem=4G,blob=true,venus=true to jest sterownik Venus, niestety jeszcze nieobecny w virt-managerze. Gdy się tam pojawi, cała ta sekcja, oprócz trybu użytkownika, stanie się zbędna.
  • -hostmem=4G oznacza, że pozwalam maszynie wirtualnej na użycie do 4 GB mojego VRAM z karty graficznej.
  • -object memory-backend-memfd,id=mem1,size=12G w tej sekcji rozmiar to ilość pamięci RAM, którą przydzieliłeś, czyli w moim przypadku 12 GB.
  • -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fd to jest plik firmware dla maszyny wirtualnej, a to po prostu ścieżka do niego.
  • -drive if=pflash,format=raw,file=.config/libvirt/qemu/nvram/archlinux_VARS.fd to jest nvram maszyny wirtualnej, bez tego lub z ustawieniem tego na tylko do odczytu, maszyna wirtualna się nie uruchomi.
  • -drive file=.local/share/libvirt/images/archlinux.qcow2 to jest ścieżka do pliku .qcow2 (pamięci masowej maszyny wirtualnej).
    (Możesz zauważyć, że moje urządzenie audio w tym przypadku to nie ich9, ale pipewire, co jest nieistotne).