GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Lxc; Bereitstellen von Images mit dem kleinstmöglichen X11?

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!


Linux
  1. Hinter den Kulissen mit Linux-Containern

  2. So erstellen und starten Sie LXC-Linux-Container mit LXC-Befehlen

  3. Es ist möglich, eine .dll unter Linux zu verwenden

  4. Kann Docker in einem Linux-Container ausgeführt werden?

  5. LXD-Container und Netzwerke mit statischer IP

Ersetzen Sie unter Linux du durch Staub

wc Linux-Befehl mit Beispielen

Linux-IP-Befehl mit Beispielen

15 Linux-PS-Befehl mit Beispielen

Linux-Container mit LXC auf CentOS 7 / RHEL 7 einrichten

Docker-Tutorial – Erste Schritte mit Docker unter Linux