|
Ink Blot welcomes you to Lance's Web Site!I've decided to resurrect my web site on a limited basis; mainly to discuss FAT32X, but also to test a new site build process. LC(best viewed at 800x600 full screen!) |
![]() |
||||||
|
FAT32XThere's been a lot of talk about FAT32X recently, but no hard info. I recently built a new machine which happened to have the capability of creating FAT32X partitions. Before I turned this box into its real function (a FreeBSD server), I thought I would take some time to experiment with FAT32X partitions and gather some accurate information.What is FAT32X?A FAT32X partition is a partition whose size extends beyond the BIOS addressing of a fixed disk drive.FAT32X partitions will only be created on PC's equipped with a BIOS that has the int 13h extensions (functions 41h, 42h, 43h, 48h, etc). FAT32X partitions have the same logical structure as a FAT32 partition. Now let's explore each of these statements... BIOS Disk Addressing Due to legacy limitations in the BIOS, the maximum number of cylinders is 1023, the maximum number of heads is 255, and the maximum number of sectors is 63. (reference: int 13h, function 08h). This results in a maximum disk size of 1023x255x63 sectors, or 16434495 sectors x 512 bytes/sectors, or 8414461440 bytes. You can call it 8.41GB, or 7.84GB depending on how you cipher (by 1000's or 1024's). So the BIOS is only capable of directly addressing a maximum of 8 gigabytes of disk space using cylinder.head.sector addressing and its standard i/o functions (reference: int 13h, functions 02h, 03h). Int 13h extensions With the recent introduction of very large drives to the PC market, BIOS manufacturers have added what is known as 'int13 extensions'. These extensions are a new set of BIOS functions (reference: int 13h, functions 41h, 42h, 43h, 48h) that allow the software to access disk space past the BIOS cylinder.head.sector disk configuration parameters. You'll notice I didn't say "past the 8GB limit". That's because the int 13 extensions allow a disk to be accessed from the beginning to the end, and the int 13 extension functions can be used in conjunction with the standard disk i/o functions. How do you know if your BIOS is capable of int13 extensions? You can use the DSIZE utility program with the -X option to determine it. This example is from my old Gateway 2000 P5-100: C:\>dsize 0 -x 0: 1622605824 bytes 3169152 sectors 1547MB Int13 Extensions not availableAnd this example is from my new machine:
C:\>dsize 0 -x
0: 1081737216 bytes 2112768 sectors 1031MB
Int13 Extensions enabled
Version=21h
Subset =0001h
0001 Extended disk access functions supported
Real =(2100 cylinders, 16 heads, 63 sectors)
FAT32 Partition StructureAlthough it may seem as if FAT32X is something brand new, it really isn't. FAT32X is simply a repackaging of FAT32. There is one major difference between a FAT32 partition and a FAT32X partition - the partition type in the master boot record is 0Bh for FAT32, and 0Ch for FAT32X. That's it, well almost. The number of sectors in a FAT32 partition must be within the addressing range of the BIOS, but the number of sectors in a FAT32X partition can go past that range. The partition type of 0Ch signals Windows95B into using the int13 extensions, and that's what the X stands for. Here's an example of FAT32X on a 1GB drive (Western Digital 21000). The whole drive is configured as a primary partition. The important thing to note here is the number of addressable sectors. The BIOS configuration is 524x64x63, or 2112768 sectors. The actual disk configuration is 2100x16x63, or 2116800 sectors. The last sector of the partition is beyond the BIOS addressing, but is equal to the actual last sector (63+2116737). A:\>bootsect 0 -m -t BOOTSECT (01.07, 05/07/98) - Read/Write/etc Boot Records Reading master boot record from drive 0 Partition table for drive 0: Part Boot Sys Start Address End Address Starting Number of Num Flag Type Cyl Head Sec Cyl Head Sec Sector Sectors 0 80h 0Ch 0 1 1 523 63 63 63 2116737 1 00h 00h 0 0 0 0 0 0 0 0 2 00h 00h 0 0 0 0 0 0 0 0 3 00h 00h 0 0 0 0 0 0 0 0 Drive 0 Cylinders=524 Heads=64 Sectors=63 Actual Cylinders=2100 Heads=16 Sectors=63Here's another example using the same hardware configuration, but this time an 800MB partition was created. Since the partition is within the confines of the BIOS geometry, it was created as FAT32. A:\>bootsect 0 -m -t BOOTSECT (01.07, 05/07/98) - Read/Write/etc Boot Records Reading master boot record from drive 0 Partition table for drive 0: Part Boot Sys Start Address End Address Starting Number of Num Flag Type Cyl Head Sec Cyl Head Sec Sector Sectors 0 00h 0Bh 0 1 1 406 63 63 63 1640961 1 00h 00h 0 0 0 0 0 0 0 0 2 00h 00h 0 0 0 0 0 0 0 0 3 00h 00h 0 0 0 0 0 0 0 0 Drive 0 Cylinders=524 Heads=64 Sectors=63 Actual Cylinders=2100 Heads=16 Sectors=63And just for fun, lets create an extended DOS partition on the drive, and allocate the remainder of the space to a logical DOS drive. This creates an ExtendedX partition (type 0Fh), and within it is a standard FAT16 (type 06h) sub-partition which extends beyond the BIOS addressing of the drive. This volume is not usable except under DOS 7.10/Win95B. Even though this is a FAT16 volume, it will not be recognized by previous verions of DOS/Win95 since its inside an ExtendedX partition. A:\>bootsect 0 -m -t -x BOOTSECT (01.07, 05/07/98) - Read/Write/etc Boot Records Reading master boot record from drive 0 Partition table for drive 0: Part Boot Sys Start Address End Address Starting Number of Num Flag Type Cyl Head Sec Cyl Head Sec Sector Sectors 0 00h 0Bh 0 1 1 406 63 63 63 1640961 1 00h 0Fh 407 0 1 523 63 63 1641024 475776 2 00h 00h 0 0 0 0 0 0 0 0 3 00h 00h 0 0 0 0 0 0 0 0 Drive 0 Cylinders=524 Heads=64 Sectors=63 Actual Cylinders=2100 Heads=16 Sectors=63 Extended partition table for drive 0 partition 1 (sector 1641024): Part Boot Sys Start Address End Address Starting Number of Num Flag Type Cyl Head Sec Cyl Head Sec Sector Sectors 0 00h 06h 407 1 1 524 63 63 63 475713 1 00h 00h 0 0 0 0 0 0 0 0 2 00h 00h 0 0 0 0 0 0 0 0 3 00h 00h 0 0 0 0 0 0 0 0For more FAT32X partition configurations, read FAT32X Test Cases. A common rumor about FAT32X is that the boot sector is at the end of the partition. WRONG! Read The FAT32X Boot Sector Rumor for details. The FAT32X ProblemThe problem, which still existed as of 5/1/98, is that most of the utility software (i.e. Partition Magic by PowerQuest, and Norton by Symantec) still haven't released updates to deal with FAT32X partitions.Do you want to convert a FAT32X partition to FAT32? Read The FAT32X Conversion for details. I hope you enjoyed this little excursion into FAT32X. Drop me a note if you have any corrections or additional information to contribute. |
|||||
![]() |
||||||
| Lance Costanzo, lance@advantinc.com | ||||||