Warum ändert SSH den Virgl OpenGL-Renderer zurück zum llvmpipe-Software-Renderer? Kann ich Virgl in der SSH-Sitzung behalten?

Warum ändert SSH den Virgl OpenGL-Renderer zurück zum llvmpipe-Software-Renderer? Kann ich Virgl in der SSH-Sitzung behalten?

Ich habe eine Qemu-VM erstellt, wobei sowohl Host als auch Gast Ubuntu 20.04 sind. Dann starte ich die Qemu-VM mit dem Befehl

qemu-system-x86_64 ubuntu-desktop.qcow2 -m 2G -smp 2 -device virtio-vga-gl -display gtk,gl=on -nic user,hostfwd=tcp::5555-:22

Wenn ich den Desktop des Gast-Ubuntu öffnen und in sein Terminal eingeben kann

glxinfo -B

-XDie Ausgabe zeigt mir, dass der OpenGL-Renderer „virgl“ ist. Wenn ich mich jedoch per SSH mit Option und Typ in das Gast-Ubuntu einlogge glxinfo -B, sagt die Ausgabe, dass der OpenGL-Renderer „llvmpipe (LLVM 13.0.0, 128 Bit)“ ist, was ein Software-OpenGL-Renderer ist.

Warum ändert SSH den Virgl OpenGL-Renderer zurück zum llvmpipe-Software-Renderer? Gibt es eine Möglichkeit, den ursprünglichen „Virgl“-OpenGL-Renderer in der SSH-Sitzung beizubehalten, wie ich ihn im Qemu-Fenster sehe?

Antwort1

Die Ausgabe zeigt mir, dass der OpenGL-Renderer „virgl“ ist. Wenn ich mich jedoch mit der Option -X per SSH in das Gast-Ubuntu einlogge und glxinfo -B eingebe, sagt die Ausgabe, dass der OpenGL-Renderer „llvmpipe (LLVM 13.0.0, 128 Bit)“ ist, was ein Software-OpenGL-Renderer ist.

Warum ändert SSH den Virgl OpenGL-Renderer zurück zum llvmpipe-Software-Renderer? Gibt es eine Möglichkeit, den ursprünglichen „Virgl“-OpenGL-Renderer in der SSH-Sitzung beizubehalten, wie ich ihn im Qemu-Fenster sehe?

Denn die -XOption veranlasst glxinfo zur Kommunikation mit demGastgeberX-Server, nicht der des Gastes. Da GLX „GL über X11“ ist, bedeutet dies, dass glxinfo die verfügbaren Funktionen des Xorg des Hosts anzeigt – eingeschränkt durch die Tatsache, dass es kommuniziertüber das Netzwerk,daher kein direkter SHM- oder DRI-Zugriff. (Moderne X11-Programme sind beispielsweise stark darauf angewiesen, Bitmaps über MIT-SHM direkt mit dem X-Server austauschen zu können.)

Wenn Sie den X-Server des Gastes verwenden möchten,nicht verwenden -Xnoch-Ysondern definieren Sie DISPLAY(und möglicherweise auch XAUTHORITY), dass auf den X-Server verwiesen wird, der bereits im Gast ausgeführt wird.

(Meistens ist es display :0, aber der Xauth-Pfad kann sich ändern, daher sollten Sie die DISPLAY- und XAUTHORITY-Werte wirklich über ein „lokales“ Terminal im Gast überprüfen. Bei neueren Versionen finden Sie diese Informationen möglicherweise auch in systemctl --user show-environment– das ist eine zuverlässige Quelle.)

Wenn Sie jedoch die virtuelle GPU des Gasts verwenden und gleichzeitig weiterhin X Windows über SSH auf dem Host anzeigen möchten, können Sie vermutlich kein GLX verwenden, sondern benötigen EGL-basierte Software (prüfen Sie, ob auf eglinfodie virtuelle GPU zugegriffen werden kann).

Alternativ können Sie die Anwendungen auf dem Gast ausführen, sie aber über VNC (x0vncserver) oder über das SPICE-Remoteprotokoll von Qemu steuern (das genau wie VNC/RDP über das Netzwerk verwendet werden kann).

verwandte Informationen