FAT32文件系统研究(整理)

上传人:桔**** 文档编号:507454421 上传时间:2024-01-16 格式:DOC 页数:8 大小:1.11MB
返回 下载 相关 举报
FAT32文件系统研究(整理)_第1页
第1页 / 共8页
FAT32文件系统研究(整理)_第2页
第2页 / 共8页
FAT32文件系统研究(整理)_第3页
第3页 / 共8页
FAT32文件系统研究(整理)_第4页
第4页 / 共8页
FAT32文件系统研究(整理)_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《FAT32文件系统研究(整理)》由会员分享,可在线阅读,更多相关《FAT32文件系统研究(整理)(8页珍藏版)》请在金锄头文库上搜索。

1、FAT32文件系统研究一、从分区表开始硬盘为什么要分区,个人看法是资料管理更方便。分区的概念是死老外提出来的,但是死老外真的就是死老外,你看他们出的机器,他愣就不给你分,一个硬盘有多大他就给你搞多大个区,搞的你所有资料都放一个盘,一旦系统崩溃,那个烦啊。(其实这也叫分了区,只不过只有一个而已。)Dell更过分,你想分成你希望的分区还得加服务费100大元整,我倒,1分钟搞定的事,收100!RMB真的贬值了!废话不多说,下面说正题。先上图:图一这是分区表的最后80字节,分区表从地址:1BEH处开始,每16字节为一个分区项,最后的1FE开始的55 AA两个是结束的意思。这在其他如DBR等里面也是一样

2、的意思。下面来解释下分区项的含义。偏移长度值含义1BE1字节0磁盘激活标记,80激活,00未激活1BF1字节1分区起始磁头1C06Byte1分区起始扇区,低0-5位为扇区数,高6-7位用作柱面的高二位1C110Byte1分区起始柱面,前一字节的后二位一起用来表示柱面数1C21字节0B分区格式,分区的类型,如0B表示FAT321C31字节FE分区结束磁头1C46Byte3F分区结束扇区,含义同起始扇区1C510Byte7F分区结束柱面,含义同起始柱面1C64字节3F分区起始逻辑扇区1CA4字节1F6041分区总扇区事实上,起始磁头柱面扇区以及结束磁头柱面扇区从Win98(貌似是,不记得了)开始就

3、没有实际含义,因为CHS寻址方式因最大只能寻址到8.4G,(原因?自己可以计算下看看)从这版的系统开始,使用的是LBA寻址方式,也即线性寻址方式。以前采用28位的LBA,因此又有128G的限制,或者说137G限制。为什么128G或者137G呢?那你看看120G的硬盘格式化出来是多大就知道了。现在的硬盘都很大,为了全部使用,因此出现了48位LBA。好了,不扯远了,继续我们的话题。从图一可以看出,如果硬盘分区全部是主分区的话,只能有4个,而如果采用主分区+扩展分区的方式,则可以有3个主分区+无限逻辑分区的可能。因为扩展分区也采用了类似分区表的方式表示方法,采用一个链表来指向下一个逻辑分区。虽然不再

4、采用CHS而采用了LBA方式,但还是遵循不能跨越柱面的原则,即保留扇区加本分区总扇区数是柱面容量的整数倍。柱面容量是25563。在Winhex中,也可以看到分区项的含义:图二以下是常见的分区类型:00 5CPriamEdisk01FAT1261SpeedStor02XENIXroot63GNUHURDorSys03XENIXusr64NovellNetware06FAT1604表示分区小于32M65NovellNetware07HPFS/NTFS70DiskSecureMult08AIX75PC/IX09AIXbootable80OldMinix0AOS/2BootManage81Minix/

5、OldLinux0BWin95FAT3282Linuxswap0CWin95FAT3283Linux0EWin95FAT16840s/2hiddenC:0FWin95Extended(大于8GB)85Linuxextended10OPUS86NTFSvolumeset11HiddenFAT1287NTFSvolumeset12Compaqdiagmost93Amoeba16HiddenFAT1694AmoebaBBT14HiddenFAT1632MBA0IBMThinkpadhidden17HiddenHPFS/NTFSA5BSD/38618ASTWindowsswapA6OpenBSD1BH

6、iddenFAT32A7NextSTEP1CHiddenFAT32partition(usingLBA-modeINT13extensions)B7BSDIfsB8BSDIswap1EHiddenLBAVFATpartitionBESolarisbootpartition24NECDOSC0DR-DOS/NovellDOSsecuredpartition3CPartitioMagicC1DRDOS/sec40Venix80286C4DRDOS/sec41PPCPerpBootC6DRDOS/sec42NTFS动态分区C7Syrinx4DQNX4.xDBCP/M/CTOS4EQNX4.x2ndp

7、artE1DOSaccess4FQNX4.x3rdpartE3DOSr/050OnTrackDME4Speedstor51OnTrackDM6AuxEBBeoSfs52CP/MF1SpeedStor53OnTrackDM6AuxF2DOS3.3+secondarypartition54OnTrackDM6F4SpeedStor55EZ-DriveFELANstep56GoldenBowFFBBT好了,今天来个不那么空洞的。下面以一个误Ghost的硬盘为例子来说一下分区表的恢复。以前我曾有个帖子:,今天我们从原理上来说一下。看下图,这是一个被误ghost的硬盘,现在仅显示一个分区,误操作前,硬盘

