wsl systemd 可通过 /etc/wsl.conf 配置启用,需设置 [boot] systemd=true、修复权限与换行符,并执行 wsl --shutdown 重启;arch linux 默认支持,其他方式如命令行参数仅临时生效。

如果您在 Windows 11 中启用 WSL 后发现 systemctl 命令不可用、systemd 未作为 PID 1 进程运行,或服务无法自动启动,则很可能是 WSL 的 systemd 支持未正确配置。以下是针对 Win11 系统安装和配置 WSL systemd 的多种可靠方式与关键注意事项:
一、通过 /etc/wsl.conf 启用 systemd(推荐主方案)
此方法通过修改 Linux 发行版内部的启动配置文件,声明在每次启动时以 systemd 为初始化系统,是微软官方支持且最稳定的方式,适用于 Ubuntu、Debian、Kali 等主流发行版。
1、在 WSL 终端中以 root 权限打开或创建配置文件:sudo nano /etc/wsl.conf
2、在文件中严格写入以下两行内容(注意:无空行、无缩进、无中文字符、无 Windows 换行符):
[boot]
systemd=true
3、保存并退出 nano:按 Ctrl+O → 回车 → Ctrl+X
4、关闭所有 WSL 实例:wsl --shutdown
5、重新启动该发行版(例如点击开始菜单中的 Ubuntu 图标),进入后执行:ps -p 1 -o comm=,若输出为 systemd,则表示已成功启用。
二、验证并修复 wsl.conf 文件权限与格式(排错必备)
即使配置内容正确,WSL 仍可能因文件权限错误、路径偏差或换行符不兼容而忽略 wsl.conf。WSL 仅识别位于发行版根文件系统 /etc/wsl.conf 的文件,且要求其所有者为 root、权限为 644、无 CRLF 换行符。
1、检查文件是否存在及权限:ls -l /etc/wsl.conf
2、若权限非 644 或所有者非 root,立即修复:sudo chmod 644 /etc/wsl.conf && sudo chown root:root /etc/wsl.conf
3、检测是否含 Windows 风格换行符:file /etc/wsl.conf,若输出含 CRLF,说明存在格式问题。
4、若确认含 CRLF,先安装 dos2unix(如未安装):sudo apt update && sudo apt install -y dos2unix,再执行:sudo dos2unix /etc/wsl.conf
三、使用命令行参数临时启用 systemd(调试与单次验证)
该方式绕过 wsl.conf 文件,直接在 Windows 终端中以参数形式强制启动 systemd 进程作为 PID 1,适用于快速验证环境兼容性或规避发行版限制(如某些精简镜像不解析 wsl.conf)。
1、在 PowerShell 或 CMD 中执行(将 Ubuntu 替换为您的实际发行版名称):wsl -d Ubuntu --system
2、终端启动后立即运行:systemctl is-system-running,若返回 running,即表示本次会话中 systemd 已接管。
3、注意:该方式不会持久生效,关闭终端后即失效,不可用于长期服务部署
四、Arch Linux 发行版的免配置启用方式(特定发行版捷径)
Arch Linux 官方 WSL 镜像自 WSL 2.4.12 起已默认启用 systemd,无需编辑 wsl.conf,但需确认当前运行状态与内核挂载条件是否满足。
1、在 PowerShell 中检查发行版状态与版本:wsl --list --verbose,确认 Arch Linux 状态为 Running 且 VERSION ≥ 2
2、若为 Stopped,手动启动:wsl -d archlinux
3、启动后直接运行:systemctl list-units --type=service,若正常返回服务列表,即表示就绪。
4、若提示 Failed to connect to bus,检查 cgroup v2 是否挂载:cat /proc/1/cgroup,输出中必须包含 0::/ 字样,否则需更新 WSL 内核或重装发行版。
五、安全访问与路径认知注意事项(关键避坑指南)
WSL 的配置文件并非存储于 Windows 路径(如 C:Users 或 Program Files),而是位于 Linux 发行版自身的 ext4 虚拟文件系统中。误用资源管理器直接编辑 /etc/wsl.conf 可导致权限损坏甚至子系统崩溃。
1、绝对禁止在 Windows 资源管理器中访问 \wsl$ 发行版目录并编辑 /etc/wsl.conf
2、必须在 WSL 终端内使用 Linux 原生编辑器操作:sudo nano /etc/wsl.conf 或 sudo vim /etc/wsl.conf
3、区分两类配置文件:.wslconfig(Windows 用户目录下,影响所有发行版) 与 wsl.conf(Linux 发行版内 /etc/ 下,仅影响本发行版)
4、每次修改 wsl.conf 后,必须执行 wsl --shutdown 并完全重启发行版,不可仅 exit 后重新打开终端











