系统引导过程概述:

通电——bios初始化——grub2磁盘引导阶段——grub2文件引导阶段——指定boot分区所在位置——启动内核,只读/挂载设备——启动init程序进入初始化阶段——启动systemd初始化进程——取/etc/systemd/中的文件——启动程序——启动登陆环境。




系统启动流程:

一.通电

bios(主板上的只读存储中,basic input or output system)
作用:硬件检测,激活硬件

二.grub系统引导(grub引导分为两个阶段)

  1. 阶段1 mbr(主引导记录)

    主引导记录在硬盘上的0磁道,一扇区,446个字节
    dd if=/dev/zero of=/dev/vda bs=446 count=1 可以清空mbr
    进入到挽救模式,执行chroot /mnt/sysp_w_picpath切换到真实/环境,
       并执行grub2-install /dev/vda

实验:mbr主引导分区损坏后修复方法

(1)实验之前首先要关闭selinux。

vim /etc/sysconfig/selinux

linux云自动化运维基础知识22(系统恢复)_Linux

如图将其改为disable,然后重新启动系统

(2)破坏掉mbr主引导分区

dd if=/dev/zero of=/dev/vda bs=446 count=1

linux云自动化运维基础知识22(系统恢复)_linux_02

重新启动系统后发现无法启动

linux云自动化运维基础知识22(系统恢复)_Linux_03

(3)设置光驱启动进入救援模式

linux云自动化运维基础知识22(系统恢复)_linux_04

linux云自动化运维基础知识22(系统恢复)_Linux_05

linux云自动化运维基础知识22(系统恢复)_linux_06

linux云自动化运维基础知识22(系统恢复)_linux_07

(4)如上图输入1回车后会得到一个shell,此时执行df命令查看自己系统的根分区,然后执行

chroot /mnt/sysp_w_picpath/

转换根分区,此时便切换到了真实的根环境,然后执行

grub2-install /dev/vda

重新恢复mbr分区,接着exit两次退出,关闭虚拟机之后将启动调回硬盘启动,开机后便可正常启动。

linux云自动化运维基础知识22(系统恢复)_linux_08

linux云自动化运维基础知识22(系统恢复)_Linux_09

2.阶段2 grub文件引导阶段
   找到/boot分区
   读取/boot/grub2/grub.cfg
   文件丢失,grub2-mkconfig >/boot/grub2/grub.cfg

实验:grub文件损坏后修复方法

(1)实验之前执行df命令查看自己的根分区和boot分区

linux云自动化运维基础知识22(系统恢复)_Linux_10

 (2)删除grub文件引导

rm -fr /boot/grub2/grub.cfg

(3)重新启动发现无法启动

linux云自动化运维基础知识22(系统恢复)_Linux_11

(4)手动输入引导文件

set root=‘hd0,msdos1’     boot分区所在的位置
linux16 /vmlinuz-3.10.0-327.el7.x86_64 ro root=/dev/vda3 根分区所在的位置
initrd16 /initramfs-3.10.0-327.el7.x86_64.img  执行
boot  启动

linux云自动化运维基础知识22(系统恢复)_linux_12

此时可以开机,但是这是手动引导,为临时生效,开机后应该恢复/boot/grub2/grub.cfg文件

grub2-mkconfig > /boot/grub2/grub.cfg

linux云自动化运维基础知识22(系统恢复)_linux_13

恢复文件之后系统就成功复原了。


三.启动内核,只读挂载/设备
检测设备
对设备驱动进行初始化
进入系统初始化阶段
内核丢失,从新安装内核安装包就可以解决
rpm -ivh kernel-xxxxx.rpm --force

实验:内核文件丢失后修复

(1)首先查看启动需要哪些文件

ls /boot      查看启动分区的文件

(2)将内核文件删除后重新启动

rm -fr /boot/vmlinuz-3.10.0-327.el7.x86_64    删除内核文件
reboot

linux云自动化运维基础知识22(系统恢复)_linux_14

(3)重新启动后发现无法正常开机,提示缺少内核文件

linux云自动化运维基础知识22(系统恢复)_Linux_15

(4)设置光驱启动,进入救援模式,执行df命令可以看到此时自己真实系统的根目录为/mnt/sysp_w_picpath,而此处显示的根为iso镜像的根。

(5)分解iso镜像中的内核包,并将内核文件拷贝到/mnt/sysp_w_picpath/boot/

rpm2cpio /run/install/repo/Packages/kernel-3.10.0-327.el7.x86_64.rpm |cpio -id
cp /boot/vmlinuz-3.10.0-327.el7.x86_64 /mnt/sysp_w_picpath/boot/

linux云自动化运维基础知识22(系统恢复)_linux_16

linux云自动化运维基础知识22(系统恢复)_linux_17

(6)exit 并且设置硬盘启动,重新启动。修复完成进入系统

linux云自动化运维基础知识22(系统恢复)_Linux_18

四.系统初始化阶段

系统初始化阶段加载initrd镜像
开启初始化进程systemd
开始selinux
加载内核参数
初始化系统时钟,键盘,主机名称
重新读写挂载/设备
激活raid,lvm
激活配额
启动multi-user.target.wants中的所有服务
开启虚拟控制台
启动图形

initramfs-`uname -r`.img丢失用:     mkinitrd initramfs-`uname -r`.img `uname -r`    恢复

实验:系统初始化加载initrd镜像损坏后恢复

(1)删除initrd镜像文件initramfs-3.10.0-327.x86_64.img

rm -fr /boot/initramfs-3.10.0-327.x86_64.img   删除initrd镜像文件

linux云自动化运维基础知识22(系统恢复)_Linux_19

(2)重新启动发现无法进入系统

linux云自动化运维基础知识22(系统恢复)_Linux_20

(3)设置光驱启动,进入救援模式,执行chroot  /mnt/sysp_w_picpath 切换到真实的根环境

linux云自动化运维基础知识22(系统恢复)_linux_21

linux云自动化运维基础知识22(系统恢复)_linux_22

(4)mkinitrd   /boot/initramfs-$(uname -r).img  $(uname -r)

 (5)ls   /boot/查看文件是否恢复,exit两次后设置硬盘启动,系统恢复正常

linux云自动化运维基础知识22(系统恢复)_linux_23