中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 谁能教我如何填写fat? 上一主题 | 下一主题
ko20010214
版主




积分 7294
发帖 1628
注册 2002-10-16
状态 离线
『楼 主』:  谁能教我如何填写fat?

发信人: Hechuan (hc), 信区: DOS

【 在 Jungle (自由的荆棘~~我行我素) 的大作中提到: 】
: 【 以下文字转载自 Virus 讨论区 】
: 【 原文由 Jungle 所发表 】
: 正在试图修复一个被cih破坏的硬盘,c盘的两个fat都坏了。8-(
: 用ghost5.1c复制,总说有非法cluster(号为:c000)
: 看来只好在不复制的情况下,手工修修看了。
: 现在遇到一个问题,我找到了根目录(部分文件)。
: c盘参数是从(0,1,1)到(305,127,63)(柱面,头,扇区),
: 1204M,512 bytes/sector, 63 sectors/head, 127 heads/cylinder,
: 64 sectors/cluster,即32k bytes/cluster
: 每个fat为151个扇区(fat16)
: 根目录在(1,6,26)
: 在(31,72,20)找到一个子目录,其起始扇区在30757簇(和根目录的记录是一致的)。
: 怎么算物理扇区和簇的对应关系?
: (直接拿簇数 x 64 再加上第二个fat结束的位置,结果不对;而在其它盘上,
: 包括fat32的盘和1G的盘,这么计算就是对的,我不太明白是怎么回事,呵呵)
: 怎样把根目录信息加到fat里?
: 请诸位大侠不吝赐教,谢谢!

    FAT16保留前两个簇号没用,所以应该是:

    (簇号 - 2) * 64 + 数据区起始位置就对了。



发信人: Jungle (自由的荆棘~~我行我素), 信区: DOS

事实上我发现,计算远比这复杂。
主要原因可能是由于根目录不是紧接着fat表。

经过归纳 8-):
从根目录后面的一个目录dir1开始计算相对簇数cl,
计算扇区数se = cl * 32(居然不是64?奇怪,分区超过1.1G了呀)
然后计算相对柱面数cy,修改se = se - cy * 63(不知道为何每柱面少算一个头)
现在se是要计算的簇与dir1的位置的相对扇区数。
(如果从根目录计算,还有差距,不知是什么原因)

接下来,谁能教我如何填写fat?

【 在 Hechuan (hc) 的大作中提到: 】
:     FAT16保留前两个簇号没用,所以应该是:
:     (簇号 - 2) * 64 + 数据区起始位置就对了。




发信人: Hechuan (hc), 信区: DOS

【 在 Jungle (自由的荆棘~~我行我素) 的大作中提到: 】
: 事实上我发现,计算远比这复杂。
: 主要原因可能是由于根目录不是紧接着fat表。
: 经过归纳 8-):
: 从根目录后面的一个目录dir1开始计算相对簇数cl,
: 计算扇区数se = cl * 32(居然不是64?奇怪,分区超过1.1G了呀)
: 然后计算相对柱面数cy,修改se = se - cy * 63(不知道为何每柱面少算一个头)
: 现在se是要计算的簇与dir1的位置的相对扇区数。
: (如果从根目录计算,还有差距,不知是什么原因)
: 接下来,谁能教我如何填写fat?

    不会吧。你的分区是FAT16吗?是不是相对扇区和物理扇区的换算不对呀。



发信人: Jungle (自由的荆棘), 信区: DOS

我想应该是fat16吧,我问过原来做盘的人。
而且如果是fat32,我这个计算方法岂不是差距更大?(4k 即 8 sectors/cluster)

这个32 sectors/cluster 实在太古怪了。1.2G的盘应该是64 sectors/cluster才对呀。
可用fat32来解释也不大对头。

当然原来的系统可能是win97的,它会干什么坏事吗?

另:我最初文章里的根目录位置不对。后来计算的是在另一个地方的目录,
这个目录是对的,因为我顺着找了几个目录,包括最应该恢复的文档目录。
也就是我得以总结出规律的几个目录。

【 在 Hechuan (hc) 的大作中提到: 】
:     不会吧。你的分区是FAT16吗?是不是相对扇区和物理扇区的换算不对呀。
相对扇区和物理扇区差别在什么地方?总不会大小也有差别吧。。。




发信人: Hechuan (hc), 信区: DOS

【 在 Jungle (自由的荆棘) 的大作中提到: 】
: 我想应该是fat16吧,我问过原来做盘的人。
: 而且如果是fat32,我这个计算方法岂不是差距更大?(4k 即 8 sectors/cluster)
: 这个32 sectors/cluster 实在太古怪了。1.2G的盘应该是64 sectors/cluster才对呀。
: 可用fat32来解释也不大对头。
: 当然原来的系统可能是win97的,它会干什么坏事吗?
: 另:我最初文章里的根目录位置不对。后来计算的是在另一个地方的目录,
: 这个目录是对的,因为我顺着找了几个目录,包括最应该恢复的文档目录。
: 也就是我得以总结出规律的几个目录。
: 相对扇区和物理扇区差别在什么地方?总不会大小也有差别吧。。。

     1.2G的盘应该是32 sectors/cluster吧。你算算:
     1.2*1024*1024*1024/65536 = 19660.8

     我说的相对扇区是从根目录后的第一个扇区为0扇区。物理扇区是用柱面、
磁头、扇区来表示的。

     我觉得手动恢复太复杂了。还是找一些恢复工具(可能要挂到另外一个硬盘上),
如RecoverNT, RecoverAll,Lost&Found,Virus和Win95版以前的文章有很详细的介绍,
这样可把恢复的内容写到另外一个盘上,而不改变原来的盘。

     手动修改也最好不要直接改FAT,把找到的文件手工写到另一个盘上就行了(用
DiskEdit)。

(本文采用S-Term文章拷贝脚本拷贝)
==================================================




ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2003-6-1 00:00
查看资料  发送邮件  发短消息 网志  OICQ (16959102)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: