Linux – LXC; развертывание изображений с мельчайшим возможным X11

в настоящее время можно настроить контейнеры LXC с возможностями X11? Я с нетерпением жду самого легкого доступного контейнера X11 (по памяти), аппаратного ускорения плюс, но не существенного.

Если в настоящее время это невозможно или доступно, известно ли, какая функциональность должна быть реализована для поддержки?

2 Solutions collect form web for “Linux – LXC; развертывание изображений с мельчайшим возможным X11”

да, можно запустить полную среду рабочего стола X11 внутри контейнера LXC.

Прямо сейчас, я делаю это на Arch Linux. Я не буду говорить, что это «свет», поскольку я не пошел так далеко, как пытался вырезать материал из стандартной установки пакета, но могу подтвердить, что он работает очень хорошо.

Вы должны установить любые драйверы ядра в HOST, а также в контейнер. Такие вещи, как графический драйвер (я использую nvidia). Вы должны сделать узлы устройства в dev доступными внутри контейнера, настроив ваш container.conf, чтобы разрешить его. Затем вам необходимо убедиться, что эти узлы устройства созданы внутри контейнера (т. Е. Mknod).

Итак, чтобы ответить на ваш вопрос: ДА это действительно работает. Если я могу помочь в дальнейшем или предоставить более подробную информацию, пожалуйста, дайте мне знать.

— дополнительная информация предоставлена ​​—

В моем контейнере … / etc / inittab запускается на уровне 5-го уровня и запускает «slim». Slim настроен на использование 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 

Я не использую второй X-дисплей на моем текущем vt, но совершенно другой (я могу переключаться между многими из них с помощью CTRL + ALT + Fn).

Если вы не используете slim, вы можете использовать такую ​​конструкцию, чтобы запустить X на другой vt:

  /usr/bin/startx -- :10 vt10 

Это запустит X на дисплее: 10 и положите его на vt10 (CTRL + ALT + F10). Они не должны совпадать, но я думаю, что они более аккуратны, если они это сделают.

Вам нужна ваша конфигурация контейнера, чтобы сделать соответствующие устройства доступными, например:

  # 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 

И вам нужно сделать устройства в вашем контейнере:

  # 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 

Я также вручную настроил устройства ввода (поскольку у нас нет udev в контейнере)

  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 

Вышеупомянутый файл находится в файле /etc/X11/xorg.conf.d/10-input.conf

Не уверен, что это поможет, но удачи!

Да, вы можете это сделать. Вы также можете использовать lxc.mount.entry чтобы не запускать скрипт инициализации внутри контейнера со всеми командами mknod . Таким образом, конфигурация контейнера lxc должна содержать примерно следующее:

 lxc.cgroup.devices.allow = c 4:7 rwm lxc.mount.entry = /dev/tty7 dev/tty7 none bind,optional,create=file lxc.cgroup.devices.allow = c 4:8 rwm lxc.mount.entry = /dev/tty8 dev/tty8 none bind,optional,create=file lxc.cgroup.devices.allow = c 10:63 rwm lxc.mount.entry = /dev/vga_arbiter dev/vga_arbiter none bind,optional,create=file lxc.cgroup.devices.allow = c 13:* rwm lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir lxc.cgroup.devices.allow = c 29:0 rwm lxc.mount.entry = /dev/fb0 dev/fb0 none bind,optional,create=file # /dev/dri/card0 AMD Graphics card lxc.cgroup.devices.allow = c 226:0 rwm lxc.cgroup.devices.allow = c 226:64 rwm lxc.cgroup.devices.allow = c 226:128 rwm lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir #lxc.cgroup.devices.allow = c 195:* rwm # /dev/nvidia Graphics card #lxc.mount.entry = /dev/nvidia0 dev/nvidia0 none bind,optional,create=file #lxc.mount.entry = /dev/nvidiactl dev/nvidiactl none bind,optional,create=file #lxc.cgroup.devices.allow = c 116:* rwm #lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir 

Чтобы настроить устройства ввода для X, вы можете использовать evdev , что особенно полезно, если вы не можете использовать xf86-input-keyboard . Поскольку точное количество event* в файле конфигурации (например, /usr/share/X11/xorg.conf.d/10-lxc-input.conf ) будет зависеть от того, что находится в вашем / dev / input / вашем контейнере, вы может использовать скрипт для генерации одного:

 #!/bin/bash cat >/usr/share/X11/xorg.conf.d/10-lxc-input.conf << _EOF_ Section "ServerFlags" Option "AutoAddDevices" "False" EndSection _EOF_ cd /dev/input for input in event* do cat >> /usr/share/X11/xorg.conf.d/10-lxc-input.conf <<_EOF_ Section "InputDevice" Identifier "$input" Option "Device" "/dev/input/$input" Option "AutoServerLayout" "true" Driver "evdev" EndSection _EOF_ done 

Этого должно хватить для работы X:

 /usr/bin/startx -- :0 vt07 

Вы также можете включить звук, передавая / dev / snd, или настраивая pulseaudio через tcp или сокет.

  • как начать работу с сервером окон x из linux mint?
  • Сервер X запускается только с правами root
  • Как я могу изменить свой конфигурационный файл Xorg, чтобы исправить искажение экрана, которое я испытываю?
  • изменение xorg драйвера для нетбука с интегрированной графикой cedarview
  • Как заменить часть имени хоста на xauth (OLD: как перенаправить вывод команды xauth?)
  • Какие шаги связаны с переносом приложения Xorg OpenGL в DirectFB?
  • Как я могу просто настроить температуру монитора в X?
  • Xorg-сервер 1.16+ на CentOS 7
  • Ограничить пользователя определенным местом?
  • Ошибка Startx во FreeBSD
  • Почему настольная блокировка перестает работать через некоторое время?
  • Linux и Unix - лучшая ОС в мире.