一、引导过程总览

CentOS 7引导过程与服务控制(一)_第1张图片
1.开机自检
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
2.MBR 引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(Master Boot Record主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根MBR 记录中的引导信息调用启动菜单。
3.GRUB 菜单
对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给用户选择,并根据所选项加载 Linux 内核文件,然后将系统控制权转交给内核。 (CentOS 7 采用的是 GRUB2 启动引导器)。
4.加载内核
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。
5.init 进程初始化
为了完成进一步的系统引导过程,Linux 内核首先将系统中的“/sbin/init”程序加载到内存中运行,init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。

二、init 进程

Linux 操作系统中的进程使用数字进行标记,每个进程的身份标记号称为 PID。在引导Linux 操作系统的过程中,“/sbin/init”是内核第一个加载的程序,因此 init 进程对应的PID 号总是为 1。

三、Systemd简介

Systemd 是 Linux 操作系统的一种 init 软件,CentOS 7 系统中采用了全新的 Systemd 启动方式,取代了传统的 SysVinit。Systemd 启动方式使系统初始化时诸多服务并行启动,大大提高了开机效率。CentOS 7 系统中“/sbin/init”是“/lib/systemd/systemd”的链接文件。换言之,CentOS 7 系统中运行的第一个 init 进程是“/lib/systemd/systemd”。 systemd 守护进程负责 Linux 的系统和服务,systemctl 用于控制 Systemd 管理的系统和服务状态。以下是Systemd的单元类型。
CentOS 7引导过程与服务控制(一)_第2张图片
早期 Linux 操作系统中的 SysVinit 机制,默认包括七种不同的服务搭配方式,为了向下兼容 SysVinit 系统,Systemd 使用了相应的 target(目标)模拟了 SysVinit 的运行级别,如图。
CentOS 7引导过程与服务控制(一)_第3张图片

四、排除系统启动故障

1、修复MBR扇区故障
MBR 位于物理硬盘的第一个扇区(512 字节),该扇区又称为主引导扇区,除了包含系统引导程序的部分数据外,还包含整个硬盘的分区表记录。当主引导扇区发生故障时,将可能无法加载系统,通过该硬盘引导主机时很可能进入黑屏状态。
扇区故障实验:
(1)首先我们添加一块硬盘,然后(1)执行“fdisk /dev/sdb”命令将硬盘分区。
CentOS 7引导过程与服务控制(一)_第4张图片
(2)执行“mkfs.xfs /dev/sdb1”命令对硬盘分区进行格式化。
CentOS 7引导过程与服务控制(一)_第5张图片
(3)执行“mkdir /data”命令创建目录作为挂载点,再执行“mount /dev/sdb1 /data”将硬盘设备挂载到目录上。
CentOS 7引导过程与服务控制(一)_第6张图片
(4)执行“dd if=/dev/sda of=/data/sda.mbr.bak bs=512 count=1”命令将主硬盘的第一扇区的内容备份到“/data”目录中。
CentOS 7引导过程与服务控制(一)_第7张图片
(5)执行“dd if=/dev/zero of=/dev/sda bs=512 count=1”命令来模拟主分区故障。
CentOS 7引导过程与服务控制(一)_第8张图片
(6)执行“init 6”命令重启来看一下,显示无法找到系统。
CentOS 7引导过程与服务控制(一)_第9张图片
(7)我们重启设备,在加载读条的时候及时按下Esc键进入“Boot Menu”界面,并将系统镜像放入驱动中然后使用方向键选择“CD-ROM Drive”选项进入驱动引导。
CentOS 7引导过程与服务控制(一)_第10张图片
(8)在向导界面使用方向键选择“Troubleshooting”进入故障修复页面,再选择“Rescue a CentOS Linux system”选项,将以“救援模式”引导 Linux 操作系统。
CentOS 7引导过程与服务控制(一)_第11张图片
CentOS 7引导过程与服务控制(一)_第12张图片
(9)然后选择 “1”确认并按 Enter 键继续,接下来会出现字符界面。
CentOS 7引导过程与服务控制(一)_第13张图片
(10)按 Enter 键后将进入Bash Shell 环境。
CentOS 7引导过程与服务控制(一)_第14张图片
(11)执行“mkdir /bak”命令创建目录,并执行“mount /dev/sdb1 /bak”命令将硬盘设备挂载到该目录上。
CentOS 7引导过程与服务控制(一)_第15张图片
(12)执行“dd if=/bak/sda.mbr.bak of=/dev/sda”命令将备份的主扇区内容放入到主扇区里。
CentOS 7引导过程与服务控制(一)_第16张图片
(13)最后执行“reboot”命令重启设备即可。
CentOS 7引导过程与服务控制(一)_第17张图片
2、GRUB引导故障
GRUB 是大多数 Linux 操作系统默认使用的引导程序,可以通过启动菜单的方式选择进入不同的操作系统。
故障模拟实验:
(1)执行“cd /boot/”命令再执行“ls”命令可以看到“grub2”目录。
CentOS 7引导过程与服务控制(一)_第18张图片
(2)执行“cd grub2”命令再执行“ls”命令可以看到“grub.cfg”配置文件(CentOS 7 采用的是 GRUB2 启动引导器)。
CentOS 7引导过程与服务控制(一)_第19张图片
(3)执行“rm -rf grub.cfg”删除掉配置文件,然后执行“init 6”命令重启设备。
CentOS 7引导过程与服务控制(一)_第20张图片
(4)重启可以发现系统让我们手写启动菜单界面。
CentOS 7引导过程与服务控制(一)_第21张图片
(5)重启设备并导入镜像到驱动中,在加载读条时及时按下Esc键进入“Boot Menu”界面。使用方向键选择“CD-ROM Drive”选项进入驱动引导。
CentOS 7引导过程与服务控制(一)_第22张图片
(6)在向导界面使用方向键选择“Troubleshooting”进入故障修复页面,再选择“Rescue a CentOS Linux system”选项,将以“救援模式”引导 Linux 操作系统。
CentOS 7引导过程与服务控制(一)_第23张图片
CentOS 7引导过程与服务控制(一)_第24张图片
(7)然后选择 “1”确认并按 Enter 键继续,接下来会出现字符界面。
CentOS 7引导过程与服务控制(一)_第25张图片
(8)按 Enter 键后将进入Bash Shell 环境。
CentOS 7引导过程与服务控制(一)_第26张图片
(9)执行“chroot /mnt/sysimage/”命令加载系统镜像,再执行“grub2-install /dev/sda”命令重新建立加载sda分区。
CentOS 7引导过程与服务控制(一)_第27张图片
(10)执行“grub2-mkconfig -o /boot/grub2/grub.cfg”命令选择构建grub菜单配置文件。
CentOS 7引导过程与服务控制(一)_第28张图片
(11)执行“exit”命令退出bash环境,再执行“reboot”命令重启即可。
CentOS 7引导过程与服务控制(一)_第29张图片

五、重置root用户密码

当忘记 root 用户的密码时,将无法登录 Linux 操作系统执行管理、维护等任务,而只能通过其他用户(普通用户)登录使用一些受限制的功能。当然,如果操作系统中还有其他具有 root 权限的用户(uid 为 0),或者拥有修改 root 账号密码权限的用户,也可以使用这些用户登录操作系统,然后重新设置 root 用户的密码。
模拟实验:
1、将镜像放入驱动并重启设备。
CentOS 7引导过程与服务控制(一)_第30张图片
2、在加载读条时及时按下Esc键进入“Boot Menu”界面。使用方向键选择“CD-ROM Drive”选项进入驱动引导。
CentOS 7引导过程与服务控制(一)_第31张图片
3、在向导界面使用方向键选择“Troubleshooting”进入故障修复页面,再选择“Rescue a CentOS Linux system”选项,将以“救援模式”引导 Linux 操作系统。
CentOS 7引导过程与服务控制(一)_第32张图片
CentOS 7引导过程与服务控制(一)_第33张图片
4、然后选择 “1”确认并按 Enter 键继续,接下来会出现字符界面。
CentOS 7引导过程与服务控制(一)_第34张图片
5、按 Enter 键后将进入Bash Shell 环境。
CentOS 7引导过程与服务控制(一)_第35张图片
6、执行“chroot /mnt/sysimage/”命令加载系统镜像, 在执行“passwd root”命令即可重置。
CentOS 7引导过程与服务控制(一)_第36张图片

下一篇幅我们将学习CentOS 7 的服务控制与优化启动过程。尽请期待,谢谢!