Linux系统启动管理
系统启动管理

系统启动过程
固件初始化(BIOS/UEFI) 按下电源后,主板固件先执行 POST 上电自检,检测 CPU、内存等硬件;随后按启动顺序找到设备,加载第一阶段引导程序(BIOS 读 MBR,UEFI 读 EFI 分区)。
-
MBR引导 :它是传统 BIOS 机器最开始启动时读取的第一段程序,位于整个硬盘的第 0 磁道、第 0 扇区,大小固定512字节,分为三部分:
- Bootloader 引导程序(寻找系统分区)
- 分区表(记载主分区,扩展分区信息)
- 结束字节0x55AA
引导加载程序(GRUB) 固件移交控制权给 GRUB,它读取 /boot 目录下的内核镜像(如 vmlinuz)和 initramfs(临时根文件系统),并将内核解压加载到内存。
内核启动与初始化 内核初始化硬件驱动、挂载根文件系统,随后启动 PID=1 的第一个用户进程(现代系统多为 systemd,传统为 init)。
用户空间启动(systemd) systemd 按目标(target)并行启动系统服务(网络、SSH、Nginx 等),最终完成登录界面图形桌面的加载。
系统启动流程
固件初始化
BIOS/UEFI加电自检
检测硬件设备
MBR引导
读取硬盘0扇区
读取分区表
加载GRUB
GRUB阶段
加载/boot内核
加载initramfs
内核解压至内存
内核启动
初始化硬件驱动
挂载根文件系统
启动systemd
systemd阶段
系统初始化
启动系统服务
系统target机制
target 是系统状态,.wants/.requires 目录里的软链接定义该状态要启动哪些服务,系统按依赖链依次启动,最终进入 default.target 指向的运行模式
service:一个服务,例如sshd,提供远程执行,复制文件
target是一个包含 service、time等对象的特殊单元,如果systemctl start target,就是启动该target下所有包含的对象
类比目录与子目录子文件的关系
#多用户
[root@www ~ 18:52:15]# systemctl list-dependencies multi-user.target multi-user.target
● ├─abrt-ccpp.service
● ├─abrt-oops.service
● ├─abrt-vmcore.service
● ├─abrt-xorg.service
● ├─abrtd.service
● ├─atd.service
● ├─auditd.service
● ├─avahi-daemon.service
● ├─chronyd.service
● ├─crond.service
● ├─cups.path
● ├─cups.service
● ├─dbus.service
● ├─initial-setup-reconfiguration.service
● ├─irqbalance.service
● ├─ksm.service
● ├─ksmtuned.service
#图形化
[root@www ~ 10:21:33]# systemctl list-dependencies graphical.target
graphical.target
● ├─display-manager.service
● ├─network.service
● ├─systemd-update-utmp-runlevel.service
● └─multi-user.target
● ├─auditd.service
● ├─chronyd.service
● ├─crond.service
● ├─dbus.service
● ├─irqbalance.service
● ├─network.service
● ├─NetworkManager.service
● ├─nginx.service
● ├─plymouth-quit-wait.service
● ├─plymouth-quit.service
● ├─postfix.service
● ├─rhel-configure.service
● ├─rsyslog.service
系统启动级别
| 运行级别 | target | 作用描述 |
|---|---|---|
| 0 | 关机(halt) | 关机(halt):系统终止所有进程并关闭电源,对应命令 shutdown -h now |
| 1 | emergency.target rescue.target 单用户模式(single user mode) | 单用户模式(single user mode):仅 root 用户可登 录,无网络服务,用于系统修复(如密码找回)。 |
| 2 | 多用户模式(无 NFS) | 多用户模式(无 NFS):支持多用户登录,但不启动网 络文件系统(NFS),部分发行版(如 Debian)默认 此级别功能与级别 3 相同 |
| 3 | multi-user.target 完全多用户模式(文本界面) | 完全多用户模式(文本界面):启动所有网络服务,用 户通过命令行登录,无图形界面 |
| 4 | 预留级别 | 预留级别:默认未使用,可由用户自定义用途 |
| 5 | graphical.target 图形化多用户模式 | 图形化多用户模式:在级别 3 的基础上启动图形界面 (如 GNOME、KDE),用户通过图形登录界面访问系 统。 |
| 6 | 重启 | 重启(reboot):系统终止所有进程并重启,对应命令 shutdown -r now |
实践:使用init 0/3/5/6
#安装图形化界面
#查看yum group
[root@www ~ 19:08:57]# yum group list
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Environment Groups:
Server with GUI
Available Environment Groups:
Minimal Install
Compute Node
Infrastructure Server
File and Print Server
Basic Web Server
Virtualization Host
GNOME Desktop
KDE Plasma Workspaces
Development and Creative Workstation
Available Groups:
Compatibility Libraries
Console Internet Tools
Development Tools
Graphical Administration Tools
Legacy UNIX Compatibility
Scientific Support
Security Tools
Smart Card Support
System Administration Tools
System Management
Done
#从本地ISO安装图形化界面
# 1.关联ISO镜像,虚拟机默认关联
# 2.挂载光盘,硬盘是sda…… 光盘是sr0
[root@www ~ 19:09:16]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part
├─centos_centos7-root 253:0 0 50G 0 lvm /
├─centos_centos7-swap 253:1 0 3.9G 0 lvm [SWAP]
└─centos_centos7-home 253:2 0 145.1G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 14.7G 0 part /mnt/web
sr0 11:0 1 4.4G 0 rom /dvd
nvme0n1 259:0 0 15G 0 disk
#创建一个目录,用于挂载
[root@www dvd 19:19:00]# mkdir /dvd
#挂载目录(这里已经提前挂载过)
[root@www dvd 19:19:00]# mount /dev/sr0 /dvd
mount: /dev/sr0 is write-protected, mounting read-only
mount: /dev/sr0 is already mounted or /dvd busy
/dev/sr0 is already mounted on /dvd
#使用lsblk查看
[root@www dvd 19:22:19]# lsblk /dev/sr0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 4.4G 0 rom /dvd
#查看挂载文件
[root@www ~ 19:18:20]# cd /dvd
[root@www dvd 19:18:33]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
#编写配置文件DVD.repo,使yum仓库指向本地DVD
[root@www ~ 19:25:21]# cd /etc/yum.repos.d/
[root@www yum.repos.d 19:25:38]# vim dvd.repo
[dvd] # 仓库ID(唯一标识)
name=CentOS-7 dvd # 仓库名称(随便写)
baseurl=file:///dvd # 本地光盘挂载点,使用file://(这个是协议)
gpgcheck=0 # 不检查软件包签名 → 本地源常用
enabled=1 # 启用这个仓库
#备份原先仓库,之前已经备份过
[root@www yum.repos.d 19:26:48]# mkdir bak
[root@www yum.repos.d 19:32:34]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
[root@www yum.repos.d 19:26:48]# ls
bak dvd.repo
[root@www yum.repos.d 19:32:34]# cp /etc/yum.repos.d/bak/dvd.repo /etc/yum.repos.d/
[root@www yum.repos.d 19:31:34]# export LANG=zh_CN.UTF-8
#列出清单,这里已经做过带 GUI 的服务器的安装
[root@www yum.repos.d 19:36:40]# yum group list -v
加载 "fastestmirror" 插件
加载 "langpacks" 插件
Adding en_US.UTF-8 to language list
Adding zh_CN.UTF-8 to language list
Config time: 0.005
Yum version: 3.4.3
设置软件包群集
Loading mirror speeds from cached hostfile
pkgsack time: 0.002
group time: 0.020
已安装环境分组:
带 GUI 的服务器 (graphical-server-environment)
可用的环境分组:
最小安装 (minimal)
基础设施服务器 (infrastructure-server-environment)
计算节点 (compute-node-environment)
文件及打印服务器 (file-print-server-environment)
基本网页服务器 (web-server-environment)
虚拟化主机 (virtualization-host-environment)
GNOME 桌面 (gnome-desktop-environment)
KDE Plasma Workspaces (kde-desktop-environment)
开发及生成工作站 (developer-workstation-environment)
可用组:
传统 UNIX 兼容性 (legacy-unix)
兼容性程序库 (compat-libraries)
图形管理工具 (graphical-admin-tools)
安全性工具 (security-tools)
开发工具 (development)
控制台互联网工具 (console-internet)
智能卡支持 (smart-card)
科学记数法支持 (scientific)
系统管理 (system-management)
系统管理工具 (system-admin-tools)
完成
#准备安装,这里以安装GNOME 桌面 (gnome-desktop-environment)为例子
[root@www ~ 14:21:18]# yum group install 'gnome-desktop-environment' -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
#可以看到使用的是DVD
dvd | 3.6 kB 00:00:00
正在解决依赖关系
--> 正在检查事务
---> 软件包 NetworkManager-bluetooth.x86_64.1.1.18.8-2.el7_9 将被 安装
--> 正在处理依赖关系 libbluetooth.so.3()(64bit),它被软件包 1:NetworkManager-bluetooth-1.18.8-2.el7_9.x86_64 需要
---> 软件包 NetworkManager-wwan.x86_64.1.1.18.8-2.el7_9 将被 安装
---> 软件包 adcli.x86_64.0.0.8.1-16.el7_9.1 将被 安装
---> 软件包 autofs.x86_64.1.5.0.7-116.el7_9 将被 安装
--> 正在处理依赖关系 libhesiod.so.0()(64bit),它被软件包 1:autofs-5.0.7-116.el7_9.x86_64 需要
---> 软件包 certmonger.x86_64.0.0.78.4-17.el7_9 将被 安装
---> 软件包 cgdcbxd.x86_64.0.1.0.2-7.el7 将被 安装
--> 正在处理依赖关系 /usr/sbin/cgrulesengd,它被软件包 cgdcbxd-1.0.2-7.el7.x86_64 需要
---> 软件包 cifs-utils.x86_64.0.6.2-10.el7 将被 安装
---> 软件包 glusterfs-fuse.x86_64.0.6.0-61.el7 将被 安装
---> 软件包 ipa-client.x86_64.0.4.6.8-5.el7.centos.11 将被 安装
--> 正在处理依赖关系 python2-ipaclient = 4.6.8-5.el7.centos.11,它被软件包 ipa-client-4.6.8-5.el7.centos.11.x86_64 需要
--> 正在处理依赖关系 ipa-common = 4.6.8-5.el7.centos.11,它被软件包 ipa-client-4.6.8-5.el7.centos.11.x86_64 需要
--> 正在处理依赖关系 ipa-client-common = 4.6.8-5.el7.centos.11,它被软件包 ipa-client-4.6.8-5.el7.centos.11.x86_64 需要
--> 正在处理依赖关系 python-ldap >= 2.4.15,它被软件包 ipa-client-4.6.8-5.el7.centos.11.x86_64 需要
--> 正在处理依赖关系 python-gssapi >= 1.2.0-3,它被软件包 ipa-client-4.6.8-5.el7.centos.11.x86_64 需要
--> 正在处理依赖关系 krb5-workstation >= 1.15.1-36,它被软件包 ipa-client-4.6.8-5.el7.centos.11.x86_64 需要
--> 正在处理依赖关系 python-sssdconfig,它被软件包 ipa-client-4.6.8-5.el7.centos.11.x86_64 需要
--> 正在处理依赖关系 ntp,它被软件包 ipa-client-4.6.8-5.el7.centos.11.x86_64 需要
--> 正在处理依赖关系 libsss_autofs,它被软件包 ipa-client-4.6.8-5.el7.centos.11.x86_64 需要
---> 软件包 java-1.7.0-openjdk.x86_64.1.1.7.0.261-2.6.22.2.el7_8 将被 安装
--> 正在处理依赖关系 java-1.7.0-openjdk-headless = 1:1.7.0.261-2.6.22.2.el7_8,它被软件包 1:java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64 需要
---> 软件包 nfs4-acl-tools.x86_64.0.0.3.3-21.el7 将被 安装
---> 软件包 samba-client.x86_64.0.4.10.16-19.el7_9 将被 安装
---> 软件包 sssd.x86_64.0.1.16.5-10.el7_9.13 将被 安装
--> 正在处理依赖关系 sssd-proxy = 1.16.5-10.el7_9.13,它被软件包 sssd-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 sssd-ldap = 1.16.5-10.el7_9.13,它被软件包 sssd-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 sssd-krb5 = 1.16.5-10.el7_9.13,它被软件包 sssd-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 sssd-ipa = 1.16.5-10.el7_9.13,它被软件包 sssd-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 sssd-common = 1.16.5-10.el7_9.13,它被软件包 sssd-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 sssd-ad = 1.16.5-10.el7_9.13,它被软件包 sssd-1.16.5-10.el7_9.13.x86_64 需要
---> 软件包 targetcli.noarch.0.2.1.53-1.el7_9 将被 安装
--> 正在处理依赖关系 python-rtslib >= 2.1.fb41,它被软件包 targetcli-2.1.53-1.el7_9.noarch 需要
--> 正在处理依赖关系 python-configshell,它被软件包 targetcli-2.1.53-1.el7_9.noarch 需要
--> 正在检查事务
---> 软件包 bluez-libs.x86_64.0.5.44-7.el7 将被 安装
---> 软件包 hesiod.x86_64.0.3.2.1-3.el7 将被 安装
---> 软件包 ipa-client-common.noarch.0.4.6.8-5.el7.centos.11 将被 安装
---> 软件包 ipa-common.noarch.0.4.6.8-5.el7.centos.11 将被 安装
---> 软件包 java-1.7.0-openjdk-headless.x86_64.1.1.7.0.261-2.6.22.2.el7_8 将被 安装
---> 软件包 krb5-workstation.x86_64.0.1.15.1-54.el7_9 将被 安装
--> 正在处理依赖关系 libkadm5(x86-64) = 1.15.1-54.el7_9,它被软件包 krb5-workstation-1.15.1-54.el7_9.x86_64 需要
--> 正在处理依赖关系 libkadm5srv_mit.so.11(kadm5srv_mit_11_MIT)(64bit),它被软件包 krb5-workstation-1.15.1-54.el7_9.x86_64 需要
--> 正在处理依赖关系 libkadm5clnt_mit.so.11(kadm5clnt_mit_11_MIT)(64bit),它被软件包 krb5-workstation-1.15.1-54.el7_9.x86_64 需要
--> 正在处理依赖关系 libkadm5srv_mit.so.11()(64bit),它被软件包 krb5-workstation-1.15.1-54.el7_9.x86_64 需要
--> 正在处理依赖关系 libkadm5clnt_mit.so.11()(64bit),它被软件包 krb5-workstation-1.15.1-54.el7_9.x86_64 需要
---> 软件包 libcgroup-tools.x86_64.0.0.41-21.el7 将被 安装
---> 软件包 libsss_autofs.x86_64.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 ntp.x86_64.0.4.2.6p5-29.el7.centos.2 将被 安装
--> 正在处理依赖关系 libopts.so.25()(64bit),它被软件包 ntp-4.2.6p5-29.el7.centos.2.x86_64 需要
---> 软件包 python-configshell.noarch.1.1.1.26-1.el7 将被 安装
--> 正在处理依赖关系 python-urwid,它被软件包 1:python-configshell-1.1.26-1.el7.noarch 需要
--> 正在处理依赖关系 pyparsing,它被软件包 1:python-configshell-1.1.26-1.el7.noarch 需要
---> 软件包 python-gssapi.x86_64.0.1.2.0-3.el7 将被 安装
--> 正在处理依赖关系 python-enum34,它被软件包 python-gssapi-1.2.0-3.el7.x86_64 需要
---> 软件包 python-ldap.x86_64.0.2.4.15-2.el7 将被 安装
---> 软件包 python-rtslib.noarch.0.2.1.74-1.el7_9 将被 安装
--> 正在处理依赖关系 python-kmod,它被软件包 python-rtslib-2.1.74-1.el7_9.noarch 需要
---> 软件包 python-sssdconfig.noarch.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 python2-ipaclient.noarch.0.4.6.8-5.el7.centos.11 将被 安装
--> 正在处理依赖关系 python2-ipalib = 4.6.8-5.el7.centos.11,它被软件包 python2-ipaclient-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-dns >= 1.12.0-3,它被软件包 python2-ipaclient-4.6.8-5.el7.centos.11.noarch 需要
---> 软件包 sssd-ad.x86_64.0.1.16.5-10.el7_9.13 将被 安装
--> 正在处理依赖关系 sssd-krb5-common = 1.16.5-10.el7_9.13,它被软件包 sssd-ad-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 sssd-common-pac = 1.16.5-10.el7_9.13,它被软件包 sssd-ad-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 libdhash.so.1(DHASH_0.4.3)(64bit),它被软件包 sssd-ad-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 libsss_certmap.so.0()(64bit),它被软件包 sssd-ad-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 libdhash.so.1()(64bit),它被软件包 sssd-ad-1.16.5-10.el7_9.13.x86_64 需要
---> 软件包 sssd-common.x86_64.0.1.16.5-10.el7_9.13 将被 安装
--> 正在处理依赖关系 libsss_sudo(x86-64) = 1.16.5-10.el7_9.13,它被软件包 sssd-common-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 libhttp_parser_strict.so.2()(64bit),它被软件包 sssd-common-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 libcares.so.2()(64bit),它被软件包 sssd-common-1.16.5-10.el7_9.13.x86_64 需要
---> 软件包 sssd-ipa.x86_64.0.1.16.5-10.el7_9.13 将被 安装
--> 正在处理依赖关系 libipa_hbac(x86-64) = 1.16.5-10.el7_9.13,它被软件包 sssd-ipa-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 libipa_hbac.so.0(IPA_HBAC_0.1.0)(64bit),它被软件包 sssd-ipa-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 libipa_hbac.so.0(IPA_HBAC_0.0.1)(64bit),它被软件包 sssd-ipa-1.16.5-10.el7_9.13.x86_64 需要
--> 正在处理依赖关系 libipa_hbac.so.0()(64bit),它被软件包 sssd-ipa-1.16.5-10.el7_9.13.x86_64 需要
---> 软件包 sssd-krb5.x86_64.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 sssd-ldap.x86_64.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 sssd-proxy.x86_64.0.1.16.5-10.el7_9.13 将被 安装
--> 正在检查事务
---> 软件包 autogen-libopts.x86_64.0.5.18-5.el7 将被 安装
---> 软件包 c-ares.x86_64.0.1.10.0-3.el7 将被 安装
---> 软件包 http-parser.x86_64.0.2.7.1-9.el7 将被 安装
---> 软件包 libdhash.x86_64.0.0.5.0-32.el7 将被 安装
---> 软件包 libipa_hbac.x86_64.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 libkadm5.x86_64.0.1.15.1-54.el7_9 将被 安装
---> 软件包 libsss_certmap.x86_64.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 libsss_sudo.x86_64.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 pyparsing.noarch.0.1.5.6-9.el7 将被 安装
---> 软件包 python-dns.noarch.0.1.12.0-4.20150617git465785f.el7 将被 安装
---> 软件包 python-enum34.noarch.0.1.0.4-1.el7 将被 安装
---> 软件包 python-kmod.x86_64.0.0.9-4.el7 将被 安装
---> 软件包 python-urwid.x86_64.0.1.1.1-3.el7 将被 安装
---> 软件包 python2-ipalib.noarch.0.4.6.8-5.el7.centos.11 将被 安装
--> 正在处理依赖关系 python2-cryptography >= 1.4,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-yubico >= 1.2.3,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-qrcode-core >= 5.0.0,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-netifaces >= 0.10.4,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-netaddr >= 0.7.5-9,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 pyusb,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-sss-murmur,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-requests,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-pyasn1-modules,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-pyasn1,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-libipa_hbac,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-jwcrypto,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-dateutil,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
--> 正在处理依赖关系 python-cffi,它被软件包 python2-ipalib-4.6.8-5.el7.centos.11.noarch 需要
---> 软件包 sssd-common-pac.x86_64.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 sssd-krb5-common.x86_64.0.1.16.5-10.el7_9.13 将被 安装
--> 正在检查事务
---> 软件包 python-cffi.x86_64.0.1.6.0-5.el7 将被 安装
--> 正在处理依赖关系 python-pycparser,它被软件包 python-cffi-1.6.0-5.el7.x86_64 需要
---> 软件包 python-dateutil.noarch.0.1.5-7.el7 将被 安装
---> 软件包 python-jwcrypto.noarch.0.0.4.2-1.el7 将被 安装
---> 软件包 python-libipa_hbac.x86_64.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 python-netaddr.noarch.0.0.7.5-9.el7 将被 安装
---> 软件包 python-netifaces.x86_64.0.0.10.4-3.el7 将被 安装
---> 软件包 python-qrcode-core.noarch.0.5.0.1-1.el7 将被 安装
---> 软件包 python-requests.noarch.0.2.6.0-10.el7 将被 安装
--> 正在处理依赖关系 python-urllib3 >= 1.10.2-1,它被软件包 python-requests-2.6.0-10.el7.noarch 需要
---> 软件包 python-sss-murmur.x86_64.0.1.16.5-10.el7_9.13 将被 安装
---> 软件包 python-yubico.noarch.0.1.2.3-1.el7 将被 安装
---> 软件包 python2-cryptography.x86_64.0.1.7.2-2.el7 将被 安装
--> 正在处理依赖关系 python-idna >= 2.0,它被软件包 python2-cryptography-1.7.2-2.el7.x86_64 需要
---> 软件包 python2-pyasn1.noarch.0.0.1.9-7.el7 将被 安装
---> 软件包 python2-pyasn1-modules.noarch.0.0.1.9-7.el7 将被 安装
---> 软件包 pyusb.noarch.0.1.0.0-0.11.b1.el7 将被 安装
--> 正在检查事务
---> 软件包 python-idna.noarch.0.2.4-1.el7 将被 安装
---> 软件包 python-pycparser.noarch.0.2.14-1.el7 将被 安装
--> 正在处理依赖关系 python-ply,它被软件包 python-pycparser-2.14-1.el7.noarch 需要
---> 软件包 python-urllib3.noarch.0.1.10.2-7.el7 将被 安装
--> 正在检查事务
---> 软件包 python-ply.noarch.0.3.4-11.el7 将被 安装
--> 解决依赖关系完成
#此处省略
…………………………
完毕!
[root@www ~ 14:25:04]# init 5
#命令行格式
[root@www ~ 14:25:04]# init 3

