精华内容
下载资源
问答
  • 最小的操作系统引导扇区,把它使用光盘软件刻入到光盘引导页或者写入到iso文件就可以直接在裸机上直接运行
  • ntfs文件系统扇区存储探秘
  • 《NTFS文件系统扇区存储探秘》主要内容包括:介绍NTFS文件系统优越的性能特征;介绍作者为了探索NTFS文件系统的存储特点编写的21个WIN32工具程序;使用作者编写的WIN32工具程序,探秘NTFS文件系统扇区存储规律。 ...
  • 系统读写文件过程中,如下面内核打印信息,报告读写某个扇区错误。那么我们如何能够通过sector找到读写哪个文件错误? kernel: end_request: I/O error, dev sdb, sector 41913499 2 物理扇区文件对应关系...
    1               概述

    系统读写文件过程中,如下面内核打印信息,报告读写某个扇区错误。那么我们如何能够通过sector找到读写哪个文件错误?

    kernel: end_request: I/O error, dev sdb, sector 41913499

    2               物理扇区与文件对应关系计算

    以下面打印信息为例。
    kernel: end_request: I/O error, dev sdb, sector 41913499

    2.1               第一步:通过sector找到所在分区

    内核打印的sector是硬盘上的物理扇区。如上例,我们可以知道磁盘是/dev/sdb。而   sector 41913499属于哪个分区?/dev/sdb1?/dev/sdb2?还是其他?

     

    通过命令fdisk -lu /dev/sdb,可以看到各个分区的容量大小,也就知道每个分区的起始sector和结束sector。

     

    这样就可计算出sector 41913499属于哪个分区/dev/sdb2。

     

    2.2                第二步:计算分区上文件系统起始sector

    对于ext2文件系统/dev/sdb2,该分区上文件系统起始sector为24595515

    Device Boot      Start         End      Blocks   Id  System

    /dev/sdb1              63    24595514    12297726   83  Linux

    /dev/sdb2        24595515    41929649     8667067+  83  Linux

     

     

    2.3                第三步:计算报错扇区在分区文件系统内的blocks值(即文件系统内的偏移量)

    Blocks = (出错扇区 – 分区起始扇区)/ 8

    dev sdb, sector 41913499,该扇区在/dev/sdc2文件系统上的    blocks值为: blocks=(41913499 – 分区起始扇区)/8 = (41913499 - 24595515)/8 = 2164748

     

    2.4                第四步:通过文件系统的blocks值计算出inode值

    debugfs  <设备名> icheck 值>

    对于/dev/sdb2上的文件系统来说,block 2164748对应的inode值为527790。如下图。

    2.5                第五步:通过inode值,找到具体文件名(是绝对路径)

    debugfs  <设备名> ncheck

    对于/dev/sdb2上的文件系统来说,inode 527790对应的文件为/e2fsprogs-1.41.14/version.h。也就是访问文件version.h时出现读写错误。

     

    3               转换方法验证

    我们通过blktrace来验证访问/e2fsprogs-1.41.14/version.h所占用的硬盘上物理扇区。

    root@ubuntu:/data2/e2fsprogs-1.41.14# echo 1 > /proc/sys/vm/drop_caches

    root@ubuntu:/data2/e2fsprogs-1.41.14# md5sum version.h

    6173fbb937f8dc3b315ff8853007d490  version.h

     
     

     

     

     

     

     




    From: http://www.ilinuxkernel.com/files/3/Sector_to_file.htm

     

    展开全文
  • 读写复制扇区文件(带启动扇区)---是计算机操作系统生产核心工具........................................................
  • 文件系统扇区存储探秘>>是目前唯一的NTFS扇区存储的专著,这些工具涵盖了NTFS探秘的各个方面,是探索NTFS必备之软件。
  • NTFS文件系统扇区存储探秘

    热门讨论 2014-05-29 23:18:23
    NTFS文件系统详细介绍。作者宋亚琼、宋群生。
  • FAT12文件系统之引导扇区结构 文件系统即文件管理系统,是操作系统的重要组成部分之一,如果需要开发底层磁盘驱动或编写自己的操作系统,就必须详细了解文件系统。   FAT12是Microsoft公司DOS操作系统所...

    FAT12文件系统之引导扇区结构

    文件系统即文件管理系统,是操作系统的重要组成部分之一,如果需要开发底层磁盘驱动或编写自己的操作系统,就必须详细了解文件系统。

     

    FAT12是Microsoft公司DOS操作系统所支持的文件系统之一,此外还有FAT16和FAT32,之后会分别详述这些文件系统。当软盘被标准格式化后,磁盘被格式化为:每磁头80个柱面(磁道),每个柱面有18个扇区,每个扇区有512字节空间。所以标准软盘的总空间(容量)为:

    2*80*18*512=1474560B=1440K=1.44M

     

    FAT12文件系统将按照下表所示的方式划分全部的容量,即文件系统数据结构:

    FAT12
    2880扇区
    (1474560B)
    逻辑扇区 占用扇区 内容 磁盘CHS参数(磁头/柱面/扇区)
    0 1(512B) 引导程序 起:0/0/1
    1 9(4608B) FAT文件分配表1 起:0/0/2 止:0/0/10
    10 9(4608B) FAT文件分配表2 起:0/0/11 止:1/0/1
    19 14(9728B) 根目录  
    33 14(9728B) 文件数据区  

     

        操作系统之所以认识FAT12格式的磁盘,其秘密就在于逻辑0扇区这512B上。如果这512字节的最后两个字节的内容分别是55和AA(0xAA55低字节在前,高字节在后)的话,BIOS在启动时会将这个扇区读取到0:7C00h-0:7DFFh处,然后跳转到0:7C00h处继续执行指令,操作系统即用此来达到引导系统的目的,而这个磁盘就称为可引导磁盘。操作系统标识FAT12文件系统是因为在逻辑0扇区(即引导扇区)处还存储着一个特定的数据结构,此结构有固定的格式,在操作系统将此磁盘格式化时自动生成,具体数据结构如下表所示:

    标识 偏移量 类型 大小 说明 默认值
     

    0

    db

    3

    跳转指令  
    BS_OEMName

    3

    db

    8

    OEM字符串,必须为8个字符,不足以空格填空 MSWIN4.1
    BPB_BytsPerSec

    11

    dw

    2

    每扇区字节数 200h
    BPB_SecPerClus

    13

    db

    1

    每簇占用的扇区数 1
    BPB_RsvdSecCnt

    14

    dw

    2

    保留扇区数 1
    BPB_NumFATs

    16

    db

    1

    FAT表的记录数 2
    BPB_RootEntCnt

    17

    dw

    2

    最大根目录文件数 0e0h
    BPB_TotSec16

    19

    dw

    2

    逻辑扇区总数 0b40h
    BPB_Media

    21

    db

    1

    媒体描述符 0f0h
    BPB_FATSz16

    22

    dw

    2

    每个FAT占用扇区数 9
    BPB_SecPerTrk

    24

    dw

    2

    每个磁道扇区数 12h
    BPB_NumHeads

    26

    dw

    2

    磁头数 2
    BPB_HiddSec

    28

    dd

    4

    隐藏扇区数 0
    BPB_TotSec32

    32

    dd

    4

    如果BPB_TotSec16是0,则在这里记录扇区总数 0
    BS_DrvNum

    36

    db

    1

    中断13的驱动器号 0
    BS_Reserved1

    37

    db

    1

    未使用 0
    BS_BootSig

    38

    db

    1

    扩展引导标志 29h
    BS_VolID

    39

    dd

    4

    卷序列号 0
    BS_VolLab

    43

    db

    11

    卷标,必须是11个字符,不足以空格填充  
    BS_FileSysType

    54

    db

    8

    文件系统类型,必须是8个字符,不足填充空格 FAT12  
     

    62

     

     

    引导代码,由偏移0字节处的短跳转而来  
     

    510

    dw

    2

    系统引导标识 0aa55h  

     

        首先是跳转指令,偏移0处的跳转指令必须是合法的可执行的基于x86的CPU指令,如:jmp start,这样可以生成3字节长的指令,(加关键字short的短跳转指令的长度是2字节),指向操作系统引导代码部分。Windows和MS-DOS生成的FAT12启动扇区中的跳转指令是短跳转,如:jmp short start,然后加一个nop的空指令来保持3字节的长度。

     

        接着是位于偏移3处的OEM字符串,它必须是一个8字节长的字符串,标识了格式化此磁盘的操作系统的名称和版本号,为了保留与MS-DOS的兼容性,通常Windows 2000系统格式化的磁盘上在此记录中的字符串是“MSDOS5.0”,在Windows 95系统格式化的磁盘上在此记录中的字符串是“MSWIN4.0”,在Windows 95 OSR2和Windows 98系统上格式化的磁盘上在此记录中的字符串是“MSWIN4.1”。

     

        接下来是每扇区的字节数,类型是双字节长,标准分区上的每扇区字节数一般是512B,但也可以是其它的数字,如1024,2048和4096,FAT12的格式下设置为512(200h)。

     

        偏移13处的是每簇所占用的扇区,类型是字节,簇是数据存储的最小单位,此字段的值取决于分区的大小,在FAT12格式下一般为1,即每簇只有1个扇区(512字节),簇越大,那么分区的容量也就越大,通过增加簇的扇区数,可以支持更大的磁盘分区,标准的簇大小为1、2、4、8、16、32、64和128,FAT12格式下只能管理2^12个簇(4096),所以在FAT12格式下能管理和分配的最大空间为:4096*1*512=2097152B=2M,所以FAT12一般只适合3.5寸高密度软盘(1.44M)。

     

        保留扇区指的是在第一个FAT文件分配表之前的引导扇区,一般情况下只保留1个扇区(512B)。

     

        接下来是类型为1字节长的FAT表的总数,默认情况下此字段的值为2,也就是有两个FAT表,FAT1和FAT2的内容相同,当FAT1表出错的时候可以使用FAT2来恢复文件分配表。

     

        位于偏移17处的字段是类型为双字节长的能够储存在根目录下的最大文件(包含子目录)数量,默认为224,每个目录或文件名占用32B的空间,因此根目录的大小为:224*32=7168B=7KB,如果使用长文件名的话,根目录文件数还可能无法达到224的数量。

     

        接下来是位于偏移19处的逻辑扇区总数,类型是双字节,如果此磁盘的逻辑扇区总数大于2^16位(65536)的话,就设置此字段为0,然后使用偏移32处的双字来表示逻辑总扇区数。

     

        位于偏移21处的是单字节长的磁盘类型标识符,使用0f0h表示3.5寸高密码软盘,用0f8h来表示硬盘。此字段主要用于FAT12或FAT16的分区格式中,在Windows 2000中未使用。

     

        偏移22处双字节长的是每个FAT文件分配表所占用的扇区数,操作系统用这个字段和FAT表数量以及隐藏扇区数量来计算根目录所在的扇区。还可以根据最大根目录数来计算用户数据区从哪里开始。

        根目录扇区位置=FAT表数量*FAT表所占用的扇区数量+隐藏扇区数量

        用户数据开始位置=根目录扇区位置+根目录所占用扇区(FAT12格式下为224*32/512)

        此处所说的扇区指的是逻辑(线性)扇区,需要通过转换才能得到CHS磁盘参数,然后通过CHS参数来读写磁盘扇区。

     

        接下来是位于偏移24处的每磁道扇区总数,类型是双字节长,软盘的默认值为18,即每个磁道有18个扇区。

     

        然后是双字节长的磁头数,磁头数指的是磁盘面数,每面都有一个磁头,软盘都是2面的,所以在FAT12格式下此字段固定为2。

     

        接下来是的位于偏移28处类型为双字(4B)长的隐藏扇区数,指的在引导扇区之前的隐藏扇区,在FAT12格式上此字段默认为0,即不隐藏任何扇区,此字段参与计算根目录区和用户数据区位置。

     

        偏移32处的是类型为双字(4B)长的逻辑扇区总数,如果此分区或磁盘的逻辑扇区总数大于65536则用这个字段来表示逻辑扇区总数,否则设置此字段为0后用位于偏移19处的双字节字段来表示。

     

        偏移36处的是物理驱动器号,类型是字节长,它与BIOS物理驱动器相关,在磁盘中断Int13h相关的操作中使用,第一个软盘驱动器设置为0,第一个硬盘驱动器设置为80h,第二个硬盘驱动器设置为81h,以此类推。此字段的值可以在系统引导时用dl寄存器得到。

     

        位于偏移37处的字节没有使用,保留并设置为0。

     

        位于偏移38处的是扩展引导标识,类型是字节,操作系统用它来识别引导信息,值可以是28h或29h。

     

        接下来的是位于偏移39处的卷标号,类型是双字(4B)长,在格式化磁盘时所产生的一个随机序号,有助于区分磁盘,可以为0。

     

        然后是位于偏移43处的卷标,长度必须是11字节长(不足以空格20h填充),此字段只能使用一次,用来保存磁盘卷的标识符,再次设置的时候被保存到根目录中作为一个特殊的文件来储存。

     

        最后是位于偏移54处的是长度为8字节的文件系统类型标识符,不足8字节则以空格20h来填充。FAT12格式下此字段为“FAT12   ”,相应的还有“FAT16   ”和“FAT32   ”。但要注意的是,操作系统并不使用这个字段来识别此磁盘所用的文件系统。


    转载自 http://blog.sina.com.cn/s/blog_3edcf6b80100cr08.html

    展开全文
  • FAT文件系统原理 FAT32 NTFS 文件系统规范 WINDOWS磁盘逻辑扇区直接读写方法 FAT32文件格式 NTFS文件格式
  • 使用操作系统windows XP格式化1G的SD卡为FAT16后,对其引导扇区进行读取,以及数据分析,以供参考。
  • 文件系统即文件管理系统,是操作系统的重要组成部分之一,如果需要开发底层磁盘驱动或编写自己的操作系统,就必须详细了解文件系统。    FAT12是Microsoft公司DOS操作系统所支持的文件系统之一,此外还有FAT...

        文件系统即文件管理系统,是操作系统的重要组成部分之一,如果需要开发底层磁盘驱动或编写自己的操作系统,就必须详细了解文件系统。

     

        FAT12Microsoft公司DOS操作系统所支持的文件系统之一,此外还有FAT16FAT32,之后会分别详述这些文件系统。当软盘被标准格式化后,磁盘被格式化为:每磁头80个柱面(磁道),每个柱面有18个扇区,每个扇区有512字节空间。所以标准软盘的总空间(容量)为:

    2*80*18*512=1474560B=1440K=1.44M

     

        FAT12文件系统将按照下表所示的方式划分全部的容量,即文件系统数据结构:

    FAT12
    2880
    扇区
    (1474560B)

    逻辑扇区

    占用扇区

    内容

    磁盘CHS参数(磁头/柱面/扇区)

    0

    1(512B)

    引导程序

    起:0/0/1

    1

    9(4608B)

    FAT文件分配表1

    起:0/0/2止:0/0/10

    10

    9(4608B)

    FAT文件分配表2

    起:0/0/11止:1/0/1

    19

    14(9728B)

    根目录

     

    33

    14(9728B)

    文件数据区

     

     

        操作系统之所以认识FAT12格式的磁盘,其秘密就在于逻辑0扇区这512B上。如果这512字节的最后两个字节的内容分别是55AA0xAA55低字节在前,高字节在后)的话,BIOS在启动时会将这个扇区读取到0:7C00h-0:7DFFh处,然后跳转到0:7C00h处继续执行指令,操作系统即用此来达到引导系统的目的,而这个磁盘就称为可引导磁盘。操作系统标识FAT12文件系统是因为在逻辑0扇区(即引导扇区)处还存储着一个特定的数据结构,此结构有固定的格式,在操作系统将此磁盘格式化时自动生成,具体数据结构如下表所示:

    标识

    偏移量

    类型

    大小

    说明

    默认值

     

    0

    db

    3

    跳转指令

     

    BS_OEMName

    3

    db

    8

    OEM字符串,必须为8个字符,不足以空格填空

    MSWIN4.1

    BPB_BytsPerSec

    11

    dw

    2

    每扇区字节数

    200h

    BPB_SecPerClus

    13

    db

    1

    每簇占用的扇区数

    1

    BPB_RsvdSecCnt

    14

    dw

    2

    保留扇区数

    1

    BPB_NumFATs

    16

    db

    1

    FAT表的记录数

    2

    BPB_RootEntCnt

    17

    dw

    2

    最大根目录文件数

    0e0h

    BPB_TotSec16

    19

    dw

    2

    逻辑扇区总数

    0b40h

    BPB_Media

    21

    db

    1

    媒体描述符

    0f0h

    BPB_FATSz16

    22

    dw

    2

    每个FAT占用扇区数

    9

    BPB_SecPerTrk

    24

    dw

    2

    每个磁道扇区数

    12h

    BPB_NumHeads

    26

    dw

    2

    磁头数

    2

    BPB_HiddSec

    28

    dd

    4

    隐藏扇区数

    0

    BPB_TotSec32

    32

    dd

    4

    如果BPB_TotSec160,则在这里记录扇区总数

    0

    BS_DrvNum

    36

    db

    1

    中断13的驱动器号

    0

    BS_Reserved1

    37

    db

    1

    未使用

    0

    BS_BootSig

    38

    db

    1

    扩展引导标志

    29h

    BS_VolID

    39

    dd

    4

    卷序列号

    0

    BS_VolLab

    43

    db

    11

    卷标,必须是11个字符,不足以空格填充

     

    BS_FileSysType

    54

    db

    8

    文件系统类型,必须是8个字符,不足填充空格

    FAT12  

     

    62

     

     

    引导代码,由偏移0字节处的短跳转而来

     
     

    510

    dw

    2

    系统引导标识

    0aa55h  

     

        首先是跳转指令,偏移0处的跳转指令必须是合法的可执行的基于x86CPU指令,如:jmpstart,这样可以生成3字节长的指令,(加关键字short的短跳转指令的长度是2字节),指向操作系统引导代码部分。WindowsMS-DOS生成的FAT12启动扇区中的跳转指令是短跳转,如:jmpshort start,然后加一个nop的空指令来保持3字节的长度。

     

        接着是位于偏移3处的OEM字符串,它必须是一个8字节长的字符串,标识了格式化此磁盘的操作系统的名称和版本号,为了保留与MS-DOS的兼容性,通常Windows2000系统格式化的磁盘上在此记录中的字符串是“MSDOS5.0”,在Windows95系统格式化的磁盘上在此记录中的字符串是“MSWIN4.0”,在Windows95 OSR2Windows98系统上格式化的磁盘上在此记录中的字符串是“MSWIN4.1

     

        接下来是每扇区的字节数,类型是双字节长,标准分区上的每扇区字节数一般是512B,但也可以是其它的数字,如1024,20484096FAT12的格式下设置为512(200h)

     

        偏移13处的是每簇所占用的扇区,类型是字节,簇是数据存储的最小单位,此字段的值取决于分区的大小,在FAT12格式下一般为1,即每簇只有1个扇区(512字节),簇越大,那么分区的容量也就越大,通过增加簇的扇区数,可以支持更大的磁盘分区,标准的簇大小为1248163264128FAT12格式下只能管理2^12个簇(4096),所以在FAT12格式下能管理和分配的最大空间为:4096*1*512=2097152B=2M,所以FAT12一般只适合3.5寸高密度软盘(1.44M)

     

        保留扇区指的是在第一个FAT文件分配表之前的引导扇区,一般情况下只保留1个扇区(512B)

     

        接下来是类型为1字节长的FAT表的总数,默认情况下此字段的值为2,也就是有两个FAT表,FAT1FAT2的内容相同,当FAT1表出错的时候可以使用FAT2来恢复文件分配表。

     

        位于偏移17处的字段是类型为双字节长的能够储存在根目录下的最大文件(包含子目录)数量,默认为224,每个目录或文件名占用32B的空间,因此根目录的大小为:224*32=7168B=7KB,如果使用长文件名的话,根目录文件数还可能无法达到224的数量。

     

        接下来是位于偏移19处的逻辑扇区总数,类型是双字节,如果此磁盘的逻辑扇区总数大于2^16(65536)的话,就设置此字段为0,然后使用偏移32处的双字来表示逻辑总扇区数。

     

        位于偏移21处的是单字节长的磁盘类型标识符,使用0f0h表示3.5寸高密码软盘,用0f8h来表示硬盘。此字段主要用于FAT12FAT16的分区格式中,在Windows2000中未使用。

     

        偏移22处双字节长的是每个FAT文件分配表所占用的扇区数,操作系统用这个字段和FAT表数量以及隐藏扇区数量来计算根目录所在的扇区。还可以根据最大根目录数来计算用户数据区从哪里开始。

        根目录扇区位置=FAT表数量*FAT表所占用的扇区数量+隐藏扇区数量

        用户数据开始位置=根目录扇区位置+根目录所占用扇区(FAT12格式下为224*32/512)

        此处所说的扇区指的是逻辑(线性)扇区,需要通过转换才能得到CHS磁盘参数,然后通过CHS参数来读写磁盘扇区。

     

        接下来是位于偏移24处的每磁道扇区总数,类型是双字节长,软盘的默认值为18,即每个磁道有18个扇区。

     

        然后是双字节长的磁头数,磁头数指的是磁盘面数,每面都有一个磁头,软盘都是2面的,所以在FAT12格式下此字段固定为2

     

        接下来是的位于偏移28处类型为双字(4B)长的隐藏扇区数,指的在引导扇区之前的隐藏扇区,在FAT12格式上此字段默认为0,即不隐藏任何扇区,此字段参与计算根目录区和用户数据区位置。

     

        偏移32处的是类型为双字(4B)长的逻辑扇区总数,如果此分区或磁盘的逻辑扇区总数大于65536则用这个字段来表示逻辑扇区总数,否则设置此字段为0后用位于偏移19处的双字节字段来表示。

     

        偏移36处的是物理驱动器号,类型是字节长,它与BIOS物理驱动器相关,在磁盘中断Int13h相关的操作中使用,第一个软盘驱动器设置为0,第一个硬盘驱动器设置为80h,第二个硬盘驱动器设置为81h,以此类推。此字段的值可以在系统引导时用dl寄存器得到。

     

        位于偏移37处的字节没有使用,保留并设置为0

     

        位于偏移38处的是扩展引导标识,类型是字节,操作系统用它来识别引导信息,值可以是28h29h

     

        接下来的是位于偏移39处的卷标号,类型是双字(4B)长,在格式化磁盘时所产生的一个随机序号,有助于区分磁盘,可以为0

     

        然后是位于偏移43处的卷标,长度必须是11字节长(不足以空格20h填充),此字段只能使用一次,用来保存磁盘卷的标识符,再次设置的时候被保存到根目录中作为一个特殊的文件来储存。

     

        最后是位于偏移54处的是长度为8字节的文件系统类型标识符,不足8字节则以空格20h来填充。FAT12格式下此字段为“FAT12   ”,相应的还有“FAT16   ”和“FAT32   ”。但要注意的是,操作系统并不使用这个字段来识别此磁盘所用的文件系统。



    http://blog.sina.com.cn/s/blog_3edcf6b80100cr08.html



    展开全文
  • FAT16文件系统结构扇区数据分析

    千次阅读 2018-11-20 19:37:30
    FAT,英文为File Allocation Table,文档分配表。先要记住几个概念: ... FAT文件系统就是专门管理这些簇的。一个文件可能占据一个或者多个簇,按正确的顺序去读取这些簇,就可以获取这个文件的内容...

    FAT,英文为File Allocation Table,文档分配表。先要记住几个概念:
    扇区:一般扇区为512个字节。
    :由若干个扇区组成,是存取数据的最小单位。如果簇大小为16K,文件大小为1字节,那也要用一个簇来存,而且该簇不用再拿来他用。
    FAT文件系统就是专门管理这些簇的。一个文件可能占据一个或者多个簇,按正确的顺序去读取这些簇,就可以获取这个文件的内容了。
    一、FAT16的基本结构
    FAT16基本结构依次为:DBR扇区、FAT表1、FAT表2、根目录和数据区。
    1、DBR扇区
    DBR是操作系统可以直接访问的第一个扇区,包括一个引导程序和一个称为BPB的本分区参数记录表。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元的大小等重要参数。
    在这里插入图片描述

    在这里插入图片描述

    2、FAT表1和FAT表2
    FAT表1和FAT表2是保存簇状态的地方,从DBR可知一个FAT表是21个扇区。它里面的内容很简单就是指出下一个簇在哪里。盘里有多少个簇,FAT就有多少个项来描述它们。FAT16用16bit来描述一个簇。第0和第1个字节表示第0个簇,第2和第3个字节表示第1个簇,第4和第5个字节表示第2个簇…就这样,每个簇都有两个和它对应的字节,这两个字节里面存放的数据就是文件中下一个簇大小数据所在的簇号。
    比如要读new.txt文件,从根目录中找到了它,读它的根目录信息知道它的第一个簇的簇号是5,于是把第5号簇的数据送出去,在FAT表中5号簇是第10和第11字节来表示的,于是去读第10和第11字节,得到0007,知道了文件接下来的数据保存在7号簇中,把7号簇的数据送出去,又去读第14和第15字节的数据,得到FFFF,说明文件到末尾了。
    下面是FAT中数据的含义:
    在这里插入图片描述

    对于FAT16,每个簇用16Bit来表示,最大能表示65536,FAT16的簇最大为32K,因此FAT16最大只能支持6553632K约等于2G。因此大于2G的盘必须选择其他的文件系统,比如FAT32,没有簇用32bit来表示。
    根据DBR的参数,我们可以算出FAT1的偏移地址以及根目录的偏移值。
    FAT1偏移地址:保留扇区(FAT1之前的扇区,包括引导扇区)之后就是FAT1。因此可以得到,FAT1的偏移地址就是第1个扇区的位置,也就是512。大小为21个扇区,即21
    512=10752字节。
    FAT2偏移地址:FA1偏移地址+FAT1的大小,512+21512 = 11264。
    在这里插入图片描述
    3、根目录
    根目录偏移地址: FAT2偏移地址+ FAT2的大小,11264+21
    512= 22016。
    根目录的偏移地址也是第1个簇的起始位置,根目录保存在第1个簇中,即第1个簇地址为22016,第2个簇为22016+32512=38400(每个簇占32个扇区)。我们来看看根目录的数据:
    在这里插入图片描述
    在根目录中,一个文件或者一个文件夹用32字节来表示。
    在这里插入图片描述
    根据这个我们就可以解读根目录的信息了,可以看到现在根目录中只有一个名字为IMAGE和名字为VERINFO的文件夹。可以看到VERINFO文件夹的首簇号是 9F 12 也就是 0x129F = 4767号簇。可以得到VERINFO文件夹的偏移地址是22016+(4767-1)51232 = 78108160。数据如下:
    在这里插入图片描述
    VERINFO文件夹下文件信息的组织方式和根目录一样,可以看到现在VERINFO文件夹下有两个不知名的文件夹和一个叫ver_info.txt的文件。又可以继续得到该文件的首簇号和文件的长度。首簇号是 A0 12 也就是0x12A0=4768。文件长度是1F 也就是31字节,小于簇大小512
    32字节,因此只占一个簇,不需要回去查看FAT来找到剩下的簇。
    该文件所在位置:22016+(4768-1)51232 = 78124544。
    在这里插入图片描述
    上面看到的数据就正好是ver_info.txt中保存的数据。

    展开全文
  • FAT32文件系统启动扇区的实现

    千次阅读 2014-08-12 14:54:53
    看了于渊写的《自己动手写操作系统》后,想把启动代码由软盘FAT12文件系统迁移到硬盘FAT32文件系统中,毕竟目前软盘几乎已经不再使用了,而硬盘和U盘是主流。基本想法是在实模式下,使用汇编代码,读取硬盘MBR,分析...
  • Linux,扇区,块,文件系统,目录中的记录项.pdf
  • 一个fat32文件系统的引导扇区代码,可以用于引导自己的操作系统
  • OS的虚拟文件系统从硬件设备上读取一个逻辑块,实际为从硬件设备读取一个或多个扇区。对于文件管理来说,每个文件对应的多个逻辑块可能是不连续的;逻辑块最终要映射到物理扇区上,所以逻辑块的大小一般是物理扇区的...
  • #资源达人分享计划#
  • 读取指定扇区文件

    千次阅读 2018-04-11 19:25:15
    在Linux系统中通过dd命令可以直接读取和写入指定扇区文件 读指定物理扇区: dd if=&lt;源设备&gt; of=&lt;输出设备或文件&gt; skip=&lt;指定扇区值&gt; bs=512 count=1 写指定物理...
  • 1.Windows下的文件系统是:NTFS 2.Linux下的文件系统是ext2,ext3,最新的是ext4 3.一般的硬盘以512个字节为一个扇区 4.磁盘中一个Block的大小时扇区的倍数,PC默认设置的大小是4096的大小 5.关于文件系统(以ext2文件...
  • 行业分类-物理装置-一种扇区可变的小型文件系统
  • Linux支持的文件系统有哪些: 1. 传统文件系统:Ext2、ext3、ext4、Reiserfs(处理小文件)、Xfs、jfs 2. 光盘文件系统:ISO9660 3. 集群文件系统:GFS(红帽开发)、OCFS(oraclecluster fs) ...
  • FAT32文件系统SD卡建立MBR引导扇区

    千次阅读 2019-02-22 10:31:48
    在移植FAT32文件系统时,用winhex打开SD 卡后,只找到了DBR区,没有找到MBR扇区,使用Windows 格式化SD卡后,依然没有MBR扇区,在经过几次尝试后,终于找到了正确格式化的过程,特来分享一下。 流程如下 1.下载...
  • c# 现在做一个项目,sd卡里面没有文件系统,sd内从第一扇区开始写入了二进制数,怎样获取扇区总大小呢?我要对sd卡进行格式化,也是格式成没有文件系统
  • FAT文件系统中标准的虚拟扇区是512bytes的数据,而SPI flash的扇区的真实大小是4096。 主要思想: 在内存中申请4096的buffer,每次写入数据,要把真实扇区的数据读出来,然后在写入内存中在填充512bytes的数据,请...
  •  block由一个或多个sector组成,文件系统中最小的操作单位;OS的虚拟文件系统从硬件设备上读取一个block,实际为从硬件设备读取一个或多个sector。对于文件管理来说,每个文件对应的多个block可能是不连续的;block...
  • 使用引导扇区维护工具BOOTICE编辑系统启动列表BCD文件系列文章:笔记本电脑提速之加装内存条、SSD固态硬盘、光驱位换SSD固态硬盘笔记本ThinkPad E430c加装内存和SSD固态硬盘笔记本惠普CQ14-a003TX加装内存和SSD固态...
  • 5.常见文件系统,超级块,引导扇区

    千次阅读 2016-04-28 14:12:40
    Linux支持的文件系统有哪些: 1. 传统文件系统:Ext2、ext3、ext4、Reiserfs(处理小文件)、Xfs、jfs 2. 光盘文件系统:ISO9660 3. 集群文件系统:GFS(红帽开发)、OCFS(oraclecluster fs) 4. 网络...
  • 扇区文件对应关系

    千次阅读 2018-04-11 18:51:07
    文件系统块和内存页 在说fdisk之前,先说一下操作系统通过分页的方式使用内存,文件系统通过block使用存储,那么他们大小怎么获取呢 首先是获取内存分页大小 # getconf PAGESIZE 4096 然后是获取系统block大小...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,171
精华内容 25,268
关键字:

扇区文件系统