可通过systemctl set-default设置默认target(如multi-user.target或graphical.target),或用telinit/init临时切换runlevel,亦可在grub中添加systemd.unit参数强制指定启动目标,旧系统则编辑/etc/inittab。

如果您需要调整Linux系统启动时进入的状态,例如从图形界面切换为纯命令行环境,或在维护时临时进入单用户模式,则需根据系统初始化机制选择对应方式。以下是解决此问题的步骤:
一、使用systemctl设置默认target
现代基于systemd的Linux发行版(如CentOS 7+、Ubuntu 16.04+、Fedora等)已用target替代传统runlevel概念。multi-user.target对应原runlevel 3(多用户命令行),graphical.target对应runlevel 5(图形界面)。设置default.target即设定系统重启后默认加载的目标。
1、执行systemctl get-default查看当前默认target。
2、若需开机进入命令行模式,运行sudo systemctl set-default multi-user.target。
3、若需开机进入图形界面,运行sudo systemctl set-default graphical.target。
4、该操作会在/etc/systemd/system/下创建指向目标unit的符号链接,需确保/usr/lib/systemd/system/multi-user.target或/usr/lib/systemd/system/graphical.target文件存在。
二、使用telinit或init命令临时切换运行级别
在仍兼容SysV init的系统中(如部分CentOS 6、Debian旧版本),可通过init进程直接控制runlevel。此方式不修改默认配置,仅对当前会话生效,适用于紧急维护场景。
1、执行runlevel命令确认当前与前一个runlevel(如输出“N 3”表示刚进入runlevel 3)。
2、立即切换至多用户字符界面模式:运行sudo telinit 3或sudo init 3。
3、切换至单用户维护模式:运行sudo telinit 1或sudo init 1,所有非核心服务将被终止并提供root shell。
4、切换至图形界面模式(需已安装显示管理器):运行sudo telinit 5或sudo init 5。
三、通过GRUB引导参数强制指定启动目标
当系统无法正常进入图形界面或服务异常时,可在启动阶段绕过默认target,仅对当次启动生效。该方法无需修改系统配置文件,适合故障排查与恢复。
1、在GRUB菜单界面按e键编辑当前启动项。
2、定位到以linux开头的行(通常为第二行),将光标移至行末。
3、在行尾添加参数:systemd.unit=multi-user.target(进命令行)或systemd.unit=graphical.target(进图形界面)。
4、按Ctrl+X或F10启动,系统将按指定target加载。
四、编辑/etc/inittab设置默认runlevel(仅限SysV init系统)
在未迁移至systemd的旧系统(如CentOS 6、RHEL 6)中,/etc/inittab是控制默认运行级别的核心配置文件。其中id:行定义了系统启动后首先进入的runlevel。
1、以root权限打开文件:sudo vi /etc/inittab。
2、查找形如id:5:initdefault:的行,数字即为当前默认runlevel。
3、将数字修改为所需级别:设为3表示多用户命令行,设为5表示图形界面。
4、保存退出后执行sudo reboot使更改生效。
五、验证与故障应对
执行set-default后若get-default仍返回旧值,可能因/etc/systemd/system/default.target残留非软链文件导致。此时需手动清理并重试。
1、检查是否存在非符号链接的default.target:ls -l /etc/systemd/system/default.target。
2、若输出中不含->符号,说明是普通文件而非软链,运行sudo rm /etc/systemd/system/default.target删除。
3、重新执行sudo systemctl set-default multi-user.target。
4、若提示Unit multi-user.target is not loaded,检查/usr/lib/systemd/system/multi-user.target是否存在,缺失则需重装systemd包。










