wsl_systemd
配置 WSL2 启用 systemd 支持
补充说明
该教程提供在 WSL2 中启用 systemd 系统和服务管理器的详细配置方法。从 WSL 0.67.6 版本开始,Microsoft 官方支持在 WSL2 中运行 systemd,使得 systemctl 命令能正常工作,方便管理 Docker、SSH 等服务。
功能特点
- 官方支持:使用 WSL 内置配置启用 systemd,无需第三方工具
- 简单配置:编辑 wsl.conf 一行配置即可
- 影响可控:可按需切换,不影响现有 WSL 使用
- 服务管理:systemctl 管理服务、开机自启等
主要章节
| 章节 | 内容 |
|---|---|
| 版本要求 | 确认 WSL 和系统版本 |
| 启用配置 | 修改 wsl.conf 启用 systemd |
| 验证测试 | 确认 systemd 运行正常 |
| 服务管理 | 常用 systemctl 命令 |
| 常见问题 | 故障排查和注意事项 |
注意事项
- 需要 WSL 0.67.6+(Windows 11 默认满足,Windows 10 需确认)
- 仅支持 WSL2,WSL1 不支持 systemd
- 启用后 WSL 启动时间可能略微增加
- 某些旧版 Docker 配置可能需要调整
版本要求
检查 Windows 版本
winver
- Windows 11 21H2+:自带新版 WSL,直接支持
- Windows 10 2004+:需手动更新 WSL 到最新版
检查 WSL 版本
在 PowerShell 中查看 WSL 版本:
wsl --version
输出示例:
WSL 版本: 2.4.8.0
内核版本: 5.15.153.1-2
WSLg 版本: 1.0.65
若 WSL 版本低于 0.67.6,需要更新:
# 通过 Microsoft Store 更新或使用 winget
winget upgrade Microsoft.WSL
# 或手动下载安装
curl.exe -L -o wsl_update_x64.msi https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
wsl_update_x64.msi
更新后重启 PowerShell 再次确认版本。
确认 WSL2 模式
wsl -l -v
确保需要启用 systemd 的发行版 VERSION 列为 2。
启用 systemd 配置
编辑 wsl.conf
在 WSL 发行版内部编辑 /etc/wsl.conf:
sudo nano /etc/wsl.conf
添加以下内容:
[boot]
systemd=true
如果文件不存在则创建,已有其他配置则在
[boot]节下追加。
重启 WSL
在 PowerShell 中重启 WSL 使配置生效:
# 关闭所有 WSL 实例
wsl --shutdown
# 重新启动
wsl
也可以针对指定发行版重启:
wsl --terminate ubuntu
wsl -d ubuntu
验证 systemd 状态
检查 systemd 进程
进入 WSL 后,检查 systemd 是否在运行:
# 查看 systemd PID
ps aux | grep systemd
# 或使用 pidof
pidof systemd
正常输出应该显示 systemd 进程号。
检查 systemctl 是否可用
# 查看 systemctl 版本
systemctl --version
# 查看 systemd 状态
systemctl status
# 列出所有运行中的服务
systemctl list-units --type=service --state=running
测试服务管理
# 查看 Docker 服务状态(如已安装)
systemctl status docker
# 查看 SSH 服务状态
systemctl status ssh
服务管理常用命令
| 命令 | 说明 |
|---|---|
systemctl status <service> |
查看服务状态 |
systemctl start <service> |
启动服务 |
systemctl stop <service> |
停止服务 |
systemctl restart <service> |
重启服务 |
systemctl enable <service> |
设置开机自启 |
systemctl disable <service> |
取消开机自启 |
systemctl list-units --type=service |
列出所有服务 |
journalctl -u <service> |
查看服务日志 |
使用 Docker 示例
启用 systemd 后,Docker 服务可通过 systemctl 正常管理:
# 启动 Docker
sudo systemctl start docker
# 设置 Docker 开机自启
sudo systemctl enable docker
# 查看 Docker 状态
sudo systemctl status docker
# 验证 Docker 工作正常
docker run --rm hello-world
常见问题
systemd 启动失败
检查 wsl.conf 格式是否正确:
sudo nano /etc/wsl.conf
确保内容是:
[boot]
systemd=true
注意:[boot] 和 systemd=true 之间不要有多余空格或换行。
WSL 启动变慢
启用 systemd 后首次启动会增加 2-5 秒,属正常现象。如果持续缓慢,检查是否有服务启动失败:
systemctl --failed
与 Docker Desktop 冲突
如果同时使用 Docker Desktop 的 WSL 后端,可能出现端口绑定冲突:
- 建议在 WSL 内部使用
docker.io而非 Docker Desktop - 或关闭 Docker Desktop 的 WSL 集成功能
如何关闭 systemd
如需恢复,编辑 /etc/wsl.conf 将 systemd=true 改为 systemd=false 或删除该行:
sudo nano /etc/wsl.conf
然后重启 WSL:
wsl --shutdown
wsl
Windows 10 WSL 版本过低
Windows 10 用户可手动安装新版 WSL:
# 下载最新 WSL 安装包
curl.exe -L -o wsl_update_x64.msi https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
# 安装(管理员权限)
msiexec /i wsl_update_x64.msi