问题背景

博主在用 Docker 装多个 openclaw 发现不太稳定,于是想到 WSL 运行多个 Ubuntu 行不行。

WSL 安装多个 Ubuntu 方法我参考和利用这个老项目:

  • https://github.com/DDoSolitary/LxRunOffline

环境信息

  • WSL 版本: 2.7.1.0
  • Windows: 10.0.20348.4773

我在一个 WSL 下安装了两个 Ubuntu-22.04:

  • 第一个命名为 Ubuntu-1
  • 第二个命名为 Ubuntu-2

两个 Ubuntu 都配置了 /etc/wsl.conf 开启 systemd:

[boot]
systemd=true

错误现象

当两个 Ubuntu 同时启动,就会有一个启动时报错:

wsl: Failed to start the systemd user session for '用户名'. See journalctl for more details.

用户无论是 root 还是普通 user 都会报错。

通过 sudo systemctl status user@1000.service 会看到:

status=219/CGROUP Failed to start User Manager for UID 1000

问题分析

我想到是不是因为 WSL 首次创建的默认用户通常会被分配 UID 1000,两个 Ubuntu 的用户冲突了?

解决方案

1. 先关闭报错的 Ubuntu

wsl --terminate Ubuntu-2

2. 以 root 进入

wsl -d Ubuntu-2 -u root

3. 修改 UID / GID

usermod -u 2000 用户名 
groupmod -g 2000 用户名

4. 修复用户目录权限

chown -R 2000:2000 /home/用户名 

5. 重启 WSL

wsl --terminate Ubuntu-2
wsl -d Ubuntu-2 -u 用户名

6. 检查 UID

id 用户名

输出:

uid=2000(用户名) gid=2000(用户名)

7. 检查 systemd 是否生效

ps -p 1 -o comm=

输出:

systemd

8. 检查 user session

systemctl status user@$(id -u).service

输出:

Active: active (running)

结果验证

经过以上步骤,成功修复了 WSL 中多个 Ubuntu 实例同时开启 systemd 时的用户 UID 冲突问题。

核心思路: 修改第二个 Ubuntu 实例的用户 UID/GID,避免与第一个实例的默认 UID 1000 冲突。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