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