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/tty0
das Fehlen beschwert , und ich kann mknod
dieses Gerät im Gast nicht ausführen, weil mir eine Berechtigung verweigert wird, selbst wenn ich es als Root ausführe.
quelle
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!
/tmp
als zusätzliches Dateisystem in der Gastkonfiguration hinzu, das/tmp
auf dem Host weitergeleitet wird.xhost +
ein Terminalfenster ein.DISPLAY=:0 Xephyr :2 -screen 1024x768 -dpi 96 &
DISPLAY=:2 /etc/X11/xinit/Xsession
innerhalb des Gasts (Ersetzen Sie beide
2
s 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).
quelle