系统恢复技术
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’进入编辑模式。
找到kernel命令行编辑如下图
得到一个shell
chroot /sysroot/
passwd root
touch /.autorelabel
按两下ctlr+d或输入两次exit退出重启就可以正常登陆了。
2.2grub文件引导阶段文件丢失
如果/boot/grub2/grub.cfg引导文件丢失,则如图输入这四条命令,就会重启
进入系统后,在shell输入命令生成缺失的引导文件,系统就修复成功!
grub2-mkconfig >/boot/grub2/grub.cfg
2.3内核文件丢失
如果系统内核文件丢失,则重启时会如图所示关机,选择镜像启动<这里用虚拟机做实验>
进入界面选择“Rescue Red Hat Enterprise Linux system”
选择“Troubleshooting”
进入挽救模式,重要的事情说三遍“chroot /mnt/sysimage”
得到一个shell,执行刚才的命令,重新安装内核安装包
chroot /mnt/sysimage ##切换到真实根环境
yum install kernel -y ##安装内核安装包
按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬盘启动,就可以正常登陆。
2.4 initramfs-‘uname- r’.img文件丢失
initramfs文件系统时在ramfs的cache实现的上加了一层很薄的封装,当这个initramfs-‘uname- r’.img缺失时,则如图所示。接下来的解决步骤与“内核丢失”情况的得到shell之前的解决办法一样。此时,得到一个shell,执行如下命令。
chroot /mnt/sysimage ##切换到真实根环境
cd /boot/ ##进入boot目录
mkinitrd initramfs-`uname -r`.img `uname -r`
uname -r ##内核版本号
按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。
2.5误删shell文件,系统恢复
设置镜像启动,进入挽救模式,得到一个shell。由于/bin/bash文件缺失,无法使用shell,如图
cp /bin/bash /mnt/sysimage/bin/bash
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 ##建立新的链接文件
按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。
2.7mbr(主引导记录)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退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。
系统恢复技术
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’进入编辑模式。
找到kernel命令行编辑如下图
得到一个shell
chroot /sysroot/
passwd root
touch /.autorelabel
按两下ctlr+d或输入两次exit退出重启就可以正常登陆了。
2.2grub文件引导阶段文件丢失
如果/boot/grub2/grub.cfg引导文件丢失,则如图输入这四条命令,就会重启
进入系统后,在shell输入命令生成缺失的引导文件,系统就修复成功!
grub2-mkconfig >/boot/grub2/grub.cfg
2.3内核文件丢失
如果系统内核文件丢失,则重启时会如图所示关机,选择镜像启动<这里用虚拟机做实验>
进入界面选择“Rescue Red Hat Enterprise Linux system”
选择“Troubleshooting”
进入挽救模式,重要的事情说三遍“chroot /mnt/sysimage”
得到一个shell,执行刚才的命令,重新安装内核安装包
chroot /mnt/sysimage ##切换到真实根环境
yum install kernel -y ##安装内核安装包
按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬盘启动,就可以正常登陆。
2.4 initramfs-‘uname- r’.img文件丢失
initramfs文件系统时在ramfs的cache实现的上加了一层很薄的封装,当这个initramfs-‘uname- r’.img缺失时,则如图所示。接下来的解决步骤与“内核丢失”情况的得到shell之前的解决办法一样。此时,得到一个shell,执行如下命令。
chroot /mnt/sysimage ##切换到真实根环境
cd /boot/ ##进入boot目录
mkinitrd initramfs-`uname -r`.img `uname -r`
uname -r ##内核版本号
按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。
2.5误删shell文件,系统恢复
设置镜像启动,进入挽救模式,得到一个shell。由于/bin/bash文件缺失,无法使用shell,如图
cp /bin/bash /mnt/sysimage/bin/bash
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 ##建立新的链接文件
按两下ctlr+d或输入两次exit退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。
2.7mbr(主引导记录)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退出,关掉镜像启动,开启硬 盘启动,就可以正常登陆。