连接被对等方以 root 身份在 systemctl 上重置

dan*_*ing 3 dbus systemd windows-10 windows-subsystem-for-linux

我已经设置了 WSL 2 (Ubuntu) 并在那里安装了 systemd (和 systemd-sysv)。之后,我跑了:

\n\n
sudo mkdir -p /run/dbus\nsudo dbus-daemon --system\nsudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target\n
Run Code Online (Sandbox Code Playgroud)\n\n

安装之前systemd,我将ubuntu更新到18.10(使用sudo do-release-upgrade多次)

\n\n

它工作了一段时间,但现在,它只能以普通用户身份工作。\n作为 root,我得到了

\n\n
Failed to list units: Connection reset by peer\n
Run Code Online (Sandbox Code Playgroud)\n\n

在任何systemctl命令上。

\n\n

因此,我可以查看服务的状态,但无法启用/禁用 dis 服务的启动或启动/停止它们。

\n\n

我还可以在全新安装中复制它:

\n\n

我从 Microsoft Store 安装了 Debian (WSL2)

\n\n

我执行了以下命令:\n sudo apt-get update -y\n sudo apt-get install -y dbus-x11\n sudo apt-get install daemonize

\n\n

然后,我wsl --shutdown在主机上执行并运行:

\n\n
sudo mkdir -p /run/dbus\nsudo dbus-daemon --system\nsudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target\n
Run Code Online (Sandbox Code Playgroud)\n\n

之后,我得到了相同的结果:

\n\n
systemctl\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

单元负载活动子描述

\n\n

proc-sys-fs-binfmt_misc.automount 加载活动运行任意可执行文件

\n\n

sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fc785225\\x2d9131\\x2d5661\\x2dac0c\\x2d3a157c61ae15-net-eth0.device 已加载活动插入 /sys/devices/LNXSYSTM:00 /

\n\n

sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\\x2dce7c\\x2d535c\\x2d966b\\x2deb5f811c95f0-host0-target0:0:0-0:0:0:0- block-sda.device 已加载活动插入 Virtual_Disk\n sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\\x2dce7c\\x2d535c\\x2d966b\\x2deb5f811c95f0-host0-target0:0 :0-0:0:0:1-block-sdb.device 已加载活动插入 Virtual_Disk

\n
\n\n

等等但是当我跑的时候

\n\n
sudo systemctl\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有

\n\n
\n

无法列出单位:连接已被对等方重置

\n
\n\n

其他例子:

\n\n
$ systemctl status dbus\n\xe2\x97\x8f dbus.service - D-Bus System Message Bus\n   Loaded: loaded (/lib/systemd/system/dbus.service; static; vendor preset: enabled)\n   Active: active (running) since Fri 2019-12-13 17:56:36 CET; 13min ago\n     Docs: man:dbus-daemon(1)\n Main PID: 110\n    Tasks: 1 (limit: 4915)\n   Memory: 1.2M\n   CGroup: /system.slice/dbus.service\n           \xe2\x94\x94\xe2\x94\x80110 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only\n\nDec 13 17:56:36 Daniellaptop systemd[1]: Started D-Bus System Message Bus.\n$ sudo systemctl status dbus\nFailed to get properties: Connection reset by peer\n
Run Code Online (Sandbox Code Playgroud)\n\n

[规格]

\n\n

我的主机上的输出verMicrosoft Windows [Version 10.0.19013.1122]

\n\n

之后我也在neofetchDebian系统上安装了(为了向你展示):

\n\n
       _,met$$$$$gg.          dan@Daniellaptop\n    ,g$$$$$$$$$$$$$$$P.       ----------------\n  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 10 (buster) on Windows 10 x86_64\n ,$$P\'              `$$$.     Kernel: 4.19.79-microsoft-standard\n\',$$P       ,ggs.     `$$b:   Uptime: 9 mins\n`d$$\'     ,$P"\'   .    $$$    Packages: 226 (dpkg)\n $$P      d$\'     ,    $$P    Shell: bash 5.0.3\n $$:      $$.   -    ,d$$\'    Terminal: /dev/pts/0\n $$;      Y$b._   _,d$P\'      CPU: Intel i7-7500U (4) @ 2.903GHz\n Y$$.    `.`"Y$$$$P"\'         Memory: 80MiB / 6868MiB\n `$$b      "-.__\n  `Y$$\n   `Y$$.\n     `$$b.\n       `Y$$b.\n          `"Y$b._\n              `"""\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出uname -a

\n\n
Linux <hostname of the host> 4.19.79-microsoft-standard #1 SMP Mon Oct 14 00:50:46 UTC 2019 x86_64 GNU/Linux\n
Run Code Online (Sandbox Code Playgroud)\n\n

[笔记]

\n\n

如果我启动系统并运行,结果是一样的

\n\n
sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target\n
Run Code Online (Sandbox Code Playgroud)\n\n

没有

\n\n
sudo mkdir -p /run/dbus\nsudo dbus-daemon --system\n
Run Code Online (Sandbox Code Playgroud)\n

dan*_*ing 6

这可以通过以此处systemd描述的另一种方式安装来实现。首先,您需要安装、克隆此存储库并按照 中所述运行安装程序。gitREADME.md

sudo apt update
sudo apt install -y git
git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
Run Code Online (Sandbox Code Playgroud)

之后,您wsl --shutdown在 cmd 中运行并再次启动 WSL。