随机
Enter 搜索 ↑↓ 切换 Esc 清空

wsl_systemd

命令

配置 WSL2 启用 systemd 支持

wsl_systemd

配置 WSL2 启用 systemd 支持

补充说明

该教程提供在 WSL2 中启用 systemd 系统和服务管理器的详细配置方法。从 WSL 0.67.6 版本开始,Microsoft 官方支持在 WSL2 中运行 systemd,使得 systemctl 命令能正常工作,方便管理 Docker、SSH 等服务。

功能特点

主要章节

章节 内容
版本要求 确认 WSL 和系统版本
启用配置 修改 wsl.conf 启用 systemd
验证测试 确认 systemd 运行正常
服务管理 常用 systemctl 命令
常见问题 故障排查和注意事项

注意事项

版本要求

检查 Windows 版本

winver

检查 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 后端,可能出现端口绑定冲突:

  1. 建议在 WSL 内部使用 docker.io 而非 Docker Desktop
  2. 或关闭 Docker Desktop 的 WSL 集成功能

如何关闭 systemd

如需恢复,编辑 /etc/wsl.confsystemd=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

参考链接

相关命令