启动systemctl时报错:system has not been booted with systemd as init system
时间: 2023-09-23 13:08:54 浏览: 141
这个错误通常发生在使用旧版Linux发行版或操作系统时,因为它们不支持systemd作为init系统。
解决方法:
1. 升级操作系统或安装最新的Linux发行版。
2. 如果不能升级或更换操作系统,则可以使用旧版的init系统(如sysvinit或upstart)来代替systemd。要实现这一点,请编辑/boot/grub/grub.cfg文件,并在内核命令行中添加init=/sbin/sysvinit或init=/sbin/upstart。
3. 如果您不确定如何编辑grub.cfg文件,请使用以下命令来打开文件进行编辑:
sudo nano /boot/grub/grub.cfg
4. 在编辑器中,找到类似于以下内容的行:
linux /boot/vmlinuz-4.4.0-116-generic root=UUID=2d0e0c23-8f21-4b20-83d6-49f0c8c8b9fc ro quiet splash
5. 在该行的结尾处添加init=/sbin/sysvinit或init=/sbin/upstart,如下所示:
linux /boot/vmlinuz-4.4.0-116-generic root=UUID=2d0e0c23-8f21-4b20-83d6-49f0c8c8b9fc ro quiet splash init=/sbin/sysvinit
6. 保存并退出编辑器,然后重启系统。
7. 现在,当您启动systemctl时,它应该可以正常工作。
相关问题
运行systemctl时报错:system has not been booted with systemd as init system
这个错误通常是因为系统不是使用systemd作为初始化系统启动的。尝试以下步骤:
1. 检查系统是否正在运行systemd:
```bash
ps -p 1 -o comm=
```
如果返回的是“systemd”,则系统正在运行systemd,否则尝试以下步骤。
2. 检查系统使用的初始化系统:
```bash
ls -l /sbin/init
```
如果返回的是“/sbin/init -> /lib/systemd/systemd”,则系统正在使用systemd,否则尝试以下步骤。
3. 重启系统并选择使用systemd作为初始化系统启动:
```bash
sudo reboot
```
在系统启动时,选择使用systemd作为初始化系统启动。
如果以上步骤都无法解决问题,可能需要进一步调查系统配置和日志以确定问题的原因。
在Ubuntu 22.04 Docker容器中,执行systemctl命令报错:System has not been booted with systemd as init system (PID 1). Can't operate. 如何解决?
在Docker容器中执行`systemctl`命令报错是因为容器中没有运行`systemd`作为init系统。在容器内部,`systemctl`命令是不可用的。
然而,你可以通过使用`service`命令来代替`systemctl`来管理服务。下面是一些常用的`systemctl`命令和它们对应的`service`命令:
- `systemctl start <service>` 替代为 `service <service> start`
- `systemctl stop <service>` 替代为 `service <service> stop`
- `systemctl restart <service>` 替代为 `service <service> restart`
- `systemctl enable <service>` 替代为 `service <service> enable`
- `systemctl disable <service>` 替代为 `service <service> disable`
- `systemctl status <service>` 替代为 `service <service> status`
例如,如果你想启动一个名为`my_service`的服务,可以使用以下命令:
```
service my_service start
```
请注意,这只是一个在Docker容器中使用的替代方案。如果需要在容器中运行`systemd`作为init系统,可能需要使用更高级的技术和配置,例如使用systemd-nspawn或者基于systemd的容器系统。
阅读全文