在Ubuntu22.04中为每个这个答案启用Systemd之后,sudo systemctl status将显示State: degraded。
此外:
$ sudo systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION
● systemd-sysusers.service loaded failed failed Create System Users
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
1 loaded units listed.如何从degraded过渡到running?
发布于 2022-11-28 03:12:13
更新:据报道,WSL 1.1.0目前是预发布版,可以解决此问题。我还没有确认,但它使用相同的绑定挂载解决方案,我提议下面,所以我有充分的信心,它将工作。
目前,1.1.0可以用Add-AppxPackage手动下载和安装,但是当它退出预发布状态(可能是1.1.1)时,它应该与wsl --upgrade一起自动安装。
旧的答案(对理解问题仍然有用的信息):
这是由于WSL中当前使用了从/dev/shm到/run/shm的符号链接。有几个相关的Github问题:
除其他外,这将导致任何使用LoadCredentials=的Systemd服务失败。这会影响其他发行版上的其他几个服务,但是systemd-sysusers是Ubuntu22.10下唯一的默认服务,至少可以利用这一点。
解决方法,如#8996所述,是创建一个新的Systemd服务,在任何其他Systemd单元使用该共享内存设备之前纠正该问题。
(可能)重要
sudo -e /etc/systemd/system/fix_wsl2_shm.service增加以下内容:
[Unit]
Description=Fix the /dev/shm symlink to be a mount
DefaultDependencies=no
Before=sysinit.target
ConditionPathExists=/dev/shm
ConditionPathIsSymbolicLink=/dev/shm
ConditionPathIsMountPoint=/run/shm
[Service]
Type=oneshot
ExecStart=/usr/bin/rm /dev/shm
ExecStart=/bin/mount --bind -o X-mount.mkdir /run/shm /dev/shm
[Install]
WantedBy=sysinit.targetsudo systemctl enable fix_wsl2_shm.service退出Ubuntu、wsl --terminate <distro_name> (或wsl --shutdown)并重新启动。
确认sudo systemctl status现在显示running。若否,则:
sudo systemctl status fix_wsl2_shm.service是否显示服务已加载。findmnt /dev/shm是否显示它已挂载,或者ls -ld /dev/shm是否显示它是一个符号链接。https://askubuntu.com/questions/1442826
复制相似问题