magicchip的笔记 https://bbs.21ic.com/?478556 [收藏] [复制] [RSS]

日志

FAT 的启动扇区的详细的说明

已有 966 次阅读2011-6-17 13:55 |个人分类:FAT文件系统|系统分类:嵌入式系统| FAT, 的启动扇区的详细的说明

决引导失败或磁盘损坏时,了解的内容和文件系统引导扇区的功能非常有用。

时间,通常由于硬件故障或病毒感染来引导扇区可能会损坏。 如果在活动的主分区或包含操作系统文件的分区的分区,是,这可以阻止系统启动。 否则,它可能只是阻止对驱动器上的数据的访问。

通常,如果您怀疑磁盘损坏,则最好使用专业的反病毒或磁盘恢复软件。 在某些种情况下但是的引导扇区的详细的知识也很方便。

这篇文章解释了 FAT 的引导扇区的各种字段。 下面的信息使它可能可以手动修复损坏的 FAT 引导扇区。 若要尝试此类修复,磁盘编辑工具能够编辑原始磁盘扇区是必需的。 本文不讨论特定的工具可用于执行此类是修复操作。

尽管对确保以下信息的准确性作了每个工作,包括将来的版本的 Microsoft 操作系统的系统的不同操作系统系统可能会使用不同的数据结构。因此,您应该使使用下列信息需要您自担风险。


更多信息
背景和术语在本文档,"文件系统引导扇区"是一个逻辑卷上的第一个物理扇区。一个逻辑卷可能会主分区、 一个扩展的分区或复合稿的两个或多个分区中的逻辑驱动器,因为与镜...


< type=text/java>
                            loadTOCNode(1, 'moreinformation');
                        


背景和术语


< type=text/java>
                loadTOCNode(2, 'moreinformation');
            
在本文档,"文件系统引导扇区"是一个逻辑卷上的第一个物理扇区。一个逻辑卷可能会主分区、 一个扩展的分区或复合稿的两个或多个分区中的逻辑驱动器,因为与镜像、 带区集和卷集。

软盘磁盘上引导扇区是第一个扇区中,在磁盘上。在硬盘的驱动器的情况下第一个扇区被称为主引导记录或"MBR。此 MBR 不同于文件系统启动扇区和包含描述该硬盘的布局的逻辑分区的分区表。文件系统启动扇区是一个这些分区中的第一个扇区。

启动过程


< type=text/java>
                loadTOCNode(2, 'moreinformation');
            
基于 80x86 的 (相对于基于 RISC 的系统) 的个人计算机的启动过程可以为执行指令的直接使用的文件系统启动扇区。 在初始启动过程总结如下:



  1. 电源上自检 (或 POST) 启动的系统 BIOS 和 CPU。
  2. BIOS 确定哪个设备作为"启动设备。
  3. BIOS 将第一个物理扇区从引导设备加载到内存,并将 CPU 执行转移到该内存地址的开始。 如果引导设备是硬盘,在步骤 3 中加载该扇区是 MBR,并在启动过程继续进行,如下所示:


  4. MBR 代码加载到内存中的"活动主分区"分区表所引用的引导扇区,并将 CPU 执行转移到该内存地址的开始。
到目前为止,启动过程是完全独立于如何格式化磁盘和正在加载哪个操作系统。 从上的此点正在使用的操作系统和文件系统起到一定。

在已安装的 Windows NT 的 FAT 卷的情况下 FAT 的引导扇区负责在卷上确定文件的位置"NTLDR"、 加载到内存,并将控制转到它。

在 FAT 的引导扇区


< type=text/java>
                loadTOCNode(2, 'moreinformation');
            
由于 MBR 将 CPU 执行转移到引导扇区,FAT 的引导扇区的前几个字节必须是有效的可执行指令的一个 80x86 CPU。 在练习中这些第一个指令构成"跳转"指令,并占用引导扇区的前 3 个字节。 此跳转用于跳过下几个以字节为单位) 不是"可执行。

跳转指令后面是一个 8 个字节 OEM ID。 这通常是一个字符的字符串,该字符串标识格式化该卷的操作系统。

