适用于 Linux 的 Windows 子系统,即 WSL,为使用 Windows 系统的程序员提供了一个便利的 GNU/Linux 环境。不过之前由于 WSL2 并不支持 systemd,所以当我们需要在 WSL 中起一些服务时就很不方便。好在现在 WSL2 已经原生支持了 systemd,本文就对如何安装 WSL2 和启用 systemd 进行简要的介绍。

安装 WSL2

现在,可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符,输入 wsl –install 命令,然后重启计算机。

wsl --install

这会启用“虚拟机平台”以及“适用于 Linux 的 Windows 子系统”功能,并安装 Ubuntu 为 WSL2 的默认发行版。

重启后系统会自动安装并启动 Ubuntu,我们需要设置用户名及密码。

安装完成后,我们可以在 powershell 里查看 WSL 中发行版的版本。

> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2

我们可以看到运行的 Ubuntu 已经是 WSL2 版本。

启用 systemd

在 WSL 中修改 /etc/wsl.conf 文件

[boot]
systemd=true

然后在 powershell 中重启 WSL。

wsl.exe --shutdown

重启后可以在 WSL 中进行验证

ps --no-headers -o comm 1

如果返回 systemd 说明启用成功。

我们现在就可以通过 systemd 来管理服务了。例如开机自启动 docker

sudo systemctl enable docker.service

添加用户组

sudo usermod -aG docker $USER

我们还可以通过输入命令来查看 systemd 管理的服务状态。

systemctl list-unit-files --type=service

限制 WSL2 资源占用

WSL2 默认会占用系统一半的内存,我们可以通过配置文件来限制 WSL2 占用的资源。

修改 Windows 用户目录下 .wslconfig 文件,例如

[wsl2]
processors=4
memory=2GB
swap=2GB

限制 WSL2 使用 4 核处理器,2GB 内存以及 2GB 的交换空间。