Обновите 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. Вам необходимо повторить шаги еще раз.
Поскольку вы говорите, что используете Fedora 25 с Wayland, я предполагаю, что вы используете рабочий стол Gnome-Wayland.
Gnome-Wayland запускает Xwayland для поддержки X-приложений. Вы можете предоставить общий доступ к Xwayland , как и раньше, с Xorg.
В вашем примере команда отсутствует XAUTHORITY
, и вы не упоминаете xhost
. Вам нужен один из этих способов, чтобы разрешить приложениям X в докере доступ к Xwayland (или любому X).Поскольку все это не связано с Wayland, я обращаюсь к Как можно запускать приложения с графическим интерфейсом в контейнере докера? о том, как запускать приложения X в докере.
Для краткости, два решения с xhost:
xhost + SI: localuser: $ (id -un)
и создайте аналогичного пользователя с опцией запуска докера. : - user = $ (id -u): $ (id -g)
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, как в вашем примере).
Я бы порекомендовал 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)