Kali Linux - 在 WSL2(WIN11)上的 KEX 中从 XFCE 切换到 GNOME。如何操作?

Kali Linux - 在 WSL2(WIN11)上的 KEX 中从 XFCE 切换到 GNOME。如何操作?

我无法在运行于 WSL2 上的 Kali Linux 中切换到 Gnome 桌面环境。我正在使用 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

好吧,我已经有一段时间没有使用过 Kali 或 Kex 了,但我至少能够让 Gnome 步履蹒跚地前进。

首先需要说明几点:

  • 这个答案基于我之前的 Ask Ubuntu 答案:

  • 侏儒需要Systemd,并且 Systemd 与 WSL 不能很好地兼容(并且 WSL 与 Systemd 也不能很好地兼容)。

  • 有办法让它发挥作用(我将演示),但是我不建议在 WSL 上运行 Systemd除非你真的明白发生了什么和/或可以解决问题。Systemd 极大地改变了 WSL 的行为(甚至改变了你可能在 WSL 下运行的其他发行版的行为)。我遇到了另一个问题就在今天,Systemd 脚本(类似于我将要向您展示的)出现了问题。

  • 在 Kali 上运行 WSL 下的 Gnome 并不一定比在 WSL 下的 Ubuntu 下运行更困难。由于其 Systemd 要求,两者都需要大量工作。话虽如此,Kali 是一个更先进的发行版,因此您经常会在 Ubuntu 上找到更多指导。值得一读这篇 Meta Unix 文章在卡利。

    需要说明的是,Kali 是一款出色的发行版,我非常尊重它。此外,我很欣赏他们的 Kex 实现比 WSLg/Windows 11 支持提前了几年。但是,运行它的人需要清楚,与许多其他发行版相比,使用 Kali 需要自己解决的问题更多。


好的,事情已经解决了。以下是我使用 Kali 在 WSLg/Windows 11 上运行 Gnome 的方法:

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,正如我在上面链接的其他一些答案中所解释的那样。您需要等待几秒钟才能启动。检查ps -efH-- 一旦udev进程开始停止,您就可以继续了:

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"

您现在位于该命名空间中,通过另一个ps -efH,您可以看到 Systemd 正在作为 PID1 运行,这必须如此才能正常运行。

然而,坏消息是,Kali(以及大多数其他发行版)的一些默认 Systemd 初始化现在已经覆盖了 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 &

这将启动 Gnome 可以在后台运行的全屏 Xwayland 服务器。否则,它将与已在运行的 Weston 窗口管理器发生冲突(再次,如其他链接答案中所述)。

进入Enter你的 WSL/Kali shell 再次获取提示。然后:

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

Gnome 现在应该可以在 Xwayland 下运行。可能有某种方法可以直接在 Wayland 或 Weston 下运行它,但我还没想出如何操作。

请注意,由于 Gnome 需要物理机或虚拟机,因此其中仍有很多操作会出现不稳定的情况。

完成后,请确保将wsl --shutdown所有内容恢复到“非 Systemd”状态。

正如我在其他答案中提到的,WSL 上有适用于 Systemd 的帮助脚本,但我建议仅在必要时才采用这种方式。

对于 Gnome,我的建议是在虚拟机中运行,而不是直接在 WSL 中运行。具有讽刺意味的是,您甚至可以在 WSL2 中运行该虚拟机(通过 libvirtd)。但那是另一个话题...

相关内容