在 WSL 中启用 systemd

2024-11-08#WSL#Linux#Windows

在 Windows Subsystem for Linux (WSL) 中安装 Docker 之后,可能会遇到 docker 服务没有启动的情况。其中一个原因是系统没有启用 systemd,导致在 Linux 启动时,没有启动 dockerd 服务。那么就需要手动启用。

错误信息 🔗

进入 Linux 系统后,如果使用 systemctl 命令时遇到如下错误:

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connection to bus: Host is down

那么很可能就是没有启用 systemd。

启用方法 🔗

微软的文档《Use systemd to manage Linux services with WSL》 已经详细介绍了如何启用 systemd。如果在 Google 中搜索,不一定能直达这一篇文档,从而漏掉一些关键步骤。

以下是经过验证的启动步骤:

确保 WSL 的版本 🔗

首先,确保 WSL 的版本为 0.67.6 及以上;否则,需要使用 wsl --update 命令升级。

微软的文档里提到,WSL 的版本可以通过 wsl --version。但是如果 WSL 的版本较低,可能 都不支持 --version 选项,此时返回错误:

Invalid command line operation: --version`

在这种情况下, 无脑升级即可:

wsl --update

在我的电脑上,升级后 WSL 的版本是 2.3.14.0

修改 /etc/wsl.conf 🔗

进入 Linux 系统中,编辑 /etc/wsl.conf 文件(如果不存在,那么创建该文件)。添加如下内容:

[boot]
systemd=true

重启 WSL 🔗

在 Windows 下的命令行中,关闭 WSL,然后重新进入子系统,就相当于重启 WSL 了。

关闭 WSL:

wsl --shutdown

关闭之后,重新使用 wsl 命令,即可进入默认的 Linux 发行版。

验证 🔗

运行 systemctl 命令确保systemd 正常工作。比如查看 docker 服务的状态:

systemctl status docker

如果没有返回错误,那么说明 systemd 正常运行了。


加载中...