分享

DISKEDIT教程(转) - 成都千圣电子有限公司的日志 - 网易博客

 仙剑奇侠客 2010-10-01

DISKEDIT教程(转)

IT资料 2010-09-24 16:45:29 阅读60 评论0   字号: 订阅

目的:通过使用磁盘编辑工具Diskedit对文件系统进行剖析,了解Fat磁盘文件系统的基本结构,掌握解决磁盘文件系统的常见的问题的基本方法,并建立对计算机运行机制更加深刻的认识,解决日后工作中碰到的具体问题。实验要求: 对课题中的有提问的部分自己解决后填到实验报告中。

课题:  1. 学习diskedit磁盘分析工具的使用。

2. 使用diskedit观察主引导扇区,扩展扇区。

3. 使用diskedit观察引导扇区。

4. 使用diskedit观察FAT表。

5. 使用diskedit观察文件目录。

6. 使用diskedit观察一个文件的内容。

7. 修改文件目录项内容,并观察变化。

8. 修改FAT内容,并观察变化。

9. 修改可执行文件显示内容,并观察结果。

以下为各个课题的具体内容:

课题1.学习diskedit磁盘分析工具的使用。 Diskedit是Symantec公司推出的诺顿系列工具之一,Symantec公司是世界著名的工具软件公司,diskedit磁盘工具从字面上看是磁盘编辑工具,它是FAT文件系统上最方便的磁盘编辑工具。我们现在所用的是Norton Utilities 2002,支持FAT32文件系统的剖析编辑。请注意磁盘编辑工具和文件系统的关系,其实如果将一个磁盘看作一个个扇区的话,一个磁盘工具可以剖析编辑任何一个文件系统,因为不论是NTFS(NT),HPFS(NT),EXT2(Linux)还是FAT文件系统,他们归根到底都是由一系列的扇区构成的,只不过扇区的组织方式不同罢了。在diskedit中如果使用观察物理扇区的方式也可以浏览、观察、修改任何一种文件系统。但是diskedit在逻辑层次上只对FAT文件系统提供了方便的浏览所以说Diskedit是FAT文件系统的浏览修改工具。另外NT操作系统自身的Kit(小工具)也带了一个NTFS文件系统的分析编辑工具,不过可能是出与安全的考虑,在浏览编辑方式上远没有Diskedit方便。在98中使用diskedit首先应该重新启动到Dos方式下,然后应该Lock d: (建议修改时使用D盘,所有实验在自己建立的目录中进行) Diskedit的主界面如下图所示: 我们主要用其中的object,View,Tools菜单,object菜单主要用来选择编辑分析的对象,这个对象可以是一个驱动器(物理的或者逻辑的),一个目录,一个文件、一个簇、一个物理扇区,或者是直接FAT文件系统的一个部件,如分区表(严格来说,分区表不属于FAT文件系统),引导扇区,FAT。编辑的开始首先要确定要编辑的对象,浏览(View菜单),工具(Tools菜单)也都是针对这个对象的。 View菜单的使用如上图所示,在选中一个对象(如一个扇区)后,可以将这个对象当做某一种格式来看,如以16进制,引导扇区等,但是如果一个扇区本身不是引导扇区而将它当做引导扇区看,则内容会混乱。 Tools菜单如下图所示: 查找(Find)可以在对象中(如前object菜单所述,可以是1。。。10号扇区,1。。10000号簇,一个驱动器,一个文件等)查找所需的文字。查找时可以选择ASC码或者16进制数。查找对象(Find object)可以在在对象中(如前object菜单所述,可以是1。。。10号扇区,1。。10000号簇,一个驱动器,一个文件等)查找FAT表,引导扇区,主引导扇区,这个功能可以在硬盘遭到毁灭性破坏以后在硬盘中查找致命的数据。再次查找(Find Again)可以在查找到一个目标以后再次查找下一个 将对象保存到(Write object to)功能可以将一个对象(如前object菜单所述,可以是1。。。10号扇区,1。。10000号簇,一个驱动器,一个文件等)保存到文件中。

