如何解决“系统尚未使用 systemd 作为 init 系统(PID 1)启动”的问题。无法操作'

如何解决“系统尚未使用 systemd 作为 init 系统(PID 1)启动”的问题。无法操作'

当我使用这个命令时:

root:~# systemctl

输出是:

System has not been booted with systemd as init system (PID 1). Can't operate

这个问题出现在“Kali Linux”和“Debian 9”中,如何解决这个问题?

答案1

要启动和停止服务而不必担心正在使用哪个 init 系统,您应该使用service:

service openvas start

将使用任何适合的命令来启动openvas服务。

答案2

在 Debian 中,可以通过重新安装来“修复”这个问题全系统服务监管包裹。

以下命令安装 systemd 集成包runit-systemd,并会在此过程中删除,sysvinit因为系统只能有一个:

apt-get install runit-systemd

答案3

如果您在 Docker 容器中收到错误,该错误的一种解决方案是:“系统尚未使用 systemd 作为 init 系统(PID 1)启动。无法运行。”在 Docker 容器中,就是以更多权限运行容器。

为了给予最大的权限(例如从 Docker 容器内完全操作主机),命令--privileged行参数存在:

--privileged标志为容器提供了所有功能,并且还解除了设备 cgroup 控制器强制执行的所有限制。换句话说,容器几乎可以做主机能做的所有事情。该标志的存在是为了允许特殊的用例,例如在 Docker 中运行 Docker。

例如,要从容器内运行 systemd,拉取映像命令可能如下所示:

docker run -d --name "systemd_example_container" --privileged \
   -v /sys/fs/cgroup:/sys/fs/cgroup:ro jrei/systemd-ubuntu:18.04

要在容器内运行交互式 shell,命令可能如下所示:

docker exec -it "systemd_example_container" bash

缺点是它需要的--privileged标志可能不适用于每个 docker 运行时配置,因此请对此持保留态度。

更多信息请参见在非特权容器中运行 systemd(通过丹尼尔·沃尔什为了红帽开发人员; 2016 年 9 月更新 2019 年 4 月)

相关内容