BIOS parameter block#DOS 4.0 EBPB

{{Short description|Data structure in the volume boot record}}

{{Use dmy dates|date=April 2019|cs1-dates=y}}

{{Use list-defined references|date=January 2022}}

In computing, the BIOS parameter block, often shortened to BPB, is a data structure in the volume boot record (VBR) describing the physical layout of a data storage volume. On partitioned devices, such as hard disks, the BPB describes the volume partition, whereas, on unpartitioned devices, such as floppy disks, it describes the entire medium. A basic BPB can appear and be used on any partition, including floppy disks where its presence is often necessary; however, certain filesystems also make use of it in describing basic filesystem structures. Filesystems making use of a BIOS parameter block include FAT12 (except for in DOS 1.x), FAT16, FAT32, HPFS, and NTFS. Due to different types of fields and the amount of data they contain, the length of the BPB is different for FAT16, FAT32, and NTFS boot sectors. (A detailed discussion of the various FAT BPB versions and their entries can be found in the FAT article.) Combined with the 11-byte data structure at the very start of volume boot records immediately preceding the BPB or EBPB, this is also called FDC descriptor or extended FDC descriptor in ECMA-107 or ISO/IEC 9293 (which describes FAT as for flexible/floppy and optical disk cartridges).

FAT12 / FAT16

= DOS 2.0 BPB =

{{Main|DOS 2.0 BPB}}

Format of standard DOS 2.0 BPB for FAT12 (13 bytes):

class="wikitable"
Sector offset

! BPB offset

! Field length

! Description

0x00B0x00WORDBytes per logical sector
0x00D0x02BYTELogical sectors per cluster
0x00E0x03WORDReserved logical sectors
0x0100x05BYTENumber of FATs
0x0110x06WORDRoot directory entries
0x0130x08WORDTotal logical sectors
0x0150x0ABYTEMedia descriptor
0x0160x0BWORDLogical sectors per FAT

= {{anchor|DOS 2.11 BPB}}DOS 3.0 BPB =

{{Main|DOS 3.0 BPB}}

Format of standard DOS 3.0 BPB for FAT12 and FAT16 (19 bytes), already supported by some versions of MS-DOS 2.11:

class="wikitable"
Sector offset

! BPB offset

! Field length

! Description

0x00B0x0013 BYTEsDOS 2.0 BPB
0x0180x0DWORDPhysical sectors per track
0x01A0x0FWORDNumber of heads
0x01C0x11WORDHidden sectors (incompatible with DOS 3.31 BPB)

= DOS 3.2 BPB =

{{Main|DOS 3.2 BPB}}

Format of standard DOS 3.2 BPB for FAT12 and FAT16 (21 bytes):

class="wikitable"
Sector offset

! BPB offset

! Field length

! Description

0x00B0x0019 BYTEsDOS 3.0 BPB
0x01E0x13WORDTotal sectors (incompatible with DOS 3.31 BPB)

= DOS 3.31 BPB =

{{Main|DOS 3.31 BPB}}

Format of standard DOS 3.31 BPB for FAT12, FAT16 and FAT16B (25 bytes):

class="wikitable"
Sector offset

! BPB offset

! Field length

! Description

0x00B0x0013 BYTEsDOS 2.0 BPB
0x0180x0DWORDPhysical sectors per track (identical to DOS 3.0 BPB)
0x01A0x0FWORDNumber of heads (identical to DOS 3.0 BPB)
0x01C0x11DWORDHidden sectors (incompatible with DOS 3.0 BPB)
0x0200x15DWORDLarge total logical sectors

= DOS 3.4 EBPB =

{{Main|DOS 3.4 EBPB}}

Format of PC DOS 3.4 and OS/2 1.0-1.1 Extended BPB for FAT12, FAT16 and FAT16B (32 bytes):

class="wikitable"
Sector offset

! BPB offset

! Field length

! Description

0x00B0x0025 BYTEsDOS 3.31 BPB
0x0240x19BYTEPhysical drive number
0x0250x1ABYTEFlags etc.
0x0260x1BBYTEExtended boot signature (0x28 aka "4.0") (similar to DOS 4.0 EBPB and NTFS EBPB)
0x0270x1CDWORDVolume serial number

FAT12 / FAT16 / HPFS

= DOS 4.0 EBPB =

{{Main|DOS 4.0 EBPB}}

Format of DOS 4.0 and OS/2 1.2 Extended BPB for FAT12, FAT16, FAT16B and HPFS (51 bytes):

class="wikitable"
Sector offset

! BPB offset

! Field length

! Description

