KVM, video QXL und video virtio – Video-Auflösung des Gnome-Desktops eines Debian 8-Gastystems einstellen

Das Gespann KVM/Qemu ist großartig und aus meinem Linux-Leben nicht mehr wegzudenken. Vorgestern habe ich ein "Debian 8"-Gast-System für Testzwecke auf einem KVM-Host aufgesetzt, der unter "Opensuse Leap 42.2" betrieben wird. Dabei fiel mir auf, dass bzgl. des Punktes "Video" (-System) während der Konfiguration der virtuellen Maschine mittels "virt-manager" nun neben dem guten und vertrauten QXL auch eine "virtio"-Komponente zur Auswahl bereitsteht.

Da der Hypervisor hier wohl direkt über die Hostsystem-Treiber auf die Grafikkarte (bzw. der Speicheradressen) des Hostes zugreift, ergibt sich die Frage, auf welcher Grundlage dabei eigentlich die Auflösung und damit die Größe bestimmt wird, in der das Gast-Fenster samt Gast-Desktop (hier: Gnome 3) unter dem X-Window-System des Hosts (hier: unter KDE-Plasma5) dargestellt wird.

Nachdem ich an der Nvidia-Graka des Hostes mehrere Schirme mit unterschiedlicher Auflösung betreibe, kann ja kaum die Auflösung des Hosts übernommen werden. Das wäre im Einzelfall ja auch nicht besonders ökonomisch. Es muss schon angemessene Einstellmöglichkeiten im Gast-System selbst geben, die sich dann auf die Darstellung des Gast-Desktops auf dem Host-Desktop niederschlagen.

Installiert man einen KVM-Gast und kümmert sich gar nicht um die Konsolen-Auflösung, so geht virt-manager von einer Standardauflösung von 800x600x16 für die Darstellung der GUI des Gast-Systems unter dem Spice-Protokoll aus. Diese Auflösung schlägt dann typischerweise auch auf den Gnome- oder KDE-Desktop des Gastes durch. Definiert man als Video-Einheit, also die virtuelle Graka, aber QXL, so kann man unter der Gnome- oder KDE-GUI des Gastes die Auflösung des Desktops jedoch dynamisch - d.h. im laufenden Betrieb - abändern.

Ich zeige die Einstellmöglichkeiten nachfolgend für QXL, den Gnome-Desktop, TTYs und gehe abschließend auch kurz auf eine Wechsel zu "virtio" anstelle von QXL ein.

Gnome-Desktop-Auflösung des Gastes setzen

Das nachfolgende Bild zeigt den Gnome 3 Desktop eines Debian-8-Gastes mit QXL in einer Auflösung von 1920x1080x32 auf einem KDE-Schirm des SuSE-KVM-Hostes mit einer 2560x1440x32-Auflösung.

Die Auflösung des Gnome-Desktops eiens KVM-Gastsystems kann man (zumindest im Falle von QXL) sehr einfach über die "Gnome-Einstellungen=>Monitore" festlegen.

Das mögliche Auflösungsspektrum wird dabei offenbar nur durch die Auflösung des aktuellen Host-Schirms begrenzt. Diese Einstellungen beziehen sich aber nur auf den Desktop des Gastes - nicht jedoch dessen Konsolen-TTYs.

Hinweis: Hat man einen KVM-Gast mit KDE-Plasma5 so verwendet man "systemsettings5 &" und dort den Punkt "Anzeige und Monitor", um die KDE-Auflösung festzulegen.

Das Tolle ist: Man kann unter QXL/Spice auch bei den gezeigten hohen Auflösungen wirklich flüssig arbeiten! Auch mit transparenten Fenstern! Da ist in den letzten Jahren ganze Arbeit geleistet worden. Vielen Dank an die Entwickler! (Vor allem wohl bei Red Hat.)

Auflösung der Debian8-Gast-TTYs setzen

