一、首先对MBR和分区表进行备份,并将备份的mbr文件存放在FTP或者U盘中,备份内核文件安装包

[root@demo ~]#dd if=/dev/sda of=/root/mbr bs=512 count=1
[root@demo ~]# cd /boot
[root@demo boot]# ls
config-3.10.0-123.el7.x86_64                             symvers-3.10.0-123.el7.x86_64.gz
grub2                                                    System.map-3.10.0-123.el7.x86_64
initramfs-0-rescue-9e0bb12a92ad483499d77d78010474c1.img  vmlinuz-0-rescue-9e0bb12a92ad483499d77d78010474c1
initramfs-3.10.0-123.el7.x86_64.img                      vmlinuz-3.10.0-123.el7.x86_64
[root@demo boot]# rpm -qf vmlinuz-3.10.0-123.el7.x86_64 
kernel-3.10.0-123.el7.x86_64

    将安装光盘中的

kernel-3.10.0-123.el7.x86_64.rpm包进行备份

二、此处模拟系统MBR和boot文件夹丢失,此步在修复引导时不要操作

[root@demo boot]# dd if=/dev/zero of=/dev/sda bs=512 count=1
[root@demo boot]# rm -rf /boot/*

三、修复开始:挂载光盘或者从PXE启动,进入到救援模式

wKioL1XQV02Q6g-4AAC6hZUNK2w664.jpg

wKiom1XQVUSyDJuqAAE8EuYiBso455.jpg

wKioL1XQV02xK-fhAAHiHlTODxA795.jpg

wKiom1XQVUTCG5QcAAChxXxC4JI225.jpg

给本地网卡配置一个IP地址,然后将FTP上的MBR下载到本地

#ifconfig eno33554960 192.168.0.102 netmask 255.255.255.0
#ftp 192.168.0.99
#get mbr
#bye
#dd if=mbr of=/dev/sda

这样就对MBR和分区表进行了还原

wKiom1XQVsDQ_KtOAALNjCMVmeg549.jpg

按exit,exit,重启电脑,重新进入救援模式,此时系统已经能识别分区表,将根挂载到/mnt/sysp_w_picpath

wKiom1XQWBuwEvXfAAEDbLJJwcI430.jpg

重新将根切换回/,然后重新安装grub,重新安装内核文件

sh-4.2#chroot /mnt/sysp_w_picpath
bash-4.2#grub2-install /dev/sda
bash-4.2#ifconfig eno33554960 192.168.0.102 netmask 255.255.255.0
bash-4.2#ftp 192.168.0.99
bash-4.2#get kernel-3.10.0-123.el7.x86_64.rpm
bash-4.2#rpm -ivh --force kernel-3.10.0-123.el7.x86_64.rpm

重新启动用电脑,进行到救援模式,重新生成grub.cfg配置文件

bash-4.2#grub2-mkconfig > /boot/grub2/grub.cfg
bash-4.2#sync
bash-4.2#exit
exit

系统会自动重启两次,启动完成后,系统修复完成,可以正常登陆系统

如果只是grub.cfg文件丢失,可以直接在grub命令提示符中手动输入启动命令,启动完成后用grub2-mkconfig > /boot/grub2/grub.cfg进行修复grub.cfg文件,启动为硬盘分区时,root=/dev/sda1如果为逻辑卷,根椐卷组名而不一样,这里以/dev/mapper/rhel-root为例

grub> set root='hd0,msdos1'
grub> linux16 /vmlinuz-3.10.0-123.el7.x86_64 root=/dev/mapper/rhel-root ro
grub> initrd16 /initramfs-3.10.0-123.el7.x86_64.img
grub> boot

启动完成后进入桌面后使用grub2-mkconfig修复grub配置文件

#grub2-mkconfig > /boot/grub2/grub.cfg

重新启动后,系统正常引导