课题2使用diskedit观察主引导扇区,扩展扇区。要求,能使用Diskedit保存主引导扇区,识别引导扇区的基本格式。参考附录。 Diskedit中的界面如下图: 请计算占有扇区数和硬盘大小的关系。实验用的计算机分区时怎样的? 同时识别以HEx观察(View--àHEX)的格式,如下图: 结合附录2,3观察以上结构,请问哪个字节是启动分区标志?哪些字节是硬盘存在标志,Linux系统中是否也是这样的?

课题3.使用diskedit观察引导扇区。 如上图,请问:Linux操作系统中有这样的引导扇区么?要求,能使用Diskedit保存主引导扇区,已知硬盘中除了这个引导扇区之外,还有操作系统自动做的备份,你能将它找出来么?注意观察右下脚的Sector 0,引导扇区是一个逻辑分区的扇区0,在观察FAT的时候,注意观察是Sector ???,根目录呢,怎么会是Cluster? 一个硬盘分区的数据内容从哪里开始?

课题4.使用diskedit观察FAT表。 红色为同一个文件的链表。请根据附录写出FAT表的基本结构。什么字代表文件结束?什么代表坏扇区,可以自己做坏扇区标志么?如果一个病毒将自身隐藏在“假”的坏扇区中会带来什么“好处”?请建立两个文件,并通过修改FAT将两个文件内容相加在一起。

课题5.使用diskedit观察文件目录。 你能根据附录通过观察文件目录和Hex格式(View菜单汇总以Hex格式观察)总结出文件目录的大概结构么?(哪个字节存放什么信息)建立两个文件,能通过修改首簇号替换两个文件内容么?可以造出如2001-15-31日这样的日期么?以上信息中右没有文件作者信息?那么word文档中的作者信息在什么地方存放?是Word文档中还是在目录中?

课题6.使用diskedit观察一个文件的内容。 Object --àfile选择Windows目录下的Calc.exe文件,该文件是可执行文件。 修改以下内容: 1. 修改Windows文件标志PE,文件还可以执行么? 2. 修改可执行文件中的显示信息,如Calc.exe中的Cos(函数)等,注意在Windows可执行文件中显示的内容,如菜单等都是以Unicode存放的,如A存放不是41H,而是00H,41H。如果你能修改这些内容,你也就成了外行所说的“黑客”了。不过内行的黑客客没有这么好当哟!

课题7.修改文件目录项内容,并观察变化。 要求如课题5

课题8.修改FAT内容,并观察变化。 要求见课题4 课题9.修改可执行文件显示内容,并观察结果。 见课题6