0x00B0x0025 BYTEsDOS 3.31 BPB
0x0240x19BYTEPhysical drive number (identical to DOS 3.4 EBPB)
0x0250x1ABYTEFlags etc. (identical to DOS 3.4 EBPB)
0x0260x1BBYTEExtended boot signature (0x29 aka "4.1") (similar to DOS 3.4 EBPB and NTFS EBPB)
0x0270x1CDWORDVolume serial number (identical to DOS 3.4 EBPB)
0x02B0x2011 BYTEsVolume label
0x0360x2B8 BYTEsFile-system type

FAT32

= DOS 7.1 EBPB =

{{Main|DOS 7.1 EBPB}}

Format of short DOS 7.1 Extended BIOS Parameter Block (60 bytes) for FAT32:

class="wikitable"
Sector offset

! BPB offset

! Field length

! Description

0x00B0x0025 BYTEsDOS 3.31 BPB
0x0240x19DWORDLogical sectors per FAT
0x0280x1DWORDMirroring flags etc.
0x02A0x1FWORDVersion
0x02C0x21DWORDRoot directory cluster
0x0300x25WORDLocation of FS Information Sector
0x0320x27WORDLocation of backup sector(s)
0x0340x2912 BYTEsReserved (Boot file name)
0x0400x35BYTEPhysical drive number
0x0410x36BYTEFlags etc.
0x0420x37BYTEExtended boot signature (0x28)
0x0430x38DWORDVolume serial number

Format of full DOS 7.1 Extended BIOS Parameter Block (79 bytes) for FAT32:

class="wikitable"
Sector offset

! BPB offset

! Field length

! Description

0x00B0x0025 BYTEsDOS 3.31 BPB
0x0240x19DWORDLogical sectors per FAT
0x0280x1DWORDMirroring flags etc.
0x02A0x1FWORDVersion
0x02C0x21DWORDRoot directory cluster
0x0300x25WORDLocation of FS Information Sector
0x0320x27WORDLocation of backup sector(s)
0x0340x2912 BYTEsReserved (Boot file name)
0x0400x35BYTEPhysical drive number
0x0410x36BYTEFlags etc.
0x0420x37BYTEExtended boot signature (0x29)
0x0430x38DWORDVolume serial number
0x0470x3C11 BYTEsVolume label
0x0520x478 BYTEsFile-system type

{{anchor|NTFS EBPB}}NTFS

