FAT文件系统高手来帮忙解答,小弟将不胜感激涕零

haierjsjcg 2009-12-14 09:16:22
加精
我在嵌入式平台上移植的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)、我上面写的各个字段分配的空间有和不妥的地方,可以指出来,大家可以讨论一下,这还是很有意义的。



...全文
1569 97 打赏 收藏 转发到动态 举报
写回复
用AI写文章
97 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoveldf 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 haierjsjcg 的回复:]

我自己好像是悟出来了缘由。
大家可以看看对不对。


“分区不能跨柱面”这个是原则,柱面的大小是255(磁头数)*63(每个磁道的扇区数) = 16065个扇区,
也就是我分配的分区等大小都要以16065个扇区为单位去分配,我的硬盘总的扇区数是156301488,把总的扇区数对16065取余数恰好是5103个扇区,这5103个扇区不足以组成一个柱面,所以这5103个扇区不能被分到任何一……
[/Quote] 弱弱的问句 为什么“分区不能跨柱面” 求解答
zl6977 2010-08-22
  • 打赏
  • 举报
回复
书签,也遇到了这个问题
z010q3w 2010-05-23
  • 打赏
  • 举报
回复
那么长我都没有看完
  • 打赏
  • 举报
回复
htm上传可以访问改成asp就不能访问,空间是支持ASP的,是不是代码限制了呢 网站打开出现下面的问题

Active Server Pages 错误 'ASP 0139'

嵌套的 Object

/111/Index.asp,行 28

Object 标记不能放在另一个 Object 标记内。


hurstsky121 2009-12-26
  • 打赏
  • 举报
回复
比较深奥的东西哦 路过 ~
humanboy001 2009-12-23
  • 打赏
  • 举报
回复
虽然我看不董,但还是顶的,看得出来 LZ的心用得多啊
YHL27 2009-12-23
  • 打赏
  • 举报
回复
sf!
yanyanchao1010 2009-12-23
  • 打赏
  • 举报
回复
看看怎么回事
没有昵称哦 2009-12-23
  • 打赏
  • 举报
回复
学习下了
wly0502 2009-12-23
  • 打赏
  • 举报
回复
xuexi
hqx663 2009-12-22
  • 打赏
  • 举报
回复
学习
danxuezx 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cnzdgs 的回复:]
你这种分区方式属于“非主流”,很多工具不能正确识别。
按你的描述,估计分区表上可能有问题。提几点注意一下:
1、MBR上的扩展分区ID要用0F。
2、按照每面255磁道来计算分区开始位置和结束位置的CHS值,如果柱面号大于1023,则填写1023。
3、扩展分区内的逻辑分区ID用0B。
4、BPB表中的面数填255,开始扇区号按相对于整个硬盘计算。
[/Quote]
十年的工作经验不是盖得啊,厉害。
硬盘分区这块之前也了解一点,看过楼主的帖子理解更深了一些。
dir541541 2009-12-22
  • 打赏
  • 举报
回复
感兴趣,关注!
gan158qiang 2009-12-22
  • 打赏
  • 举报
回复
黑鹰好吗啊? 怎么样啊? 好出名啊!
c33582 2009-12-22
  • 打赏
  • 举报
回复
这个,可以顶!
zhaoyongcai123 2009-12-22
  • 打赏
  • 举报
回复
好深奥的东西,学习
cw6797 2009-12-22
  • 打赏
  • 举报
回复
不明白 不过还是顶
jefter 2009-12-22
  • 打赏
  • 举报
回复
好复杂,帮顶
CICI297477957 2009-12-22
  • 打赏
  • 举报
回复
ddddd
hallowwar 2009-12-22
  • 打赏
  • 举报
回复
很复杂,看不懂也学习下。
加载更多回复(73)

6,850

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