附录1: 探索硬盘分区技术 ---- 所谓硬盘分区,实际上就是将硬盘的整体存储空间划分成相互独立的多个区域。从应用的角度来看,硬盘必须分区后才能使用,如果不对硬盘分区,则操作系统将不能识别硬盘。对系统的管理和维护人员来讲,硬盘分区是必须掌握的一种技术。同时还必须掌握备份与恢复分区数据的方法,这样才能在面对复杂应用环境时,始终使自己立于不败之地。但是,由于操作系统存储分区数据的特殊性,使很多用户对分区和逻辑磁盘的划分理论不能正确理解。在此,我们将分两期详细介绍硬盘的分区数据存储技术以及分区数据的保存和恢复等相关操作。掌握分区及逻辑磁盘的构成原理,将使读者深刻理解操作系统对硬盘存储空间的划分与分区数据的存储,从而提高系统管理和维护的水平。 一、分区与逻辑磁盘的关系 ---- 在讨论分区技术的同时,往往会提到逻辑磁盘,有些用户难免混淆分区和逻辑磁盘这两个概念。例如,有时我们会提到,高版本MS DOS操作系统(包括Windows 95/98操作系统)限制分区的容量不能超过2GB(在FAT16文件系统中),诸多专业书籍也是这样介绍的。但是,很多用户在进行分区实际操作时,往往会提出疑问,因为他们发现扩展DOS分区可以划分到2GB以上。一个实际的例子是对一个6.4GB的硬盘进行分区操作,假设主分区为2GB,则余下的4.4GB可以统一划分为扩展分区,在扩展分区中再进一步建立逻辑磁盘,当然每个逻辑磁盘不能超过2GB。面对这样的实际操作情况,大家都会提出同样的问题:究竟是分区不能超过2GB?还是逻辑磁盘的容量不能超过2GB? ---- 在大容量硬盘日益普及的今天,虽然FAT32文件系统已经取消了分区或逻辑磁盘2GB容量限制的规定,并且使用FAT32文件系统也是今后的大势所趋。但是,对上述问题的回答并不会因为FAT32文件系统的使用而烟消云散。由于硬盘仍然要分区和建立逻辑磁盘,因此,很有必要对逻辑盘与分区的关系做进一步的分析。 ---- 实际上分区是对硬盘存储空间的物理划分,而逻辑磁盘是建立在分区之上,仅具备逻辑意义上的磁盘概念,没有实际物理硬盘与之严格对应,而仅有一块划分出来的物理硬盘中的存储区域与之对应。一个分区可以建立一个或一个以上的逻辑磁盘。 ---- 既然逻辑磁盘是建立在分区之上且仅具备逻辑意义的磁盘,那么所谓FAT16文件系统分区2GB限制的问题是不是应该更改为逻辑磁盘2GB存储空间限制呢?从表面上看,上述理论是成立的,并且似乎也得到实际操作的证实。但是,这种理论还仅仅停留在表面上,并没有完全弄清楚逻辑磁盘和分区的关系。 ---- 从更深的理论层次来看,每个逻辑磁盘实际上是一个独立的分区,也就是说一个独立的逻辑磁盘实际上与一个独立的分区相对应,在后面研究分区的实际结构时,我们还将进一步证实这个问题。FAT16文件系统提出的分区2GB容量限制的理论是没有任何错误的,只不过受到扩展分区的影响,而使用户产生了错误的理解。对系统管理和维护人员来讲,必须深入理解逻辑磁盘实际上就是一个独立分区的概念,否则很难对系统实施全面的管理。 二、硬盘分区方式 ---- 硬盘分区后一般形成3种形式的分区,即主分区、扩展分区和非DOS分区。其中主分区又称为主DOS分区(Primary DOS Partition),扩展分区又称为扩展DOS分区(Extended DOS Partition)。非DOS分区(Non-DOS Partition)是一种特殊的分区形式,它是将硬盘中的一块区域单独划分出来供另一个操作系统使用,如Windows NT、Linux和Unix等。对主分区的操作系统来讲,非DOS分区是一块被划分出去的存储空间。只有非DOS分区内的操作系统才能管理和使用这块存储区域,非DOS分区之外的系统一般不能对该分区内的数据进行访问。 ---- 主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在主分区中,不允许再建立其他逻辑磁盘。 ---- 扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于微机操作系统仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计可以存储4个分区的数据。由于操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。 ---- 所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。 ---- 需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。 三、硬盘分区结构 ---- 为了方便操作系统在启动过程中访问硬盘的分区参数,分区的相关数据存储在一个被称为主引导扇区(MBR)的特殊存储空间中,也就是存储在硬盘的0磁头0柱面1扇区。主引导扇区为分区数据保留了64个字节的存储空间,每个分区的数据占用16个字节的存储空间。硬盘分区数据由于受主引导扇区中只能存储4个分区数据的影响,因此采用的是一种混合的分区数据保存结构,这种混合的分区数据结构由以下3个部分组成: ---- 1.主分区的分区数据存储在主引导扇区中,并且通常是分区表数据中的第一项。考虑到应用的广泛性,主分区通常也是活动分区。 ---- 2.根据用户需要,可以建立一个扩展分区。扩展分区的相关数据也存储在主引导扇区中。扩展分区实际上是一个指针,它指向系统下一个分区,也就是下一个逻辑磁盘的位置。 ---- 3.根据是否已经建立了扩展分区,系统允许建立2~3个非DOS分区,用于建立其他操作系统的存储和管理区域。 ---- 根据分区的结构,我们知道在主引导扇区的分区表中存储上述3种类型分区形式的参数,这些参数包括分区的起始磁头、柱面、扇区和分区结束的磁头、柱面、扇区参数,以及分区的类型和是否为活动分区等对分区至关重要的数据。对于主分区和非DOS分区来讲,这些参数就是分区实际的参数。而对于扩展分区来讲,其扩展分区的起始物理地址实际上是另一个分区表数据的存储物理地址。根据扩展分区中所建立的逻辑磁盘的数量,将相应产生相同数量的分区数据。例如,假设一个物理磁盘的扩展分区中建立了3个逻辑磁盘,则在主引导扇区中存储的分区表中可以找到第一个逻辑磁盘的起始分区地址;而在第一个逻辑磁盘的起始物理地址中将存储两项分区数据,一项是当前逻辑磁盘的分区数据,另一项是指向下一个逻辑磁盘的起始分区地址。也就是说,每一个逻辑磁盘实际上均有一个分区引导扇区,该分区引导扇区存储当前分区和下一个分区的引导扇区的物理地址。若分区引导扇区中仅存有当前分区的物理地址,没有下一个分区的物理地址,则表示当前分区是最后一个逻辑磁盘。所以,我们称这种逐项给出下一个分区地址的指针链表为一个分区结构的链表。 ---- 包括有4个逻辑磁盘的分区数据存储结构如图1所示。 ---- 根据图1所阐述的分区与逻辑磁盘结构关系,不难得出这样的结论:逻辑磁盘实际上就是一个独立的分区,只不过分区的参数不是存储在主引导扇区中,而是存储在各个分区的第一个扇区中。通过存储在主引导扇区中的扩展分区参数,按单向链表的方式可以逐个访问到逻辑磁盘的分区参数。 四、用实际的分区数据来理解磁盘参数的存储结构 ---- 下面我们用一组实际的数据对上述分区结构理论进行论证,有关的数据如图2所示。 ---- 根据图2提供的数据,主引导扇区(0磁头0柱面1扇区)中存储的分区表数据表示物理硬盘分成两个区,其中第1个分区为主分区(分区类型标志为06H),且为活动分区。而第2个分区为扩展分区(分区类型标志为05H),下一个分区表数据的存储地址为0磁头F4H柱面(即244柱面)1扇区。用汇编语言程序读入0磁头F4H柱面1扇区的数据,发现其分区表的数据结构与主引导扇区完全相同,但没有分区引导程序部分,除了分区表数据外,其余数据均为0。第2个分区引导扇区中存储的分区表数据表示该分区从1磁头F4H柱面1扇区开始,这是该分区的逻辑0扇区的位置,而分区标志(06H)表示对应的分区为主分区,下一个分区从0磁头1ABH(即427)柱面(柱面参数共10位二进制,其中第9和10位由前一个字节的最高两位提供)1扇区开始,为扩展分区。依次类推,可以通过第1个扩展分区的数据依顺序找到每一个分区或逻辑磁盘的数据。在0磁头262H(即610)柱面1扇区中存储的分区表数据表示该分区是最后一个分区。 ---- 根据图2所提供的硬盘实际存储的分区数据,不难得出这样的结论:该硬盘共有两个分区,其中主分区构成逻辑C磁盘,扩展分区构成D、E和F 3个逻辑磁盘。 五、硬盘分区参数的保存 ---- 由于受硬盘主引导扇区为分区数据所保留的存储空间的限制,系统不得不使用扩展分区的链表结构来构成整个硬盘系统的分区结构,所以说逻辑盘和分区的概念是完全相同的。另外,扩展分区的链表结构由于是单向链表,只能从主引导扇区向后逐个查找到各个分区,不能逆向从最后一个分区查找前面的分区。因此,若因某种原因造成链表中断,则可能导致后面的分区或逻辑磁盘丢失。当然,存储在逻辑盘中的数据也就自然丢失了。 ---- 上期分析了分区的数据存储结构后,我们发现一个规律,这个规律就是分区数据总是存储在某个柱面的0磁头1扇区的物理位置上,而每个逻辑盘的逻辑0扇区则为同一柱面1磁头的1扇区,分区开始位置与逻辑0扇区之间的所有扇区为隐藏扇区。所以,如果因为某种原因导致分区数据的丢失,通过相应查找每个柱面0磁头1扇区的数据,不难用手工方式恢复分区表数据。在很多应用领域中,当分区表数据被破坏后,这种手工恢复分区表数据的技术是紧要关头恢复磁盘数据的最后方法。当然,如果您预先保存了分区数据,则恢复工作将更加简单快捷。 ---- 根据对文件系统的分析,系统重要数据包括主引导扇区、逻辑磁盘主引导扇区和逻辑磁盘的引导扇区3个部分,下面我们分别讨论上述几类系统重要数据的保存方法。 ---- 1.主引导扇区的保存 ---- 由于分区数据存储在系统的隐藏扇区中,操作系统不允许使用访问逻辑磁盘的方式来访问存储在隐藏扇区的数据,因此,我们必须借助于一段汇编语言程序来访问存储在隐藏扇区的分区数据。 ---- 从MS DOS操作系统应用环境或Windows 98操作系统的“MS DOS方式”下,启动debug应用程序后,用以下方法可以将主引导扇区以文件形式保存到软盘上(假设保存数据的文件名为mboot.dat)。在下面给出的处理过程和程序中,加下划线的字符是用户需要手工输入的字符,未加下划线的字符是debug程序自动显示的内容(使用Q命令退出debug程序)。 -----A 100 ----226C:0100 mov ax,0201 ----226C:0103 mov bx,0200 ----226C:0106 mov cx,0001 ----226C:0109 mov dx,0080 ----226C:010C int 13 ----226C:010E int 20 ----226C:0110 -----G -----R CX ----:200 -----N A:\mboot.dat -----W 200 ---- 2.逻辑磁盘主引导扇区的保存 ---- 逻辑磁盘主引导扇区必须根据系统主引导扇区中的扩展分区数据逐个读入和保存,即首先通过扩展分区中存储的下一个分区的起始地址读入其主引导扇区,然后再依次读入其他后续各逻辑磁盘的主引导扇区。 ---- 逻辑磁盘主引导扇区的保存操作与系统主引导扇区的保存操作几乎完全相同,惟一的差异是修改程序中的“mov cx,0001”语句,其中的“0001”表示0柱面(00H)1扇区(01H),若需要读入F4H柱面,则将相应语句更改为“mov cx,F401”;对于1ABH柱面,对应的语句应该为“mov cx,AB41”。注意,CL寄存器的最高2位将作为柱面号的最高2位,构成最大10位的柱面号(这就是为什么物理磁盘的柱面号不能超过1024的原因)。而柱面号起始为262H的分区,对应的语句则为“mov cx,6281”。另外,在保存各逻辑磁盘主引导扇区时,还应该修改保存数据的文件名,以免覆盖已有的数据。修改保存数据的文件名就是修改命令“N A:\mboot.dat”,若保存逻辑D磁盘分区数据的文件名为mbootd.dat,则将相应的命令修改为“N A:\mbootd.dat”。 ---- 3.FAT16文件系统逻辑盘引导扇区的保存 ---- 在debug状态下,用以下命令可以完成各逻辑盘引导扇区的保存。 ---- -----L 100 2 0 1 -----R CX ----:200 -----N A:\bootc.dat -----W 100 ---- 执行上述操作步骤后,C盘的引导扇区将以bootc.dat文件形式保存到软驱A中的软盘上。当然,对于逻辑盘引导扇区来讲,最重要的是其中保存的I/O参数。对于其他逻辑盘,只需要修改“L”命令中的磁盘驱动器号(对应数值“2”的位置),D盘用数字“3”,E盘用数字“4”,依次类推。同时,请注意修改“N”命令中的保存数据的文件名。 ---- 4.FAT32文件系统逻辑盘引导扇区的保存 ---- FAT32文件系统逻辑盘引导扇区的保存操作与FAT16文件系统逻辑盘引导扇区的保存操作基本相同,需要修改的有2个参数:一个参数是“L”命令中的“1”,需要更改为“3”,表示读入3个扇区;另一个要更改的参数是“200”,由于现在要保存3个扇区的数据,因此可以用“600”取代“200”给出要保存数据的长度。 六、硬盘分区参数的恢复 ----1.主引导扇区的恢复 ----在debug状态下,假设保存主引导扇区数据的文件是mboot.dat,则按以下步骤可以用预先保存的数据恢复主引导扇区中存储的数据。 -----N A:\mboot.dat -----L 200 -----A 100 ----226C:0100 mov ax,0301 ----226C:0103 mov bx,0200 ----226C:0106 mov cx,0001 ----226C:0109 mov dx,0080 ----226C:010C int 13 ----226C:010E int 20 ----226C:0110 -----G ---- 2.逻辑磁盘主引导扇区的恢复 ---- 将上述恢复主引导扇区操作步骤中的“N”命令中的文件名更改为实际保存逻辑磁盘主引导扇区数据的文件名,同时更改“mov cx,0001”中的柱面数据(根据保存时记录的参数或根据主引导扇区中存储的参数),即可完成逻辑盘主引导扇区的恢复。 ---- 3.逻辑磁盘引导扇区的恢复 ---- 在debug状态下,用以下命令可以完成逻辑磁盘引导扇区的恢复。 ---- -N A:\bootc.dat ---- -L 100 ---- -W 100 2 0 1 ---- 上述操作步骤将恢复逻辑C盘的引导扇区,其他逻辑盘将根据实际情况修改文件名和逻辑驱动器号(对应“W”命令中的数值“2”的位置),FAT32文件系统则需要修改命令中的扇区数(对应“W”命令中的数值“1”的位置)。

