Fast X für LXC-Gast auf localhost?

12

Wie kann ich X-Apps in einem LXC-Container effizient ausführen?

ssh -Y guest

ist zu langsam - es gibt keine Grafikbeschleunigung mit ssh -Y- alles muss mit dem traditionellen X11-Protokoll über das virtuelle Netzwerk übertragen werden.

Das Kopieren und Einfügen zwischen Host- und Gast-Apps ist wünschenswert, aber nicht unbedingt erforderlich. Das Ausführen von zwei X-Servern, einem für den Host und einem für den Gast, ist (für meine Zwecke) unerlässlich.

Ich kann einen nativen Xorg nicht innerhalb des Gasts ausführen, weil er sich über /dev/tty0das Fehlen beschwert , und ich kann mknoddieses Gerät im Gast nicht ausführen, weil mir eine Berechtigung verweigert wird, selbst wenn ich es als Root ausführe.

Robin Green
quelle

Antworten:

12

Vielleicht möchten Sie xpra oder NX, VNC usw. ausprobieren. Schauen Sie sich auch VirtualGL an, wenn Sie eine GL-Beschleunigung wünschen.

Wenn Sie ein Verzeichnis für den Host freigeben können, können Sie mmap mit xpra verwenden (Angabe des Pfads zur mmap-Datei), wodurch sich die Leistung erheblich verbessert.

totaam
quelle
Kann jemand ein sicheres Beispiel für die Verwendung von Xpra und Xephyr mit LXC geben?
Taufe
3

HINWEIS : Dieser Ansatz ist ein bisschen wie ein Hack. Es unterstützt auch nicht das Kopieren und Einfügen zwischen Host und Gast - und ist völlig unsicher!

  1. Fügen Sie /tmpals zusätzliches Dateisystem in der Gastkonfiguration hinzu, das /tmpauf dem Host weitergeleitet wird.
  2. Stellen Sie sicher, dass Ihr X-Server nicht für die Annahme von Netzwerkverbindungen jeglicher Art konfiguriert ist, da im nächsten Schritt die X-Sicherheit deaktiviert wird.
  3. Geben Sie xhost +ein Terminalfenster ein.
  4. Starten Sie den LXC-Gast
  5. Melden Sie sich als Ihr gewöhnlicher Benutzer im Gast an (dh nicht als root) und geben Sie ein

DISPLAY=:0 Xephyr :2 -screen 1024x768 -dpi 96 &

DISPLAY=:2 /etc/X11/xinit/Xsession

innerhalb des Gasts (Ersetzen Sie beide 2s durch die Nummer des zu verwendenden Bildschirms, wenn Sie damit eine Verbindung zu mehreren LXC-VMs herstellen.) Passen Sie die Parameter Auflösung ( -screen) und DPI ( -dpi) entsprechend an.

Dadurch werden "Proxy" -Verbindungen zu einem Xephyr-verschachtelten X-Server eingerichtet, der im Gast ausgeführt wird (der sowohl UNIX-Domänensockets als auch die MIT-SHM-Erweiterung verwendet), und eine weitere Verbindung von Xephyr zu Ihrem Host-X-Server (der UNIX-Domänensockets verwendet) , kann aber, soweit ich feststellen kann, MIT-SHM aufgrund des Designs von LXC nicht verwenden. Dies scheint die schnellstmögliche Konfiguration mit einem LXC-Gast zu sein, zumindest mit dem Open Source-Treiber für meine Hardware (nvidia).

Robin Green
quelle
Gibt es eine sichere Möglichkeit, Xephyr mit LXC zu verwenden? Die X11-Isolation mit Xephyr wird von Firejail unterstützt, sodass wir es wahrscheinlich auch mit LXC richtig machen können.
Taufe