1. 为什么写这篇blog <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

  上个星期SATA开始不停地出问题,经常性的在使用中分区信息丢失。开始只是C盘信息丢失,也就忍了,每次用Ghost还原。最后一次居然整个扩展分区没了,所有电影音×××戏一概报销。只好临时把系统又装回老硬盘。虽然丢失的没有重要资料,毕竟是一大堆攒下来的东西,很不爽,决定找回来。在网上搜硬盘工具没找到理想的,倒是顺便又温习了一遍分区表知识,于是决定自己动手,丰衣足食。装上WinHex,直接开干。

2. MBR (主引导记录)and Partition Table(分区表)

MBR 是磁盘第一个扇区,CHS地址是0柱面,0磁头,1扇区;LBA地址是0。布局如下:

MBR

扇区内偏移

描述

0x0000

引导代码

0x<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />018A

4 9字节供IBM扩展的分区表项

0x01B8

4 字节磁盘签名

0x01BE

4 16字节主分区表项

0x01FE

2 字节MBR签名(0xAA55[1]

 

[1]

0x01FE 550x01FFAA

 

分区表项

表项内偏移

描述

0x00

可引导标志

0x01

起始CHS地址

0x04

分区类型

0x05

结束CHS地址

0x08

4 字节起始LBA地址

0x0C

4 字节分区大小,以扇区计算


3.
修复过程

  理解了MBRPartition Table,修复思路就很清晰了。我的数据分区大概是占用250G硬盘的后180G,所以从硬盘头六分之一的位置开始,搜索分区表的明显标志0x55AAWinHex的方便的搜索功能还可以设置只搜索存在于整数倍于512字节块的末尾的0x55AA,速度快很多。每找到一个最后两字节为0x55AA的扇区,就分析4个分区表项是不是合理的,以及它所描述的分区大小,终于找到一个扇区,含有一个分区表项,大小180G,哈哈,肯定就是它了。这个扇区肯定就是扩展分区的起始扇区,它含有的那个分区表项肯定就是它唯一包含的一个逻辑分区了。

MBR中创建一条属性为扩展分区(05)的分区表项,填入其他相关位置信息,以描述刚才找到的这个扩展分区:

CHS 起始位置:一般是逻辑分区表项中的CHS起始位置,把磁头数改为0
-----------------------------------------------------------------------
----------------------------------------------------------------------------\