附录二: 1. Boot Sector 的组成 Boot Sector 也就是硬盘的第一个扇区, 它由 MBR (Master Boot Record), DPT (Disk Partition Table) 和 Boot Record ID 三部分组成. MBR 又称作主引导记录占用 Boot Sector 的前 446 个字节 ( 0 to 0x1BD ), 存放系统主引导程序 (它负责从活动分区中装载并运行系统引导程序). DPT 即主分区表占用 64 个字节 (0x1BE to 0x1FD), 记录了磁盘的基本分区 信息. 主分区表分为四个分区项, 每项 16 字节, 分别记录了每个主分区的信息 (因此最多可以有四个主分区). Boot Record ID 即引导区标记占用两个字节 (0x1FE and 0x1FF), 对于合法 引导区, 它等于 0xAA55, 这是判别引导区是否合法的标志. Boot Sector 的具体结构如下图所示 (参见 NightOwl 大侠的文章): 0000 |------------------------------------------------| | | | | | Master Boot Record | | | | | | 主引导记录(446字节) | | | | | | | 01BD | | 01BE |------------------------------------------------| | | 01CD | 分区信息 1(16字节) | 01CE |------------------------------------------------| | | 01DD | 分区信息 2(16字节) | 01DE |------------------------------------------------| | | 01ED | 分区信息 3(16字节) | 01EE |------------------------------------------------| | | 01FD | 分区信息 4(16字节) | |------------------------------------------------| | 01FE | 01FF | | 55 | AA | |------------------------------------------------| 2. 分区表结构简介 分区表由四个分区项构成, 每一项的结构如下: BYTE State : 分区状态, 0 = 未激活, 0x80 = 激活 (注意此项) BYTE StartHead : 分区起始磁头号 WORD StartSC : 分区起始扇区和柱面号, 底字节的低6位为扇区号, 高2位为柱面号的第 9,10 位, 高字节为柱面号的低 8 位 BYTE Type : 分区类型, 如 0x0B = FAT32, 0x83 = Linux 等, 00 表示此项未用 BYTE EndHead : 分区结束磁头号 WORD EndSC : 分区结束扇区和柱面号, 定义同前 DWORD Relative : 在线性寻址方式下的分区相对扇区地址 (对于基本分区即为绝对地址) DWORD Sectors : 分区大小 (总扇区数) 注意: 在 DOS / Windows 系统下, 基本分区必须以柱面为单位划分 ( Sectors * Heads 个扇区), 如对于 CHS 为 764/255/63 的硬盘, 分区的 最小尺寸为 255 * 63 * 512 / 1048576 = 7.844 MB. 3. 扩展分区简介 由于主分区表中只能分四个分区, 无法满足需求, 因此设计了一种扩展 分区格式. 基本上说, 扩展分区的信息是以链表形式存放的, 但也有一些特 别的地方. 首先, 主分区表中要有一个基本扩展分区项, 所有扩展分区都隶属于它, 也就是说其他所有扩展分区的空间都必须包括在这个基本扩展分区中. 对于 DOS / Windows 来说, 扩展分区的类型为 0x05. 除基本扩展分区以外的其他所有扩展分区则以链表的形式级联存放, 后 一个扩展分区的数据项记录在前一个扩展分区的分区表中, 但两个扩展分区 的空间并不重叠. 扩展分区类似于一个完整的硬盘, 必须进一步分区才能使用. 但每个扩 展分区中只能存在一个其他分区. 此分区在 DOS/Windows 环境中即为逻辑盘. 因此每一个扩展分区的分区表 (同样存储在扩展分区的第一个扇区中)中最多 只能有两个分区数据项(包括下一个扩展分区的数据项). 扩展分区和逻辑盘的示意图如下: |-----------------------| -------- | 主扩展分区(/dev/hda2) | ^ |-----------------------| | | 扩 展 | 分区项 1 |--\ | | |------------| | | | 分区表 | 分区项 2 |--+--\ | |-----------------------| | | | | | | | | | 逻辑盘 1 (/dev/hda5) |<-/ | | | | | | |-----------------------| | 主 | 扩展分区 2 |<----/ |-----------------------| 扩 | 扩 展 | 分区项 1 |--\ | |------------| | 展 | 分区表 | 分区项 2 |--+--\ |-----------------------| | | 分 | | | | | 逻辑盘 2 (/dev/hda6) |<-/ | 区 | | | | |-----------------------| | | | 扩展分区 3 |<----/ | |-----------------------| | | 扩 展 | 分区项 1 |--\ | | |------------| | | | 分区表 | 分区项 2 | | | |-----------------------| | | | | | | | 逻辑盘 3 (/dev/hda7) |<-/ | | | | |-----------------------| ---------

