AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 680927
Accepted
gute Fee
gute Fee
Asked: 2021-12-11 05:28:52 +0800 CST2021-12-11 05:28:52 +0800 CST 2021-12-11 05:28:52 +0800 CST

带有 Ubuntu 和 VCXSRV 的 WSL2:xeyes 和 git citool 工作但无法启动 ubuntu-desktop

  • 772

xeyes 和 git citool 正在工作,但我无法启动 ubuntu-desktop。试过了

startx

或者

sudo startx

但错误消息显示:未找到屏幕(EE)

是否有可能让 ubuntu-desktop 在 Windows 10 Pro 上使用 vcxsrv 运行?在互联网上搜索了几个小时,但找不到解决方案。

ubuntu desktop
  • 1 1 个回答
  • 513 Views

1 个回答

  • Voted
  1. Best Answer
    NotTheDr01ds
    2021-12-11T14:17:28+08:002021-12-11T14:17:28+08:00

    在我开始之前,让我说“不要那样做”;-)。我已经做到了,我会告诉你怎么做,但是......只是不要。当我们进入答案时,我将说明原因。

    您回答问题有一个“简单的部分”,嗯......困难的部分。

    让我们讨论两个主要问题:

    容易的部分

    首先,通过发出startx,您正在尝试在 Linux 中启动 X 服务器。您实际上已经通过运行 VcXsrv 做到了这一点。此时您真正需要的是会话管理器——即gnome-session. 那是容易的部分。

    困难的部分

    困难的部分是 Gnome(以及因此 Ubuntu 桌面)确实需要Systemd。WSL 不支持 Systemd,至少不是没有很多hackery。那个hackery改变了WSL中很多事情的工作方式。您应该能够相当深入地研究 WSL、Linux 和 Systemd 的内部结构,以便对“出错”的事情进行故障排除。

    虽然有一些项目试图为您做这种黑客行为,但我仍然建议您了解对WSL实例进行更改的方式和原因。

    所以,在一个非常高的层次上,我将在这里介绍其中的一些内容。

    一些替代品

    但让我首先提供一些在 WSL 上运行 Ubuntu Desktop 的替代方案:

    • 如果您真的想要在 WSL 上获得 Linux 桌面体验,请选择不需要 Systemd 的,例如 Xfce4。
    • 如果你真的想要 Windows 上的 Ubuntu Desktop/Gnome,那么在 VM 中运行它。您将放弃 WSL 提供的与 Windows 的紧密集成,但您将拥有一个具有完全支持的 Systemd 的 Ubuntu。

    好的,所以现在我试图说服你但失败了...... ;-)

    如何在 WSL2 上运行 Systemd,允许您在 VcXsrv 上运行 Ubuntu 桌面

    让我们介绍一些“帮助”您在 WSL 上运行 Systemd 的项目:

    • 精灵
    • WSL2-黑客
    • 发行版

    我还要指出,Genie 用于运行 Ubuntu 桌面的这些说明。

    如果您想跳过其余部分,可以直接查看这些说明。或者,我可以向您展示“快速而肮脏”的启动和运行方式。然后,您可以决定是否要完成完整设置。

    最终,所有这些都是在 WSL/Linux 中创建一个新的命名空间,其中 Systemd 可以作为 PID1 运行。

    您可以通过执行以下命令看到这一点(并让 Ubuntu Desktop 快速运行):

    sudo -b unshare --pid --fork --mount-proc /lib/systemd/systemd --system-unit=multi-user.target
    

    这会在具有自己的 PID 映射的新命名空间中启动 Systemd。在该命名空间内,Systemd 将是 PID1(它必须运行)并拥有所有其他进程。但是,“真正的”PID 映射仍然存在于该命名空间之外。

    请注意,这是启动 Systemd 的“最低限度”命令行。它至少不支持:

    • Windows 互操作(运行 Windows .exe 的能力)
    • Windows PATH(无论如何,如果没有 Windows 互操作,这不是必需的)

    上面列出的脚本和项目做了额外的工作以使这些东西也能正常工作。

    等待几秒钟让 Systemd 启动,然后:

    sudo -E nsenter --all -t $(pgrep -xo systemd) runuser -P -l $USER -c "exec $SHELL"
    

    这进入了命名空间,您现在可以使用它ps -efH来查看它systemd在该命名空间中作为 PID 1 运行。

    到那时, Systemd 已经足够运行并配置为运行gnome-session并连接到 VcXsrv。不过,启动可能需要几分钟。

    请注意,尝试此操作后,您确实应该退出 WSL,发出 awsl --terminate <distroname>并重新启动它。否则,有许多事情在此期间将无法正常工作。

    同样,要“更好”地做到这一点,请使用上面列出的脚本/项目之一。他们将尝试在该命名空间内设置环境变量、套接字和符号链接,以使事情更正常地运行。

    • 0

相关问题

  • 用文件中的点绘制二维图形

  • 在第二个屏幕上停用 openbox 桌面上下文菜单

  • 如何验证我使用 9.9.9.9 作为 DNS?

  • 并行安装多个 linux 发行版

  • 自编译 OpenVPN 不会从 systemd 启动

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve