RHEL 引导系统至目标系统状态
作为系统管理员,您可以控制系统的引导过程,并定义您希望系统引导进入的状态。这称为 target,它是您的系统开始达到一定功能级别的一组单元。使用 systemd 目标时,您可以查看默认目标、在运行时选择目标、更改默认引导目标、引导至紧急或救援目标。systemd
systemd
目标单元文件
中的目标 是相关单元组,这些单元在系统启动期间充当同步点。目标单元文件(以文件扩展名结尾)表示目标。目标单元的用途是通过依赖关系链将各个单元组合在一起。systemd
.target
systemd
systemd
请考虑以下示例:
- 用于启动图形会话的 将启动系统服务,例如 GNOME Display Manager () 或 Accounts Service (),并且还会激活 。
graphical.target unit
gdm.service
accounts-daemon.service
multi-user.target unit
- 同样,该单元会启动其他基本系统服务,例如 NetworkManager () 或 D-Bus (),并激活另一个名为 的目标单元。
multi-user.target
NetworkManager.service
dbus.service
basic.target
您可以将以下目标设置为默认目标或当前目标:systemd
救 | 单元目标,该目标拉入基本系统并生成救援 shell |
多用户 | 用于设置多用户系统的单位目标 |
图形 | 用于设置图形登录屏幕的单位目标 |
紧急 | 在主控制台上启动 Emergency shell 的 Unit 目标 |
更改引导到的默认目标
当系统启动时,激活指向真正目标单元的符号链接。您可以在文件中找到当前选定的默认目标单位。每个目标都代表特定级别的功能,并用于对其他单元进行分组。此外,目标单元在引导期间用作同步点。您可以更改系统引导到的默认目标。当您设置默认目标单位时,当前目标将保持不变,直到下次重启。systemd
default.target
/etc/systemd/system/default.target
程序
-
确定用于启动系统的当前默认目标单元:
systemd
# systemctl get-default graphical.target
-
列出当前加载的目标:
# systemctl list-units --type target
-
默认情况下,将系统配置为使用不同的目标单位:
# systemctl set-default <name>.target
替换为您默认使用的目标单元的名称。
<name>
Example: # systemctl set-default multi-user.target Removed /etc/systemd/system/default.target Created symlink /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target
-
验证默认目标单元:
# systemctl get-default multi-user.target
-
通过重新启动来应用更改:
# reboot
更改当前目标
在正在运行的系统上,您可以在当前引导中更改目标单元,而无需重新引导。如果您切换到其他目标,则启动此目标所需的所有服务及其依赖项,并停止新目标未启用的所有服务。隔离不同的目标仅影响当前引导。systemd
程序
-
可选:确定当前目标:
# systemctl get-default graphical.target
-
可选:显示您可以选择的目标列表:
# systemctl list-units --type target
注意您只能隔离在 unit 文件中设置了 option 的目标。
AllowIsolate=yes
-
在当前引导中更改为其他目标单元:
# systemctl isolate <name>.target
将 <name> 替换为要在当前引导中使用的目标单元的名称。
Example: # systemctl isolate multi-user.target
此命令启动名为 的目标单元和所有从属单元,并立即停止所有其他单元。
multi-user
引导到 rescue 模式
您可以引导至救援模式,该模式提供单用户环境,以便在系统无法访问后续目标并且常规引导过程失败时进行故障排除或修复。在救援模式下,系统会尝试挂载所有本地文件系统并启动某些重要的系统服务,但不激活网络接口。
程序
-
要进入救援模式,请在当前会话中更改当前目标:
# systemctl rescue Broadcast message from root@localhost on pts/0 (Fri 2023-03-24 18:23:15 CEST): The system is going down to rescue mode NOW!
注意此命令与 类似,但它也会向当前登录到系统的所有用户发送一条信息性消息。
systemctl isolate rescue.target
要阻止发送消息,请在命令行选项中输入以下命令:
systemd
--no-wall
# systemctl --no-wall rescue
故障排除步骤
如果您的系统无法进入救援模式,您可以引导至紧急模式,该模式可提供尽可能小的环境。在紧急模式下,系统仅挂载根文件系统以供读取,不尝试挂载任何其他本地文件系统,不激活网络接口,并且只启动少数基本服务。