系统恢复技术

1.系统引导过程概述

通电——>进入初始化阶段——>bios 初始化——>grub2 磁盘引导阶段——>grub2 文件引导阶段——>

指定 boot 所在分区——>启动内核,只读挂在 / 设备启动——>init 程序进入初始化阶段——>

启动 systemd 初始化进程——>读取 /etc/systemd/中的文件——>启动程序——>启动登陆环境

1.2bios 初始化


  • 基本输入 / 输出系统 ( BIOS ) 是内置于标准 x86/x86-64
    硬件的固件接口 , 将硬件置于已知状态并准备好系统以加载
    操作系统
  • 出现什么情况 ?
    检测并初始化硬件
    确定从中引导的设备
  • 可能出现了什么错误 ?
    错误或异常 BIOS 设置
    错误引导设备顺序
  • 可以如何中断或影响 ?
    按特定于供应商的键
    使用特定于供应商的配置实用程序
    通常 , 可以执行一次引导顺序覆盖

1.3grub 磁盘引导阶段

  • MBR
    – mbr 的作用是为了记录 /boot 目录所在分区位置
    – 磁盘的 0 磁道 1 扇区的前 446 字节
    – dd if=/dev/zero of=/dev/xda bs=446 count=1
    – grub2-install /dev/xda

1.4grub 文件引导阶段

  • /boot/grub2/grub.cfg
    – 指定 /boot 分区位置
    – 加载内核
    – 启动系统初始化进程
    – grub2-mkconfig

1.5内核引导阶段


  • 检测硬件设备
  • 设备驱动初始化
  • 将 / 只读挂在
  • 载入初始进程 systemd
  • 内核文件丢失请重新安装内核

1.6systemd 初始化


  • 开启 selinux 和 systemd-tools
  • 加载内核参数
  • 加载系统时钟,键盘,主机名称
  • 读写挂载 / 文件系统
  • 激活 raid , lvm 设备
  • 激活系统配额
  • 启动 multi-user.target.wants 中的所有服务脚本
  • 启用虚拟控台
  • 启动图形

1.7启动级别


  • runlever0.target -> poweroff.target
  • runlever1.target -> rescue.target
  • runlever2.target -> multi-user.target
  • runlever3.target -> multi-user.target
  • runlever4.target -> multi-user.target
  • runlever5.target -> grapical.target
  • runlever6.target -> reboot.target

1.8设定启动级别


  • systemctl set-default + 启动级别
  • /etc/systemd/system/default.target

2.系统恢复过程

2.1密码忘记,修改root用户密码

重启,到grub选项菜单,按’e’进入编辑模式。

Linux之——系统恢复技术_bash

找到kernel命令行编辑如下图

Linux之——系统恢复技术_初始化_02

Linux之——系统恢复技术_Linux_03

得到一个shell

Linux之——系统恢复技术_bash_04

chroot /sysroot/

passwd root

touch /.autorelabel

Linux之——系统恢复技术_Linux_05

按两下ctlr+d或输入两次exit退出重启就可以正常登陆了。

2.2grub文件引导阶段文件丢失

如果/boot/grub2/grub.cfg引导文件丢失,则如图


Linux之——系统恢复技术_Linux_06

输入这四条命令,就会重启

Linux之——系统恢复技术_bash_07

进入系统后,在shell输入命令生成缺失的引导文件,系统就修复成功!

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

Linux之——系统恢复技术_bash_08

2.3内核文件丢失

如果系统内核文件丢失,则重启时会如图所示


Linux之——系统恢复技术_bash_09

关机,选择镜像启动<这里用虚拟机做实验>

Linux之——系统恢复技术_初始化_10

Linux之——系统恢复技术_初始化_11

进入界面选择“Rescue Red Hat Enterprise Linux system”

Linux之——系统恢复技术_bash_12

选择“Troubleshooting”

Linux之——系统恢复技术_Linux_13

进入挽救模式,重要的事情说三遍“chroot /mnt/sysimage”

Linux之——系统恢复技术_初始化_14

Linux之——系统恢复技术_bash_15

Linux之——系统恢复技术_初始化_16

得到一个shell,执行刚才的命令,重新安装内核安装包

chroot /mnt/sysimage        ##切换到真实根环境
yum install kernel -y ##安装内核安装包

Linux之——系统恢复技术_bash_17

按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬盘启动,就可以正常登陆。

2.4 initramfs-‘uname- r’.img文件丢失

initramfs文件系统时在ramfs的cache实现的上加了一层很薄的封装,当这个initramfs-‘uname- r’.img缺失时,则如图所示。


Linux之——系统恢复技术_Linux_18

接下来的解决步骤与“内核丢失”情况的得到shell之前的解决办法一样。此时,得到一个shell,执行如下命令。

chroot /mnt/sysimage        ##切换到真实根环境
cd /boot/ ##进入boot目录
mkinitrd initramfs-`uname -r`.img `uname -r`
uname -r ##内核版本号

Linux之——系统恢复技术_重启_19

按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。

2.5误删shell文件,系统恢复

设置镜像启动,进入挽救模式,得到一个shell。


由于/bin/bash文件缺失,无法使用shell,如图


Linux之——系统恢复技术_重启_20

cp /bin/bash /mnt/sysimage/bin/bash

Linux之——系统恢复技术_Linux_21

cp  /bin/bash /mnt/sysimage/bin/bash

按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。

2.6系统启动级别文件链接错误

/etc/systemd/system/default.target      ##系统开机链接文件
启动级别共6级,第3页第7个知识点。
当default.target 链接到别的级别,则系统无法启动到图形界面
default.target -> /lib/systemd/system/graphical.target
这里,systemctl set-default poweroff.target 使其链接为0级别。
则,系统开机就会自动关机。

置镜像启动,进入挽救模式,得到一个shell。输入如下命令。


chroot /mnt/sysimage        ##切换到真实根环境
Rm -fr /etc/systemd/system/default.target

删除错误链接文件


Ln  -s  /usr/lib/systemd/system/graphical.target
etc/systemd/system/default.target ##建立新的链接文件

Linux之——系统恢复技术_Linux_22

按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。

2.7mbr(主引导记录)446字节丢失

dd if=/dev/zero of=/dev/vda bs=446 count=1 可以清空mbr


Linux之——系统恢复技术_初始化_23

重启,系统就会无法被mbr引导正常启动

Linux之——系统恢复技术_bash_24

设置镜像启动,进入挽救模式,得到一个shell。输入如下命令。

chroot /mnt/sysimage        ##切换到真实根环境
grub2-install /dev/vda ##重新生成mbr

Linux之——系统恢复技术_初始化_25

按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。