Ist es derzeit möglich, LXC-Container mit X11-Funktionen einzurichten? Ich freue mich auf den leichtesten verfügbaren X11-Container (in Bezug auf den Speicher), Hardwarebeschleunigung von Vorteil, aber nicht unbedingt erforderlich.
Wenn dies derzeit nicht möglich oder ohne weiteres verfügbar ist, ist bekannt, welche Funktionen noch implementiert werden müssen, um sie zu unterstützen?
Akzeptierte Antwort:
Ja, es ist möglich, eine vollständige X11-Desktopumgebung 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, Dinge aus der Standardinstallation des Paketmanagers zu entfernen, aber ich kann bestätigen, dass es sehr gut funktioniert.
Sie müssen alle Kernel-Treiber 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 innerhalb des Containers zugänglich machen, indem Sie Ihre container.conf so konfigurieren, dass sie dies zulässt. Sie müssen dann sicherstellen, dass diese Geräteknoten innerhalb des Containers erstellt werden (d. h. mknod).
Also, um deine Frage zu beantworten:JA, es funktioniert. Wenn ich weiter helfen oder weitere Details bereitstellen kann, lassen Sie es mich bitte wissen.
— Zusätzliche Informationen bereitgestellt —
In meinem Container…
/etc/inittab startet in Runlevel 5 und startet „slim“
Slim ist so konfiguriert, dass es vt09 verwendet:
# 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 auf meinem aktuellen vt kein zweites X-Display, sondern ein ganz anderes (zwischen vielen davon kann ich mit STRG+ALT+Fn wechseln).
Wenn Sie slim nicht verwenden, können Sie ein Konstrukt wie dieses verwenden, um X auf einem anderen vt zu starten:
/usr/bin/startx -- :10 vt10
Dadurch wird X auf dem Display :10 gestartet und auf vt10 gesetzt (STRG+ALT+F10).
Diese müssen nicht übereinstimmen, aber ich denke, es ist besser, wenn sie es tun.
Sie benötigen Ihre Containerkonfiguration, um die relevanten Geräte wie folgt 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 erstellen:
# 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 auch Eingabegeräte manuell konfiguriert (da wir udev nicht 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
Verwandte:Wie kann man X11-Anwendungen remote ausführen?Ich bin mir nicht sicher, ob irgendetwas davon hilft, aber viel Glück!