FAT文件系统高手来帮忙解答,小弟将不胜感激涕零
我在嵌入式平台上移植的FAT32文件系统,自己写MBR区域以及DBR区域和后继的文件系统等。
发现一个问题,实在不知道如何解答和处理。
首先说一下,我的MBR区域、DBR区域以及相关情况:
1.我用的是80G的硬盘,扇区总数为156301488.
2.我在MBR区域第一个分区表中建立的是一个扩展分区,它的(1c6偏移位置)sectors preceding partition 为16065,(1ca)sectors in partition 1 我写的是156285423(156301488-16065=156285423)
3.跟到16065号扇区,我的扩展分区表的内容是,sectors preceding partition 为63,sectors in partition 1我写的是156285360(156301488-16065-63=156285360).
4.跟到16128号扇区,也就是我写的DBR区域,hidden sector是16128,sectors(on large volumes)156285360.
5.根据我的理解,这样写完全可以,因为它总的来说,是一环扣一环,不应该有问题的。我在嵌入式平台上,在我的硬盘里建立一个FAT32文件目录(文件夹),插在我的个人PC上面完全可以识别,可以识别我写的文件系统是FAT32的,可以看到我建立的文件目录(文件夹),对这个文件夹操作也没有问题。
但是,我用一个软件时却发现了问题,它是Norton Partition Magic 8.0,它提示我说:
已检测到起始于磁盘2 扇区16065上的分区有错误110.
分区表中的长度不正确。
CHS长度为156296385 LBA长度为156285423.
Norton Partition Magic已经决定长度可以更改为正确的值156280320.
并且提示我修改与否。
如果我修改的话,它就将我的MBR区域的,(1ca)sectors in partition 1 我写的是156285423(156301488-16065=156285423)给改写为156280320,它还是显示说我的硬盘为坏,而且用它格式化的时候显示说论据错误格式化不了。
如果我不修改的话,它就显示我的这个硬盘为坏,不予识别,格式化的时候显示说论据错误格式化不了。
后来我通过WINHEX工具观测我的硬盘数据,发现它在hard disk 1显示的磁盘空间分配有一行是 unpartitionable space 大小是2.5兆,起始于156296385号扇区到156301488,共计大小为5103个扇区,2551.5k,等于2.491兆,约等于2.5兆。
然后我联想到魔法分区师的提示,CHS长度为156296385 ,而我在MBR区域写的是 (1ca)sectors in partition 1156285423(156301488-16065=156285423) ,它减去5103就是正确的魔法分区师写的正确的数值156280320,我个人认为这不是巧合,肯定是什么地方出了问题,因为我不理解winhex显示的 unpartitionable space 是什么东西,它的空间应该排除在分区之外,我没有排除,我不知道这个空间它是从哪儿来,如何计算,还有就是CHS长度和硬盘的总共扇区数156301488,之间有什么关系,看魔法分区师的意思是应该在CHS长度范围内分区,它们之间的差值为不可分区区域的长度也就是5103
不可分区的长度应该排除在分区长度之外.
现提出以下问题,望大家能给与意见和建议,懂的高手能予以解答:
(1)、CHS如何计算,我读到的硬盘参数是,heads = 16,cylinders = 16383,sectors pe track = 63,它们的乘积是16514064不等于CHS长度(156296385),它到底如何计算还是说我的硬盘参数读取有误。
(2)、unpartitionable space 具体是什么区域,位于硬盘数据区具体的什么地方,它如何产生,如何就不能分区,我知道有一句话:分区不能跨柱面,是否和这句话有关,它的大小如何计算,是否像我看到的那样由总共扇区数156301488和CHS长度之差。
(3)、我在用魔法分区师修改完之后,在工具里看到的还是说的硬盘为坏,格式化不了,它是否还是由空间分配引发的问题分配的空间都多了5103个扇区,而只修改了MBR中的错误,扩展分区表和DBR的大小都没改。
(4)、我上面写的各个字段分配的空间有和不妥的地方,可以指出来,大家可以讨论一下,这还是很有意义的。