BIOS parameter block

From Wikipedia, the free encyclopedia
  (Redirected from BIOS Parameter Block)
Jump to: navigation, search

In computing, the BIOS parameter block, often shortened to BPB, is a data structure in the volume boot record 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.[1] (A detailed discussion of the various FAT BPB versions and their entries can be found in the FAT article.) ECMA-107 or ISO/IEC 9293 (which describes FAT as for flexible/floppy and optical disk cartridges) also describes this as an FDC descriptor or an FDC extended descriptor.

FAT12 / FAT16[edit]

DOS 2.0 BPB[edit]

Main article: DOS 2.0 BPB

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

Sector offset BPB offset Field length Description
0x00B 0x00 WORD Bytes per logical sector
0x00D 0x02 BYTE Logical sectors per cluster
0x00E 0x03 WORD Reserved logical sectors
0x010 0x05 BYTE Number of FATs
0x011 0x06 WORD Root directory entries
0x013 0x08 WORD Total logical sectors
0x015 0x0A BYTE Media descriptor
0x016 0x0B WORD Logical sectors per FAT

DOS 3.0 BPB[edit]

Main article: 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:[2]

Sector offset BPB offset Field length Description
0x00B 0x00 13 BYTEs DOS 2.0 BPB
0x018 0x0D WORD Physical sectors per track
0x01A 0x0F WORD Number of heads
0x01C 0x11 WORD Hidden sectors (incompatible with DOS 3.31 BPB)

DOS 3.2 BPB[edit]

Main article: DOS 3.2 BPB

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

Sector offset BPB offset Field length Description
0x00B 0x00 19 BYTEs DOS 3.0 BPB
0x01E 0x13 WORD Total sectors (incompatible with DOS 3.31 BPB)

DOS 3.31 BPB[edit]

Main article: DOS 3.31 BPB

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

Sector offset BPB offset Field length Description
0x00B 0x00 13 BYTEs DOS 2.0 BPB
0x018 0x0D WORD Physical sectors per track (identical to DOS 3.0 BPB)
0x01A 0x0F WORD Number of heads (identical to DOS 3.0 BPB)
0x01C 0x11 DWORD Hidden sectors (incompatible with DOS 3.0 BPB)
0x020 0x15 DWORD Large total logical sectors

DOS 3.4 EBPB[edit]

Main article: 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):

Sector offset BPB offset Field length Description
0x00B 0x00 25 BYTEs DOS 3.31 BPB
0x024 0x19 BYTE Physical drive number
0x025 0x1A BYTE Flags etc.
0x026 0x1B BYTE Extended boot signature (0x28 aka "4.0") (similar to DOS 4.0 EBPB and NTFS EBPB)
0x027 0x1C DWORD Volume serial number

FAT12 / FAT16 / HPFS[edit]

DOS 4.0 EBPB[edit]

Main article: DOS 4.0 EBPB

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

Sector offset BPB offset Field length Description
0x00B 0x00 25 BYTEs DOS 3.31 BPB
0x024 0x19 BYTE Physical drive number (identical to DOS 3.4 EBPB)
0x025 0x1A BYTE Flags etc. (identical to DOS 3.4 EBPB)
0x026 0x1B BYTE Extended boot signature (0x29 aka "4.1") (similar to DOS 3.4 EBPB and NTFS EBPB)
0x027 0x1C DWORD Volume serial number (identical to DOS 3.4 EBPB)
0x02B 0x20 11 BYTEs Volume label
0x036 0x2B 8 BYTEs File-system type

FAT32[edit]

DOS 7.1 EBPB[edit]

Main article: DOS 7.1 EBPB

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

Sector offset BPB offset Field length Description
0x00B 0x00 25 BYTEs DOS 3.31 BPB
0x024 0x19 DWORD Logical sectors per FAT
0x028 0x1D WORD Mirroring flags etc.
0x02A 0x1F WORD Version
0x02C 0x21 DWORD Root directory cluster
0x030 0x25 WORD Location of FS Information Sector
0x032 0x27 WORD Location of backup sector(s)
0x034 0x29 12 BYTEs Reserved (Boot file name)
0x040 0x35 BYTE Physical drive number
0x041 0x36 BYTE Flags etc.
0x042 0x37 BYTE Extended boot signature (0x28)
0x043 0x38 DWORD Volume serial number

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

