• 系统环境

    • 系统版本:CentOS 6.9
    • 磁盘:LVM
    • 内核:2.6.32

  • 模拟误删除:

  • 重启之后的样子:

  • 恢复步骤

  • (1)重启机器,用光盘或USB引导进入救援模式的shell(光盘或USB上的系统尽量与本机硬盘系统版本保持一致)

    • 第三项为救援模式

    • 由于刚才删除的时候连/etc/fstab一起删除了,救援模式找不到硬盘上的系统

      • 进入救援模式的shell
    • 要想恢复/boot下的文件,首先要先让救援模式找到硬盘上的系统,所以要先恢复/etc/fstab文件

  • (2) 查看硬盘信息,找出/boot分区和根分区

      	ls /dev/sd*
      	fdisk /dev/sda
    

    • 从上面的图片中可以看到/dev/sda2的ID是8e,也就是LVM,用lvdisplay命令看看lvm的详细信息 lvdisplay #显示lvm的详细信息 vgchange -ay #激活所有lvm

  • 激活了之后就可以挂载看看这个lv到底是不是根分区了。 mkdir /mnt/root mount /dev/vg0/lv0 /mnt/root

  • (3)找到根分区之后就可以重新写/etc/fstab文件了

      	blkid                         #查看块设备信息,确定设备文件的位置
      	cat << EOF > /mnt/root/etc/fstab
      	>/dev/mapper/vg0-lv0        /          ext4        defaults        0    0
      	>/dev/sda1                        /boot    ext4        defaults        0    0
      	>/dev/mapper/vg0-lv0       swap   swap       defaults        0    0
      	>EOF
      	#利用多行重定向重写fstab文件
    

  • 确定fstab文件无误后重启电脑重新进入救援模式,让救援模式识别硬盘上的系统!

  • ** 重新进入救援模式之后,救援模式已经可以识别本地硬盘系统。**

  • (4)重新进入救援模式的shell

    • 切换根到本地硬盘系统的根,然后挂载光盘 chroot /mnt/sysimage mount /dev/cdrom /mnt/
    • 重新安装内核,以便生成/boot下vmlinuz-xxx等文件 rpm -ivh /mnt/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force
      #一定要加上--force强制安装!!!

    •   安装完之后可以看到/boot下已经有文件了,接下来就是修复grub了!
      
  • (5)修复grub

    • 使用grub-install 命令进行修复 grub-install /dev/sda #/sda为/boot所在的磁盘

    • 重写gurb.conf文件 cat << EOF > /boot/grub/grub.conf >default=0 >timeout=5 >title CentOS 6 (2.6.32-696.el6.x86_64) >   root (hd0,0) >   kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=8f8c8a6b-24aa-4b88-9972-2d0ff2829441 rhgb quiet >   initrd /initramfs-2.6.32-696.el6.x86_64.img

  • 修复完grub之后,重启!见证奇迹的时刻~~~~~~