情景一、 root权限下,rm -rf /boot/* 并且 dd if=/dev/zero of=/dev/sda bs=446 count=1,删除/boot下的所有内容,并且向sda的第一个扇区写入446字节数据块,目前情况下系统是无法启动了,因为grub引导和系统内核都已经没了,下面来修复。
修复一:
1、重启,并且设置从光驱启动(确保系统盘在光驱内),在菜单选择进入救援模式(rescue模式);
2、启动后会获得一个shell,这时候的 / 并不是原来系统的根,原来的根被临时挂载到了 /mnt/sysimage/目录下了;
3、 ls /mnt/sysimage/ 可以看到原来系统根下面的文件,现在要做的就是重新挂载根,执行 chroot /mnt/sysimage/;
4、根被挂载回来以后,需要做的就是修复grub引导以及/boot分区,首先挂载光驱 mount /dev/sr0 /usr/src;
5、挂载好光驱以后,安装系统内核,rpm -ivh /usr/src/Packages/kernel-3.10.......rpm --force;(不同版本内核版本号不同)
6、下面来修复grub,执行 grub2-install /dev/sda ,将引导程序写入sda的第一个扇区;
7、最后生成grub.cfg配置文件,执行 grub2-mkconfig -o /dev/boot/grub2/grub.cfg ;
8、执行两次exit,系统会重新启动,到此,系统修复完成。
情景二、root权限下, 模拟 /etc/fstab 文件被移除,mv /etc/fstab /home
修复二:
1、重启系统,在引导菜单第一个选项处按 “e” ;
2、找到系统内核参数的一行,(linux16开头的一行)在末尾处添加 “1”,(1代表进入单用户模式),按ctrl + x 继续;
3、进入单用户模式以后,默认当前 / 是以只读的方式挂载的,需要重新以读写方式挂载,mount -o remount,rw / ;
4、恢复 /etc/fstab文件, mv /home/fstab /etc/fstab ,如果此文件已被彻底删除,可以重新编辑一份放到/etc/下;
5、重启,修复完成。
情景三、root权限下,模拟mv /etc/fstab /home , rm -rf /boot/* ,dd if=/dev/zero of=/dev/sda bs=446 count=1 ,更暴力一点~
修复三:
1、重启,同情景一,进rescue救援模式;
2、进来的时候系统有提示说:已经将以前的根临时挂载到了/mnt/sysimage/下,但是,查看 ls /mnt/sysimage/ ,什么也没有;
3、这个时候因为fstab也被移除了,所以根分区所在的设备文件没有被挂载,chroot /mnt/sysimage/ 报错,说找不到/bin/bash;
4、fdisk -l 查看一下哪个设备文件名是以前的根分区? 我这里假设是/dev/sda3;
5、那么就临时挂载/dev/sda3,mkdir /test , echo /dev/sda3 /test xfs rw 0 0 >> /etc/fstab ;
6、mount -a 发现没报错!挂载成功了,ls /test , 原来根下面的文件现在全在这里了;
7、赶紧把fstab恢复了,后面才好干活! mv /test/home/fstab /test/etc/fstab (现在的/test目录就临时充当了原来的 / );
8、exit重启,仍然进rescue模式,进来以后再看 /mnt/sysimage/目录,什么都有了,chroot /mnt/sysimage/ 重新挂载根;
9、挂载光驱,mount /dev/sr0 /usr/src , 安装内核, rpm -ivh /usr/src/Packages/kernel-3.10.....rpm --force ;
10、恢复grub引导 grub2-install /dev/sda ;
11、生成grub.cfg配置文件 grub2-mkconfig -o /boot/grub2/grub.cfg ;
12、exit重启,到此,系统恢复完成。