在 WSL 中启用 systemd
在 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 正常运行了。
加载中...