首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用WSL后处于降级状态的系统

启用WSL后处于降级状态的系统
EN

Ask Ubuntu用户
提问于 2022-11-28 03:12:13
回答 1查看 1.5K关注 0票数 3

在Ubuntu22.04中为每个这个答案启用Systemd之后,sudo systemctl status将显示State: degraded

此外:

代码语言:javascript
复制
$ 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

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 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单元使用该共享内存设备之前纠正该问题。

(可能)重要

代码语言:javascript
复制
sudo -e /etc/systemd/system/fix_wsl2_shm.service

增加以下内容:

代码语言:javascript
复制
[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.target
代码语言:javascript
复制
sudo 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是否显示它是一个符号链接。
票数 4
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1442826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档