一、问题现象
报错:System has not been booted with systemd as init system
原因:系统启动服务程序不同,命令也不同;不同的启动程序使用对应的不同命令。
二、确认“启动管理程序”类型的方法
使用以下命令可以查询到系统当前使用的启动管理程序是什么。如下使用的是init。
pstree # 命令1
ps -p 1 -o comm= # 命令2
三、原因分析
- 确保你的系统内核和引导加载程序配置正确,以便使用
systemd
作为初始化系统。 - 检查
/sbin/init
或/usr/sbin/init
是否指向systemd
。你可以使用ls -l /sbin/init
来查看。 - 如果你的系统是使用
grub
作为引导加载程序,检查grub
配置文件(通常是/etc/default/grub
或/boot/grub/grub.cfg
),确保它指向正确的内核和initrd
映像。 - 如果可能,尝试重启系统。有时候,系统更新或配置更改可能需要重启才能生效。
四、解决办法
1.安装systemd服务
# 安装服务
sudo apt-get install systemd # 基于Debian系统
sudo yum install systemd # 基于RPM的系统
# 设置启动目标为systemd
sudo systemctl set-default multi-user.target # 普通终端模式
sudo systemctl set-default graphical.target # 对于带有图形界面的系统
sudo reboot
2.检查 /sbin/init
或 /usr/sbin/init
的指向: 打开终端,使用以下命令来检查 /sbin/init
的链接:
ls -l /sbin/init
或
ls -l /usr/sbin/init
3.检查grub配置
# 查看是否安装有grub
grub-install --version
# 未安装时使用以下命令安装
sudo apt-get update
sudo apt-get install grub2
# 打开 /etc/default/grub 文件
sudo nano /etc/default/grub
检查 GRUB_CMDLINE_LINUX_DEFAULT
和 GRUB_CMDLINE_LINUX
变量,确保没有禁用 systemd
的选项,例如 init=/bin/bash
或 init=/sbin/init
。
五、放弃了~~不折腾了~~
折腾了好久,太麻烦了不搞了。。 不要用systemctl命令就好了。。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END