第十一单元

 系统恢复技术

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

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

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

(3)grub 文件引导阶段
/boot/grub2/grub.cfg 
– 指定 /boot 分区位置 
– 加载内核 
– 启动系统初始化进程 
– grub2-mkconfig

(4)内核引导阶段
*检测硬件设备
*设备驱动初始化
*将 / 只读挂在
*载入初始进程 systemd
*内核文件丢失请重新安装内核

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

(6)启动级别
*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

(7)设定启动级别
*systemctl set-default + 启动级别
*/etc/systemd/system/default.target

2.系统恢复过程
(1)mbr(主引导记录)446字节丢失
dd if=/dev/zero  of=/dev/vda  bs=446  count=1                           ##可以清空mbr 
 第十一单元

重启,系统就会无法被mbr引导正常启动 。如下图所示:
 第十一单元第十一单元

设置镜像启动,进入挽救模式,得到一个shell。输入如下命令。
chroot    /mnt/sysimage                                     ##切换到真实的环境
grub2-install   /dev/vda                                      ##重新生成mbr 
第十一单元第十一单元
按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬盘启动,即可正常登陆。

(2)密码忘记,修改root用户密码。
方法:重启,到grub选项菜单,按’e’进入编辑模式。 
第十一单元

找到kernel命令行,并编辑,如下图所示:
编辑前:
第十一单元

编辑后:(即删除掉部分内容,将rc改为rw rd.break)
得到一个shell,如下图所示:
第十一单元

改密码开始:
输入命令:
chroot  /sysroot/
passwd
touch   /.autorelabel
最后执行两次exit退出即可。
第十一单元


(3)grub文件引导阶段文件丢失:
如果/boot/grub2/grub.cfg引导文件丢失,则如下图所示:
第十一单元第十一单元

执行以下四条命令,系统就会重启,进而就可以进一步进行修复:
第十一单元第十一单元

进入系统后,在打开的shell中输入以下命令生成缺失的引导文件,即可将系统修复成功:
第十一单元grub2-mkconfig  >/dev/grub2/grub2/grub.cfg
第十一单元

(4)内核文件丢失:
若系统内核文件丢失,则重启时会如下图所示:
第十一单元第十一单元

此时,应关机,选择镜像启动。用光标选中下图中偏右侧的表框中的ID CDROM1,并通过右侧的上、下箭头使其置顶:
第十一单元


第十一单元

进入选择界面,通过上下键选中“Troubleshooting”,进入故障排除模式,选中其即变白色,按“enter”键进入下一页:
第十一单元

进入选择界面,通过上下键选中“Rescue Red Hat Enterprise Linux system”,进入拯救红帽企业Linux系统模式,选中其即变白色,按“enter”键进入下一页:
第十一单元

当出现以下界面时遇到“continue”,就选“continue”;遇到“ok”,就选“ok”即可:
第十一单元第十一单元

第十一单元第十一单元

第十一单元第十一单元

接着就会出现一个shell,就执行刚刚提示界面出现的命令,重新安装内核安装包。如下图所示:
chroot  /mnt/sysimage                    ##切换到真实环境
yum  install  kernel  -y                    ##安装内核安装包
 第十一单元第十一单元
最后依然是执行两次“exit”退出,接着关掉镜像启动,开启硬盘启动,即可登录。


(5)initramfs-'uname-r'.img文件丢失:
initramfs-'uname-r'.img文件丢失时,便会出现如下图所示界面:
第十一单元第十一单元

接下来的步骤于内核丢失一样的解决办法,此处不予以重复。当得到一个shell时,执行如下命令:
chroot  /mnt/sysimage/                                                               ##切换到真实环境
cd  /boot/                                                                                       ##进入boot目录
mkinitrdinitramfs-'uname-r'.img  `uname  -r`                           ##内核版本号
第十一单元
按两下ctlr+d或执行两次“exit”命令退出
关掉镜像启动,开启硬盘启动,即可登录。

(6)误删shell文件:
开启镜像启动,进入挽救模式,得到一个shell。因为/bin/bash文件缺失,所以无法使用shell。如下图所示:
第十一单元第十一单元

执行命令:cp  /bin/bash  /mnt/sysimage/bin/bash
第十一单元第十一单元
接着执行两次“exit”命令出退,然后
关掉镜像启动,开启硬盘启动,就可以正常登录了。

(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

设定启动级别
• systemctl set-default + 启动级别
• /etc/systemd/system/default.target                       ##系统开机链接文件
当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        ##建立新的链接文件 
第十一单元第十一单元
与上同,按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬盘启动,就可以正常登陆。