查看文章 |
1. 为什么写这篇blog
上个星期SATA开始不停地出问题,经常性的在使用中分区信息丢失。开始只是C盘信息丢失,也就忍了,每次用Ghost还原。最后一次居然整个扩展分区 没了,所有电影音乐游戏一概报销。只好临时把系统又装回老硬盘。虽然丢失的没有重要资料,毕竟是一大堆攒下来的东西,很不爽,决定找回来。在网上搜硬盘工 具没找到理想的,倒是顺便又温习了一遍分区表知识,于是决定自己动手,丰衣足食。装上WinHex,直接开干。 2. MBR(主引导记录)and Partition Table(分区表) MBR是磁盘第一个扇区,CHS地址是0柱面,0磁头,1扇区;LBA地址是0。布局如下:
理解了MBR和Partition Table,修复思路就很清晰了。我的数据分区大概是占用250G硬盘的后180G,所以从硬盘头六分之一的位置开始,搜索分区表的明显标志 0x55AA。WinHex的方便的搜索功能还可以设置只搜索存在于整数倍于512字节块的末尾的0x55AA,速度快很多。每找到一个最后两字节为 0x55AA的扇区,就分析4个分区表项是不是合理的,以及它所描述的分区大小,终于找到一个扇区,含有一个分区表项,大小180G,哈哈,肯定就是它 了。这个扇区肯定就是扩展分区的起始扇区,它含有的那个分区表项肯定就是它唯一包含的一个逻辑分区了。 在MBR中创建一条属性为扩展分区(05)的分区表项,填入其他相关位置信息,以描述刚才找到的这个扩展分区: CHS起始位置:一般是逻辑分区表项中的CHS起始位置,把磁头数改为0。 存盘,运行Windows管理工具,查看磁盘信息,数据分区赫然在目。:) 4. 备份MBR 终于找回我的电影和mp3了,激动啊。赶紧做个备份。MBR本来没有第二份拷贝,不像FAT,所以用winhex把MBR复制一份到磁盘最后一个扇区,这个扇区一般不可能被用到。好了,再也不怕你硬盘掉电了。 相信听说过硬盘MBR、硬盘分区表、DBR的朋友一定都不少。可是,你清楚它们分别起什么作用吗?它们的具体位置又在哪里呢?硬盘上的MBR只有一份吗?什么是硬盘逻辑锁?如何制造和破解它呢??别急,让我们一步步来搞清楚吧!
以下先介绍一下有关扇区编号的基本知识:介绍一下有关硬盘扇区编号规则的3个易混淆的术语“物理扇区编号”、“绝对扇区编号”和“逻辑扇区编号”。 我们都知道硬盘扇区的定位有两种办法: 1、直接按柱面、磁头、扇区3者的组合来定位(按这种编号方式得到的扇区编号称为物理扇区编号); 2、按扇区编号来定位(又分“绝对扇区编号“和“逻辑扇区编号“两种)。 这两种定位办法的换算关系如下图:(设图中所示硬盘每道扇区数均为63) ![]() ![]() 如图所示,由于目前大多数硬盘采用的是一种“垂直分区结构“,故左图一磁头数为2、盘片数为1的硬盘,图中0磁头所对扇区的表示方法就有2种,即:0柱面 0磁头1扇区=绝对0扇区,而1磁头所对扇区的表示方法也有2种,即:1柱面0磁头1扇区=绝对63扇区。如果是如右图所示磁头数为4、盘片数为2的硬 盘,那么则顺着垂直于盘片的箭头线方向进行如图的绝对扇区的编号。 以上,我们说了物理扇区、绝对扇区的编号方式,而逻辑扇区编号由于是操作系统采用的扇区编号方式,而操作系统只能读取分区内部的数据内容,故逻辑扇区是从 各分区内的第一个扇区开始编号,如我们下文对mbr的说明可以知道:mbr这个扇区所在硬盘磁道是不属于分区范围内的,紧接着它后面的才是分区的内容,因 此一般来说绝对63扇区= c:分区逻辑1扇区。以下让我们总结一下3种编号方式的不同: 编号方式 表示方法 采用该种方式编号的对象 起始编号 物理扇区编号 0柱面0磁头1扇区 BIOS内置中断服务程序 0柱面0磁头1扇区 绝对扇区编号 绝对X扇区 人们为方便所采用的办法 绝对0扇区 逻辑扇区编号 逻辑X扇区 操作系统 逻辑1扇区 需要说明的是:本文假设所使用的硬盘每道扇区数都为63。各位手头上所使用的硬盘具体的每道扇区数则可以在BIOS设置内有关硬盘参数的设置内查到。 硬盘MBR(硬盘主引导记录)及硬盘分区表介绍 硬盘MBR就是我们经常说的“硬盘主引导记录”,简单地说,它是由FDISK等磁盘分区命令写在硬盘绝对0扇区的一段数据,它由主引导程序、硬盘分区表及扇区结束标志字(55AA)这3个部分组成,如下: 组成部分 所占字节数 内容、功能详述 主引导程序区 446 负责检查硬盘分区表、寻找可引导分区并负责将可引导分 区的引导扇区(DBR)装入内存; 硬盘分区表区 16X4=64 每份16字节的4份硬盘分区表,里面记载了每个分区的类 型、大小和分区开始、结束的位置等重要内容; 结束标志字区 2 内容总为”55AA”。 结束标志字区 2 内容总为”55AA” 这3部分的大小加起来正好是512字节=1个扇区(硬盘每扇区固定为512个字节),因此,人们又形象地把MBR称为“硬盘主引导扇区”。这个扇区所在硬 盘磁道上的其它扇区一般均空出,且这个扇区所在硬盘磁道是不属于分区范围内的,紧接着它后面的才是分区的内容(也就是说假如该盘每磁道扇区数为63,那么 从绝对63扇区开始才是分区的内容)。 硬盘DBR(硬盘分区引导记录)介绍 DBR是各个分区自己的引导记录,又称“分区引导记录”,它是由FORMAT高级格式化命令写在各个分区开始处第一个扇区(比如说:主分区C:从1磁头0 柱面1扇区=逻辑1扇区=绝对63扇区)开始,那么C:区逻辑1扇区就是DBR所存放的位置)的一段数据.这段数据主要由以下几个部分组成: 1、占3个字节的跳转指令; 2、占8个字节的操作系统厂商标识及版本号; 3、占19个字节的分区参数表(又称BPB),里面存放着对该分区进行读写操作时所必备的参数 (如该分区内每扇区所包含的字节数、每簇扇区数、每个磁道的扇区数、该分区FAT份数等); 4、占480个字节的DOS引导代码,它负责把DOS引导文件IO.SYS、MSDOS.SYS装入内存; 5、占2个字节的结束标志字”55AA”. 以上5个部分也正好占1个扇区;和MBR有所不同的是:DBR扇区后面一般就紧接着存放该分区的FAT(文件分配表,共2份)。 综上所述,我们知道硬盘MBR负责总管硬盘分区,只有分区工具才能对它进行读写(如FDISK);而DBR则负责管理某个具体的分区,它是用操作系统的高 级格式化命令(如FORMAT)来写入硬盘的。在系统启动时,最先读取的硬盘信息是MBR,然后由MBR内的主引导程序读出DBR,最后才由DBR内的 DOS引导代码读取操作系统的引导程序,其中任何一个环节出了问题,操作系统都无法正常启动成功,如果是MBR部分出了问题,即使只是”55AA”标志字 丢失或被改为其他值,通常都会出现“无效分区表“、逻辑盘丢失、启动死机等现象;而如果是DBR部分出了问题,通常会出现“未格式化的分区”的错误提示。 实际上,在每一个分区的前面,都有一份MBR,在每一个分区的开始处,都有一份DBR。通常我们把存放在绝对0扇区的那份MBR称为主MBR或C分区 MBR。这样我们就能画出如下的MBR、DBR的存放位置表:市面上很多分区表保存软件(如KV3000的分区表保存功能)实际上保存的就是表中各个分区 前MBR区的数据。 ![]() 在中篇里,我们将来看看怎样实际操作,观察我们硬盘上的MBR、DBR。 近距离观察MBR、DBR: 口说无凭,眼见为实。还是让我们用工具来具体观察一下吧:)我们要观察的盘全部分作DOS区,在DOS区内共分C:、D:、E:三个盘。 1、观察主MBR: 首先得准备工具,这里我们推荐DISKEDIT兼容FAT32的版本,可以到www.download.com.cn搜索DISKEDIT并下载。该程序启动后界面如下: 选“PHYSICAL DEVICE”按OK进入。这时候,DISKEDIT首先显示的就是硬盘绝对0扇区的MBR信息,如下图: 从图中我们可以看到MBR的0~01BD字节为主引导程序;01BE~01FD这64字节为硬盘分区表信息,每项分区表占16字节;最后是结束标志字55AA。下面我们详细分析一下分区表各个字节所表示的意思: ![]() 注1:此处第一个字节存放磁头号(01、0B),第二字节低六位存放扇区号01=00(00 0001)=00(01)、FE=11(11 1110)=11(3F),第二字节高2位+第三字节为柱面号00(00)=000、11(7F)=37F。还需要说明的是01BF—01C1这3个字节 在分区表里面,视后面01C2字节所示分区类型的不同而代表不同的含义。如果01C2是代表主分区的01、04、06或0B,那么01BF—01C1所表 示的就是该分区DBR所在的位置,如果01C2是代表扩展分区的05或0F,那么01BF—01C1所表示的就是该分区MBR所在的位置。 看完上面我们给出的第一份MBR,不知道大家注意到没有,在硬盘分区表数据区里面只有两个分区表项,而我们的盘明明是分成C:、D:、E:三个盘的,怎么 回事呢?再仔细观察一下分区表,我们还会发现在这份MBR里,第一个分区表项(01BE—01CD)描述的是C:盘的信息,第二个分区表项(01CE— 01DD)描述的是整个扩展分区的信息,它把剩下的D:、E:全部包含在里面了!未免太笼统了点吧。那么,如果我们要查看D:、E:各自详细的分区情况怎 么办呢?参考上一段我们给出的01BF—01C1这3个字节所代表的不同含义,我们发现,第二个分区表项的分区类型符为0F,也就是说是扩展分区,那么分 区类型符前面3个字节所代表的应该是扩展分区MBR所在的位置。可见不光是全盘最前面的0磁头0柱面1扇区有一份主MBR,扩展分区的最前面也有一份 MBR! 还是让我们顺着系统启动的顺序先到1磁头 0柱面1扇区去看看主分区DBR,然后再看扩展分区的MBR是什么样的吧! 2、观察C分区DBR: 在DISKEDIT界面输入“ALT+S”,在出现的菜单内选“GOTO。。。”,如下图: 接下来,按表1内01BF—01C1字节所示的主分区DBR位置,在出现的菜单内依次输入DBR所在的柱面数(CYLINDER)=0,磁头数(HEAD)=1,扇区数(SECTOR)=1,如下图: 哈哈,第一份DBR的数据就调出来啦:) 3、观察D分区MBR: 按照表1扩展分区01CF—01D1字节所示分区MBR位置,进入图4的菜单内输入281(119h)柱面、0磁头 、1扇区;D分区MBR就出来了:)
前两篇文章中我们了解了硬盘逻辑分区的概念也实际看到了分区的情况,下面是对前问的总结,附带逻辑锁的详解。== ![]()
![]()
|





