为什么在WSL中禁用systemd?

时间:2019-04-08 18:08:35

标签: ubuntu kubernetes ubuntu-18.04 windows-subsystem-for-linux minikube

在WSL(Ubuntu Bash 18.04)内部都没有systemd命令。当我运行sudo systemctl is-active kubelet时,错误是output: System has not been booted with systemd as init system (PID 1). Can't operate. : running command: sudo systemctl is-active kubelet

如何在WSL中启用systemd功能?摆脱System has not been booted with systemd

的方法是什么

5 个答案:

答案 0 :(得分:8)

现在您可以尝试:

sudo service docker start

使用WSL2时,如果您在Windows 2004或更高版本(我认为是Windows)上运行。

答案 1 :(得分:3)

在WSL2中存在系统

Systemd不是WSL2的本机,但是Shayne找到了一种方法来破解它:https://github.com/shayne/wsl2-hacks

这种体验在解雇方法上相当不稳定,但它适用于我的大多数用法:码头工人,迷你库(--driver=none),系统服务。

PS:请记住在使用前始终连接到您的用户(bash $ USER)。否则,您将无权访问您的配置文件配置~/.profile~/.bash_profile)。


使用系统精灵

Arkane发布了一种方法来为WSL2在systemd中协调名称空间(或瓶子):https://github.com/arkane-systems/genie

安装后,通过genie连接到您的配置文件:

genie -c bash

目前,仅Ubuntu 18.04和19.10有效。目前没有适用于Ubuntu 20.04的软件包(这一刻我很激动)。

Docker和Minikube在本配置中也可以作为本机(--driver=none)工作。

答案 2 :(得分:2)

Windows Linux子系统(WSL)2引入了重要意义 架构上的变化,因为它是由Microsoft构建的完整Linux内核, 允许Linux容器在没有仿真的情况下本机运行。

在安装Docker Desktop WSL 2后端之前,您必须先完成 以下步骤:

安装Windows 10版本1903或更高版本。启用WSL 2功能 Windows。

来源-Docker Desktop WSL 2 backend

要找出您的设备正在运行的Windows版本,请按Windows徽标键+ R,在“打开”框中键入winver,然后选择“确定”。

WSL不支持Systemd,但是有一种解决方法-Script to enable systemd support on current Ubuntu WSL2 images from the Windows store

答案 3 :(得分:1)

目前,WSL不支持

Systemd。可以找到更多信息with this GitHub issue

此外,在撰写本文时,Docker无法在WSL之上工作,这意味着Kubelet不会有太大用处。为了在本地运行Kubernetes,可以使用包含Kubernetes支持的Docker for Windows,也可以使用Minikube通过Hyper-V或Virtualbox运行VM。

答案 4 :(得分:-2)

Systemd本身没有附加值。需要以正确的顺序启动其他服务,例如Dbus和Jornald。由于缺少这些服务,因此无法进行日志记录和同步。即使是试图绕过此限制的Docker桌面,现在也试图做出决定,以哪种顺序启动并配置Docker守护程序和VPNKit,并在99%的情况下失败。我的计算机无法启动所有最新的Docker桌面版本。