登录
首页 >  文章 >  软件教程

Win11启用WSLsystemd教程详解

时间:2026-03-12 09:06:59 305浏览 收藏

如果你在 Windows 11 的 WSL 中运行 systemctl 却遭遇“Failed to connect to bus: No such file or directory”的尴尬提示,别担心——这并非系统不支持,而是 systemd 尚未启用;本文手把手教你五种切实可行的解决方案:从安全修改 /etc/wsl.conf 并严格校验权限与换行符,到绕过配置强制以 systemd 为 PID 1 启动;从确认 WSL2 及内核 ≥5.10 的底层兼容性,再到深度排查 init 冲突、重设默认目标,每一步都附带精准命令与排错要点,助你真正解锁 WSL 中完整的 systemd 生态,轻松管理服务、调试容器、运行现代 Linux 工具链。

Win11怎么开启Linux子系统systemd支持_Windows11 WSL配置文件wsl.conf

如果您已在 Windows 11 中安装 WSL,但执行 systemctl 命令时提示 Failed to connect to bus: No such file or directory,则说明当前 WSL 实例未启用 systemd 支持。以下是启用该功能的多种可行方法:

一、通过 /etc/wsl.conf 启用 systemd

此方法通过修改 WSL 发行版内部的配置文件,声明在启动时启用 systemd 初始化系统。该配置仅作用于当前 Linux 发行版,且需配合 WSL 重启生效。

1、在 WSL 终端中以管理员权限打开或创建 /etc/wsl.conf 文件:
sudo nano /etc/wsl.conf

2、在文件中写入以下内容(确保格式严格对齐,无多余空格或不可见字符):
[boot]
systemd=true

3、按 Ctrl+O 保存,回车确认文件名,再按 Ctrl+X 退出编辑器。

4、关闭所有 WSL 实例:
wsl --shutdown

5、重新启动 WSL 终端,运行 ps -p 1 -o comm=,若输出为 systemd,则表示启用成功。

二、验证并修复 wsl.conf 文件权限与位置

若第一种方法未生效,可能是配置文件被错误放置、权限受限或语法不合规。WSL 仅识别位于发行版根文件系统 /etc/wsl.conf 的配置,且要求该文件由 root 用户拥有、权限为 644。

1、确认文件实际存在且路径准确:
ls -l /etc/wsl.conf

2、若显示 No such file or directory,请返回第一步重新创建;若显示权限异常(如 600 或 755),执行:
sudo chmod 644 /etc/wsl.conf && sudo chown root:root /etc/wsl.conf

3、检查文件是否含 Windows 风格换行符(CRLF),此类字符会导致解析失败:
file /etc/wsl.conf

4、若输出含 CRLF,使用 dos2unix 工具修复(如未安装,先运行 sudo apt install dos2unix):
sudo dos2unix /etc/wsl.conf

三、强制启用 systemd 的备用启动方式

当 wsl.conf 配置因发行版限制(如某些精简版镜像)无法触发 systemd 时,可绕过配置文件,直接在启动命令中注入 systemd 进程作为 PID 1。该方法无需修改配置,但每次启动需手动指定参数。

1、在 Windows PowerShell 或 CMD 中,进入目标发行版所在目录(例如 Ubuntu-22.04):
wsl -d Ubuntu-22.04 -u root

2、在 root shell 中执行:
exec /usr/lib/systemd/systemd --system --unit=basic.target

3、新开一个 WSL 终端窗口,运行 systemctl list-units --type=service,若能列出服务项,则证明 systemd 已接管。

4、为简化操作,可在 Windows 的快捷方式或终端启动脚本中固化该命令,例如创建批处理文件:
wsl -d Ubuntu-22.04 -u root -e /usr/lib/systemd/systemd --system --unit=basic.target

四、检查 WSL 版本与内核兼容性

systemd 要求 WSL2 内核版本不低于 5.10,且必须启用虚拟机平台。低版本内核或 WSL1 环境将无法加载 systemd 所需的 cgroup v2 和 namespace 功能。

1、在 PowerShell 中确认 WSL 当前版本:
wsl --list --verbose

2、若目标发行版显示 VERSION 为 1,执行升级命令:
wsl --set-version Ubuntu-22.04 2

3、检查 WSL2 内核版本:
wsl cat /proc/version

4、若内核版本低于 5.10.16.3,需手动更新内核包:
访问 https://aka.ms/wsl2kernel 下载最新 wsl_update_x64.msi 并安装。

五、排查 systemd 启动冲突项

部分发行版预装了传统 SysV init 或 OpenRC,其 init 进程可能抢占 PID 1,导致 systemd 无法启动。此时需清除冲突进程并重设默认目标。

1、检查当前 PID 1 进程:
ps -p 1 -o comm=

2、若输出为 initopenrc,说明 systemd 未接管;执行:
sudo systemctl set-default multi-user.target

3、禁用旧 init 相关服务(以 Debian/Ubuntu 为例):
sudo systemctl mask systemd-sysv-generator

4、强制重载 systemd 配置并重启初始化:
sudo systemctl daemon-reload && sudo systemctl reboot

5、重新连接 WSL 后再次验证 ps -p 1 -o comm= 输出是否为 systemd

终于介绍完啦!小伙伴们,这篇关于《Win11启用WSLsystemd教程详解》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>