{{main|NTFS#Partition Boot Sector (PBS)}}

Format of Extended BPB for NTFS (73 bytes):

class="wikitable"
Sector offset

! BPB offset

! Field length

! Description

0x00B0x0025 BYTEsDOS 3.31 BPB
0x0240x19BYTEPhysical drive number (identical to DOS 3.4 EBPB)
0x0250x1ABYTEFlags etc. (identical to DOS 3.4 EBPB)
0x0260x1BBYTEExtended boot signature (0x80 aka "8.0") (similar to DOS 3.4 EBPB and DOS 4.0 EBPB)
0x0270x1CBYTEReserved
0x0280x1DQWORDSectors in volume
0x0300x25QWORDMFT first cluster number
0x0380x2DQWORDMFT mirror first cluster number
0x0400x35DWORDMFT record size
0x0440x39DWORDIndex block size
0x0480x3DQWORDVolume serial number
0x0500x45DWORDChecksum

exFAT BPB

exFAT does not use a BPB in the classic sense. Nevertheless, the volume boot record in sector 0 is organized similarly to BPBs.

class="wikitable"
Sector offset

! Field length (bytes)

! Description

0x0003JumpBoot. Must be 0xEB, 0x76, 0x90.
0x0038Filesystem name. Must be {{mono|"EXFAT   "}}.
0x00B53Blank (traditional BPB area). Must be all zero.

See also

References

{{reflist|refs=

{{cite book |author=Microsoft |author-link=Microsoft |title=Microsoft Windows 2000 Server Operations Guide |publisher=Microsoft Press}}

{{cite web |author-first1=Tim |author-last1=Paterson |author-link1=Tim Paterson |author2=Microsoft |author-link2=Microsoft |title=Microsoft DOS V1.1 and V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM |url=http://www.computerhistory.org/atchm/microsoft-research-license-agreement-msdos-v1-1-v2-0/ |publisher=Computer History Museum, Microsoft |date=2013-12-19 |orig-date=1983-05-17 |access-date=2014-03-25 |url-status=live |archive-url=https://web.archive.org/web/20170909160351/http://www.computerhistory.org/atchm/microsoft-research-license-agreement-msdos-v1-1-v2-0/ |archive-date=2017-09-09}} (NB. While the publishers claim this would be MS-DOS 1.1 and 2.0, it actually is SCP MS-DOS 1.25 and a mixture of Altos MS-DOS 2.11 and TeleVideo PC DOS 2.11.)

{{cite web |title=exFAT Filesystem |website=elm-chan.org |url=http://elm-chan.org/docs/exfat_e.html}}

}}

Further reading

  • {{cite web |url=http://jdebp.info/FGA/bios-parameter-block.html |author-first=Jonathan |author-last=de Boyne Pollard |title=All about BIOS Parameter Blocks |work=Frequently Given Answers |url-status=live |access-date=2016-04-18 |archive-url=https://web.archive.org/web/20170909162516/http://jdebp.eu/FGA/bios-parameter-block.html |archive-date=2017-09-09}} — a description of BPBs, from version 2.0 to version 7.0
  • {{cite book |title=Developing applications using DOS |chapter=9: DOS Disk Usage |author-first1=Ken W. |author-last1=Christopher |author-first2=Barry A. |author-last2=Feigenbaum |author-first3=Shon O. |author-last3=Saliga |publisher=Wiley |date=1990 |isbn=0-471-52231-7}} — In the "processing the BIOS parameter block" section the authors describe the evolution of the BIOS parameter block from the MS-DOS version 2.0 BPB to the PC DOS version 4.0 BPB, and label each field with the DOS version that introduced it.
  • {{cite book |title=Advanced MS-DOS Expert Techniques for programmers |author-first=Carl |author-last=Townsend |chapter=4: Disk organization and management |publisher=Howard M. Sams |date=1989 |isbn=0-672-22667-7}} — Figure 4.3 contains a diagram of the version 4.0 BPB and states that the layout of BPBs "is not defined by Microsoft and can vary with different vendors". At the time that the book was written, this was true. Microsoft first publicly documented the BPB structure in the OS/2 Developers' Toolkit.
  • {{cite web |author-first=Alex |author-last=Verstak |date=1998-03-10 |url=http://averstak.tripod.com/fatdox/bootsec.htm |title=FAT Boot Sector |url-status=live |archive-url=https://web.archive.org/web/20160730212635/http://averstak.tripod.com/fatdox/bootsec.htm |archive-date=2016-07-30}} — Verstak reverse engineers the BIOS parameter block. The paper contains several errors. One such is its statement that "the presence of the EBPB in FAT32 is not documented by Microsoft". See:
  • {{cite web |url=http://www.microsoft.com/technet/archive/win98/reskit/part2/wrkc10.mspx |author=Microsoft |author-link=Microsoft |work=Microsoft Windows 98 Resource Kit |title=Chapter 10 - Disks and File Systems |access-date=2017-09-09 |url-status=live |archive-url=https://web.archive.org/web/20170909145511/https://technet.microsoft.com/library/cc768180.aspx |archive-date=2017-09-09}} — Microsoft documents a version 4.0 BPB and a new "FAT32 BIOS Parameter Block (BPB)" (a version 7.0 BPB) for DOS-Windows 98 that is "larger than a standard BPB", has an "identical structure to a standard BPB", but that also "includes several extra fields".
  • {{cite web |url=http://www.microsoft.com/technet/prodtechnol/Windows2000Pro/reskit/part7/proch32.mspx |author=Microsoft |author-link=Microsoft |work=Microsoft Windows 2000 Professional Resource Kit |title=Chapter 32 - Disk Concepts and Troubleshooting |url-status=dead |access-date=2006-06-01 |archive-url=https://web.archive.org/web/20060810171002/http://www.microsoft.com/technet/prodtechnol/Windows2000Pro/reskit/part7/proch32.mspx |archive-date=2006-08-10}} — Microsoft documents extended BPBs on both FAT16 and FAT32 volumes. It also documents BPBs on NTFS volumes.
  • {{cite web|url=https://technet.microsoft.com/en-us/library/cc781134%28WS.10%29.aspx |author=Microsoft |author-link=Microsoft |work=Microsoft Windows Server 2003 NTFS Technical Reference |title=How NTFS Works |url-status=live |archive-url=https://web.archive.org/web/20160730212559/https://technet.microsoft.com/en-us/library/cc781134%28WS.10%29.aspx |archive-date=2016-07-30}} — The table "BPB and Extended BPB Fields on NTFS Volumes" describes BPBs on NTFS volumes. The descriptions of several fields contradict those given in the Windows 2000 Resource Kit.
  • {{cite web |url=http://jdebp.info/FGA/volume-boot-block-oem-name-field.html |author-first=Jonathan |author-last=de Boyne Pollard |title=The meaning and use of the OEM Name field in volume boot blocks |work=Frequently Given Answers |access-date=2016-06-04 |url-status=live |archive-url=https://web.archive.org/web/20170909162834/http://jdebp.eu/FGA/volume-boot-block-oem-name-field.html |archive-date=2017-09-09}} — an issue that affects BPBs
  • {{cite web |title=NOVOLTRK.REG |author-first=Matthias R. |author-last=Paul |date=2004-08-25 |work=www.drdos.org |url=http://www.ibiblio.org/pub/micro/pc-stuff/freedos/win9x/NOVOLTRK.ZIP |access-date=2011-12-17 |url-status=dead |archive-url=https://web.archive.org/web/20160304124755/http://www.ibiblio.org/pub/micro/pc-stuff/freedos/win9x/NOVOLTRK.ZIP |archive-date=2016-03-04}} [https://web.archive.org/web/20051111015142/http://public.www.planetmirror.com/pub/freedos/win9x/]
  • {{cite newsgroup |title=Need DOS 6.22 (Not OEM) |author-first=Matthias R. |author-last=Paul |date=2002-02-20 |newsgroup=alt.msdos.programmer |url=https://groups.google.com/d/msg/alt.msdos.programmer/MAv9LuYQjs8/HuYCph4KsQYJ |access-date=2006-10-14 |url-status=live |archive-url=https://archive.today/20170909145248/https://groups.google.com/forum/%23!msg/alt.msdos.programmer/MAv9LuYQjs8/HuYCph4KsQYJ |archive-date=2017-09-09}} — on the misuse of OEM labels and Microsoft's Volume Tracker
  • {{cite newsgroup |title=File System ID - "The alt.os.development boot sector descriptors standards committee" |author-first=Matthias R. |author-last=Paul |date=2002-08-12 |newsgroup=alt.os.development |url=https://groups.google.com/d/msg/alt.os.development/oSYdIbM7YdI/a4bLf1O7SXgJ |access-date=2019-07-29 |url-status=live |archive-url=https://web.archive.org/web/20220529153726/https://groups.google.com/g/alt.os.development/c/oSYdIbM7YdI/m/a4bLf1O7SXgJ |archive-date=2022-05-29}}
  • {{cite newsgroup |title=Cluster Size |author-first=Wally |author-last=Bass |date=1994-02-14 |newsgroup=comp.os.msdos.programmer |url=https://groups.google.com/d/msg/comp.os.msdos.programmer/ZGE7qkh4eI0/1vssg3Yt3nkJ |access-date=2006-10-14 |url-status=live |archive-url=https://archive.today/20170909144921/https://groups.google.com/forum/%23!msg/comp.os.msdos.programmer/ZGE7qkh4eI0/1vssg3Yt3nkJ |archive-date=2017-09-09}}
  • {{cite web |title=On OEM IDs |author-first=John C. |author-last=Elliott |version=1.3 |date=2006-04-17 |orig-date=2004-06-18 |work=Seasip.info |url=http://seasip.info/Misc/oemid.html |access-date=2019-07-29 |url-status=live |archive-url=https://web.archive.org/web/20190408094610/http://www.seasip.info/index.html |archive-date=2019-04-08}}
  • {{cite web |title=FDISK problems |author-first=Charles E. |author-last=Dye |date=1999-03-20 |work=delorie.com |url=http://www.delorie.com/archives/browse.cgi?p=opendos/1999/03/20/14:23:12 |access-date=2019-07-29 |url-status=live |archive-url=https://web.archive.org/web/20190729000416/http://www.delorie.com/archives/browse.cgi?p=opendos%2F1999%2F03%2F20%2F14%3A23%3A12 |archive-date=2019-07-29}}
  • {{cite web |title=I hope this is helpful about Microsoft and Caldera DR-DOS and OEM IDs |author=Anonymous |date=2004-06-15 |work=Groklaw |url=http://www.groklaw.net/comment.php?mode=display&sid=20040614232501302&type=article&order=&hideanonymous=0&pid=153641#c153662 |access-date=2019-07-29 |archive-url= |archive-date= }}{{Dead link|date=October 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
  • {{cite newsgroup |title=Evil :) DOS6 FAT |author-first=Jen |author-last=Kilmer |date=2013-05-21 |newsgroup=comp.os.os2.misc |url=https://groups.google.com/forum/?hl=la#!msg/comp.os.os2.misc/dxxRtZ_V-fU/YVvnukmtfvAJ |access-date=2019-07-29 |url-status=live |archive-url=https://web.archive.org/web/20220529153802/https://groups.google.com/g/comp.os.os2.misc/c/dxxRtZ_V-fU/m/YVvnukmtfvAJ |archive-date=2022-05-29}}

Category:BIOS

Category:DOS technology