Das "virt-manager"-Unterfenster zur Anzeige eines Gastes über Spice bietet einem dankenswerterweise einen Menüpunkt "Send Key" an, mit dessen Hilfe man Steuersequenzen wie Ctrl-Alt-F1 auch an den KVM-Gast schicken kann. So gelangt man dann u.a zu den Gast-Konsolen-TTYs "tty1" bis tty6. Um deren Auflösung von 800x600 auf vernünftige Werte abzuändern, muss der Framebuffer-Support des Hypervisors beeinflusst werden. Dies ist unter Debian 8 über Grub-Einstellungen möglich.

Hierzu editiert man mit Root-Rechten die Datei "/etc/default/grub" bzgl. zweier Zeilen (eine davon ist auszukommentieren):

GRUB_GFXMODE=1920x1080x32
GRUB_GFXPAYLOAD_LINUX=keep

Natürlich kann man auch eine andere definierte Standard-Auflösung als die für meinen Fall angegebene wählen.

Danach ist nach einem unten angegebenen Link nur noch das Absetzen eines "update-grub" (erfordert Root-Rechte) nötig. Und tatsächlich: Nach einem Reboot wiesen meine TTYs die gewünschte Konsolenauflösung auf.

Was passiert bei einem Wechsel von QXL zu "virtio"?

Wie gesagt, bietet die unter Opensuse Leap 42.2 verfügbare KVM-Implementierung die Möglichkeit an, für das Video-Device eines KVM-Gastes "virtio" statt QXL (oder weit weniger leistungsfähigen Treibern) zu wählen.

Welche Folgen hat ein Wechsel zu dieser Darstellungsart, bei der direkt auf die Host-HW zugegriffen wird?
Auf meinem System bislang keinerlei offenkundig negativen. Das Zeichnen der einzelnen Gnome-Fenster auf dem Gastdesktop geht bei sehr schnellen Bewegungen dieser Fenster über die Fläche des Gastdesktops gefühlt noch etwas flüssiger läuft als beim Einsatz von QXL. Das ganze grafische Verhalten des Gastes im "virt-manager"-Fenster ist danach so gut, dass man auch bei höchster Auflösung von der 2D-Grafik her praktisch keinen Unterschied zur Arbeit auf einem nativen System mehr merkt. Das ist wirklich beeindruckend gut!

Einen kleinen Unterschied gibt es aber doch:
Unter den "Gnome-Einstellungen=>Monitore" lässt sich die Auflösung nicht mehr dynamisch wie im Fall von QXL ändern. Für das Einblenden des grafischen Gast-Outputs in den Speicherbereich der realen Graka zählt allein die Auflösung, die man wie oben beschrieben für die Unterstützung des virtuellen Gast-Framebuffers durch den Hypervisor eingestellt hat.

Damit kann ich aber gut leben; wenn ich jemals eine dynamische Änderung des Gnome-Desktops eines KVM-Gastes brauchen sollte, verwende ich halt QXL.

Hingewiesen sei auch darauf, dass sich das gesamte Fenster zur Darstellung des KVM/Qemu-Gastes, das man vom virt-manager aus geöffnet hat, bei entsprechender Einstellung unter dem Menüpunkt "View" dynamisch skalieren lässt.

Auch das geht sehr flüssig und verzögerungsfrei!

Abschließend sollte ich noch sagen, dass auf meinem Arbeitsplatzrechner eine Nvidia GTX 960 ihren Dienst unter dem proprietären Nvidia-Treiber in der Version 375 verrichtet. Und diejenigen Gnome-Freunde, die sich fragen, wieso die dargestellten Terminals einen transparenten Hintergrund aufweisen,obwohl die Gnome-Entwickler das doch trotz aller Proteste abgeschafft hatten: Es handelt sich um LXTerminals! Die reagieren zudem auch etwas flotter als das Gnome-eigene Terminal.

Viel Freude weiterhin mit Linux und KVM/Qemu!

Links

https://superuser.com/questions/598374/how-to-change-the-resolution-of-the-bash-for-a-debian-vm

Schreibe einen Kommentar