当我使用这个命令时:
root:~# systemctl
输出是:
System has not been booted with systemd as init system (PID 1). Can't operate
这个问题出现在“Kali Linux”和“Debian 9”中,如何解决这个问题?
答案1
答案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 月)。