什么是主引导记录?
主引导记录对于几乎所有操作系统都是相同的。它位于硬盘驱动器的第一个扇区上,在第1扇区的头0汽缸0处。它是您的计算机在检查了所有硬件(POST)并将加载软件的控制权转移到硬盘驱动器后运行的第一段代码。它还包含分区表,它定义了硬盘驱动器的不同部分。基本上,如果这个512字节的小区域有任何问题,你的硬盘就会脑死亡。
抵消 | 描述 | 大小 |
000 h | 可执行代码(Boots计算机) | 446个字节 |
1本· | 第一个分区条目(参见下表) | 16字节 |
1另一 | 第二个分区条目 | 16字节 |
1电气设施 | 第三个分区条目 | 16字节 |
1 eeh | 第4分区条目 | 16字节 |
1切 | 引导记录签名(55hAAh) | 2字节 |
- 分区条目(MBR的一部分)
抵消 | 描述 | 大小 |
00 h | 分区的当前状态(00h=Inactive, 80h=Active) | 1个字节 |
01 h | 开始分区-头 | 1个字节 |
02 h | 开始分区-圆柱/扇区(见下文) | 1字 |
04 h | 分区类型(见下表) | 1个字节 |
05年h | 分区头结束 | 1个字节 |
06 h | 分区结束-圆柱/扇区 | 1字 |
08年h | MBR与分区中第一个扇区之间的扇区数 | 1双字 |
0 ch | 分区中的扇区数量 | 1双字 |
- 缸/部门编码
我想在10MB硬盘和8086的时代,代码是非常珍贵的。所以他们想尽一切办法来保留空间。不幸的是,我们现在不得不忍受它,但幸运的是,他们创造了新的方法来转换系统,因此1024缸限制(2^10)至少对新电脑来说不是太大的问题。旧的通常需要某种磁盘覆盖程序,使他们看到整个硬盘驱动器。
无论如何,要得到这个扇区,你需要应用一个AND掩码($3F)到它。要得到圆筒,您取高字节和低字节或它已经与($C0)掩码,然后向左移位2。这不是很容易解释,所以我只向你展示我是如何用我(在帕斯卡)为圆柱/扇区编码和解码的两个程序。希望即使你不认识帕斯卡也能读懂它。
函数CylSecEncode(Cylinder, Sector: Word): Word;
开始
CylSecEncode: = (Lo(Cylinder) shl 8)或(Hi(Cylinder) shl 6)或Sector;
结束;
输出方法:Var Cylinder, Sector: Word;CylSec: Word);
开始
气缸:= Hi(CylSec)或((Lo(CylSec)和$C0) shl 2);
行业:= (CylSec和$3F);
结束;
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3. | 2 | 1 | 0 |
气缸位7到0 | 气缸位9+8 | 扇区位5到0 |
分区类型清单
除了这些,我只列出了与MS操作系统相关的内容。
价值 | 描述 |
00 h | 未知或虚无 |
01 h | 12位脂肪 |
04 h | 16位FAT(分区小于32MB) |
05年h | 扩展MS-DOS分区 |
06 h | 16位FAT(分区大于32MB) |
0黑洞 | 32位FAT(高达2048gb的分区) |
0 ch | 与0BH相同,但使用LBA113 h扩展 |
0是吗 | 与06H相同,但使用LBA113 h扩展 |
0跳频 | 与05H相同,但使用LBA113 h扩展 |
读取多个分区
虽然在FAT32中不可能像在FAT16中那样有多个分区,但它仍然以相同的方式工作。第一个分区是主分区,其他所有内容都存储在扩展分区中。不过,在读取这些额外的分区时(不是很多,只是少量)有点棘手。分区表中的第一条记录显示了主分区的位置(它有多大,它从哪里开始,以及它从哪里结束)。分区表中的第二个条目显示了整个扩展分区(可能包括多个分区)的位置。要读取更多分区,请转到扩展分区开始的位置,并读取第一个扇区。它的作用就像MBR。代码应该是空白的,在分区表中,它的第一个条目是驱动器中的下一个分区,如果还有,就会有另一个扩展分区,就像以前一样。但是,所有对扇区号的引用都使用新的MBR点作为引用,使其成为一个虚拟驱动器。为了防止这没有太大的意义(顺便说一下,我解释了一些我可以理解的事情,如果没有的话),让我向您展示一个有三个分区的驱动器是如何设置的。
整个驱动器的MBR
入口#1 -指向分区#1
条目#2 -指向整个扩展分区
您将读取扩展分区的第一个扇区,并看到另一个MBR结构。
扩展分区的MBR
入口#1 -指向分区#2
入口#2 -指向分区#2后扩展分区的剩余部分
现在,这些条目中对扇区号的所有引用(特别是位于偏移量08h的条目)都不会从驱动器的开始处引用,而是从扩展分区的开始处引用。然而,CHS(柱面,头,扇形)的数字仍然是正确的。
同样,您将读取扩展分区的第一个扇区,并查看下一个MBR。
扩展分区其余部分的MBR
入口#1 -指向分区#3
没有条目#2,因为这是最后一个分区
如果有另一个分区,模式将像以前一样继续,直到到达最后一个分区。
FAT32引导记录信息
该信息位于每个分区的第一个扇区中。
抵消 | 描述 | 大小 |
00 h | 跳码+ NOP | 3个字节 |
03 h | OEM名称(可能是MSWIN4.1) | 8个字节 |
0黑洞 | 每扇区字节数 | 1字 |
0 dh | 每个集群的扇区 | 1个字节 |
0是吗 | 保留部门 | 1字 |
10 h | FAT拷贝数 | 1个字节 |
11小时 | 最大根目录条目数(FAT32无效) | 1字 |
13小时 | inPartition的扇区数小于32MB (FAT32无效) | 1字 |
15小时 | 媒体描述符(硬盘8h) | 1个字节 |
16小时 | 旧fatsystem中每个FAT的扇区数(FAT32无) | 1字 |
18 h | 每个轨道的部门数 | 1字 |
1啊 | 正面次数 | 1字 |
1 ch | 分区中隐藏扇区的数量 | 1双字 |
20 h | inPartition的扇区数 | 1双字 |
24小时 | 每个FAT的扇区数 | 1双字 |
28 h | Flags (Bits 0-4表示active FAT Copy) (Bit 7表示是否启用或禁用FAT mirroring)(如果禁用FATMirroring,则FAT信息只写入0-4位指示的副本) | 1字 |
2啊 | FAT32驱动器版本(HighByte =主要版本,Low Byte =次要版本) | 1字 |
2 ch | 根目录起始集群号 | 1双字 |
30 h | 文件系统信息扇区号(参见下面的结构)(从分区开始引用) | 1字 |
32 h | BackupBoot扇区号(从分区开始引用) | 1字 |
34 h | 保留 | 12字节 |
40小时 | 分区的逻辑驱动器号 | 1个字节 |
41小时 | 未使用(可能是前一个条目的高字节数) | 1个字节 |
42小时 | 扩展签名(29h) | 1个字节 |
43小时 | 分区编号 | 1双字 |
47个小时 | 分区的卷名称 | 11个字节 |
52小时 | FAT名称(FAT32) | 8个字节 |
5啊 | 可执行代码 | 420个字节 |
1切 | 引导记录签名(55hAAh) | 2字节 |
文件系统信息扇区指令
通常,它存在分区的第二扇区,尽管在引导扇区中有对它的引用。我猜它是可以移动的。我从来没有对它有过完整的了解。虽然我知道重要的领域在哪里。
抵消 | 描述 | 大小 |
00 h | 首次签名(52h 52h 61h41h) | 1双字 |
04 h | 未知,目前(可能只是Null) | 480个字节 |
1 e4h | FSInfo部门签字(72h 72h 41h 61h) | 1双字 |
1 e8h | 空闲集群数量(如果未知则设置为-1) | 1双字 |
1决定自 | 最近分配的Cluster数。 | 1双字 |
1 f0h | 保留 | 12字节 |
1 fch | 未知或空 | 2字节 |
1切 | 引导记录签名(55hAAh) | 2字节 |
FAT32驱动器布局
抵消 | 描述 |
开始分区 | 引导扇区 |
开始+ #的ReservedSectors | 脂肪的表 |
开始+ #保留数+(每个FAT的扇区数* 2) | 数据区(从集群#2开始) |
集群的意义
集群是硬盘上的一组扇区,扇区中包含信息。一个4K集群有8个扇区(512*8=4096)。每个Cluster在FAT表中都有一个位置。当您查看FAT中的条目时,那里的数字告诉您该集群中是否有数据,如果有,它是数据的结尾还是在它之后有另一个集群。一个分区上的所有数据都从集群#2开始。如果FAT Entry为0,则该集群中没有数据。如果FAT条目是0FFFFFFFh,那么它是链中的最后一个条目。
这是我的信息中最大的漏洞之一。我无法找到任何地方,显示什么数字意味着什么,当涉及到脂肪表。我可以通过查看FAT32驱动器来判断链的末端,但我不知道什么是BAD Cluster,也不知道显示数据的最大有效数字是多少。
现在,你可以用下面的公式来计算一个分区中最大的有效集群:
((分区扇区数量)-(每个Fat扇区数量* 2)-(预留扇区数量))/(每个集群扇区数量)
如果这个公式的答案中有余数,这只是意味着在分区的末尾有一些额外的聚类(可能不足以形成另一个聚类),所以可以去掉小数点之后的所有数。
目录表
查看底层文件系统的另一个方面是目录表。目录表存储了所有的文件和目录条目。基本上FAT16和FAT32的Directory Table只有一个区别。不同之处在于:短文件名结构中的保留OS/2字节(偏移量20 [14h])被替换为集群号的高字(因为它现在是4字节而不是2字节)。
文件分配表
脚注
1 - LBA =逻辑块寻址-使用Int 13h扩展内置到较新的BIOS访问数据超过8GB的障碍,或访问严格在LBA模式,而不是CHS(柱面,磁头,扇区)
额外提示:用EaseUS硬盘恢复软件从FAT32硬盘恢复丢失的数据
如果你不小心删除、删除或格式化了FAT32硬盘、USB或其他存储设备上的数据,不要惊慌。你最好的选择是放手EaseUS数欧宝体育app登录软件据恢复向导欧宝体育官网首页的帮助!在这里,我们推荐您尝试EaseUS数据恢复向导,它允许您在3个简单的步骤内有效地取消删欧宝体育app登录软件除,取消格欧宝体育官网首页式和恢复所有丢失的数据。免费下载它得到所有你丢失的FAT32数据现在:
这个页面有用吗?
相关文章
塞德里克/ 2022/09/22
洛葛仙妮/ 2022/09/22
Brithny / 2022/09/22
修复Page_Fault_In_Nonpaged_Area错误
Brithny / 2022/09/22