Zum Inhalt springen

Virtio-Venus

  • Nahezu native 3D-Beschleunigung

In Betriebssystemen, die libvulkan nutzen, wie zum Beispiel Linux, BSDs und Android, kannst du eine fast native Leistung erzielen. Das geschieht, indem Aufrufe von der VM an Vulkan und dann direkt an deine GPU und zurück übersetzt werden, ohne sie durch eine VM schleusen zu müssen.

Leider ist Virtio-Venus nicht in VMM enthalten, weshalb du qemu-cli benutzen musst. Du musst dir den Namen merken, den du deiner VM gegeben hast, und wo sie sich befindet.

Sobald du eine geeignete VM installiert hast, kannst du das Terminal öffnen und einen qemu-cli-Befehl für deine virtuelle Maschine erstellen. Hier ist ein Beispiel für meine CachyOS-VM:

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 bedeutet 6 CPU-Kerne
  • -m 12G bedeutet 12 GB RAM
  • -net user,hostfwd=tcp::2222-:22 bedeutet, dass Port 22 vom Host an die VM als Port 2222 weitergeleitet wird, wenn du also eine SSH-Verbindung zur VM von einem anderen Gerät aus herstellen willst, würdest du das so machen:
Terminal window
ssh -p 2222 vmbenutzername@vmipadresse
  • -device virtio-vga-gl,hostmem=4G,blob=true,venus=true das ist der Venus-Treiber, der leider noch nicht in virt-manager ist. Sobald er da ist, wird dieser ganze Abschnitt, außer dem User-Modus, überflüssig.
  • -hostmem=4G bedeutet, ich erlaube der VM, bis zu 4 GB meines VRAMs von meiner GPU zu nutzen.
  • -object memory-backend-memfd,id=mem1,size=12G in diesem Abschnitt ist die Größe der RAM, den du ihr zugewiesen hast, also in meinem Fall 12 GB.
  • -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fd das ist die Firmware- Datei für die VM, hier steht einfach nur der Pfad dorthin.
  • -drive if=pflash,format=raw,file=.config/libvirt/qemu/nvram/archlinux_VARS.fd das ist das NVRAM der VM. Ohne das oder wenn es auf schreibgeschützt gesetzt ist, läuft die VM nicht.
  • -drive file=.local/share/libvirt/images/archlinux.qcow2 das ist der Pfad zur .qcow2-Datei (dem Speicher der VM).
    (Du siehst, mein Audiogerät ist in diesem Fall nicht ich9, sondern pipewire, das ist aber unwichtig.)