疑难杂症——解决wsl无法使用systemd

819 阅读1分钟

一、什么是systemd

Systemd 是 Linux 系统的一套基本构建块。 它提供了一个以 PID(进程标识符)为1 运行并启动系统其余部分的系统和服务管理器。

许多流行的发行版默认运行 systemd,例如 Ubuntu、Debian 等。

一些命令如snap、systemctl等依赖于systemd

二、wsl如何实现systemd

WSL 使用自己的初始化进程作为 PID 1。但是,由于 systemd 需要作为 PID 1 运行,因此必须修改 WSL 架构,以使 systemd 成为 PID 1,并使 WSL 的初始化进程成为 systemd 的子进程。这种更改涉及重新考虑 WSL 初始化进程的一些假设,并对其进行修改以确保与 systemd 的兼容性和正确的关闭。

为了谨慎起见,对于已存在的 WSL 发行版,用户需要明确选择启用 systemd。这意味着现在用户需要手动选择是否为特定的 WSL 发行版启用 systemd。这就是为什么我们目前无法直接在wsl上使用systemd

三、如何在wsl使用systemd

1.版本要求

首先,你要确保你的wsl版本大于0.67.6

使用wsl --version来查看wsl版本

2.设置配置

将这两行添加到 /etc/wsl.conf :sudo vim /etc/wsl.conf,这个配置告诉 WSL 在启动时启用 systemd

[boot]
systemd=true

3.重启wsl实例

退出wsl,在powershell中使用wsl --shutdown重启wsl实例,然后重新打开wsl就可以使用systemd了