wsl2 中两个启动守护进程一起协同工作?

wsl2 中两个启动守护进程一起协同工作?

在此处输入图片描述

我们通常知道 WSL2 通常没有 systemd,它通常在 init 守护进程上启动!但最近从 2022 年开始,我们也可以通过在 wsl.config 中启用 sysboot 到 systemd 来使用 systemd。所以我这样做了,在启动 dbus 服务并重新启动后,systemd 就启用了!但是当我现在运行 top 命令时,我同时看到了 init 和 systemd!所以我很困惑,因为我被告知 pid 1 是启动过程,它可以是 systemd 或 init!我不明白两者是如何存在的!有人能给我解释一下吗?

答案1

根据在 WSL 中如何实现这种改变?Microsoft 开发人员博客,这是因为常规 WSLinit进程是作为的子进程启动的,以systemd提供现有的 WSL 功能:

支持 systemd 需要对 WSL 架构进行更改。由于 systemd 需要 PID 1,因此在 Linux 发行版中启动的 WSL init 进程将成为 systemd 的子进程。由于 WSL init 进程负责提供 Linux 和 Windows 组件之间通信的基础架构,因此更改此层次结构需要重新考虑对 WSL init 进程做出的一些假设。

相关内容