Ja, es ist möglich, eine vollständige X11-Desktop-Umgebung in einem LXC-Container auszuführen.
Im Moment mache ich das auf Arch Linux. Ich werde nicht sagen, dass es "leicht" ist, da ich nicht so weit gegangen bin, Sachen aus der Standardpaket-Manager-Installation herauszunehmen, aber ich kann bestätigen, dass es sehr gut funktioniert.
Sie müssen alle Kerneltreiber sowohl auf dem Host als auch im Container installieren. Solche Dinge wie der Grafiktreiber (ich benutze nvidia). Sie müssen die Geräteknoten in dev im Container zugänglich machen, indem Sie die container.conf so konfigurieren, dass sie es zulässt. Sie müssen dann sicherstellen, dass diese Geräteknoten im Container erstellt werden (dh mknod).
Um Ihre Frage zu beantworten: JA, es funktioniert. Wenn ich Ihnen weiterhelfen oder weitere Informationen geben kann, lassen Sie es mich bitte wissen.
--- zusätzliche Informationen bereitgestellt ---
In meinem Container ... / etc / inittab startet in Run Level 5 und startet "slim" Slim ist für die Verwendung von vt09 konfiguriert:
# Path, X server and arguments (if needed)
# Note: -xauth $authfile is automatically appended
default_path /bin:/usr/bin:/usr/local/bin
default_xserver /usr/bin/X
xserver_arguments -nolisten tcp vt09
Ich verwende kein zweites X-Display auf meinem aktuellen Vt, sondern ein völlig anderes (ich kann mit STRG + ALT + Fn zwischen vielen wechseln).
Wenn Sie nicht slim verwenden, können Sie ein Konstrukt wie dieses verwenden, um X auf einem anderen vt zu starten:
/usr/bin/startx -- :10 vt10
Das startet X auf dem Display: 10 und setzt es auf vt10 (STRG + ALT + F10). Diese müssen nicht zusammenpassen, aber ich denke, es ist ordentlicher, wenn sie es tun.
Sie benötigen Ihre Containerkonfiguration, um die entsprechenden Geräte verfügbar zu machen:
# XOrg Desktop
lxc.cgroup.devices.allow = c 4:10 rwm # /dev/tty10 X Desktop
lxc.cgroup.devices.allow = c 195:* rwm # /dev/nvidia Graphics card
lxc.cgroup.devices.allow = c 13:* rwm # /dev/input/* input devices
Und Sie müssen die Geräte in Ihrem Container machen:
# display vt device
mknod -m 666 /dev/tty10 c 4 10
# NVIDIA graphics card devices
mknod -m 666 /dev/nvidia0 c 195 0
mknod -m 666 /dev/nvidiactl c 195 255
# input devices
mkdir /dev/input # input devices
chmod 755 /dev/input
mknod -m 666 /dev/input/mice c 13 63 # mice
Ich habe Eingabegeräte auch manuell konfiguriert (da wir kein udev im Container haben)
Section "ServerFlags"
Option "AutoAddDevices" "False"
EndSection
Section "ServerLayout"
Identifier "Desktop"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "gb"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Das obige geht in eine Datei /etc/X11/xorg.conf.d/10-input.conf
Nicht sicher, ob irgendetwas davon hilft, aber viel Glück!
Ja, das kannst du. Sie können auch verwenden,
lxc.mount.entry
damit Sie das Initialisierungsskript nicht mit allenmknod
Befehlen im Container ausführen müssen. Die Konfiguration von lxc container sollte also ungefähr so aussehen:Um Eingabegeräte für X zu konfigurieren, können Sie verwenden
evdev
, was besonders nützlich ist, wenn Sie denxf86-input-keyboard
Treiber nicht verwenden können . Da die genaue Anzahl derevent*
Einträge in der Konfigurationsdatei (z. B./usr/share/X11/xorg.conf.d/10-lxc-input.conf
) davon abhängt, was sich in Ihrem Container / dev / input / befindet, können Sie ein Skript verwenden, um eines zu generieren:Dies sollte ausreichen, damit X funktioniert:
Sie können auch Audio aktivieren, entweder Passing / Dev / Snd, oder Pulseaudio über TCP oder einen Socket einrichten.
quelle