Kali Linux — переход на GNOME из XFCE в KEX на WSL2 (WIN11). Как?

Я не могу переключиться на среду рабочего стола Gnome в Kali Linux, работающем на WSL2. Я загружаюсь с помощью kex (kex -s). Уже установлено обновление Gnome до последней версии, но оно всегда загружается в Xfce.

Попробовал это руководство: https://www.youtube.com/watch?v=pX7RHXRgBLs&ab_channel=500ATC , используя https://sourceforge.net/projects/vcxsrv/ , но когда я запускаю с терминала, у меня появляется ошибка «что-то пошло не так».

это тоже не работает: https://www.youtube.com/watch?v=SVUDIWKh_w0&ab_channel=TechSolutionZ.

Спасибо.

1 ответ

Ну, прошло много времени с тех пор, как я работал с Кали или Кексом, но, по крайней мере, мне удалось уговорить Гнома идти вперед.

Сначала несколько замечаний:

  • Этот ответ основан на нескольких моих предыдущих ответах на Ask Ubuntu:

  • Gnome требует Systemd, а Systemd плохо работает с WSL (а WSL не очень хорошо работает с Systemd).

  • Есть способы заставить его работать (как я продемонстрирую), но я не рекомендую запускать Systemd на WSL , если вы действительно не понимаете, что происходит, и/или не можете устранить неполадки. Systemd кардинально меняет поведение WSL (и даже других дистрибутивов, которые вы можете запускать под WSL). Только сегодня я столкнулся с еще одним вопросом , когда сценарий Systemd (похожий на тот, который я собираюсь вам показать) создает проблемы.

  • Запустить Gnome под WSL на Kali не обязательно сложнее, чем запустить его под Ubuntu под WSL. Из-за требований Systemd требуется много работы над обоими. Тем не менее, Kali — более продвинутый дистрибутив, поэтому в Ubuntu вы часто найдете больше поддержки. Стоит прочитать этот пост о Meta Unix о Kali.

    Чтобы внести ясность: Kali — отличный дистрибутив, и я его очень уважаю. Плюс я ценю тот факт, что их реализация Kex на несколько лет опередила поддержку WSLg/Windows 11. Тем не менее, те, кто его использует, должны понимать, что с Kali можно сделать больше, чем со многими другими дистрибутивами.


Ладно, с этим покончено. Вот как я запускаю Gnome на WSLg/Windows 11 с помощью Kali:

      sudo apt install kali-win-kex # Just to be sure I was working from a similar configure as yours
sudo apt install gnome

sudo -b unshare --pid --fork --mount-proc --kill-child sh -c "export container=wsl; mount -t binfmt_misc binfmt_misc /proc
/sys/fs/binfmt_misc; exec /lib/systemd/systemd --system-unit=multi-user.target"

При этом Systemd запускается в отдельном пространстве имен, как я объясняю в некоторых других ответах, ссылки на которые приведены выше. Вам нужно будет дать ему несколько секунд, чтобы запуститься. Проверьте с -- Как толькопроцессы начинают замирать, вы можете продолжить:

      sudo -E nsenter -m -p --wd="$PWD" -t $(pgrep -xo systemd) runuser -P -l -w WSL_INTEROP -w WSL_DISTRO_NAME $USER -c "set PATH \
"$PATH\"; exec $SHELL"

Теперь вы находитесь в этом пространстве имен и с другим, вы можете видеть, что Systemd работает как PID1, что необходимо для правильной работы.

Однако плохая новость заключается в том, что некоторые инициализации Systemd по умолчанию для Kali (и большинства других дистрибутивов) теперь перезаписали точки интеграции WSLg, поэтому нам нужно воссоздать их вручную:

      sudo rmdir /tmp/.X11-unix/
sudo ln -s /mnt/wslg/.X11-unix/ /tmp
export WAYLAND_DISPLAY=wayland-0
export XDG_RUNTIME_DIR=/mnt/wslg/runtime-dir
Xwayland :1 &

Это запустит фоновый полноэкранный сервер Xwayland, на котором сможет работать Gnome. В противном случае он будет конфликтовать с уже работающим оконным менеджером Weston (опять же, как упоминалось в одном из других связанных ответов).

Нажмите Enterна оболочку WSL/Kali, чтобы снова получить приглашение. Затем:

      export DISPLAY=:1
dbus-run-session gnome-session

Gnome теперь должен работать под управлением Xwayland. Вероятно, есть какой-то способ запустить его напрямую под Wayland или Weston, но я пока не придумал, как это сделать.

Обратите внимание, что в Gnome еще многое происходит, что будет работать нестабильно, поскольку он ожидает физическую или виртуальную машину.

Когда вы закончите, обязательночтобы вернуть все обратно в состояние «не-Systemd».

Как упоминалось в других моих ответах, существуют вспомогательные сценарии для Systemd на WSL, но я рекомендую идти по этому пути только в случае необходимости.

Что касается Gnome, я бы посоветовал запускать его на виртуальной машине, а не непосредственно в WSL. По иронии судьбы, вы даже можете запустить эту виртуальную машину (через libvirtd) внутри WSL2. Но это отдельная тема...

Другие вопросы по тегам