1.备份MBR分区表
dd if=/dev/sda of=/data/mbr.bak bs=1 count=64 skip=446
分区表前512字节分为三部分,第一部分446字节与启动相关 ,中间64字节为分区信息,后2字节为结束标志
使用hexdump -C -n 512 /dev/sda 查看当前分区表结构
2.远程传输备份信息到其他主机
scp /data/mbr.bak root@10.0.0.89:/root
分区表被破坏后是不能读取本机磁盘信息的,所以备份的分区表要存放在远程主机上
3.破坏分区表447-510字节
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
4.分区表被破坏时无法进入系统的,reboot重启
此时界面会显示 grub rescue> 进入救援模式
在虚拟机设置里改成光盘启动
确认后按 CTRL+ALT+DEL 组合键重启虚拟机,注意鼠标光标要在虚拟机内,此时是看不见光标的,重启机器时按 ESC 键进入 BIOS
5.初始界面如图所示
选择第三项光盘模式
6.确认后使用光盘启动
选择 Troubleshooting 排错
选择第二项救援模式
经过引导过程后进入该界面选择 1 continue
回车显示命令提示符
输入 hexdump -C -n 512 /dev/sda -v 可以发现分区表 447-510 字节被清空
输入 hostname -I 可以发现没有 IP 地址,需要临时配一个 IP 地址
输入 ip a a 10.0.0.105/24 dev ens33 临时配一个 IP 地址,使用 hostname -I 可以看见已经有了 IP,ping 10.0.0.89 能够 ping 通
7.将远程主机的分区备份文件拷到本机上
scp 10.0.0.89:/root/mbr.bak .
输入 ls -l mbr.bak 可以看到该文件已经存在
输入 dd if=mbr.bak of=/dev/sda bs=1 seek=446 恢复分区表
输入hexdump -C -n 512 -v /dev/sda 可以发现分区表已经恢复
8.重启虚拟机修复成功
CTRL+ALT+EDL