以下 OEM ID 是一种结构称为 BIOS 参数块或"BPB。作为一个整体,将 BPB 提供足够的信息,可执行文件的引导扇区能够找到 NTLDR 文件部分。 因为将 BPB 总是相同的偏移量处开始,标准参数将始终是在已知位置中。 引导扇区中的第一个指令是一个跳转,因为只要新信息追加到结尾,可以在将来扩展将 BPB。 在这种情况下,跳转指令只需要一个次要的调整。 而且,实际的可执行代码可以是相当泛型的。 与运行在不同大小的磁盘上相关联的所有可变性和几何形状都封装在 BPB 中。

存储将 BPB 中一个打包 (也就是未对齐) 格式。下表列出了在 BPB 中的每个字段的字节偏移量。每个字段的说明如下表。

Field               Offset     Length
-----               ------     ------
Bytes Per Sector      11         2
Sectors Per Cluster   13         1
Reserved Sectors      14         2
FATs                  16         1
Root Entries          17         2
Small Sectors         19         2
Media Deor      21         1
Sectors Per FAT       22         2
Sectors Per Track     24         2
Heads                 26         2
Hidden Sectors        28         4
Large Sectors         32         4
                               
每扇区字节: 这是硬件的扇区和美国的使用中的大多数磁盘的大小,此字段的值将为 512。

群集每扇区: 因为它可以跟踪群集 (或分配单位) 的数量受限于 FAT,大卷支持通过增加每个群集的扇区数。 FAT 卷在群集因素是完全取决于卷的大小。 为此字段的有效值为 1、 2、 4、 8、 16、 32、 64 和 128。查询 Microsoft 知识库中相应的有关此主题的详细信息,术语默认群集大小。

保留的扇区: 这表示前面包括引导扇区本身在第一个 FAT 的启动扇区数。 它应始终具有至少 1 的值。

fATs: 这是 FAT 表存储在磁盘上的副本的数量。 一般情况下,该字段的值是 2。

根项中: 这是可以存储在该卷的根目录中的文件名称项的总数。 在典型的硬盘上此字段的值为 512。 请注意,但是,一项始终用作一个卷标签和带有长文件名的文件将占用每个文件的多个条目。 这意味着最大数量的根区目录中的文件通常是 511,但是,如果使用长文件名,则您将运行出之前的项数的。

小的扇区: 此字段用于如果卷的大小是足够小,磁盘上存储的扇区数。 较大的卷的此字段的值为 0,和我们而是引用更高版本提供的"大扇区"值。

介质描述符: 此字节提供了有关正在使用的媒体的信息。 下表列出了一些识别的媒体描述符值和它们相关联的媒体。 请注意在介质描述符字节可能与多个磁盘容量相关联。

Byte   Capacity   Media Size and Type
F0     2.88 MB    3.5-inch, 2-sided, 36-sector
F0     1.44 MB    3.5-inch, 2-sided, 18-sector
F9     720 KB     3.5-inch, 2-sided, 9-sector
F9     1.2 MB     5.25-inch, 2-sided, 15-sector
FD     360 KB     5.25-inch, 2-sided, 9-sector
FF     320 KB     5.25-inch, 2-sided, 8-sector
FC     180 KB     5.25-inch, 1-sided, 9-sector
FE     160 KB     5.25-inch, 1-sided, 8-sector
F8     -----      Fixed disk
                               
每扇区 FAT: 这是所占用的每个卷上 fat 的扇区数。 给出此信息一起 fat 和保留,上面列出的扇区数我们可以计算根区目录中的开始位置。 根区目录中,给出的条目数,我们可以还计算磁盘的用户数据区域的开始位置。

跟踪每扇区和标题: 时磁盘已格式化,这些值是明显的磁盘几何使用中的一部分。

隐藏的扇区: 这是卷的在前面开始的物理磁盘上的扇区数。(也就是在启动前扇本身) 在引导顺序中的使用来计算到根的目录和数据区域绝对偏移量。

大扇区: 如果小的扇区字段为零,此字段将包含使用 FAT 卷的扇区的总数。

一些其他的字段按照标准的 BIOS 参数块并构成了一个"扩展 BIOS 参数块。下一个字段是:

