**已关闭。**此问题为not about programming or software development。目前不接受答案。
此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site相关,您可以留下评论,说明在何处可以找到此问题的答案。
24天前关闭。
机构群体在24天前审核了是否重新讨论此问题,并将其关闭:
原始关闭原因未解决
Improve this question
没有一个systemd命令在WSL(Ubuntu Bash 18.04)中工作。当我运行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
7条答案
按热度按时间mcdcgff01#
使用WSL2时,您可以用途:
此命令基本上执行脚本
/etc/init.d/docker
。某些自定义,如指定HTTP代理,可以通过脚本
/etc/default/docker
进行。7z5jn7bk2#
此时WSL中不支持Systemd。可以在with this GitHub issue中找到详细信息。
此外,Docker并不能在WSL上运行,这意味着Kubelet并没有太大的用处。为了在本地运行Kubernetes,你可以使用包含Kubernetes支持的Docker for Windows,或者你可以使用Minikube来运行带有Hyper-V或Virtualbox的VM。
66bbxpm53#
Windows Subsystem for Linux(WSL)2引入了一个重大的体系结构更改,因为它是由Microsoft构建的完整Linux内核,允许Linux容器在不进行仿真的情况下本地运行。
在安装Docker Desktop WSL 2后端之前,必须完成以下步骤:
安装Windows 10版本1903或更高版本。在Windows上启用WSL 2功能。
源代码-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。
u0sqgete4#
在WSL 2中破解Systemd
Systemd在WSL 2中不是原生的,但Shayne找到了一种破解它的方法:https://github.com/shayne/wsl2-hacks
这种体验在第一种方法上是相当不稳定的,但它对我的大部分使用都有效:码头、迷你库(
--driver=none
)、系统管理服务。~/.profile
或~/.bash_profile
)。使用Systemd精灵
Arkane发布了一种在WSL 2的systemd中编排名称空间(或bottle)的方法:https://github.com/arkane-systems/genie
安装后,通过精灵连接到您的配置文件:
目前只有Ubuntu 18.04和19.10可以正常工作,Ubuntu 20.04暂时还没有软件包(这一刻我很兴奋)。
Docker和Minikube也在此配置中作为原生(
--driver=none
)工作。kxe2p93d5#
在WSL2中,可以使用气泡 Package 相当容易地 Boot systemd:
如果成功启动,它将不会向当前TTY打印任何内容,但如果在另一个TTY中运行
htop
等,您将看到它引导并启动了已配置的服务。然后,您可以通过将
/usr/lib/systemd/system/sshd.service
符号链接到/etc/systemd/system/multi-user.target.wants/
来手动启用OpenSSHd。在/root/.ssh
中配置您的密钥,启动systemd,您应该能够在中使用SSH。oknwwptz6#
你似乎问了两个问题:
“为什么”的答案是,从历史上看,WSL体系结构要求其
init
进程为PID 1。Systemd还要求其几乎 * 所有 * 功能都以PID 1运行(除了一些小的子集,如tmpfiles
)。至于 * 如何 *,显然这里已经有了一些答案,还有一些新的答案(见下文)。为了避免在Stack Overflow上的35个以上与Systemd相关的问题中详细重复这些答案,已经在问题Enable systemd in WSL 2上发布了一个Community Wiki答案。
总结一下:
sudo service <service_name> start
)(如果可用)请参阅Community Wiki了解更多详细信息。
我们欢迎您提供新的、个别的额外答案,但希望不要重复上述任何选项。我们还鼓励您在提供新信息时,将其编辑到社区Wiki中。
wlp8pajw7#
WSL 2现在支持Systemd。需要v0.67.6以上版本才能启用它。如果您运行的是旧版本,请使用PowerShell中的
wsl --update
(要检查wsl --version
)。要启用systemd,请使用sudo在文本编辑器中打开wsl.conf文件,并将其添加到/etc/wsl.conf:[boot]
systemd=true
然后您需要从PowerShell执行wsl.exe --shutdown
以重新启动WSL执行严修。出版版本重新启动后,systemd将会执行。请确认使用:systemctl list-unit-files --type=service
以显示服务状态。以下是文档:https://learn.microsoft.com/windows/wsl/wsl-config#systemd-support