简述Linux系统的引导过程与服务控制
引导过程总览
开机自检(BIOS)
检测硬件设备,检测出第一个能引导系统的设备,硬盘。
MBR引导
运行在 MBR 扇区(硬盘的最小存储单位 512字节)里的启动 GRUB 引导程序
GRUB菜单
GRUB 引导程序通过读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核和镜像文件系统的设置和路径,屏幕显示grub菜单
加载内核(kernel)
把内核和镜像文件系统加载到内存中
内存会把init进程(systemd)加载到内存中运行
内存会把init进程(systemd)加载到内存中运行
- PS:init的pid固定为1,centos7的init进程为systemd,/sbin/init
centos6及以前使用的是sysVinit,传统SysVinit依赖于串行执行 Shell 脚本启动服务,导致效率低下,系统启动速度较慢
centos7的systemd是并行启动脚本服务,启动速度快;systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度。
系统初始化进程
init进程
- 有Linux内核加载运行/sbin/init程序
- init进程是系统中第一个进程
- init进程的PID(进程标记)号永远为1
systemd
- systemd是Linux操作系统的一种init软件
- centos7中采用了全新的systemd启动方式,取代传统的sysVinit
- centos7中运行的第一个init进程是/lib/systemd/systemd
修复MBR扇区故障
故障原因
- 病毒、木马等造成的破坏
- 不正确的分区操作、磁盘读写误操作
故障现象
- 找不到引导程序,启动终端
- 无法加载操作系统,开机后黑屏
解决思路
- 提前备份号文件
- 以安装光盘引导进入急救模式
- 从备份文件中恢复
如何进行MBR扇区的故障修复
第一步:备份
我们进行备份的前提条件要求,除了我们本身的系统磁盘,我们还需要有额外的一块硬盘,并将系统磁盘的内容备份到另一块普通磁盘中。
建立好第二块磁盘的文件系统后,我们进行文件的备份
首先,我们向将sda磁盘中的内容复制到一个文件夹下,取名为mbr.bak,并将这个文件复制到我们好的硬盘的挂载点上
为什么我们只复制512字节?因为我们系统磁盘中前512字节中含有我们系统的引导程序,我们只需要复制引导程序,在后续的急救操作中正确修正即可正常进入系统
接下来我们模拟硬盘引导系统被破坏的情况:
接下来进入开机画面
进入急救模式
我们从上面查看根目录能发现,我们之前存储的备份文件的文件夹并没有在根目录上。其实目前界面内的目录,属于一个虚拟目录,但是我们的数据是实际存在在我们的挂载点上。这个时候我们新建一个空目录,将我们另一块正常硬盘做一个挂载,挂载到我们的空目录上:
重启结束后,我们正常可以进入系统了。