EBR,叫做扩展MBR(Extended MBR),位于硬盘的某柱面0磁道1扇区1.簇(cluster)是DOS给文件系统分配磁盘空间的最小单位。
由若干连续的逻辑扇区组成,不同的盘,簇的大小不同,簇是从2开始编号,见表6-1。
逻辑扇区号=(簇号-2)×扇区数/簇+数据区首扇区号2.BOOT记录:第一部分:0~2字节为跳转指令,转向启动码区。
第二部分:3~10字节为厂商标识字段,如MSDOS5.0。
第三部分:11~61字节为磁盘参数表(51字节)。
第四部分:62~509字节为启动程序(438字节)。
最后:55,AA字节。
51字节BPB表(BIOS Parameter Block)OB-OC:每扇区字节数(512)OD:扇区数/簇0E-0F:保留扇区(指Boot区)10:FAT个数11-12:根目录最大登记项数13-14:本分区扇区总数(小于32M的分区,大于32MB时,为0)15:介质描述符16-17:每个FAT扇区数18-19:每道扇区数1A-1B:磁头数1C-1F:本分区前的扇区数(隐含扇区,即从0(X)柱0头1扇到0(X)柱1头1扇之间的扇区,由于不能为DOS访问,故称为隐含扇区)。
20-23:大容量盘总扇区数。
24:BIOS设备号(hex:HD=8x)25:未使用26:扩展引导标记(29H)27-2A:卷序列号(随机)2B-35:卷标,分区标识,如:WIN9836-3D:文件系统格式(FAT16)3.FAT(文件配置表)FAT有两个,当第一个损坏时,为人工修复提供方便,DOS不会自动用第二个去修复第一个FAT,而DOS实际上没有用尽2个FAT占用的扇区,因为可作为他用。
FAT登记盘上簇的使用情况,登记项有12位、16位和32位之分,下面以16位为例说明FAT的格式。
16位FAT格式:簇号(表项) 0000H 0001H 0002H … NNNNH类型保留簇使用簇含义介质标志记录文件簇号链保留簇的第一字节为磁盘介质标志,后为填充位,全为FFH。
使用簇可以是;0000:自由FFF6:备用FFF7:坏簇FFF8-FFFF:文件结束其它:文件的下一簇4.文件目录表(根目录表FDT)记录文件名、属性、建立时间、日期、首簇及长度的一个表。
每个文件占用表32字节,O0-O7:文件主名(文件被删除后,00字节为E5H)O8-0A:文件扩展名0B:文件属性X:未用,填0 档案子目录卷标系统隐含只读0C-15:保留(全0)16-17:建立文件的时间18-19:建立文件的日期1A-1B:文件首簇1C-1F:文件长度LFN entry :长文件名项,属性字节为0F表示LFN entryCr.time refinement in 10ms units :以10ms为计时精度5.主引导记录(MBR)见P247图6-7和图6-8。
0柱0头1扇区(DOS系统):000H~0EFH:主引导程序(446字节)0F0H~1BDH:全0 DOS系统有206个0字节,NTFS系统有58个0字节。
到此共计446字节)1BEH~1CDH:第一个分区表(16字节)1CEH~1DDH:第二个分区表(16字节)1DEH~1EDH:第三个分区表(16字节)1EEH~1FDH:第四个分区表(16字节)1FEH~1FFH:55H,AAH(2个字节,有效标志)CYL-CYLinder Rel-Relative sector关于SYS ind,(01:fat12;05:extended;06:fat16;07:hpfs/ntfs;0b,0d:win95 fat32;0e:win95 fat16;82:linux swap;83:linux;85:linux extended)例子,1BEH:80 01 01 00 04 07 21 F7 21 00 00 00 9F FF 00 00①②③④⑤⑥①可自举分区②分区从0柱1头1扇区开始③DOS分区④分区终止于7头33扇区F7(247)柱⑤分区相对扇区号为33⑥分区实用扇区数65339个10MB硬盘(305柱,4头,17扇/道,8扇/簇)数据组织结构:绝对扇区相对扇区簇描述柱面C,磁头H,扇区S0 0 1 无无 MBR0 0 2~17 无无未用0 1 1 0 无 DBR0 1 2~9 1~8 无 FAT1(8扇区)0 1 10~17 9~16 无 FAT20 2 1~17 17~33 无 FDT0 3 1~15 34~48 无 FDT(共32扇区)0 3 16 49 2 数据区首扇区0 3 17 50 2 数据区1 0 1~6 51~562 数据区1 0 7~14 57~64 3 数据区. . . .. . . .. . . .EBR:结构和MBR类似,但没有代码部分,即两个表和 55、AA。
FAT16的文件系统0号扇区 2簇6.FAT32的文件系统在FAT32卷上,一般存在两个Boot扇区,即工作Boot(0号逻扇)和备份Boot(一般在6号逻扇)。
0号扇区(每个逻辑盘从此处开始编号) 2簇注:在LBA(全称是Logic Block Address,即扇区的逻辑块地址) 寻址方式下,系统把所有的物理扇区都统一编号,按照从零到某个最大值排列,这样只用一个序数就确定了一个唯一的物理扇区。
用WinHex读物理硬盘时看到的扇区编号就是这种。
即物理盘从0柱0头1扇开始逻辑编号,逻辑盘从Boot区开始逻辑编号,编号均从0起。
读FAT表的(若FAT为1DBAH)前两扇:-l 0 2 20 2 (回车)-D 0F8 FF FF 0F FF FF FF 0F…读目录表:-l 0 2 3B94 20 (回车)⑵磁盘参数表(03H-59H字节):03H(占8字节):系统版本号0BH (2字节):每扇字节数0D(1字节):每簇扇区数0EH(2字节):保留(32字节)10H(1字节):FAT个数11H(2字节):表示是否为FAT32文件系统,为0000H表示是。
13H(2字节):位为00H15H(1字节):介质标志16H(2字节):未用值为00H18H(2):每道扇区数1AH(2):磁头数1CH(4):分区前隐藏扇区数20H(4):扇区总数24H(4):FAT占扇区数28H(2):FAT表镜象标志,0表2个,1表1个。
2A(2):文件系统的主次版本2C(4):根目录的起始簇号30(2):文件系统参数的扇区号32(2):备份分区引导扇区的逻辑扇区号34(12):保留,未用40(2):磁盘物理驱动的号42H(1):磁盘读写扩展标志:值为29H。
43H(4):卷序列号47H(11):磁盘卷标号52H(8):文件系统的标识号⑶FAT32文件系统的目录表FAT32文件系统将逻辑盘的空间划分为三部分:引导区(BOOT区)、文件分配表区(FAT区)和数据区(DATA区),引导区和文件分配表区合称系统区。
在FAT32位系统中根目录区(ROOT区)不再是固定区域、固定大小,它是数据区的一部分。
实际的“根目录”就是首簇号为2的文件。
主目录项(常规)名字字符保存项目录项辅助目录项(属性字节:0FH 类型信息保存项长文件名目录项结构图①与短文件名相同的主目录项其结构与上述的结构一致, 其中的文件名域存放着由长文件名转换而来的短文件名, 包括主文件名与后缀, 具体转换方法稍后介绍; 此目录项可供任何版本的MS_DOS或其它的兼容操作系统使用, 此时此文件将与一般的短文件一样, WINDOWS9x 同样也可以用短文件名的形式对此文件进行操作。
0-0AH:文件名及扩展名0BH:文件属性0CH:类型(保留,填00)0D-0FH: 文件建立时间,小时:分:秒:百分秒=5:6:5:8位10-11H:文件建立日期,年:月:日=7:4:5位12-13H:文件最新访问日期(定义同上)14-15H: 开始簇号的高16位16H-17H:最新修改文件时间(定义同0D-0FH)18H-19H:最新修改文件日期(定义同10-11H)1AH-1BH:开始簇号的低16位1CH-1FH:文件长度FAT32对8.3的FDT记录的结构作了扩展(记录长度仍为32字节),并提高了创建时间(3B)的精度:23#-19#位——时,18#-13#位——分,12#-7#位——秒,6#-0#位——百分秒。
由于在短文件名目录项中只能存放长文件名的一个别名即转换后的短文件名, 所以还必须利用其它的目录项存储完整的长文件名的全部字符串容, 具体结构如下:00H:系列号01H-0AH:文件名字符0BH:属性(0FH)0CH:类型0DH:校验和0EH-19H:文件名(续)1AH-1BH:恒为01CH-1FH:名字(续)视长文件名的长度, 决定需要利用几个目录项来存放文件名, 这样的目录项靠系列号保持各目录项间的先后顺序及连续性, 按01 02 03 ...格式排序, 如果此文件没有类型保存项, 则最后一个目录项的系列号在正常的序号基础上加上40H, 即把1 2 3 等转换为A B C字符, 以提示此长文件名目录项全部结束; 其中的属性字节恒为0FH, 文件名字符按建立文件时的真实情况保存大小写字母, 并且每个字符占两个字节。
③长文件名的类型信息保存项这种类型的目录项并不是所有的长文件均有, 只有在WINDOWS95 下建立文件时指定了系统可识别的文件类型才能为此文件建立类型信息存储项, 而在WINDOWS95 的MS_DOS的对话状态建立的一般长文件名文件不具备此目录项, 此目录项的结构如下: 00H:系列号01H-0AH:文件类型信息0BH:属性(0FH)0CH:类型0DH:校验和0EH-13H:文件类型信息(续)14H-19H:保留1AH-1BH:恒为01CH-1FH:保留其中的系列号与存储长文件名字符的目录项一起排序,但是此目录项肯定是一个完整的长文件名目录项的最后一个, 所以其系列号需要进行1 2 3 等到A B C的转换;其中的文件类型信息也是一个字符占用两个字节, 此目录项的属性位也恒为0FH。
④长文件名到短文件的转换过程其转换规则可简单的描述如下:首先去掉长文件中的非法(相对于短文件名规则不允许)的字符,保留长文件中的前几个字符再加上“~” 和一个系号形成短文件名的主名即8个字符, 其中系号由1开始, 如果短文件名不唯一, 则系号增一, 可以是2 3...或10 11...等, 直到形成唯一的文件名为止, 长文件名中保留的个数一般由系号的位数决定, 如果系号为1位则长文件名可保留6位, 这种情况居多, 如果系号为两位数则只能保留长文件名中的 5位, 总之文件名必须小于8 个字符; 文件后缀的形成一般有两种情况, 第一种情况是此长文件名具有特定的WINDOWS95 可识别的类型信息, 则按此类型建立后缀, 比如指定为文本文件的后缀恒为TXT 而不管原来长文件名是否有后缀或后缀为什么; 另一种情况不存在类型信息, 则此时只能简单的从原文件后缀中截取前面的头三个有效字符, 如长文件名无后缀, 则形成原短文件名同样没有后缀;下面举例文明长文件名“1234567890.ABCDEF” 进行转换的过程:序号为1位并且无类型信息时为:123456~1.ABC序号为2位并且无类型信息时为: 12345~10.ABC指定为文本类型且序号为1位时: 123456~1.TXT。