MBR 硬盘 内存.doc_第1页
MBR 硬盘 内存.doc_第2页
MBR 硬盘 内存.doc_第3页
MBR 硬盘 内存.doc_第4页
MBR 硬盘 内存.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

mbr、dpt、dbr、bpb 详解 硬盘主引导扇区 = 硬盘主引导记录(mbr)+ 硬盘分区表(dpt) 物理位置:0面 0道 1扇区(clindyer 0, side 0, sector 1) 大小: 512字节 0 mbr 446字节(0000-01bd) dpt 64字节(01be-01fd) 结束标志 2字节(55 aa) 功能:mbr通过检查dpt分区信息来引导系统跳转至dbr; 读取: 使用norton diskedit,在object菜单中选择drive physical disk hard disk,然后在object菜单中选择disk partition table即可读取,并使用tools菜单中的write object to选项存入指定文件备份; 写入: 使用norton diskedit,在object菜单中选择drive floopy disk,选择备份的dpt文件,然后使用tools菜单中的write object to physical sector选项写入001 (clindyer 0, side 0, sector 1); 详解: 000h-08ah mbr启动程序(寻找开机分区) 08bh-0d9h mbr启动字符串 0dah-1bch 保留(0) 1beh-1fdh 硬盘分区表 1feh-1ffh 结束标志(55aa) 活动分区主引导扇区(dbr) 物理位置:1面 0道 1扇区(clindyer 0, side 1, sector 1) 大小: fat16 1扇区 512字节 fat32 3扇区 1536字节 功能:包含机器cmos等信息(0000-0059),核对该信息并引导指定的系统文件,如 ntldr等; 读取: 使用norton diskedit,在object菜单中选择drive logical disk disk c,然后,在object菜单中选择boot record即可读取,并使用tools菜单中的write object to选项存入指定文件备份; 写入: 使用norton diskedit,在object菜单中选择drive floopy disk,选择备份的dbr文件,然后使用tools菜单中的write object to physical sector选项写入 011 (clindyer 0, side 1, sector 1); 详解: 000h-002h 3 byte的跳转指令(去启动程序, 跳到03eh) 003h-03dh bios参数区 03eh-19dh dos启动程序 19eh-1e5h 开机字符串 1e6h-1fdh 文件名(io.sys, msdos.sys) 1feh-1ffh 结束标记(55aa)硬盘的数据结构 初买来的硬盘是没有办法使用的,还要将它分区,格式化(我们这里所说的格式化是高级格式化,格式化分为高级格式化和低级格式化,低级格式的目的是在将磁盘格式化分成磁道、扇区、柱面),然后再安装上操作系统才可以使用。就拿windows9x/me 来说,我们一般要将硬盘格式化成mbr(主引导扇区)、dbr(分区引导记录)、fat(分区表)、dir(目录区)、和data(数据区)等五部分(其中只有主引导扇区是唯一的,其它的随分区数增加而增加)。 当我们删除一个文件(无论是从回收站里删除还是按下shift+delete),其实文件并未真正的从磁盘里删除,只是在文件上做一个标记而已(在目录区里将第一个字符改成“e5”,在数据区里,把文件首字节改为“0e”,标记这个文件占的空间已释放, 就算格式化也是只是重写文件分配表(fat)而已,只有当写入一个文件到硬盘上,并且把这个空间占用覆盖时,这个文件才真正的删除了,如果没有补占用,还是有很大希望恢复的。 首先有必要说一下一些专业名词: 磁头:一张硬盘有两个盘面,每一个盘面都有一个读写磁头。将盘面进行编号,起始号为0,磁头号的编号和盘面的编号相同。 磁道:当磁头停在一个位置,盘片旋转一周,磁头就在盘的表面画出一个圆形轨迹,这个圆形轨迹就称为磁道,随着磁头的移动,磁盘就被画出许多个封闭的同心圆磁道。磁道从盘片的外缘开始编号,起始号为0。 柱面:硬盘一般由很多个盘面构成,每个盘面都补划分成相等的磁道,每个盘面的相同磁道就形成一个圆柱,这就是硬盘的柱面。硬盘有多少个磁道就有多少个柱面,柱面编号和磁道编号相同。 扇区:磁盘上每个磁道被划分成很多个弧段,弧段之间有间隔,这些弧段称为扇区。扇区也进行编号,起始号为1,每个磁道被除分成63个扇区,每个扇区可存储的数据是512个字节。实际现在的大容量硬盘,为了提高磁介质的利用率,使用了等密度的存储方式,也就是说外圈磁道扇区数比内圈的多,为了与老的硬盘制式相兼容,由硬盘控制器的驱动程序将参数进行转换。 簇:扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区(到底多少个扇区,根据具体文件分配格式而定)。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。 为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。 注意:磁头(head),柱面(cylinder)的编号都是从0开始的,而扇区(sector)编号是从1开始的。 chs:在对扇区进行编号计算的过程中,是沿着柱面(cylinder)-磁头(head)-扇区(sector)进行的,这就是物理扇区的chs(柱面数、磁头数、扇区数)寻址方式。有了chs参数,就可以很容易的计算出硬盘的容量,只要将这三个想乘得到总的扇区数,再乘上512就是硬盘容量。 mbr(主引导记录) mbr(main boot recore)既主引导记录 扇区,它位于磁盘的0柱面0磁头1扇区 。它总共512字节,前446字节为一段引导程序,主要任务是检查分区表是否正确,以及确定哪一个分区是操作系统可引导,并且在程序结束时把该分区的启动程序(例如ms-dos的io.sys)调入内存,交予控制权。后面的64字节为分区表(disk partition table,dpt)分区表大多以80h或00h为开始标志,以“55aa”为结束标志,共四个,每个16字节,结束标志位与本扇区的最末端。 注意:主引导记录(mbr)不依赖于任何操作系统,也就是与操作系统无关。 以下是mbr的具体图解: dbr(分区引导记录) dbr(分区引导记录)硬盘引导记录只有一个,而分区引导(dos boot record)记录不只一个,每一个逻辑驱动器都有一个分区引导记录(存储在逻辑驱动器的 开始处的第一个扇区)分区引导记录主要由以下四部分组成: 1、 bios参数记录块bpb(bios parameter block)表,它的主要作用是:记录了硬盘容量的大小、fat(文件分配表)的位置和大小、fdt(文件目录表)的位置和大小。 2、 磁盘标志记录表。 3、 分区引导记录代码区(引导程序):引导程序的作用是判断本分区根目录下的前两个文件是否为操作系统的引导文件(例如dos的io.sys msdos.sys),如果是就把它读入内存并交予控制权 4、 结束标志“55aa”:对扇区进行搜索,用于寻找分区引导记录所在扇区地址的依据。 下面例举目前常用的fat32分区格式的bpb表,共53字节:fat(文件分配表) 文件分配表(file allocation table),记录的是磁盘中每个簇的的使用情况,其大小由本分区的大小及文件分配单元的大小决定,由于fat对于文件管理非常重要,所以一开始设计者们就为它做了一个备份,所以有两个fat,一直廷续到现在。 当操作系统或应用程序,将数据写入磁盘时,必须在磁盘上找到相应的可以利用的扇区;反过来,要将数据从磁盘中读出时,也要在磁盘上找到已经存储了相应数据的扇区的地址,文件分配表fat就是记录扇区地址的。 因为磁盘的扇区非常多,如果将每个扇区都记录在fat中必然会导致fat体积的庞大,查找时的效率会低下,为了解决这个问题,采用的将扇区分组的方法,这个分组的过程称为扇区的分簇。 当使用了一个新格式化的逻辑驱动器时,文件数据存放的簇号是连续的,使用一段时间后,由于经常对文件进行删除、复制和修改等重要操作,每个文件的簇号就不一定连续了,为了确保取文件时,能够检索到所以连续或不连续的扇区地址,文件分配表采用了“簇链”的记录方式。 、当需要从磁盘上读取一个文件时,首先从文件目录表(fdt)中找到该文件的目录登记项。继而从目录登记项的有关字段,查到分配给该文件的第一个簇号(在fat里查),根据第一个簇号,可以计算出两组数据。 1、一组数据记录了文件在数据区(data)里的第一簇扇区的首地址,第一簇扇区的首地址是开始数据是连续存放的,连续存放多少个扇区由分区格式,和分区大小决定。下表列它们的对应关系: fat16 fat32 分区大小/mb 簇大小/kb 扇区数 分区大小/mb 簇大小/kb 扇区数 256-511 8 16 0.512-8 4 8 512-1023 16 32 8-16 8 16 1024-2047 32 64 16-32 16 32 2、另外一组数据指出了fat表内簇登记项的地址,如果其值是结束标志“ffffh(fat16格式)或ffffff0fh(fat32格式),说明文件至此结束。如果不是结束标志,则该登记项的值为第二个簇号,据此又可以计算出两组数据,继而确定文件在第数据区里第二簇扇区的首地址和fat内第二个簇登记项的地址. 继续重复上面的过程,就可以得到data区里全部数据,以及文件在fat表里所有簇登记项的地址。 、当需要在硬盘上建立文件时,首先顺序检索fat表,找到第一个可用簇,可用簇登记项的地址为0000h(fat16格式)或00000000h(fat32格式),将该簇作为起始簇,写入文件目录表(fdt)的相关登记项的起始簇字段中,然后继续检索后面的可用簇,找到后将其写入第一个可用簇项内。 按照上过程进行下去,将满足文件长度所需的簇全部找到。使每一个簇项的值指向下一个所需簇项,在最后的簇登记项内写入结束标志ffffh或ffffff0fh,于是一条能够检索整个文件的“簇链”就形成了。 当需要对一个文件进行扩展时,先检索fat表,找到一个可用簇。将簇项的内容置为结束标志,并将文件原来的最后簇项改为指向此可用簇,依次类推,直到满足文件扩展要求。 、当删除文件时,除了将目录登记项的第一个字节改为“e5h”,还要在fat表的“簇链”中对应的簇项全部清零,这些被清零的簇项又可以供给其它的文件使用,不过在删除文件结束以后目录登记项的其它字段仍然保存完好,只是文件名的第一个字节变成了“e5h,并且文件存储在扇区中的所有数据依然存在。这时,只要fat表中被清零的簇项没有被新的文件使用,就可以运行相关的软件来恢复被删除的文件。 硬盘的系统信息被破坏时,一般情况下fat被破坏的可能性较小,特别是第二个fat表一般能够保存完好,因为第二个fat表很少受到应用程序的访问。 每个fat表的前两个字节都是:f8ff 文件目录表(fdt) 操作系统为了管理磁盘上的目录和文件,在特定的扇区上建立了一个文件目录表。 fat16格式的fdt表占用32个扇区,扇区地址紧跟在第二个fat后,fat32分区格式没有固定的fdt表,在第二个fdt表之后就是数据区data 两种分区格式都使用一个长32b的“目录登记项”来说明目录或文件的有关特性,fat16的目录登记项放在fdt里,fat32的目录登记项放在数据区里,下表列出了目录登记项的有关内容: 位移 字节 内容说明 00h 8 文件名 08h 3 扩展名 0bh 2 属性 0ch 10 系统保留 16h 2 建立或最后修改的时间 18h 2 建立或最后修改的日期 1ah 2 起始簇号 1ch 4 文件长度 若文件名不足8个字节则用空格补充。 数据区(data) 数据区里所有的扇区都划分为以簇为单位的逻辑结构,每一个簇在fat里都有相应的簇登记项与之对应。硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录mbr),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。mbr的内容是在硬盘分区时由分区软件(如fdisk)写入该扇区的,mbr不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,mbr也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或linux的lilo时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统(图一)。 图一.jpg (194.55 kb) 硬盘mbr图 2006-11-13 03:42 mbr由三部分构成: 1主引导程序代码,占446字节 2硬盘分区表dpt,占64字节 3主引导扇区结束标志aa55h 一、硬盘的主引导程序代码是从偏移0000h开始到偏移01bdh结束的446字节;主引导程序代码包括一小段执行代码。启动pc 机时,系统首先对硬件设备进行测试,成功后进入自举程序int 19h;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区mbr的内容到内存指定单元0:7c00 首地址开始的区域,并执行mbr程序段。 主引导代码实现下列功能: 1扫描分区表查找活动分区; 2寻找活动分区的起始扇区; 3将活动分区的引导扇区读到内存; 4执行引导扇区的运行代码。 如果主引导代码未完成这些功能,系统显示下列错误信息: invalid partition table error loading operating system missing operating system二、硬盘分区表dpt是从偏移01beh开始到偏移01fdh结束的64字节(图二);硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数为什么不能大于4。其中可激活分区数不得大于3,扩展分区数不得大于1,当前活动分区数必须小于等于1。 图二.jpg (26.13 kb) 硬盘分区表dpt 2006-11-13 03:46 分区表的每一分区的第0个字节是自举标志,其值为80h时,表示该分区是当前活动分区,可引导,其值为00h时,表示该分区不可引导。 第4字节是分区类型(图三)。 图三.jpg (70.05 kb) 分区类型标志 2006-11-13 03:46 每一分区的第1至第3字节是该分区起始地址。其中第1字节为起始磁头号(面号);第2字节的低6位为起始扇区号,高2位则为起始柱面号的高2位;第3字节为起始柱面号的低8位。因此,分区的起始柱面号是用10位二进制数表示的,最大值为210 = 1024,因逻辑柱面号从0开始计,故柱面号的显示最大值为1023。同理,用6位二进制数表示的扇区号不会超过26 - 1 = 63;用8位二进制数表示的磁头号不会超过28 - 1 = 255。每一分区的第5至第7字节表示分区的终止地址,各字节的释义与第1至第3字节相同。这里我们假设一种极端的情况:如果让第5至第7字节的所有二进制位都取1,就获得了柱面号、磁头号和扇区号所能表示的最大值,从而得到最大绝对扇区号为: 1024 256 63 = 16,515,072 这个扇区之前的所有物理扇区所包含的字节数为: 16,515,072 512bytes 8.46gb。 由此可知硬盘的容量设计为什么会有8.4gb这一档,分区表每一分区的第1至第3字节以及第5至第7字节的数据结构已经不能满足大于8.46gb的大容量硬盘的需要。考虑到向下兼容的需要,业界并未对从dos时代就如此定义的硬盘分区表提出更改意见,否则改动所牵涉的面太广,会造成硬件和软件发展上的一个断层,几乎无法被业界和用户所接受。硬盘厂商解决这一问题的方法是定义了新的int 13服务扩展标准。新的int 13服务扩展标准不再使用操作系统的寄存器传递硬盘的寻址参数,而使用存储在操作系统内存里的地址包。地址包里保存的是64位lba地址,如果硬盘支持lba寻址,就把低28位直接传递给ata接口,如果不支持,操作系统就先把lba地址转换为chs地址,再传递给ata接口。通过这种方式,能实现在ata总线基础上chs寻址的最大容量是136.9 gb,而lba寻址的最大容量是137.4gb。新的硬盘传输规范ata 133规范又把28位可用的寄存器空间提高到48位,从而支持更大的硬盘。分区表每一分区的第8至第11字节表示该分区的起始相对扇区数(即该扇区之前的绝对扇区个数),高位在右,低位在左;第12至第15字节表示该分区实际占用的扇区数,也是高位在右,低位在左;分区表这类数据结构的表达方式与机器中数据的实际存储方式在顺序上是一致的,即低位在前,高位在后。因此,在从16进制向十进制作数值转换时,需将字段中的16进制数以字节为单位翻转调位,用4个字节可以表示最大232个扇区,即2tb=2048gb。 系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。在未超过8.4gb的分区上,c/h/s的表示方法和扇区数的表示方法所表示的分区大小是一致的。超过8.4gb的/h/s/c一般填充为feh/ffh/ffh,即c/h/s所能表示的最大值;有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。 扩展分区中的每个逻辑驱动器都存在一个类似于mbr的扩展引导记录(extended boot record,ebr)(图四)。 图四.jpg (25.05 kb) 扩展分区引导记录ebr 2006-11-13 03:48 扩展引导记录包括一个扩展分区表和扇区结束标志55aa。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区;第二项指向下一个逻辑驱动器的ebr,如果不存在进一步的逻辑驱动器,第二项就不会使用,而被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区,第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的ebr。扩展分区表的第三项和第四项永远都不会被使用。 扩展分区表项中的相对扇区数是从扩展分区开始的扇区到该逻辑驱动器中第一个扇区的扇区数;占用的扇区数是指组成该逻辑驱动器的扇区数目。 有时候在磁盘的末尾会有剩余空间,由于分区是以1柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。 三、主引导扇区的最后两个字节(偏移1feh和偏移1ffh),其值为aa55h,它表示该扇区是个有效的引导扇区,可用来引导硬磁盘系统。分区引导扇区dbr(dos boot record)是由format高级格式化命令写到该扇区的内容;dbr是由硬盘的mbr装载的程序段。dbr装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区的dbr才会被mbr装入内存运行。 dbr主要由下列几个部分组成: 1跳转指令,占用3个字节的跳转指令将跳转至引导代码。 2厂商标识和dos版本号,该部分总共占用8个字节。 3bpb(bios parameter block, bios 参数块)。 4操作系统引导程序。 5结束标志字,结束标志占用2个字节,其值为aa55 dbr中的内容除了第5部分结束标志字固定不变之外,其余4个部分都是不确定的,其内容将随格式化所用的操作系统版本及硬盘的逻辑盘参数的变化而变化。一、fat32的分区引导扇区 为了使加载文件的操作更加灵活,加上fat32文件系统采用活动的fdt表,同时考虑到引导程序的代码量和为今后发展保留适当的余量,fat32文件系统分区引导扇区占据了6个扇区,只有前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用;引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。 由于分区引导扇区的重要性,fat32文件系统在在第一个分区引导扇区的6个扇区后的6个扇区里保留了分区引导扇区的备份,在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。 分区引导扇区的第一个扇区(图六)的前三个字节是一条跳转指令,然后是8个字节长的oem id(厂家标识)和版本号,其后是简称为bpb的bios参数块(bios parameter block)。对于fat32其各部分的意义如下表: 偏移地址 长度(字节) 意义 0bh 2 每个扇区的字节数,常取512。 0dh 1 每簇扇区数;可以是1, 2, 4, 8, 16, 32, 64, 128,取决于文件系统格式及分区大小。 0eh 2 为操作系统保留的扇区数;fat32时多为十进制的32,fat16时为1,有的格式化工具可能将它设为36或63。 10h 1 fat表的个数;常取2。 11h 2 在fat16中存放系统根目录中允许登记的目录项个数,fat32中用于标注系统采用的是否为fat32文件系统。其值为0000h表示磁盘使用fat32文件系统。 13h 2 值为00h,为保持兼容性而保留,未使用。 15h 1 磁盘介质标志,硬盘为f8。 16h 2 未使用,值为00h。 18h 2 每个磁道的扇区数。 1ah 2 磁盘的磁头数。 1ch 4 分区前隐藏扇区的个数。 20h 4 逻辑磁盘中的扇区总数。 24h 4 每个fat表所占的扇区数。 28h 2 fat表镜像标志,值为0表示系统保存2份互为备份的fat表,值为1表示系统仅保存1份fat表。 2ah 2 文件系统的主次版本(保留)。 2ch 4 磁盘根目录的起始簇号。 30h 2 文件系统参数的扇区号,通常位于引导扇区的下一个扇区。 32h 2 备份分区引导扇区的逻辑扇区号。 34h 12 保留,未使用。 40h 1 中断13呼叫的预设值,指明访问的设备;软盘为00h,硬盘为80h。 41h 1 用于中断13呼叫。 42h 1 磁盘读写参数扩展标志,其值为29h。 43h 4 格式化时随机产生的磁盘卷的序列号。 47h 11 格式化时人工输入的磁盘卷标号。 52h 8 文件系统的标识号(fat32)。 从偏移0x5a开始的数据为操作系统引导代码。这是由偏移0x00开始的跳转指令所指向的,此段指令在不同的操作系统上和不同的引导方式上,其内容也是不同的。 扇区的最后两个字节存储值为0x55aa的dbr有效标志,对于其他的取值,系统将不会执行dbr相关指令。 附件2006-11-15 02:54 图六.jpg (195.24 kb) 分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区(图七),除了保存扇区的标识信息(rraa(00h)和rraa(1e4h)外,还可能在偏移地址1e8h处存储了文件系统有关的信息。其中扇区偏移地址1e8h1ebh的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源管理器状态栏上列出的可用磁盘空间参数),而1ech1efh 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问fat表就直接获得磁盘剩余空间和可以分配的簇号。 图七.jpg (176.64 kb) 2006-11-15 02:59 分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码(图八)。 附件2006-11-15 03:07 图八.jpg (194.33 kb) 二、ntfs的分区引导扇区 对于ntfs分区来说,分区引导扇区dbr只占用一个扇区(图五),并且在该分区的最后一个扇区做了备份;ntfs的引导扇区也是完成引导和定义分区参数,ntfs分区的引导扇区不是分区的充分条件,它要求必须mft中的系统记录如$mft等正常该分区才能正常访问。其bpb参数如下表所示: 偏移地址 长度(字节) 常用值 意义 0x0b 2 0x0002 每扇区字节数 0x0d 1 0x08 每簇扇区数 0x0e 2 0x0000 保留扇区 0x10 3 0x000000 总为0 0x13 2 0x0000 ntfs未使用,为0 0x15 1 0xf8 介质描述 0x16 2 0x0000 总为0 0x18 2 0x3f00 每磁道扇区数 0x1a 2 0xff00 磁头数 0x1c 4 0x3f000000 隐藏扇区数 0x20 4 0x00000000 ntfs未使用,为0 0x28 8 0x4af57f0000000000 扇区总数 0x30 8 0x0400000000000000 $mft的逻辑簇号 0x38 8 0x54ff070000000000 $mft mirr的逻辑簇号 0x40 4 0xf6000000 每mft记录簇数 0x44 4 0x01000000 每索引簇数 0x48 8 0x14a51b74c91b741c 卷标 0x50 4 0x00000000 检验和 mbr、dpt、dbr、bpb 详解 硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录mbr),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。mbr的内容是在硬盘分区时由分区软件(如fdisk)写入该扇区的,mbr不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,mbr也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或linux的lilo时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统(图一)。 图一.jpg (194.55 kb) 硬盘mbr图 2006-11-13 03:42 mbr由三部分构成: 1主引导程序代码,占446字节 2硬盘分区表dpt,占64字节 3主引导扇区结束标志aa55h 一、硬盘的主引导程序代码是从偏移0000h开始到偏移01bdh结束的446字节;主引导程序代码包括一小段执行代码。启动pc 机时,系统首先对硬件设备进行测试,成功后进入自举程序int 19h;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区mbr的内容到内存指定单元0:7c00 首地址开始的区域,并执行mbr程序段。 主引导代码实现下列功能: 1扫描分区表查找活动分区; 2寻找活动分区的起始扇区; 3将活动分区的引导扇区读到内存; 4执行引导扇区的运行代码。 如果主引导代码未完成这些功能,系统显示下列错误信息: invalid partition table error loading operating system missing operating system二、硬盘分区表dpt是从偏移01beh开始到偏移01fdh结束的64字节(图二);硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数为什么不能大于4。其中可激活分区数不得大于3,扩展分区数不得大于1,当前活动分区数必须小于等于1。 图二.jpg (26.13 kb) 硬盘分区表dpt 2006-11-13 03:46 分区表的每一分区的第0个字节是自举标志,其值为80h时,表示该分区是当前活动分区,可引导,其值为00h时,表示该分区不可引导。 第4字节是分区类型(图三)。 图三.jpg (70.05 kb) 分区类型标志 2006-11-13 03:46 每一分区的第1至第3字节是该分区起始地址。其中第1字节为起始磁头号(面号);第2字节的低6位为起始扇区号,高2位则为起始柱面号的高2位;第3字节为起始柱面号的低8位。因此,分区的起始柱面号是用10位二进制数表示的,最大值为210 = 1024,因逻辑柱面号从0开始计,故柱面号的显示最大值为1023。同理,用6位二进制数表示的扇区号不会超过26 - 1 = 63;用8位二进制数表示的磁头号不会超过28 - 1 = 255。每一分区的第5至第7字节表示分区的终止地址,各字节的释义与第1至第3字节相同。这里我们假设一种极端的情况:如果让第5至第7字节的所有二进制位都取1,就获得了柱面号、磁头号和扇区号所能表示的最大值,从而得到最大绝对扇区号为: 1024 256 63 = 16,515,072 这个扇区之前的所有物理扇区所包含的字节数为: 16,515,072 512bytes 8.46gb。 由此可知硬盘的容量设计为什么会有8.4gb这一档,分区表每一分区的第1至第3字节以及第5至第7字节的数据结构已经不能满足大于8.46gb的大容量硬盘的需要。考虑到向下兼容的需要,业界并未对从dos时代就如此定义的硬盘分区表提出更改意见,否则改动所牵涉的面太广,会造成硬件和软件发展上的一个断层,几乎无法被业界和用户所接受。硬盘厂商解决这一问题的方法是定义了新的int 13服务扩展标准。新的int 13服务扩展标准不再使用操作系统的寄存器传递硬盘的寻址参数,而使用存储在操作系统内存里的地址包。地址包里保存的是64位lba地址,如果硬盘支持lba寻址,就把低28位直接传递给ata接口,如果不支持,操作系统就先把lba地址转换为chs地址,再传递给ata接口。通过这种方式,能实现在ata总线基础上chs寻址的最大容量是136.9 gb,而lba寻址的最大容量是137.4gb。新的硬盘传输规范ata 133规范又把28位可用的寄存器空间提高到48位,从而支持更大的硬盘。 9 回复:mbr、dpt、dbr、bpb 详解 分区表每一分区的第8至第11字节表示该分区的起始相对扇区数(即该扇区之前的绝对扇区个数),高位在右,低位在左;第12至第15字节表示该分区实际占用的扇区数,也是高位在右,低位在左;分区表这类数据结构的表达方式与机器中数据的实际存储方式在顺序上是一致的,即低位在前,高位在后。因此,在从16进制向十进制作数值转换时,需将字段中的16进制数以字节为单位翻转调位,用4个字节可以表示最大232个扇区,即2tb=2048gb。 系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。在未超过8.4gb的分区上,c/h/s的表示方法和扇区数的表示方法所表示的分区大小是一致的。超过8.4gb的/h/s/c一般填充为feh/ffh/ffh,即c/h/s所能表示的最大值;有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。 扩展分区中的每个逻辑驱动器都存在一个类似于mbr的扩展引导记录(extended boot record,ebr)(图四)。 图四.jpg (25.05 kb) 扩展分区引导记录ebr 2006-11-13 03:48 扩展引导记录包括一个扩展分区表和扇区结束标志55aa。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区;第二项指向下一个逻辑驱动器的ebr,如果不存在进一步的逻辑驱动器,第二项就不会使用,而被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区,第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的ebr。扩展分区表的第三项和第四项永远都不会被使用。 扩展分区表项中的相对扇区数是从扩展分区开始的扇区到该逻辑驱动器中第一个扇区的扇区数;占用的扇区数是指组成该逻辑驱动器的扇区数目。 有时候在磁盘的末尾会有剩余空间,由于分区是以1柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。 三、主引导扇区的最后两个字节(偏移1feh和偏移1ffh),其值为aa55h,它表示该扇区是个有效的引导扇区,可用来引导硬磁盘系统。分区引导扇区dbr(dos boot record)是由format高级格式化命令写到该扇区的内容;dbr是由硬盘的mbr装载的程序段。dbr装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区的dbr才会被mbr装入内存运行。 dbr主要由下列几个部分组成: 1跳转指令,占用3个字节的跳转指令将跳转至引导代码。 2厂商标识和dos版本号,该部分总共占用8个字节。 3bpb(bios parameter block, bios 参数块)。 4操作系统引导程序。 5结束标志字,结束标志占用2个字节,其值为aa55 dbr中的内容除了第5部分结束标志字固定不变之外,其余4个部分都是不确定的,其内容将随格式化所用的操作系统版本及硬盘的逻辑盘参数的变化而变化。 一、fat32的分区引导扇区 为了使加载文件的操作更加灵活,加上fat32文件系统采用活动的fdt表,同时考虑到引导程序的代码量和为今后发展保留适当的余量,fat32文件系统分区引导扇区占据了6个扇区,只有前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用;引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。 由于分区引导扇区的重要性,fat32文件系统在在第一个分区引导扇区的6个扇区后的6个扇区里保留了分区引导扇区的备份,在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。 10 回复:mbr、dpt、dbr、bpb 详解 分区引导扇区的第一个扇区(图六)的前三个字节是一条跳转指令,然后是8个字节长的oem id(厂家标识)和版本号,其后是简称为bpb的bios参数块(bios parameter block)。对于fat32其各部分的意义如下表: 偏移地址 长度(字节) 意义 0bh 2 每个扇区的字节数,常取512。 0dh 1 每簇扇区数;可以是1, 2, 4, 8, 16, 32, 64, 128,取决于文件系统格式及分区大小。 0eh 2 为操作系统保留的扇区数;fat32时多为十进制的32,fat16时为1,有的格式化工具可能将它设为36或63。 10h 1 fat表的个数;常取2。 11h 2 在fat16中存放系统根目录中允许登记的目录项个数,fat32中用于标注系统采用的是否为fat32文件系统。其值为0000h表示磁盘使用fat32文件系统。 13h 2 值为00h,为保持兼容性而保留,未使用。 15h 1 磁盘介质标志,硬盘为f8。 16h 2 未使用,值为00h。 18h 2 每个磁道的扇区数。 1ah 2 磁盘的磁头数。 1ch 4 分区前隐藏扇区的个数。 20h 4 逻辑磁盘中的扇区总数。 24h 4 每个fat表所占的扇区数。 28h 2 fat表镜像标志,值为0表示系统保存2份互为备份的fat表,值为1表示系统仅保存1份fat表。 2ah 2 文件系统的主次版本(保留)。 2ch 4 磁盘根目录的起始簇号。 30h 2 文件系统参数的扇区号,通常位于引导扇区的下一个扇区。 32h 2 备份分区引导扇区的逻辑扇区号。 34h 12 保留,未使用。 40h 1 中断13呼叫的预设值,指明访问的设备;软盘为00h,硬盘为80h。 41h 1 用于中断13呼叫。 42h 1 磁盘读写参数扩展标志,其值为29h。 43h 4 格式化时随机产生的磁盘卷的序列号。 47h 11 格式化时人工输入的磁盘卷标号。 52h 8 文件系统的标识号(fat32)。 从偏移0x5a开始的数据为操作系统引导代码。这是由偏移0x00开始的跳转指令所指向的,此段指令在不同的操作系统上和不同的引导方式上,其内容也是不同的。 扇区的最后两个字节存储值为0x55aa的dbr有效标志,对于其他的取值,系统将不会执行dbr相关指令。 附件2006-11-15 02:54 图六.jpg (195.24 kb) 分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区(图七),除了保存扇区的标识信息(rraa(00h)和rraa(1e4h)外,还可能在偏移地址1e8h处存储了文件系统有关的信息。其中扇区偏移地址1e8h1ebh的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源管理器状态栏上列出的可用磁盘空间参数),而1ech1efh 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问fat表就直接获得磁盘剩余空间和可以分配的簇号。 图七.jpg (176.64 kb) 2006-11-15 02:59 分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码(图八)。 附件2006-11-15 03:07 图八.jpg (194.33 kb) 二、ntfs的分区引导扇区 对于ntfs分区来说,分区引导扇区dbr只占用一个扇区(图五),并且在该分区的最后一个扇区做了备份;ntfs的引导扇区也是完成引导和定义分区参数,ntfs分区的引导扇区不是分区的充分条件,它要求必须mft中的系统记录如$mft等正常该分区才能正常访问。其bpb参数如下表所示: 偏移地址 长度(字节) 常用值 意义 0x0b 2 0x0002 每扇区字节数 0x0d 1 0x08 每簇扇区数 0x0e 2 0x0000 保留扇区 0x10 3 0x000000 总为0 0x13 2 0x0000 ntfs未使用,为0 0x15 1 0xf8 介质描述 0x16 2 0x0000 总为0 0x18 2 0x3f00 每磁道扇区数 0x1a 2 0xff00 磁头数 0x1c 4 0x3f000000 隐藏扇区数 0x20 4 0x00000000 ntfs未使用,为0 0x28 8 0x4af57f0000000000 扇区总数 0x30 8 0x0400000000000000 $mft的逻辑簇号 0x38 8 0x54ff070000000000 $mft mirr的逻辑簇号 0x40

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论