Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程
最近奶牛一直在折腾linux下的grub跟grub2,因为前阵子用ghost恢复windows的时候出现错误,导致分区表被破坏,无法进入系统。今天给大家介绍下如何备份跟还原我们的硬盘主引导扇区。首先我来介绍下这个硬盘主引导扇区,因为对于这个主引导记录MBR跟这个硬盘分区表DPT的关系,可能有的朋友还不是那么清晰。
硬盘主引导扇区(硬盘的前512字节) = 硬盘主引导记录(MBR,硬盘的前446字节)+ 硬盘分区表(DPT,MBR后面的66字节)
MBR 446字节(0000–01BD),DPT 64字节(01BE–01FD),结束标志2字节(55 AA)
其中的这个结束标志很重要,如果缺失的话会导致系统无限次重启。
这个主引导记录MBR呢就是我们通常所说的引导程序的一部分,不管是windows还是linux系统,都要在这里写入一部分引导程序。但是这部分引导程序仅仅只是引导程序的一部分,就拿grub的最新版本grub2来说吧,通过mbr引导grub2,然后grub2的引导程序会通过引导来继续到硬盘上的/boot/grub/目录下继续进行引导,这里奶牛会在硬盘或者U盘安装grub的时候说明。
说过MBR,我们再来说说分区表,分区表DPT是在MBR之后的66个字节,最多可以有四个主分区或者三个主分区加一个逻辑分区。而逻辑分区的信息会写在扩展分区开始扇区上。所以,一般只要分区表DPT没出问题,逻辑分区一般不会出问题。
硬盘的主引导扇区都介绍过了,下面说说具体的备份与还原的方法。
这里奶牛是用ubuntu linux下的dd命令来完成的。
备份硬盘的主引导扇区:
dd if=/dev/sda of=./mbr.bak bs=512 count=1
说明if是输入设备,我们这里把第一块硬盘作为输入设备,这里大家需要注意下,有些硬盘不是sda而是hda,大家可以通过
sudo fdisk -l
来查看自己是sd的硬盘还是hd的硬盘。
of为输出的文件名,这里我们输出到了当前目录下的mbr.bak文件中了,大家可以通过pwd命令来查看当前目录的位置。
我们也可以规定它的输出位置为/boot/下,命令为
dd if=/dev/sda of=/boot/mbr.bak bs=512 count=1
还原也用同样的方法
dd if=/boot/mbr.bak of=/dev/sda bs=512 count=1
如果你仅仅要恢复分区表DPT
dd if=/boot/mbr.bak of=/dev/sda bs=1 skip=446 count=66
判断我们备份是否正确的方法是查看备份文件mbr.bak是否为512字节,且结束字节为55 AA。
这里奶牛建议各位经常用ghost还原的朋友,最好将备份文件多存几处备份,因为想一下,如果分区表错误了,我们的分区信息可能都无法读出,所以存在硬盘内的分区表备份可能也就无法拿来还原了。所以嘛,多存网上或者U盘内一份备份奶牛觉得是有必要的。希望本文对大家有所帮助。