tak, możliwe jest uruchomienie pełnego środowiska pulpitu X11 w kontenerze LXC.
W tej chwili robię to na Arch Linux. Nie powiem, że to „lekkie”, ponieważ nie posunąłem się nawet do próby usunięcia rzeczy ze standardowej instalacji menedżera pakietów, ale mogę potwierdzić, że działa bardzo dobrze.
Musisz zainstalować dowolne sterowniki jądra w HOST, a także w kontenerze. Takie rzeczy jak sterownik karty graficznej (używam nvidii). Musisz sprawić, aby węzły urządzeń w dev były dostępne w kontenerze, konfigurując plik container.conf, aby na to zezwolił. Następnie musisz się upewnić, że te węzły urządzeń są utworzone w kontenerze (tj. Mknod).
Tak więc, aby odpowiedzieć na pytanie: TAK, to działa. Jeśli mogę w czymś pomóc lub podać więcej szczegółów, proszę dać mi znać.
--- dodatkowe informacje dostarczone ---
W moim kontenerze / etc / inittab rozpoczyna się na poziomie uruchomienia 5 i uruchamia „slim” Slim jest skonfigurowany do używania vt09:
# 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
Nie używam drugiego wyświetlacza X na moim obecnym vt, ale zupełnie innego (mogę przełączać się między wieloma z nich za pomocą CTRL + ALT + Fn).
Jeśli nie używasz slim, możesz użyć takiej konstrukcji, aby uruchomić X na innym vt:
/usr/bin/startx -- :10 vt10
To uruchomi X na wyświetlaczu: 10 i umieści go na vt10 (CTRL + ALT + F10). Te nie muszą się zgadzać, ale myślę, że lepiej, jeśli tak.
Potrzebujesz konfiguracji kontenera, aby udostępnić odpowiednie urządzenia, takie jak to:
# 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
I musisz zrobić urządzenia w swoim kontenerze:
# 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
Również ręcznie skonfigurowałem urządzenia wejściowe (ponieważ nie mamy udev w kontenerze)
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
Powyższe dzieje się w pliku /etc/X11/xorg.conf.d/10-input.conf
Nie jestem pewien, czy coś z tego pomoże, ale powodzenia!
Tak, możesz to zrobić. Możesz także użyć
lxc.mount.entry
tej opcji, aby nie trzeba było uruchamiać skryptu inicjującego w kontenerze ze wszystkimimknod
poleceniami. Więc konfiguracja kontenera lxc powinna zawierać coś takiego:Aby skonfigurować urządzenia wejściowe dla X, możesz użyć
evdev
, co jest szczególnie przydatne, jeśli nie możesz użyćxf86-input-keyboard
sterownika. Ponieważ dokładna liczbaevent*
wpisów w pliku konfiguracyjnym (np./usr/share/X11/xorg.conf.d/10-lxc-input.conf
) Będzie zależała od zawartości Twojego kontenera / dev / input /, możesz użyć skryptu do wygenerowania jednego:To powinno wystarczyć, aby X działał:
Możesz także włączyć audio, przekazując / dev / snd lub konfigurując pulseaudio za pośrednictwem tcp lub gniazda.
źródło