附录三. 系统启动过程简介 系统启动过程主要由一下几步组成(以硬盘启动为例): 1. 开机 :-) 2. BIOS 加电自检 ( Power On Self Test -- POST ) 内存地址为 0ffff:0000 3. 将硬盘第一个扇区 (0头0道1扇区, 也就是Boot Sector) 读入内存地址 0000:7c00 处. 4. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于 则转去尝试其他启动介质, 如果没有其他启动介质则显示 "No ROM BASIC" 然后死机. 5. 跳转到 0000:7c00 处执行 MBR 中的程序. 6. MBR 首先将自己复制到 0000:0600 处, 然后继续执行. 7. 在主分区表中搜索标志为活动的分区. 如果发现没有活动 分区或有不止一个活动分区, 则转停止. 8. 将活动分区的第一个扇区读入内存地址 0000:7c00 处. 9. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则 显示 "Missing Operating System" 然后停止, 或尝试 软盘启动. 10. 跳转到 0000:7c00 处继续执行特定系统的启动程序. 11. 启动系统 ... 以上步骤中 2,3,4,5 步是由 BIOS 的引导程序完成. 6,7,8,9,10 步由MBR中的引导程序完成. 一般多系统引导程序 (如 SmartFDISK, BootStar, PQBoot 等) 都是将标准主引导记录替换成自己的引导程序, 在运行系统启动程序 之前让用户选择要启动的分区. 而某些系统自带的多系统引导程序 (如 lilo, NT Loader 等) 则可以将自己的引导程序放在系统所处分区的第一个扇区中, 在 Linux 中即为 SuperBlock (其实 SuperBlock 是两个扇区). 注: 以上各步骤中使用的是标准 MBR, 其他多系统引导程

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多