1、FAT文件系统与文件装载在建立自己的文件系统之前,为了进行操作系统装载程序的实验,我们选择使用DOS简单的FAT12文件系统,作为存储数据和文件的组织方式。1 文件系统文件系统是操作系统在(磁/U/光)盘上组织文件的方法和存储数据的结构;也指用于存储文件的磁盘分区、或文件系统的种类;还是操作系统中负责管理和存储文件信息的软件模块(文件管理系统)的简称。文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户创建文件,存入、读出、修改、转储文件,控制对文件的访问,当用户不再使用时撤销和删除文件等。1.1 操作系统与文件系统每种操作系统都有自
2、己的文件系统,而且往往一种操作系统有多种文件系统类型,并且每种类型又有若干具体格式和多个升级版本。有的操作系统还支持多种文件系统类型,如Windows支持NTFS和FAT,Linux通过VFS(Virtual File Systems,虚拟文件系统)机制支持多种文件系统,如ext2、ext3、ReiserFS、Minix、FAT32、NTFS等。DOS操作系统的文件系统为FAT(File Allocation Table,文件分配表),包括FAT12、FAT16、FAT32和exFAT等多种具体格式,老式Windows是DOS的外壳,当然也支持FAT文件系统。Windows NT系列(包括NT
3、/2000/XP/Vista/7/8)的文件系统为NTFS(New Technology File System,新技术文件系统),版本有v1.0(NT 3.1)、v1.1(NT 3.5)、v1.2(NT 3.51和NT 4.0)、v3.0(NTFS 5.0/Win2000)、v3.1(NTFS 5.1/WinXP、NTFS 5.2/WinServer2003、NTFS 6.0/Vista、NTFS 6.1/WinServer2008和Win7)。Windows NT系列操作系统也支持老式的FAT文件系统。Linux最初使用的是Minix文件系统。为了突破Minix文件系统的局限,Rmy Ca
4、rd于1992年4月在传统的UFS(Unix File System,Unix文件系统)的启发下设计出了ext(extended file system,扩展文件系统)。后来Rmy Card于1993年1月又推出了改进的ext2(second extended filesystem),成为Linux的标准文件系统。Stephen Tweedie设计的带有日志功能的ext3(third extended filesystem)于2001年11月被引入Linux 2.4.15内核,现在也被许多Linux发行版广泛使用。2006年10月10日西奥多周(Theodore Tso)和Mingming C
5、ao(曹明明?)等人又开发出了ext4(fourth extended filesystem),引进了盘区(extent)文件储存方式,以取代ext2/3使用的块映射(block mapping)方式,提高了大型文件的操作效率,2008年10月21日推出的Linux 2.6.28开始提供对ext4文件系统的支持。ReiserFS是Linux的另一种日志型文件系统格式,由Hans Reiser及其公司Namesys于1997年7月23日推出,Linux内核从2.4.1版本(2001年1月30日)开始支持ReiserFS。1.2 磁盘分区磁盘分区(disk partitioning)将硬盘分割成若
6、干逻辑部分(分区,partition),可安装多个操作系统和使用不同的文件系统。在DOS和Windows中,硬盘的分区对应于文件系统中不同的卷(volume),如C:、D:、E:等。由于软盘的容量小,没有分区结构。1引导扇区的构成引导扇区(Boot Sector)是磁盘的第一个物理扇区,由主引导记录(MBR = Master Boot Record)、磁盘分区表(DPT = Disk Partition Table)和引导记录标识符(BRID = Boot Record IDentifier)三部分组成。01BD主引导记录MBR(446B)1BE1CD分区项1(16B)DPT(64B)1CE1
7、DD分区项2(16B)1DE1ED分区项3(16B)1EE1FD分区项4(16B)1FE1FF55 AABRID(2B)引导扇区结构图2分区表项的结构DPT含4个分区表项,每一项占16B,参见下表:分区表项的字段结构偏移量长度含义(值)0x001B分区是否激活(0x80或0)0x011B开始磁头号0x022B开始扇区号(低字节的低6位)和柱面号(其余10位,其中低位字节的高2位为其第9、10位)0x041B分区类型(如:0x06/0x0E = FAT16、0x0B/0x0C = FAT32、0x07 = NTFS、0x05/0x0F = 扩展、0x83 = Linux)0x051B结束磁头号0
8、x062B结束扇区号(低字节的低6位)和柱面号(其余10位,其中低位字节的高2位为其第9、10位)0x084B分区起始地址(相对扇区数)0x0C4B分区大小 (总扇区数)3分区类型PC的分区类型标志数值开发者分区类型数值开发者分区类型0x00IBM空分区3CPowerQuestPqRP(PartitionMagic)0x01微软FAT1264NovellNetWare File System 2860x02微软Xenix root65NovellNetWare File System 3860x03微软Xenix user78Geurt VosXOSL引导装入文件系统0x04微软FAT16 3
9、2MB80Andrew Tanenbaum老Minix文件系统0x05IBM扩展分区(CHS)81Minix文件系统0x06CompaqFAT16B82GNU/SunLinux交换空间/Solaris0x07微软HPFS/NTFS/exFAT83GNU/LinuxLinux文件系统0x08IBMAix84微软休眠0x09IBMAix bootable85GNU/LinuxLinux扩展0x0A微软&IBMOS/2 Boot Manager86微软Legacy FT FAT160x0B微软FAT32(CHS)87微软Legacy FT NTFS0x0C微软FAT32(LBA)88GNU/Linu
10、xLinux无格式文本0x0E微软FAT16(LBA)89GNU/LinuxLinux LVM0x0F微软扩展分区(LBA)8B微软Legacy FT FAT320x11微软隐藏FAT128C微软Legacy FT FAT32 with LBA0x12Compaq康柏诊断(FAT)A0HPHP膝上型电脑诊断分区0x14微软隐藏FAT16 32MBA5FreeBSDBSD slice0x17微软隐藏HPFS/NTFSDEDellDell诊断分区0x1B微软隐藏FAT32EBBe公司BFS(BeOS或Haiku)0x1C微软隐藏FAT32(LBA) EE微软EFI保护分区0x1D微软隐藏FAT16
11、(LBA)EFIntelEFI系统分区(可为FAT文件系统)0x20微软Windows Mobile update XIPFBVMwareVMware VMFS0x23微软Windows Mobile boot XIPFCVMwareVMware VMKCORE0x25微软Windows Mobile IMGFSFDGNU/LinuxLinux RAID auto0x27微软Windows恢复分区(隐藏NTFS)FEIBMIBM IML分区其中:l Xenix是微软公司于1980年为微机推出的一种Unix系统(最后的版本是1989年推出的2.3.4),1987年转让给了SCO公司,后者在其基础
12、上推出了SCO Unix(即现在的SCO OpenServer)。l HPFS(High Performance File System,高性能文件系统)是微软公司于1989年为IBM的操作系统OS/2 1.2推出的一种文件系统,Windows NT 3.13.51支持,但是从Windows NT 4.0后不再支持。l AIX(Advanced Interactive Executive,高级交互执行体/先进交互执行程序)是IBM于1986年推出的一种Unix系统,现在最新的版本是2010年9月推出的7.1。l CHS(Cylinder/Head/Sector,柱面/磁头/扇区)磁盘的一种传统
13、寻址方式。l LBA(Logical Block Addressing,逻辑块寻址)磁盘的一种线性寻址方式,有22b(ATA,1986)、28b(ATA-1,1994)和48b(ATA-6,2003)三种版本。1996年以后推出的硬盘一般都采用了LBA。下面是LBA与CHS的转换公式:LBA = (C*HPC)+H)*SPT+S-1C = LBA/(SPT*HPC)H = (LBA/SPT) % HPCS = (LBA % SPT)+1其中:n HPC = Heads Per Cylinder,柱面磁头数(对28位的LBA一般为16)n SPT = Sectors Per Track,磁道扇区
14、数(对28位的LBA一般为63)l OS/2(Operating System/2,操作系统/第二代)微软与IBM于1987年为IBM的第二代个人计算机系统PS/2(Personal System/2)开发的一种操作系统,最后的版本为2001年12月推出的4.52。4磁盘寻址方式用这种CHS(Cylinder柱面/Head磁头/Sector扇区)方式表示的分区容量是有限的,因为柱面和磁头从0开始编号,扇区 从1开始编号,所以最多只能表示1024个柱面63个扇区256个磁头512B = 8 455 716 864B(8.4GB实际上应该是7.8GB左右)。对容量超过8.4GB的分区,分区结束的C
15、HS一般用其最大值FE FF FF填充,有时也用柱面与1024的模来填充。用4B存储的分区大小,最大为232*512B = 2 147 483 648KB = 2048GB = 2TB。即使使用NTFS文件系统,也不能创建大于2TB的分区,但可以使用动态卷或GPT来创建超过2TB的NTFS卷。由于分区不允许跨柱面(分区粒度,分区的扇区总数加上与前一分区之间的保留扇区数必须是柱面容量= 磁头数*每个柱面的扇区数的整数倍),所以用操作系统进行分区时所得到的分区容量往往不是我们所指定的整数值。为了增加容量,现代硬盘一般使用等密度结构(即外圈磁道的扇区数比内圈磁道的多),大容量磁盘一般采用线性寻址(可
16、突破CHS寻址方式下容量8.4GB限制,硬盘控制器内部的地址翻译器可将老式的CHS参数转换成线性参数)。硬盘的扇区总数不一定是(所设)柱面容量的整数倍,所以磁盘的末尾处常会出现未被分配使用的剩余空间。5GPTGPT(GUID Partition Table,全局唯一标识符分区表)一种新的磁盘分区表标准,最初由Intel公司开发,2010年作为UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)规范的子集而推出,可突破传统MBR的2TB限制,最大可支持9.4ZB的硬盘和分区。字节的十进制/二进制次方单位缩写英文名中文名次方KBkilobyte
17、 / kibibyte千字节103 / 210MBmegabyte / mebibyte兆字节106 / 220GBgigabyte / gibibyte吉字节109 / 230TBterabyte / tebibyte太字节1012 / 240PBpetabyte / pebibyte拍字节1015 / 250EBexabyte / exbibyte艾字节1018 / 260ZBzettabyte / zebibyte泽字节1021 / 270YByottabyte / yobibyte尧字节1024 / 280GPT方案(LBA的大小为512B,LBA 0=MBR,LBA -1为磁盘的最后
18、一个512B大小的块)支持GPT的操作系统平台类别OS起始版本平台类UnixFreeBSD7.0x86/x64Linux2.5.8Mac OS X10.4.0WindowsVistaSP1x64Server200871.2 扩展分区与逻辑驱动器在主引导扇区的DPT中,最多可以定义4个(基本)分区(卷)。为了引入和管理更多的逻辑驱动器(分区/卷),微软定义了扩展分区(类型值一般为0x0F)。在Windows操作系统中,一般将主引导扇区里DPT的第一个表项作为磁盘的主(基本)分区,第二个表项作为扩展分区。在一个扩展分区中,可包含多个逻辑驱动器。每个逻辑驱动器都有自己的引导扇区和引导记录,分别叫做扩
19、展引导扇区和扩展引导记录(EBR = Extended Boot Record),逻辑驱动器还有自己的扩展分区表。在扩展分区表的4个分区表项中,第1个指向自己的引导扇区,第2个指向下一个逻辑驱动器的EBR,后两个分区表项没有使用。最后一个逻辑驱动器的第2个分区表项的值,必须全为0。DOS/Windows硬盘的分区结构1.3 FAT分区FAT(File Allocation Table,文件分配表)是微软公司为其操作系统DOS和老式Windows所定义的一套文件系统,包括FAT12、FAT16、FAT32和exFAT等多种具体格式。FAT12可支持的最大容量为32MB,用于早期的1.2MB/1.
20、44MB软盘和小容量硬盘,现在已被淘汰。FAT16则可支持4GB的盘,现在一般用于中小容量的U盘。FAT32虽然在理论上最多可以支持128TB的盘,但是由于目前只使用了大小为32位簇字段中的28位,所以允许的最大容量是8TB,但Windows 2000/XP最多只能格式化32GB的盘,如小容量硬盘和较大容量U盘。exFAT(也叫FAT64)支持现代的大容量硬盘、移动硬盘和固态盘,但出现的晚,支持的系统少,而且由于exTAT采用了与NTFS一样的分区类型值(7),造成了一些兼容性问题。Windows NT系列操作系统,一般都采用性能更好的NTFS格式。NTFS支持的最大卷为264-1个簇(Win
21、XP的为232-1簇),若采用默认/最大的簇大小4KB / 64KB,则最大卷为64ZB-4KB / 1YB-64KB(WinXP的为16TB-4KB / 256TB-64KB)。NTFS支持的最大文件的理论值为16EB-1KB,实现值为16TB-64KB。不同版本FAT的比较FAT开发商微软(Compaq)全名文件分配表12位版16位版32位版64位版发布时间1980年8月1984年8月1987年11月1996年8月2006年11月OS版本QDOS 0.11MS DOS 3.0Compaq DOS 3.31Windows 95 OSR2Windows Embedded CE 6.0分区标识0
22、x010x04、0x0E0x060x0B、0x0C0x07结构FAT12FAT16FAT16BFAT32exFAT目录内容表格文件配置链表坏块对含损坏磁区的簇加以标识最大文件大小32MB32MB2GB4GB64ZB(推荐512TB)最大文件数量4,077(212-21)65,517(216-19)65,517(216-19)268,435,437(228-19)每个目录2,796,202最长文件名8.3、长文件名(255个字符)最大卷大小32 MB(64KB簇时256MB)32MB(64KB簇时256MB)2 GB(64KB簇时4GB)2TB(32KB簇时8TB)64ZB(推荐512TB)记录
23、日期创建、修改、访问日期范围1980年1月1日至2107年12月31日日期分辨率2 秒、10秒属性只读、隐藏、系统、卷标、子目录、归档访问许可权无1分区结构下面以FAT16和FAT32为例,讨论FAT文件系统的基本内容。FAT16分区结构区域扇区数内容说明保留扇区1分区引导扇区r-1其余保留扇区可选FAT区kFAT#1主FATkFAT#2备份FAT根目录区m根目录固定大小数据区n数据FAT32分区结构区域扇区数内容说明保留扇区1分区引导扇区1FS信息扇区r-2其余保留扇区可选FAT区kFAT#1主FATkFAT#2备份FAT数据区n数据根目录表一般位于其第1个簇2分区引导扇区分区引导扇区也叫V
24、BR(Volume Boot Record,卷引导记录)区或PBR(Partition Boot Record,分区引导记录)区,是分区的第一个扇区(一般是512B)。FAT12/16分区引导扇区的结构偏移长度内容0x00003B跳转指令0x00038BOEM名串(厂商标志与操作系统版本,剩余字节用空格符填充)如“MSDOS5.0”、“MSWIN4.1”、“NTFS ”、“EXFAT ”。0x000B25BBPB0x002426B扩展BPB0x005A448B引导程序代码0x01FE2B有效结束标志(55 AA)FAT32分区引导扇区的结构偏移长度内容0x00003B跳转指令0x00038BO
25、EM名串(厂商标志与操作系统版本,剩余字节用空格符填充)如“MSDOS5.0”、“MSWIN4.1”、“NTFS ”、“EXFAT ”。0x000B53BBPB0x004026B扩展BPB0x005A420B引导程序代码0x01FE2B有效结束标志(55 AA)3BPB与EPBPBPB(BIOS Parameter Block,BIOS参数块)是一种数据结构,用于描述数据存储卷(如硬盘的卷分区)的物理布局。EBPB(Extended BIOS Parameter Block,扩展BPB)是BPB的补充。BPB结构(25B)偏移长度内容0x0B2B每扇区字节数(一般为512)0x0D1B每簇扇区
26、数0x0E2B保留扇区数含本扇区(1,FAT32一般为32)0x101BFAT数(一般为2)0x112B最大根目录项数(FAT32必须为0)0x132B总扇区数(为0时使用偏移0x20处的4字节值)(64K,容量32MB)0x151B介质描述符(盘类型,高密度3.5寸软盘为0xF0、硬盘和U盘为0xF8)0x162BFAT占扇区数(FAT32为0,参见偏移0x24)0x182B每道扇区数0x1A2B磁头数0x1C4B隐藏扇区数0x204B总扇区数(64K,容量32MB)FAT32的补充BPB结构(28B)偏移长度内容0x244B每个FAT占用的扇区数0x282B镜像标志(位7为1时位03为活动
27、FAT数-1、位7为0时运行的FAT被映射到所有的FAT、其余位保留)0x2A2B文件系统版本(定义为0)0x2C4B根目录首簇号(一般为2,即第一个簇)0x302BFS信息扇区号(一般为1,即三个FAT32引导扇区的第二个)0x322B备份的三个FAT32引导扇区的首个扇区号(一般为6)0x3412B保留(必须为0)EBPB结构(26B)FAT12/16偏移FAT32偏移长度内容0x240x401B物理驱动器编号(可移动介质为0x00、硬盘为0x80)0x250x411B保留(一般为0)0x260x421B扩展引导标签(为0x29时表明下面有三项存在,为0x28时表明有下面只有序列号一项存在
28、EPBP的早期格式)0x270x434B卷ID(序列号,在系统格式化分区时所产生的一个随机数)0x2B0x4711B卷标(剩余字节用空格符填充,如“NO NAME ”)0x360x528B文件系统类型(剩余字节用空格符填充,如“FAT16 ”)4FS信息扇区FS(Free Space?,空闲空间)信息扇区(Information Sector)是FAT32引进的,用于加速获取空闲空间等操作。该扇区的位值由FAT32补充BPB结构中偏移0x30处的值决定,一般为1,即是三个FAT32引导扇区的第二个。FAT32的FS信息扇区结构(512B)偏移长度内容0x0004签名标识(=RRaA)0x004
29、480保留(全=0)0x1E44签名标识(=rrAa)0x1E84卷中的空闲数据簇数0x1EC4最近分配的数据簇数0x1F012保留(全=0)0x1FC4签名标识(=0x00、0x00、0x55、0xAA)2 FreeDOS与Bochs虚拟机的配置为了使用FAT12文件系统,我们需要一个有现成DOS操作系统的虚拟机环境。为了同时也可以使用软盘映像来制作我们的操作系统,还需要支持双软盘映像的虚拟机。Virtual PC显然不能满足这些要求,而小巧的Bochs虚拟机则完全符合我们的需要。2.1 DLX Linux Demo如果大家在安装Bochs虚拟机时,选择了完全安装(包含DLX Linux D
30、emo),则会自动生成dlxlinux子目录及一系列文件,并会在桌面上生成批处理文件run.bat对应的图标。双击该图标,运行结果如下:Linux Demo in Bochs显示窗口run.bat文件的内容为(改变当前目录、启动bochs):cd C:Program FilesBochs-2.5.1dlxlinux.bochs -q -f bochsrc.bxrc2.2 FreeDOSFreeDOS是一种自由开源的兼容DOS操作系统,由Jim Hall领导一个团队于1994年中开始开发,1998年1月12日推出最初的0.05版,2006年9月3日推出1.0版,2012年1月2日推出1.1版。官
31、方网站(http:/www.freedos.org/)提供可安装的光盘映像文件fd11src.iso(38.9MB)下载,也可以从我的个人网页上下载。安装完整的FreeDOS 1.1,需要100MB的硬盘空间,可以将其安装到在Virtual PC中新创建的FreeDOS虚拟机中。具体细节我这里就不介绍了,因为我们准备改用Bochs虚拟机,来进行我们下一步的实验。可以从我的个人网页上,下载我自己制作的1.1版的系统软盘映像FDOS11.img,到Bochs虚拟机安装目录的dlxlinux子目录中。2.3 Bochs配置文件与Virtual PC通过对话框来设置虚拟机参数不同,Bochs是通过配置
32、文件来设置虚拟机的各种参数,包括安装软盘和设置启动盘。在Windows平台下的Bochs虚拟机的配置文件为bochsrc.bxrc,例如DLX Linux Demo的bochsrc.bxrc内容为:# bochsrc.txt file for DLX Linux disk image.# how much memory the emulated machine will havemegs: 32# filename of ROM imagesromimage: file=./BIOS-bochs-latestvgaromimage: file=./VGABIOS-lgpl-latest# wh
33、at disk images will be used floppya: 1_44=floppya.img, status=insertedfloppyb: 1_44=floppyb.img, status=inserted# hard diskata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14ata0-master: type=disk, path=hd10meg.img, cylinders=306, heads=4, spt=17# choose the boot disk.boot: c# default config inter
34、face is textconfig.#config_interface: textconfig#config_interface: wx#display_library: x# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga# where do we send log messages?log: bochsout.txt# disable the mouse, since DLX is text onlymouse: enabled=0# enable key mapping, usi
35、ng US layout as default.# NOTE: In Bochs 1.4, keyboard mapping is only 100% implemented on X windows.# However, the key mapping tables are used in the paste function, so # in the DLX Linux example Im enabling keyboard_mapping so that paste # will work. Cut&Paste is currently implemented on win32 and
36、 X windows only.#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-us.map#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-fr.map#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-de.map#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-es.map其中红色标识的部分涉及软硬盘映像文件的设置及启动盘的设置
37、。我们可将配置文件中软盘A的映像文件,从“floppya.img”改为FreeDOS的“fdos11.img”(在DOS操作系统中,文件名和命令行是不区分字母大小写的)。再将“boot:”后的“c”改为“floppy”,即从原来的硬盘C(Demo Linux)启动变成从软盘A(FreeDOS)启动。重新启动Linux Demo in Bochs 2.5.1虚拟机,则运行结果如下:老版本FreeDOS的运行界面3 创建FAT12软盘3.1 创建软盘映像现在我们使用的是Bochs虚拟机,所以我们也用Bochs提供的磁盘映像创建工具(一种控制台程序)来创建新软盘映像。选中“开始/程序/Bochs 2
38、.5.1/Disk Image Creation Tool”项,启动Bochs的磁盘映像创建工具程序bximage.exe,会出现如下控制台窗口:Disk Image Creation Tool程序窗口键入“fd”回车,选择创建软盘映像(默认为硬盘映像)直接回车,选择默认的1.44MB的高密度软盘键入软盘映像文件的名称MyOS.img(默认的为a.img)后回车按任意键完成创建被创建的软盘映像文件MyOS.img,大小为1.44MB,位于Bochs的安装目录“C:Program FilesBochs-2.5.1”中,可将其移至“dlxlinux”子目录中。如果我们用WinHex查看MyOS.i
39、mg文件,会发现里面全是0。刚创建的MyOS.img中全是03.2 修改配置文件为了让Bochs虚拟机使用我们创建的新软盘映像,需要修改Bochs的配置文件。将其中的“floppyb.img”改为我们的“myos.img”。重新启动Bochs虚拟机,并用DOS的查看目录命令“dir b:”来查看软盘B,则得到的是普通致命错误的提示信息,这是因为软盘映像中缺少必须的分区和格式化信息。可以按两次a字符退回DOS提示符。参见下图:软盘B的普通致命错误信息退回DOS提示符3.3 FAT12软盘结构1.44MB软盘的格式:2个磁头(head)/ 盘面(side)、每磁头80个柱面(cylinder)/磁
40、道(track)、每个柱面有18个扇区(sector)、每个扇区有512个字节(byte),所以软盘的容量为:2磁头*80柱面*18扇区*512B=2880扇区*512B=1474560B=1440KB=1.44MB对1.44MB软盘,采用FAT12文件系统,引导扇区中没有分区信息,但有根目录区(224条目*32B = 7168B = 14扇区)。FAT12的每个FAT项占12位(1.5B),每个簇只有一个扇区。整个软盘2880个扇区,需要2880*1.5B = 4320B = 8.44个扇区,所以每个FAT表的大小设为9个扇区。1.44MB软盘的FAT12文件系统结构起始扇区号占用扇区数内容
41、CHS参数01(512B)引导程序起:0/0/1、止:0/0/119(4608B)FAT1起:0/0/2、止:0/0/10109(4608B)FAT2起:0/0/11、止:1/0/11914(9728B)根目录起:1/0/2、止:1/0/15332847(1457664B)文件数据区起:1/0/16、止:79/1/18FAT12分区引导扇区的结构偏移长度内容0x00003B跳转指令(jmp 地址 nop = EB ? 90)0x00038BOEM名串(虚拟软盘的为“VPC4 ”)0x000B25BBPB0x002426B扩展BPB0x005A448B引导程序代码0x01FE2B有效结束标志(5
42、5 AA)FAT12的BPB结构(25B)偏移长度内容1.44M软盘值10M硬盘值3M硬盘值0x0B2B每扇区字节数(一般为512)200H=512200H=512200H=5120x0D1B每簇扇区数1820x0E2B保留扇区数含本扇区(1)1110x101BFAT数(一般为2)2220x112B最大根目录项数E0H=224200H=512E0H=2240x132B总扇区数(64K,容量32MB)B40H=28805027H=205191801H=61450x151B介质描述符(盘类型,高密度3.5寸软盘为0xF0、硬盘和U盘为0xF8)F0HF8HF8H0x162BFAT占扇区数90BH=
43、110AH=100x182B每道扇区数12H=1811H=1711H=170x1A2B磁头数2440x1C4B隐藏扇区数(对无分区的介质必须为0)011H=1700x204B总扇区数(64K,容量32MB)000FAT12的EBPB结构(26B)FAT12/16偏移长度内容1.44M软盘值10M硬盘值0x241B驱动器号(软0/硬0x80)080H0x251B保留(一般为0)000x261B扩展引导标签(一般为0x29)29H29H0x274B卷ID(序列号,随机数)如D2 07 04 22如全00x2B11B卷标(不足补空格)如“NO NAME ”如全空格符0x368B文件系统类型(不足补空格)“FAT12 ”“FAT12 ”Virtual PC虚拟机生成的1.44MB虚拟软盘的引导扇区FreeDOS 1.1系统软盘FDOS11.img的引导扇区