The  GRUB  BPB
(BIOS Parameter Block)



GRUB's _ BIOS Parameter Block _ (or BPB); some of which dates back to the
release of IBM/MS DOS 2.0, begins at offset 7C0Bh and ends at offset 7C3Dh.

                                     BPB  
                                      |                OEM System Name
       0  1  2  3  4  5  6  7  8  9  A| B  C  D  E  F         |
7C00  EB 48 90 4D 53 44 4F 53 35 2E 30 00 02 01 01 00   ëH.MSDOS5.0.....
7C10  02 E0 00 40 0B F0 09 00 12 00 02 00 00 00 00 00   .à.@.ð..........
7C20  00 00 00 00 00 00 29 77 2F 49 44 47 52 55 42 2D   ......)w/IDGRUB-
7C30  30 2E 39 33 54 53 46 41 54 31 32 20 20 20 03 02   0.93TSFAT12   ..
7C40  FF 00 00 80 24 00 00 00 00 08 FA EA 50 7C 00 00    ..€$.....úêP|..

The BPB data on this diskette is interpreted as follows:

B P B
  Hex     As seen     HEX
 OFFSET   on Disk    value                   Meaning / Description
=======   =======   =======      ==============================================
0B - 0C    00 02     0200h   =   512 Bytes per Sector,
0D            01       01h   =   1 Sector(s) per Cluster,
0E - 0F    01 00     0001h   =   1 Reserved sector (starting at Sector 0),
10            02       02h   =   2 FATs on the diskette,
11 - 12    E0 00     00E0h   =   224 possible Root Directory entries,
13 - 14    40 0B     0B40h   =   2880 Total Sectors on the diskette,
                                 ( 2880 x 512 = 1,474,560 bytes total ),
15            F0       F0h   ->  Media Descriptor Byte: F0 usually means
                                 the most recent 3.5-inch, 1440 KiB disk[*].
16 - 17    09 00     0009h   =   9 Sectors per FAT,
18 - 19    12 00     0012h   =   18 Sectors per Track,
1A - 1B    02 00     0002h   =   2 Sides (or Heads).
1C - 25                      ->  Should be all zeros (see text below).
26            29             ->  Extended BPB Signature Byte (if present, then
                                 the following strings will also have meaning):
27 - 2A   xx xx xx xx        =   Volume Serial Number ("4449-2F77" here).
2B - 35   (11 bytes)         =   Volume Label ("GRUB-0.93TS" in this case).
36 - 3B   ( 8 bytes)         =   File System ID ("FAT12   " in this case).

 ______________
 * FF = Double-Sided, 8 Sectors/Track (320 KiB), 5.25-inch;
   FE = Single-Sided, 8 Sectors/Track (160 KiB), 5.25-inch;
   FD = Double-Sided, 9 Sectors/Track (360 KiB), 5.25-inch;
   FC = Single-Sided, 9 Sectors/Track (180 KiB), 5.25-inch;

   F9 = Double-Sided,  9 Sectors/Track ( 720 KiB),  3.5-inch,
        or:
   F9 = Double-Sided, 15 Sectors/Track (1220 KiB), 5.25-inch;
        And since F9 could mean either of these two disk
        types, it was not very useful!

   F8 = All hard disks.
   
   F0 = Double-Sided, 18 Sectors/Track (1440 KiB), 3.5-inch;
        or:
      = Double-Sided, 36 Sectors/Track (2880 KiB), 3.5-inch;
        (A special floppy drive was necessary to use these.)

   (The are also some very old 8-inch diskette type numbers,
    but we did not list them here.)

=================================================================
NOTE: The rest of this particular disk's contents are as follows:

 Volume in drive A has no label
 Volume Serial Number is 4449-2F77
 Directory of A:\boot\grub

.              <DIR>        07-04-03  8:55a .
..             <DIR>        07-04-03  8:55a ..
STAGE1                 512  01-24-03  7:00p stage1
STAGE2             106,364  01-24-03  7:00p stage2
TSR-SP~1 GZ          3,656  07-04-03  5:56p tsr-splash.xpm.gz
FAT_ST~1             7,536  01-24-03  7:00p fat_stage1_5
E2FS_S~1             7,840  01-24-03  7:00p e2fs_stage1_5
REISER~1             9,408  01-24-03  7:00p reiserfs_stage1_5
JFS_ST~1             8,448  01-24-03  7:00p jfs_stage1_5
VSTAFS~1             6,528  01-24-03  7:00p vstafs_stage1_5
MINIX_~1             7,040  01-24-03  7:00p minix_stage1_5
XFS_ST~1             9,320  01-24-03  7:00p xfs_stage1_5
FFS_ST~1             6,880  01-24-03  7:00p ffs_stage1_5
GRUB~1   CON         3,045  07-04-03  5:56p grub.conf
        12 file(s)        176,577 bytes
         2 dir(s)       1,276,928 bytes free


Checking the data above, we see our diskette has a capacity of 1440 Kbytes, since the Word at offsets 13-14h (0B40h) gives us a total of 2,880 sectors (or 1,474,560 bytes). It also has two sides and 18 Sectors per Track which means we have a standard 3.5-inch 'DSHD' Double-Sided High Density diskette of 80 Tracks on each side (18 sectors/track x 80 tracks = 1440 sectors on each side; for a total of 2880 sectors).

On hard disks, offsets 1Ch through 1Fh are a Double-Word containing the Number of Hidden Sectors. But floppy disks should have only zeros here, since there are no sectors before the Boot Sector on a normal floppy diskette. The next four bytes (offsets 20h through 23h), another Double-Word, are used for disk partitions having more than 65,535 sectors! That's far beyond the size of any diskette, so this field should be all zeros as well; remember offsets 13-14h are where a diskette's “Total Number of Sectors” are located.
[Some documents state offset 24h is for a drive number under DOS 4.0 or above, so a zero-byte would mean the first floppy drive. But it seems to us the only logical way it could be used for floppy diskettes would be if the whole BPB was first copied into memory then altered there, since you couldn't possibly change this byte if it were on a write-protected floppy disk!]
The byte at offset 25h is “Reserved” and always set to zero.

Beginning with DOS version 4.0, if the byte at offset 26h is a 29, then the next four bytes (offsets 27h through 2Ah) will contain a Serial Number based on the date and time the diskette was formatted; these bytes (along with the OEM ID and the Volume Label) can, of course, be changed by a disk editor. If the 29 Extended BPB Signature Byte is present, then the bytes at offsets 2Bh through 35h may contain an 11-byte Volume Label and the bytes at offsets 36h through 3Dh should contain the File System ID of: "FAT12   "; with three trailing space bytes (20h).

Why place GRUB (primarily designed for booting linux) on a diskette formatted with a FAT12 file system? Well, this allows PC users to edit its configuration file under Windows™ if need be, and a GRUB diskette can be handy for booting a Windows™ OS on a hard disk with a corrupt Master Boot Record (MBR) sector. A savy PC tech will learn how to use linux, since it's often quite useful in handling problems with other operating systems!

If you require more information on the BPB, see the TABLE on this page: The MSWIN4.1 Hard Disk Boot Record.

 


Last Update: 12 December 2009 (12.12.2009).


You can write to me using this: online reply form. (It opens in a new window.)

MBR and Boot Records Index

The Starman's Realm Index Page