硬盘分区错误系统无法启动分析之旅

现象描述:

我个人的电脑上安装了2块硬盘,第一块为80G,另一块为160G,因后一硬盘原来分为5个区,随着硬盘数据增多,觉得分区不合理了,如是想合并一些分区。从网上下了PQ magic 8.05,不能合并NTFS分区,于是先尝试让合并分区转成FAT32,结果不能转换。一大堆错误。于是下了 Paragon.Partition.Manager.v9.0 按照向导运行,运行了半天moving 我的I盘数据也不知道移动到哪里去了。移动完毕后I分区不再存在,变成了自由空间,估计数据也没了,可惜了我的电影。算了先与前一个H分区合并吧。合并成功了。后来运行PQ magic,弹出错误,大体类似如下内容

 “Norton PartitionMagic 已检测到起始于磁盘1扇区114366735上的分区有错误116。起始LBA的值为11436735CHS的值为15483824LBACHS的值必须相等。Norton PartitionMagic已经确认CHS的值是正确的且可修正LBA的值。您要Norton PartitionMagic来修正该错误吗?

无法进入PQ magic操作界面。重新启动电脑,开机自检后,无法进入windows,用GhostWINPEDOS都不行。硬盘灯常亮,但不闪烁。

分析:

硬盘灯常亮,硬盘故障,无法自主,应该是硬盘分区表坏了,着手恢复吧。

解决过程:

先了解硬盘结构,以及电脑启动过程。

以下文字来自网上:《MBR代码分析》的文章

机器加电或按reset键后都要进行系统复位,复位后CS=FFFFHIP=0000H 那么自然就从FFFF:0000H处开始执行指令,这个地方只有一条JMP指令 跳转到系统自检程序处,系统自检完成后把软盘的第一个扇区(如果由软盘启动)或者硬盘的第一个扇区,即MBR扇区(如果由硬盘启动)读入到0:7C00H处然后把控制权交出,从0:7C00H处继续执行,下面就是硬盘的MBR代码分析其中的引导扇区是指硬盘相应分区的第一个扇区,是和操作系统有关的 操作系统的引导是由它来完成的,而MBR并不负责,MBR和操作系统无关 他的任务是把控制权转交给操作系统的引导程序。

那么MBR是啥样子的呢?

搜到文章 MBR与分区表中有介绍,也就是说从0柱面0磁道1扇区为主引导扇区,保存了MBR01BE偏移开始是4条分区表信息,扇区最后是55AA,分区表项中存放了C/H/SLBA信息。该磁道其余62个扇区也被占用。如下分区表项数据:

80 01 01 00 07 FE FF FF 3F 00 00 00 37 16 71 02

00 FE FF FF 05 FE FF FF 76 16 71 02 4B 74 30 10

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

55AA

80为若值为80H表示活动分区,若值为00H表示非活动分区

01 01 00 本分区的起始磁头号、扇区号、柱面号。其中:

      磁头号——2字节;

      扇区号——3字节的低6位;

      柱面号——为第3字节高2+4字节8位。

      07 分区类型这里表示NTFS

      FE FF FF本分区结束磁头号、扇区号、柱面号

3F 00 00 00 本分区之前已用了的扇区数

      37 16 71 02 本分区的总扇区数

下一条记录为扩展分区的。这里应该说明的是分区所包含的扇区信息有2种方式,其中C/H/S方式对大硬盘不适用,因为用8bit来存储磁头地址,用10bit来存储柱面地址,用6bit来存储扇区地址,而一个扇区共有512B最多1024*256*63*512,即8G大小。所以一般使用LBALogical Block Addressing逻辑块寻址模式)方式,在LBA地址中,地址不再表示实际硬盘的实际物理地址(柱面、磁头和扇区)。LBA编址方式将CHS这种三维寻址方式转变为一维的线性寻址,它把硬盘所有的物理扇区的C/H/S编号通过一定的规则转变为一线性的编号,系统效率得到大大提高,避免了烦琐的磁头/柱面/扇区的寻址方式。在访问硬盘时,由硬盘控制器再这种逻辑地址转换为实际硬盘的物理地址。

修复MBR引导程序可以采用fdisk /mbr

扩展分区布局如何呢?文章 《使用WinHex手工恢复MBR》 有详细说明,也就是说除了MBR,还有EBR,布局图如下

 

MBR

C

EBR D

 EBR  E

EBR F

下面的文字描述中,提到主分区、扩展分区、逻辑分区的概念,主分区指活动分区,一般就是C盘。主分区和扩展分区由MBR的分区表项指出。逻辑分区指扩展分区的再次分区,可分成若干逻辑分区。如DE都是逻辑分区。为了述说方便,我下面说的每个逻辑分区包括EBR。那么逻辑分区总数等于EBR扇区数、分区引导扇区和逻辑盘数据区等等之和。

