Help setting up a minimal fast QEMU KVM Tool

I used Virtualbox first, switched to GNOME Boxes, then to Virt-manager as it was said to be better.

But in the end, at least on my Laptop, it sucks extremely. I have no OpenGL and extreme lag. Saw a Video about setting up QEMU, followed instructions and the result was very fast, but the viewer was not good.

I am using my existing virt-manager images, read them and display as a kdialog. There I choose it, the choice gets piped into the qemu command. Afterwards the display opens.

Either I have spice working but no OpenGL, or I have VNC and OpenGL but its very slow anyways.

Fedora KDE (Kinoite), Amd graphics card laptop

Edit: some more details.

I want a fast, wayland-native client. Some AI told me spice-gtk is the only one there, which would be not that nice on KDE as it would pull all the GTK dependencies.

Can you run all that stuff in a Podman container? I would just use a Fedora39 Distrobox then.

I used this script before:

#!/bin/bash

# Define the directory where qcow2 images are stored
IMAGE_DIR="/var/lib/libvirt/images/"

# Get a list of qcow2 images in the directory
IMAGE_LIST=$(pkexec sudo ls "$IMAGE_DIR" | grep -E '\.qcow2$')

# Create an array for the menu items
menu_items=()

# Populate the array with tag-item pairs
for image in ${IMAGE_LIST[@]}; do
    menu_items+=("$image" "${image%.qcow2}")
done

# Use kdialog to display a menu and get the selected image
selected_image=$(kdialog --menu "Select a qcow2 image:" "${menu_items[@]}" --title "QEMU Launcher")

# Check if the user selected an image
if [ -n "$selected_image" ]; then
    # QEMU with Virt-Viewer
    pkexec sudo qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -m 8192 -device virtio-gpu-gl  -display spice-app,gl=on -drive file=${IMAGE_DIR}${selected_image},format=qcow2


else
    # User canceled or closed the dialog
    echo "Operation canceled by user."
fi

# Use remote-viewer with title
virt-viewer spice+unix:///tmp/.RTN4C2/spice.sock --title "QEMU - ${selected_image%.qcow2}"
# or this viewer?
# remote-viewer spice://localhost:5900 --title "QEMU - ${selected_image%.qcow2}"
# or spice-gtk?
29 points · 15 comments · view on lemmy.world

15 Comments

Helix@feddit.de · 13 pts · 2y (10 replies)

You need virtio. If you have an internal GPU check out https://looking-glass.io for maximum performance.

folkrav@lemmy.world · 4 pts · 2y (1 reply)
[ removed ]
gecked@lemmy.sdf.org · 2 pts · 2y

Yes

Pantherina@feddit.de · 1 pts · 2y

I have a Laptop with AMD Vega graphics, kinda dedicated and virtualization enabled

scottmeme@sh.itjust.works · -1 pts · 2y (6 replies)

Are you a bot or a human?

Helix@feddit.de · 4 pts · 2y

Yes.

Quackdoc@lemmy.world · 0 pts · 2y (4 replies)

its a hard sentence to read for sure lol

scottmeme@sh.itjust.works · 1 pts · 2y (3 replies)

I only asked because they have the bot icon next to their name.

Quackdoc@lemmy.world · 1 pts · 2y (2 replies)

What client do you use? I see no such thing.

scottmeme@sh.itjust.works · 1 pts · 2y (1 reply)

Jerboa

Quackdoc@lemmy.world · 1 pts · 2y

ah I am using liftoff, maybe it doesn't support it, just logged into via webpage and I do now

UntouchedWagons@lemmy.ca · 10 pts · 2y (1 reply)

Yeah you're always going to have poor video performance in VMs unless you do stuff like gpu pass through which isn't practical on a laptop.

Pantherina@feddit.de · 1 pts · 2y

No i meant having any GPU at all. Currently either I cant connect to that VM, or its slow

laenurd@lemmy.lemist.de · 8 pts · 2y (1 reply)

If your guest OS is Linux, you can use Virgl to get much better OpenGL performance in the VM.

Pantherina@feddit.de · 2 pts · 2y

Already installed that!

Quackdoc@lemmy.world · 7 pts · 2y

what Guest OS are you running? IF it is windows, the opengl driver is still a WIP and hasnt been merged yet IIRC.

I always reccomend using qemu cli, for qemu-cli you can do something like

-device virtio-gpu-gl  -display spice-app,gl=on

or if you are doing remote VMs you can use a remote spice viewer and connect to the port like so

-device virtio-gpu-gl  -display egl-headless  -spice port=3001,disable-ticketing

EDIT: for more reading, you can go through these docs I wrote for bliss. they are oriented more for android but they are still widely applicable https://docs.blissos.org/installation/install-in-a-virtual-machine/advanced-qemu-config/