本文将提供一份详细攻略,手把手教你如何将 WSL 子系统的初始化方式从 init 切换为 systemd,完成切换后,你将能够使用 systemctl 命令管理服务。

设置systemd启动

首先,在 Windows 终端使用命令wsl --version查看 WSL 版本;如果 WSL 版本小于2.x,则需要运行wsl --update进行更新;

接下来确认子系统的版本,使用命令wsl -l -v查看版本情况:

WSL子系统将init启动修改为systemd启动
查看系统的WSL版本

如果你的子系统版本为 1,则需要更改为 2,执行以下命令:

# 设置 WSL 的默认版本为 2
wsl --set-default-version 2
# 将子系统转换为 WSL 2,这里以 Debian 为例
wsl --set-version Debian 2

这个过程可能需要花费一些时间,耐心等待;

转换完成后,启动你的子系统,编辑/etc/wsl.conf文件,在文件中添加以下内容并保存:

[boot]
systemd=true

退出你的子系统,并在 Windows 终端执行命令wsl --shutdown关闭WSL;

重新启动子系统,输入命令ps -p 1查看是否成功以systemd启动:

ps -p 1
  PID TTY          TIME CMD
    1 ?        00:00:00 systemd

看到systemd表示成功,此时可以使用systemctl命令管理服务。