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 工具链。

如果您已在 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、若输出为 init 或 openrc,说明 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学习网公众号也会发布文章相关知识,快来关注吧!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
436 收藏
-
219 收藏
-
224 收藏
-
350 收藏
-
106 收藏
-
458 收藏
-
178 收藏
-
350 收藏
-
466 收藏
-
298 收藏
-
430 收藏
-
385 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习