Как я могу запустить графическое приложение в контейнере в Wayland?

Обновите Kali до последней версии, которая является 4.8.0-kali1-amd64

cd /usr/lib/vmware/modules/source

tar xf vmmon.tar

tar xf vmnet.tar

cd vmmon-only

make

cd ../vmnet

make

cd ..

mkdir /lib/modules/`uname -r`/misc

cp vmmon.o /lib/modules/`uname -r`/misc/vmmon.ko

cp vmnet.o /lib/modules/`uname -r`/misc/vmnet.ko

depmod -a

/etc/init.d/vmware restart

Каждый раз, когда появляется новая сборка Kali. Вам необходимо повторить шаги еще раз.

15
14.12.2016, 17:51
2 ответа

Поскольку вы говорите, что используете Fedora 25 с Wayland, я предполагаю, что вы используете рабочий стол Gnome-Wayland.

Gnome-Wayland запускает Xwayland для поддержки X-приложений. Вы можете предоставить общий доступ к Xwayland , как и раньше, с Xorg.

В вашем примере команда отсутствует XAUTHORITY , и вы не упоминаете xhost . Вам нужен один из этих способов, чтобы разрешить приложениям X в докере доступ к Xwayland (или любому X).Поскольку все это не связано с Wayland, я обращаюсь к Как можно запускать приложения с графическим интерфейсом в контейнере докера? о том, как запускать приложения X в докере.

Для краткости, два решения с xhost:

  1. Разрешите локальному пользователю доступ через xhost: xhost + SI: localuser: $ (id -un) и создайте аналогичного пользователя с опцией запуска докера. : - user = $ (id -u): $ (id -g)
  2. Не рекомендуется: разрешить root-доступ к X с помощью xhost + SI: localuser: root

Связанный Ловушка : X обычно использует разделяемую память (расширение X MIT-SHM ). Контейнеры Docker изолированы и не могут получить доступ к общей памяти. Это может привести к сбоям рендеринга и сбоям доступа к ОЗУ. Этого можно избежать с помощью параметра запуска докера - ipc = host . Это влияет на изоляцию контейнера, поскольку отключает пространство имен IPC. Сравните: https://github.com/jessfraz/dockerfiles/issues/359


Чтобы запускать приложения Wayland в докере без X, вам понадобится работающий композитор Wayland, такой как Gnome-Wayland или Weston . Вы должны поделиться сокетом Wayland. Вы найдете его в XDG_RUNTIME_DIR , а его имя хранится в WAYLAND_DISPLAY . Поскольку XDG_RUNTIME_DIR разрешает доступ только своему владельцу, вам нужен тот же пользователь в контейнере, что и на хосте. Пример:

docker run -e XDG_RUNTIME_DIR=/tmp \
           -e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
           -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY  \
           --user=$(id -u):$(id -g) \
           imagename waylandapplication

Приложения QT5 также нуждаются в -e QT_QPA_PLATFORM = wayland и должны запускаться с imagename dbus-launch waylandapplication


x11docker для приложений X и Wayland в докере все в одном решении.Он также заботится о сохранении изоляции контейнера (который теряется, если просто поделиться отображением хоста X, как в вашем примере).

27
27.01.2020, 19:50

Я бы порекомендовал Sommelier от Google. Он позволяет запускать приложения Wayland ИЛИ X11 и предоставляет сокеты, которые эти приложения ищут, чтобы получить их на текущем сервере отображения.https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/sommelier/

Простой способ -этого должен работать на любой системе, а не только на Crouton/Crostini на ChromeOS.

https://github.com/dnschneid/crouton/wiki/Sommelier-(A -больше -собственный -альтернатива -к -xiwi)

2
27.01.2020, 19:50

Теги

Похожие вопросы