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盘内一份备份奶牛觉得是有必要的。希望本文对大家有所帮助。

奶牛 | 2011年02月18日
  • Code之行人 2011年02月19日 at 12:02 下午
    来给奶牛送牛奶了啊
  • freetstar 2011年02月19日 at 8:39 下午
    看完了,又复习了一次,多学习了下DPT。以前宿舍的哥们就是ghost恢复xp时把xp和ubuntu的双系统的分区表搞坏了
  • 囧啊囧 2011年02月19日 at 9:28 下午
    看了一半,看不懂了就不看了,等碰到了我直接搞一次就知道了
  • Solo 2011年02月19日 at 11:05 下午
    学习了,去备份下...
  • 米波 2011年02月20日 at 7:57 下午
    mark,先存着,以后看看 :k
  • 丕子 2011年02月21日 at 11:40 上午
    学习
  • su 2011年02月21日 at 2:59 下午
    你的广告呢
  • 7cbt 2011年02月21日 at 7:48 下午
    DPT 搞了 半天,头痛 头痛。
  • Tal 2014年03月21日 at 4:06 下午
    赞 非常好的教程! :good
Comments are closed.