8、有3个区,除C以外都是FAT32。?图一其实这个用那个分区医生,(貌似还有个易我分区医生,不过明眼人一看就知道是怎么回事,呵呵),可以很快找出来,不过既然是研究嘛,咱就纯手工做一回,这样能加深对分区表的认识。另外分区医生做了以后就没有C盘了,得重装系统。(其实也可以手工改)。好了,我们把这个硬盘挂到另外一台电脑上去,打开winhex,点开菜单,搜索查找十六进制数值,这里有两种搜索方式,一种是搜索55AA,勾选条件:偏移计算8225280=510,为什么?虽然现在是LBA寻址,但是,有一个条件仍然是存在的,就是不能跨越柱面。所以,每柱面255磁头,每磁头63扇,每扇区512字节来计算,255*6

9、3*512=8225280,由于55AA出现在柱面的倒数2字节,因此余数为510。同时勾选列出搜索结果,这样搜索的结果就记录在位置管理器。第二种方法是搜索EBFE90或EB5890,这是FAT32的DBR的前三个字节。其中EBFE90是DM分区的标志,EB5890是微软的工具分区的标志。这里我们搜索DBR标志,先搜索EB5890,10分钟完毕,额,没有。那换成EBFE90,几分钟后,提示找到4个。如下图:?图二图三?图四为什么是4个呢?计算下,(2542A0A00-25429FE00)/200=6,(5D2684A00-5D2683E00)/200=6,这就是原因了,?FAT32的备份位于DB

10、R之后的第6扇区,所以第2、4个是第1、3个的备份。找到第一个位置,再往前翻63扇区,可以看到以下内容:图五是不是很像分区表,再往前一个扇区,可以看到以下内容:图六?这个是一个NTFS的DBR的备份,为了验证这是我们要找的东西,可以搜索55AA标志,可以看到,这样搜索的结果也是正好在这个位置,绝对扇区位置:19535040。好的,返回到第1,3个DBR的位置,记录下偏移20的数值,FAT32偏移20处的含义就是该区的扇区总数,也即该分区的大小,这里分别是:E11EBF01,06A21602,因为这个记录是高位在前地位在后,反过来就是:1BF1EE1,216A206,转化成10进制就是,2930

11、2497,35037702,好了,有这两个数字,我们就来修改分区表了。打开winhex的下拉三角形,选分区一,分区表模板。如下图:?图七先将这两个数值填到PartitionTableEntry#2,PartitionTableEntry#3的Sectorsinpartition。然后我们再来计算第一个分区的大小25429FE00/200-3F=12A14C0,再减去分区表的63扇区,12A14C0-3F=12A1481,十进制就是19534977,这个数填入第一个分区表项的,Sectorinpartition,然后转到偏移的7E00,或者直接定位DBR模板,将TotalSectors改成这个数

12、值。然后再来修改第二项的Sectorsprecedingpartition2,也就是分区之前的扇区数,只个数值=第一分区表+第一分区总扇区数+第二分区表项。那么就=63+19534977+63=19535103。类似计算处第三分区表项的此数值:19535103+29302497+63=48867663。再修改,PartitionTypeIndeicator,FAT32是0B,分别填入,然后保存。其余数值呢?没有实际含义,不理他了。可能你会问:如果原来是扩展分区呢?无所谓了,只要你定位了分区表就行了,反正一个表里面可以有4个分区项,这也是为什么主分区不能超过四个的原因,因为这里只能有4个,超过了

13、就得靠扩展分区来定位了。好了,保存以后我们重启电脑看看。图八再看看文件?图九都能访问,呵呵。挂到原来的电脑上看看能启动吗?呵呵,居然能啊!成功。OK,今天就到这里了,有空再继续研究FAT32的DBR。三、DBR结构闲话少说,先上图:图一先来说说他的含义:偏移字节含义备注00H3引导代码微软分区工具是EB5890,DM是EBFE9003H8厂商标志及DOS版本号0BH2每扇区字节数一般为512(200H)0DH1每簇扇区数(10的整数倍)此处为16(10H)0EH2DBR大小FAT32一般是3210H1FAT的个数一般是211H2根目录数早期的FAT16是256,FAT32开始没有含义13H2扇区总数FAT16(小于32MB的区)15H1介质描述F8表示硬盘16H2每个FAT的扇区数FAT16的18H2每磁道扇区数一定是631AH2逻辑磁头数一定是2551CH2分区的隐藏扇区数对于主分区来说,此处为该分区之前的扇区,扩展分区则是MBR到DBR的扇区数20H4扇区总数大于32MB的FAT32分区此处为29302497(1BF1EE1)24H4FAT表占的扇区数FAT32的,此处为14294(37D6)28H2标记2AH版本2CH4引导目录第一簇,即根目录的起始簇此处为230H2BOOT本身占用的扇区32H2备份DBR的位置34H7保留,全为0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 汽车技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号