3-WSL 运行多个Ubuntu来跑openclaw,同时开启 systemd 报错(user@1000.service / 219/CGROUP)解决方案
·
问题背景
博主在用 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 冲突。
更多推荐
所有评论(0)