设置系统当前运行 target
[root@www ~ 14:33:54]# systemctl isolate graphical.target
[root@www ~ 15:08:46]# systemctl isolate multi-user.target
设置系统开机默认运行 target
[root@www ~ 15:09:00]# systemctl get-default
graphical.target
[root@www ~ 15:14:04]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@www ~ 15:14:15]#
#gdm是图形化界面的程序
[root@www ~ 15:14:15]# systemctl start gdm
graphical.target
● ├─accounts-daemon.service
● ├─gdm.service
…………
思考:如何将gdm.service划分到multi-user.target
#可以查看gdm的运行状态来查看gdm所属文件夹
[root@www ~ 15:24:37]# systemctl status gdm
● gdm.service - GNOME Display Manager
Loaded: loaded (/usr/lib/systemd/system/gdm.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2026-04-12 15:20:47 CST; 3min 58s ago
Process: 5432 ExecStartPost=/bin/bash -c TERM=linux /usr/bin/clear > /dev/tty1 (code=exited, status=0/SUCCESS)
Main PID: 5427 (gdm)
Tasks: 8
CGroup: /system.slice/gdm.service
├─5427 /usr/sbin/gdm
└─5439 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gd...
Apr 12 15:20:47 www.xkw.cloud systemd[1]: Starting GNOME Display Manager...
Apr 12 15:20:47 www.xkw.cloud systemd[1]: Started GNOME Display Manager.
#可以看到它位于/usr/lib/systemd/system/gdm.service
#查看并修改配置文件
[root@www ~ 15:42:40]# vim /usr/lib/systemd/system/gdm.service
[Install]
Alias=display-manager.service
WantedBy=multi-user.target
#重新加载服务并设置开机自启动,可以看见与multi-user.target建立了软连接
[root@www ~ 15:39:25]# systemctl daemon-reload
[root@www ~ 15:39:36]# systemctl enable gdm
Created symlink from /etc/systemd/system/multi-user.target.wants/gdm.service to /usr/lib/systemd/system/gdm.service.
#查看依赖
[root@www ~ 15:49:09]# systemctl list-dependencies multi-user.target
multi-user.target
● ├─abrt-ccpp.service
● ├─abrt-oops.service
● ├─abrt-vmcore.service
● ├─abrt-xorg.service
● ├─abrtd.service
● ├─atd.service
● ├─auditd.service
● ├─avahi-daemon.service
● ├─chronyd.service
● ├─crond.service
● ├─cups.path
● ├─cups.service
● ├─dbus.service
● ├─gdm.service
#重启后发现已经是图形化界面
ROOT密码重置
方法一
开机按e编辑该系统条目,将光标移至以linux16开头的行,末尾附加 rd.break,可以中断initramfs向系统提供实际控制权,ctrl+x启动

系统会显示root shell,且磁盘上的实际根文件系统以只读方式挂载在/sysroot
#使用grep过滤找到真正的root
sh-4.2# mount | grep root
- 重新挂载让其拥有读写权限
- 切换root位置,让sysroot作为文件系统树的根
- 设置新密码
- 如果启用了SElinux,需要touch /.autorelabel确保所有未标记的文件(包括此时的/etc/shadow)在启动过程中都会重新获得标记
- 记住两次exit
方法二
使用init=/bin/bash
将光标移至以 linux16 开头的行,末尾附加 init=/bin/bash 。利用该选项,在系统从initramfs向实际系统移交控制权前,系统中断,开启一个root shell
此时系统会显示root shell,且磁盘上的实际根文件系统以只读方式挂载在/
-
重新挂载让其拥有读写权限,挂载目录为/
-
使用passwd-d root删除原有密码,再进入系统配置或者使用vi编辑器直接编辑/etc/shadow文件,复制已知用户的密码记录替换root密码
-
如果启用了SElinux,需要touch /.autorelabel确保所有未标记的文件(包括此时的/etc/shadow)在启动过程中都会重新获得标记
-
还需要执行完整的 SELinux 重新标记,然后再次重新启动
sh-4.2# exec /usr/lib/systemd/systemd -
使用root登录,此时不需要密码
/etc/fstab配置故障排查
故障1:设备名称写错或者找不到设备
#修改设备名称
[root@www ~ 17:17:29]# vim /etc/fstab
/dev/mapper/centos_centos7-root / xfs defaults 0 0
UUID=4448185e-5899-49cc-b2ed-bea870980407 /boot xfs defaults 0 0
/dev/mapper/centos_centos7-homi /home
#重启,发现报错,查看err级别的错误
[root@www ~ 17:19:29]# journalctl -p err
#重新更改配置文件
[root@www ~ 17:30:19]# vim /etc/fstab
/dev/mapper/centos_centos7-root / xfs defaults 0 0
UUID=4448185e-5899-49cc-b2ed-bea870980407 /boot xfs defaults 0 0
/dev/mapper/centos_centos7-home /home