Field                  Offset   Length
-----                  ------   ------
Physical Drive Number    36        1
Current Head             37        1
Signature                38        1
ID                       39        4
Volume Label             43       11
System ID                54        8
                               
物理驱动器号: 这与 BIOS 物理驱动器号。 软盘驱动器为驱动器 A:0x00 0x80 从开始编号的物理硬盘时从开始编号。 通常,您将设置此值,然后发出到指定设备访问一个 INT 13 BIOS 调用。 在此字段中存储在磁盘上的值通常是为软盘 0x00 和硬盘不管多少个物理磁盘驱动器的 0x80 存在因为值才相关,如果该设备是启动设备。

当前的头: 这是执行 INT13 BIOS 调用时,通常使用的另一个字段。 值将最初使用了存储在其引导记录已找到,但值存储在磁盘上当前未使用这种跟踪。 因此,Windows NT 使用该字段来存储两个标志:



  • 最低位是使用以指示该 autochk 应在启动时对卷运行 chkdsk 的"更新"标志。
  • 第二个最低位是一个标志,指示也应运行表面扫描。
签名: 的扩展的引导记录签名必须是 0x28 或 0x29 以 Windows NT 被识别。

标识: 的 ID 是以帮助区分一个磁盘在格式时分配一个随机的序列号。

卷标签: 此字段用来存储卷标签,但现在为根区目录中的特殊文件存储卷标。

系统 ID: 此字段是"FAT12"或"fat16,具体取决于磁盘的格式。

在启动卷上以下扩展 BIOS 参数块区域是通常可执行文件的启动代码。 此代码是负责执行任何操作所需继续启动带子过程。 在 Windows NT 系统此引导代码将确定 NTLDR 文件的位置,将其加载到内存,并将执行转移到该文件。 即使在不可引导软盘上有在此区域中是可执行代码。 代码需要打印熟悉邮件,"非系统磁盘或磁盘错误"上找到大多数的标准 MS-DOS 格式化软盘未设置格式与"系统"选项。

最后,最后两个字节中任何引导扇区始终具有十六进制值: 0x55 0xAA。

故障排除


< type=text/java>
                loadTOCNode(2, 'moreinformation');
            
如果您怀疑 FAT 的引导扇区已损坏,您可以检查的一些以查看列出的值是否意义上面列出的域。 例如对于 BytesPerSector 将在绝大多数情况下 512。 您还将会看到的引导扇区的可执行代码部分中的文本字符串,适用于格式化该磁盘的操作系统。

典型的文本字符串设置格式的 MS-DOS FAT 卷上包括:"无效的系统磁盘.";"替换磁盘,和然后按下任意键";"非系统磁盘或磁盘错误";"替换和按下任意键时准备好"; 和"磁盘启动失败。"磁盘 I/O 错误。";由 Windows NT 格式化 FAT 卷上的文本字符串包括:"启动: 无法找到";"I/O 错误读取磁盘."; 和请插入另一张磁盘。 NTLDR。此列表不应视为被通用。如果在引导扇区中找到其他消息,这并不一定表示是否有引导扇区的问题。 不同版本的 MS-DOS 和 Windows NT 有时将其启动扇区中有略有不同的消息字符串。另一方面,如果您发现另有说明,否则,没有文本,或者文本清晰地与 MS-DOS 或 Windows NT 您应该考虑以下可能性您的启动扇区可能已受到感染了病毒或其他某种形式的数据损坏可能有期间发生。

从已受到病毒感染了启动扇区中恢复,通常最好使用商业防病毒程序。 许多病毒会做得更多比只是将数据写入引导扇区,以便手动修复引导扇区的建议不要,因为它可能无法完全消除病毒,并在某些种情况下可能会更多执行损害比工作正常。

如果您怀疑由于某种原因已损坏的启动扇区,通常最好使用商业磁盘恢复工具。 时可能会不需进行重新格式化驱动器,通过手动修改字段上面所述的情况下从引导扇区损坏中恢复,手动编辑启动扇区,因此只会尝试作为最后的手段,不能保证在其他磁盘结构可能也已损坏的情况下工作。

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)