Sector offset BPB offset Field length Description
0x00B 0x00 25 BYTEs DOS 3.31 BPB
0x024 0x19 DWORD Logical sectors per FAT
0x028 0x1D WORD Mirroring flags etc.
0x02A 0x1F WORD Version
0x02C 0x21 DWORD Root directory cluster
0x030 0x25 WORD Location of FS Information Sector
0x032 0x27 WORD Location of backup sector(s)
0x034 0x29 12 BYTEs Reserved (Boot file name)
0x040 0x35 BYTE Physical drive number
0x041 0x36 BYTE Flags etc.
0x042 0x37 BYTE Extended boot signature (0x29)
0x043 0x38 DWORD Volume serial number
0x047 0x3C 11 BYTEs Volume label
0x052 0x47 8 BYTEs File-system type

NTFS[edit]

Format of Extended BPB for NTFS (73 bytes):

Sector offset BPB offset Field length Description
0x00B 0x00 25 BYTEs DOS 3.31 BPB
0x024 0x19 BYTE Physical drive number (identical to DOS 3.4 EBPB)
0x025 0x1A BYTE Flags etc. (identical to DOS 3.4 EBPB)
0x026 0x1B BYTE Extended boot signature (0x80 aka "8.0") (similar to DOS 3.4 EBPB and DOS 4.0 EBPB)
0x027 0x1C BYTE Reserved
0x028 0x1D QWORD Sectors in volume
0x030 0x25 QWORD MFT first cluster number
0x038 0x2D QWORD MFT mirror first cluster number
0x040 0x35 DWORD MFT record size
0x044 0x39 DWORD Index block size
0x048 0x3D QWORD Volume serial number
0x050 0x45 DWORD Checksum

See also[edit]

References[edit]

  1. ^ Microsoft. Microsoft Windows 2000 Server Operations Guide. Microsoft Press
  2. ^ Paterson, Tim; Microsoft (2013-12-19) [1983]. "Microsoft DOS V1.1 and V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM". Computer History Museum, Microsoft. Retrieved 2014-03-25.  (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.)

Further reading[edit]

  • Jonathan de Boyne Pollard. "All about BIOS Parameter Blocks". Frequently Given Answers.  — a description of BPBs, from version 2.0 to version 7.0
  • Ken W. Christopher, Barry A. Feigenbaum, & Shon O. Saliga (1990). "9: DOS Disk Usage". Developing applications using DOS. Wiley. 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.
  • Carl Townsend (1989). "4: Disk organization and management". Advanced MS-DOS Expert Techniques for programmers. Howard M. Sams. 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.
  • Alex Verstak (1998-03-10). "FAT Boot Sector".  — 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:
    • Microsoft. "Chapter 10 - Disks and File Systems". Microsoft Windows 98 Resource Kit.  — 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".
    • Microsoft. "Chapter 32 - Disk Concepts and Troubleshooting". Microsoft Windows 2000 Professional Resource Kit.  — Microsoft documents extended BPBs on both FAT16 and FAT32 volumes. It also documents BPBs on NTFS volumes.
  • Microsoft. "How NTFS Works". Microsoft Windows Server 2003 NTFS Technical Reference.  — 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.
  • Jonathan de Boyne Pollard. "The meaning and use of the OEM Name field in volume boot blocks". Frequently Given Answers.  — an issue that affects BPBs
  • Matthias Paul (2004-08-25). "NOVOLTRK.REG". www.drdos.org. Retrieved 2011-12-17. 
  • Matthias Paul (2002-02-20). "Need DOS 6.22 (Not OEM)". alt.msdos.programmer. Retrieved 2006-10-14.  — on the misuse of OEM labels and Microsoft's Volume Tracker
  • Wally Bass (1994-02-14). "Cluster Size". comp.os.msdos.programmer. Retrieved 2006-10-14.