分区引导扇区保存了DBRDOS BOOT RECORD),每个主分区、逻辑分区都有分区引导扇区,如CDE分区。DBR扇区一般在EBR(占用一个磁道63个扇区)的后面。由MBR引导程序读取活动分区的DBR并执行。

DBR包括:

跳转指令,占用3个字节的跳转指令将跳转至引导代码。
       
厂商标识和DOS版本号,该部分总共占用8个字节。
     BPBBIOS Parameter Block BIOS 参数块)。
       
操作系统引导程序。
       
结束标志字,结束标志占用2个字节,其值为AA55

DBR详细内容可参见文章,《硬盘主引导扇区分区表和分区引导扇区(MBR、DPT、DBR、BPB)详解

 

还是以前面提到的分区表为例来说明如何计算扩展分区的EBR起始逻辑扇区号:

80 01 01 00 07 FE FF FF 3F 00 00 00 37 16 71 02

 

EBR=02711637hC盘扇区总数)+3FhMBR部分所占扇区)=02711676 h=40965750,

 

到达该扇区,部分数据如下

 

 

分区2(D分区)分区表扇区图

 

 

分区2D分区)分区表扇区图

 

 

可以看到包含了2条分区表记录,第一条为本逻辑分区D的分区信息,第二条为下一逻辑分区E的分区信息

D盘扇区总数为:02800A34h =4194565220G,与D盘大小相符。

那么E逻辑分区的EBR扇区起始号:

 

40965750MBRC盘所占扇区或者说D分区的EBR开始扇区号)+63 (EBR部分所占扇区3Fh) +41945652(D盘扇区总数) =82911465

2部分合起来为D逻辑分区扇区总数。

下一逻辑分区相对第2物理分区偏移为02800A34h+3Fh=02800A73h

该分区扇区总数为07444f65,包括EBRE盘。

这里强调一下偏移值,为相对第2物理分区(这里即为扩展分区)起始扇区的偏移扇区数,第2物理分区是指MBR中第2条分区信息中指出的扩展分区。

 

winhex 访问分区三的分区表,也是到达第82911465扇区。见下图操作,通过winhex直接到达了82911465号扇区。

 

 

  

  

 

分区3E分区)分区表扇区图

 

 上图中可以看到E逻辑分区信息:分区之前已用了的扇区数00000040,分区占用扇区大小07444f25,都是16进制数。那么E逻辑分区总扇区数:00000040h+07444f25h=07444f65h,正好等于分区2分区表扇区中第2条分区表信息项中的分区总扇区数。

那么下一分区即F逻辑分区信息如何呢,让我们来计算一下

F逻辑分区的EBR扇区起始号为:

82911465(逻辑分区3EBR的起始扇区04f120e9h+07444f65hE逻辑分区总扇区数)=204828750(0C35704eh),见分区4F分区)分区表扇区图中的扇区标号。

 

F逻辑分区的相对偏移扇区数:

3Fh (EBR部分所占扇区) +02800A34h (D盘扇区总数)+ 64 (EBR部分所占扇区40h)+07444f25h (E盘扇区总数)=09c459d8h

 

 

 

分区4F分区)分区表扇区图

 

如何计算出分区大小,重建分区表呢?文章当中也有详细描述。关键就是计算本分区的总扇区数。通过查找55aa标志来定位EBR,再计算分区大小。

另外的知识点是关于dos下采用debug命令来查看和修改分区数据

文章《DEBUG修复硬盘主引导区全透析》中有描述。

 

A 100    //100处写入汇编代码

 

 

 

具体参见《MBR与分区表》

 

但是如何让我的问题硬盘可访问呢?因只要连接上问题硬盘那么系统无法启动,甚至无法进入DOS,单独用另一块硬盘,就没问题。尝试了各种启动的办法,BIOS里设置不加载、接在SecondIDE master接口,依然不能进入。无奈看来只有硬盘热插拔了。

     查资料看了热插拔的注意事项:

插入时:先插数据线,后插电源线,插入电源线的动作要快,接头平行进入插孔,同时接触4个触点。

拔出时:在设备管理器先卸载,然后先电源线、后数据线。

然后打开设备管理器,刷新设备。过了一会就能用了。

哈,用winhex编辑分区表吧。经分析果然是E逻辑分区的EBR中分区表数据不正确了。修正后,系统顺利启动。

参考文献

l   使用WinHex手工恢复MBR

l   LBA百度百科         http://baike.baidu.com/view/112216.htm

l   MBR代码分析

l   DEBUG修复硬盘主引导区全透析

l   MBR与分区表

l   硬盘主引导扇区分区表和分区引导扇区(MBR、DPT、DBR、BPB)详解 http://www.51stor.net/html/magnetism/200806/17-55.html

l   巧妙变换思路让普通硬盘同样支持热插拔

 

在此感谢这些文章的作者们,如果没有他们深入浅出、妙笔生花的描述,我的问题无法解决。同时,也以此文谨送给使用PQ重新分区出现问题的人们。如文章转载,请注明出处。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值