系统恢复技术
1.系统引导过程概述通电——>进入初始化阶段——>bios 初始化——>grub2 磁盘引导阶段——>grub2 文件引导阶段——>
指定 boot 所在分区——>启动内核,只读挂在 / 设备启动——>init 程序进入初始化阶段——>
启动 systemd 初始化进程——>读取 /etc/systemd/中的文件——>启动程序——>启动登陆环境
(1)bios 初始化
基本输入 / 输出系统 ( BIOS ) 是内置于标准 x86/x86-64硬件的固件接口 , 将硬件置于已知状态并准备好系统以加载 操作系统。
1)出现什么情况 ?
检测并初始化硬件 ;确定从中引导的设备。
检测并初始化硬件 ;确定从中引导的设备。
2)可能出现了什么错误 ?
错误或异常 BIOS 设置 ;错误引导设备顺序。
错误或异常 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)内核引导阶段
*检测硬件设备
按特定于供应商的键 ;使用特定于供应商的配置实用程序 ;通常<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 + 启动级别
(7)设定启动级别
*systemctl set-default + 启动级别
*/etc/systemd/system/default.target
2.系统恢复过程
2.系统恢复过程
(1)mbr(主引导记录)446字节丢失
dd if=/dev/zero of=/dev/vda bs=446 count=1 ##可以清空mbr
dd if=/dev/zero of=/dev/vda bs=446 count=1 ##可以清空mbr
重启,系统就会无法被mbr引导正常启动 。如下图所示:
设置镜像启动,进入挽救模式,得到一个shell。输入如下命令。
chroot /mnt/sysimage ##切换到真实的环境
chroot /mnt/sysimage ##切换到真实的环境
grub2-install /dev/vda ##重新生成mbr
按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬盘启动,即可正常登陆。
按两下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 ##系统开机链接文件
• 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 ##建立新的链接文件
误删链接文件
ln -s /usr/lib/systemd/system/graphical.target etc/systemd/system/default.target ##建立新的链接文件
与上同,按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬盘启动,就可以正常登陆。