信创终端的6种常见Targets(运行级别)详解

鹏大搞运维 2025-03-18 13:00:42

原文链接:https://mp.weixin.qq.com/s/laCEy8HgtPTGRomPdlgpCA

Hello,大家好啊!今天给大家带来一篇信创终端操作系统运行级别详解的文章。在 Linux 和国产信创操作系统(如 统信 UOS、麒麟 KOS)中,运行级别(Runlevel)是系统管理的核心概念之一,它决定了系统在不同模式下的工作状态。正确理解和使用运行级别,不仅有助于系统运维,还可以帮助优化系统启动流程、管理服务以及进行故障排查。欢迎大家分享点赞,点个在看和关注吧!

在 systemd 体系中,传统 SysVinit 中的“运行级别(Runlevel)”概念被更灵活的 target 替代。target 不是孤立存在的,而是由多个 Unit(service、socket、device、mount 等)之间的依赖(Dependency)或冲突(Conflict)关系组合而成的一个“目标状态”。每个 target 通常代表系统应当达到的一种服务/功能层级,比如纯文本多用户模式、图形界面模式、紧急修复模式等等。下面详细介绍一下常见的几个 systemd target 以及它们之间的关系与用法。

一、常见 Targets

poweroff.target

含义:关闭系统(类似于旧式 SysVinit 的 runlevel 0)。

用途:当你执行 systemctl poweroff 或者 systemctl isolate poweroff.target 时,会停止所有服务并关闭机器电源。

rescue.target

含义:单用户救援模式(类似于 runlevel 1)。

用途:只启动最少的关键系统服务,不启动网络,通常用于系统维护和修复,如忘记 root 密码后的解锁、修复文件系统等。

特点:会要求输入 root 密码才能登录并操作。

emergency.target

含义:比 rescue.target 更精简的紧急模式。

用途:在系统出现严重问题(比如内核或根文件系统无法正常挂载)时使用,只提供一个最小的 Shell 环境,极少的服务或资源。

区别:和 rescue.target 相比,emergency.target 通常不自动挂载额外文件系统,环境更极简。

multi-user.target

含义:多用户文本模式(类似于 runlevel 3)。

用途:服务器环境最常见的目标,包含网络服务、登录服务(getty/ssh)等,但不启动图形界面。

特征:可多用户登录;如果不需要桌面环境,这常作为默认 target。

graphical.target

含义:图形界面目标(类似于 runlevel 5)。

用途:在 multi-user.target 基础上再加载 Display Manager(GDM/KDM/LightDM 等)和图形界面相关服务。

特征:适合桌面系统或工作站环境,一般桌面发行版会将其设置为默认。

reboot.target

含义:重启系统(类似于 runlevel 6)。

用途:停止所有服务后重启系统。

典型命令:systemctl reboot 或 systemctl isolate reboot.target。

其他常见 Targets

除了上述主要的几个外,还有一些常见的 target:

default.target

表示系统默认进入的 target,通常通过符号链接指向 multi-user.target 或 graphical.target。

可以使用 systemctl get-default 查看,也可使用 systemctl set-default <target> 设置。

basic.target

所有系统服务(service)在启动之前要先到达的基本目标,一般包含本地文件系统已挂载、定时器服务启动等最基础条件。

大多数普通用户并不直接和它打交道。

sysinit.target

表示系统初始化阶段的目标,主要负责挂载本地文件系统、启用 swap、加载内核模块等早期任务。

network.target / network-online.target

与网络配置相关的目标,一些服务需要网络联通才可启动(network-online.target 通常表示网络已经可用而非仅配置完成)。

shutdown.target

用于系统关机流程的最后阶段,一般不直接调用,而是通过 poweroff.target、halt.target 等触发。

二、Targets 的依赖关系

systemd 的目标是通过 Unit 及其依赖树来管理的;target 本质上就是一类特殊的 Unit(后缀 .target),它可以:

包含 多个 service、socket、device 等 Unit 作为依赖(Wants/Requires)。

与 其他 target 形成级联关系(譬如 graphical.target 要求 multi-user.target 先启动)。

举例来说,graphical.target 会 Requires(或 Wants) multi-user.target,而 multi-user.target 本身会 Requires 各种基础服务和基本系统资源 ready 的目标(如 basic.target、sysinit.target 等)。

三、查看、切换、设置 Target

查看当前默认 targetpdsyw@pdsyw-PC:~/Desktop$ systemctl get-default

设置默认 target

# 将默认 target 设置为图形界面模式

pdsyw@pdsyw-PC:~$ sudo systemctl set-default graphical.targetpdsyw@pdsyw-PC:~$ sudo systemctl get-default

# 将默认 target 设置为文本模式

pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl set-default multi-user.targetpdsyw@pdsyw-PC:~/Desktop$ systemctl get-default

设置完成后,下次重启系统时会进入你配置的默认 target。

临时切换(不修改默认)

# 切换到文本模式

pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl isolate multi-user.target

# 切换到图形模式

pdsyw@pdsyw-PC:~$ sudo systemctl isolate graphical.target

# 切换到单用户救援模式

pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl isolate rescue.target

isolate 命令会停止其他与该 target 不兼容的服务,启动当前 target 需要的服务。在服务器或远程环境上操作时要谨慎,以免丢失 SSH 连接。

如何列出所有 targetpdsyw@pdsyw-PC:~/Desktop$ systemctl list-unit-files --type=target

systemd 会输出所有已知 target 及其启用状态。

四、创建/自定义 Target

在某些场景下,我们可能需要定义自己的 target,用于特定场合下启动特定服务或脚本。例如要在一台服务器上实现某些自定义开机顺序或在特定 target 下加载额外服务,可以创建自定义的 .target 文件并放在 /etc/systemd/system/ 目录下。

示例:创建一个名为 pdsyw.target 的文件

pdsyw@pdsyw-PC:~/Desktop$ sudo vim /etc/systemd/system/pdsyw.targetpdsyw@pdsyw-PC:~/Desktop$ cat /etc/systemd/system/pdsyw.target[Unit]Description=My Custom Target for special environmentRequires=multi-user.targetAfter=multi-user.targetAllowIsolate=yes

然后可以针对它添加一些特定服务的依赖:

pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl add-wants pdsyw.target ssh.service

这样当你 systemctl isolate pdsyw.target 时,就会同时拉起 ssh.service 以及它所依赖的所有组件。

pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl status ssh

pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl isolate pdsyw.target

pdsyw@pdsyw-PC:~$ sudo systemctl status ssh

五、启动流程简要

内核加载及初始化

由 bootloader(如 GRUB)加载内核与 initramfs,完成最早期的硬件和根文件系统准备。

systemd 作为进程 1(PID=1)启动

路径通常是 /lib/systemd/systemd 或其符号链接 /sbin/init。

systemd 启动早期核心目标

包括 sysinit.target → basic.target → multi-user.target(或 graphical.target)等主线目标。

到达默认 target

如果默认 target 是 multi-user.target,则系统最终在纯文本多用户模式下等待用户登录;如果是 graphical.target,则加载图形显示管理器等。

在信创终端操作系统(如统信 UOS、银河麒麟)中,运行级别控制着系统的工作模式,影响是否启动 GUI、是否允许多用户、是否进入维护模式等。在 systemd 体系下,运行级别已被 target 替代,但仍然可以通过systemctl 进行管理。正确理解和使用运行级别,不仅有助于系统优化,还能在故障排查、服务器维护等场景下发挥重要作用。如果您觉得这篇文章对您有帮助,欢迎分享点赞,记得点个在看和关注哦!

0 阅读:0

鹏大搞运维

简介:感谢大家的关注