系统恢复技术
系统引导过程简述
通电 -> bios 初始化 -> grub2 磁盘引导阶段 -> grub2 文件引导阶段 ->指定 boot 所在分区 -> 启动内核,只读挂在/设备 -> 启动 init 程序进入初始化阶段 ->启动systemd 初始化进程 -> 读取 /etc/systemd/中的文件 ->启动程序 ->启动登陆环境
在linux中,/boot/目录存放开机启动时的文件
/boot/grub2/grub.cfg
即grub2的文件引导,起到引导开启linux系统的作用
– 指定 /boot 分区位置
– 加载内核
– 启动系统初始化进程
– grub2-mkconfig 恢复文件
/boot/vmlinuz-3.10.0-123.el7.x86_64内核引导文件
/boot/initramfs-3.10.0-123.el7.x86_64.img内核引导文件
bios 初始化
基本输入 / 输出系统 ( BIOS ) 是内置于标准x86/x86-64
硬件的固件接口 , 将硬件置于已知状态并准备好系统以加载操作系统
grub 磁盘引导阶段
MBR(主引导记录Main Boot Record)
– mbr 的作用是为了记录 /boot 目录所在分区位置
– 磁盘的 0 磁道 1 扇区的前 446 字节
[[email protected] ~]# dd if=/dev/zero of=/dev/vda bs=446 count=1####模拟破坏grub磁盘引导
grub2-install /dev/xda 恢复引导
1.模拟破坏grub磁盘引导
会出现以下结果
2.修复grub磁盘引导
此时我们需要使用驱动来修复
virt-manage 打开虚拟机管理
添加CDROM
然后设置用CDROM启动系统
选择troubleshooting
选择rescue抢救系统
之后进入抢救界面
your system is mounted under the /mnt/sysimage directory
表示你的系统挂载在 /mnt/sysimage下
chroot /mnt/sysimage ####change root也就是改变程序执行时所参考的根目录位置。
grub2-install /dev/vda####修复MBR
然后exit退出两次后用硬盘启动就修复成功了
grub 文件引导阶段
/boot/grub2/grub.cfg
– 指定 /boot 分区位置
– 加载内核
– 启动系统初始化进程
– grub2-mkconfig
1.模拟破坏grub.cfg文件
[[email protected] grub2]# rm -fr grub.cfg####删除引导文件
2.修复grub.cfg文件
此时需要手动输入linux系统开启引导
set root=’hd0,msdos1’####设置root读取第一块磁盘的第一个分区,md0表示第一块磁盘,msdos表示第一个分区
linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/vda1####手动进行内核引导
initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img####内核文件
boot ####启动
之后就修复成功
但是grub.cfg文件依旧不存在,开机后依旧需要手动输入引导,所以需要产生一份grub.cfg文件
grub2-mkconfig > /boot/grub2/grub2.cfg ####产生grub引导文件并且放入/boot/grub2/grub2.cfg
内核引导阶段
检测硬件设备
设备驱动初始化
将 / 只读挂在
载入初始进程 systemd
内核文件丢失请重新安装内核
即/boot/vmlinuz-3.10.0-123.el7.x86_64内核引导文件
1.vmlinuz-3.10.0-123.el7.x86_64模拟内核文件丢失
rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64####模拟内核文件丢失
2.修复内核文件
使用CDROM启动系统,进入rescue抢救模式
chroot /mnt/sysimage####将系统挂载到根目录下
mount /dev/cdrom /mnt####将cdrom挂载到/mnt下
cd /mnt
cd Packages/
cp kernel-3.10.0-123.e17.x86_64.rpm /opt####将kernel-3.10.0-123.e17.x86_64.rpm包复制到
cd /opt
rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm | cpio -id####rpm2cpio命令用于将rpm软件包转换为cpio格式的文件,cpio -id 解压cpio文件
cd boot/
cp vmlinux-3.10.0-123.e17.x86_64 /boot
然后exit退出两次用硬盘启动就修复成功了
3.模拟/boot/initramfs-3.10.0-123.el7.x86_64.img文件丢失
rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
4.修复/boot/initramfs-3.10.0-123.el7.x86_64.img文件
使用CDROM启动系统,进入rescue抢救模式
chroot /mnt/sysimage/
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)####产生文件
然后exit退出两次用硬盘启动就修复成功了
systemd初始化
开启 selinux 和 systemd-tools
加载内核参数
加载系统时钟,键盘,主机名称
读写挂载 / 文件系统
** raid , lvm 设备
**系统配额
启动 multi-user.target.wants 中的所有服务脚本
启用虚拟控台
启动图形
启动级别
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.模拟启动出错
/etc/systemd/system/下存放着systemd初始化文件
rm -fr /etc/systemd/system/default.target####删除系统初始化链接
ln -s /usr/lib/systemd/system/poweroff.target /etc/systemd/system/default.target ####将系统初始化软链接链接到关机文件,这样一开机就关机了
2.修复
进入单机模式
即进入以下界面,键入e
之后删除并修改一部分内容,然后再ctrl+x退出
之后建立init软链接
chroot /sysroot
ln -s
之后exit退出两次就修复成功
遗忘密码
进入单机模式,并进行修改
chroot /sysroot
passwd root ####修改密码
之后exit退出两次后即成功