Int 13 x86 boot limitation and C partition


The NT installation process can create a maximum NTFS partition size of 4GB or a
maximum FAT partition size of 2GB. If you preformat the NTFS partition in
another NT box or use a 3rd party utility that can create and format NTFS
partitions such as PartitionMagic or ServerMagic, then the boot partition can be
up to 7.8GB in size. This is the summary you will often see in newsgroups. This
is often all there is to it. But there are int13 BIOS issues.

When the computer boots, the only way for Windows NT to access the hard drive
is to use a set of BIOS functions known as Interrupt (INT 13). When INT 13 was
developed, multigigabyte hard drives weren’t available and INT 13’s limitation
of 7.8 GB wasn’t seen as critical. As a consequence, Windows NT 4.0 can’t access
more than 7.8 GB during the first stages of the boot process; thus, the system
partition is limited to 7.8 GB. Newer operating systems such as Windows 98 and
Windows 2000 don’t suffer from this limitation because they use a newer extended
INT 13 that can address more than 7.8 GB.

During Windows NT’s boot process, ntdetect.com, uses
int13 BIOS function for drive layout information. Because of int13 limitations,
ntldr, boot.ini, ntdetect.com and Windows NT’s system files
must be located within the first 1024 cylinders of drive 0. The int13
functions allow low-level code to read from and write to the drive. These
functions use 24 bits to address sectors on the hard disk. The 24 bits are
divided into a 10-bit field for cylinder, an 8-bit field for head, and a 6-bit
field for sector. The maximum amount of sectors accessible to the INT 13
interface is therefore:

Cylinders * heads * sectors = 1024 * 256 * 63 = 16,515,072

When the sectors size is 512 bytes, this calculated to

16,515,072 * 512 = 8,455,716,864 bytes = 7.875 GB.

The above assumes a disk standard geometry with 63 sectors/track, 256 heads
with 1024 cylinders. Some drives are configured with 63 sectores/track, 128
heads with 2048 cylinders. The multiplication comes out to 7.875 GB BUT remember
that int13 only allocates a 10-bit field for cylinders. This is an access
limitation during boot to the first 1024 cylinders. For the drives configured
with 2048 cylinders, fully half its space is unavailable during boot, resulting
in a maximum usable NT system partition of 4GB.

This leads to significant confusion about the maximum size for NT system
partition. As you can see, its either 4GB or 7.875GB depending on whether the
drive is configured with 2048 cylinders or 1024 cylinders under NTFS. If you
don’t know which applies to your drive, use 4GB as your C partition. A related
issue involves dual-boot for Windows NT and Win95/Win98. Win9x must be installed
on a FAT16 partition (since NT will not boot to fat32) which constraints the
boot partition down to 2GB. The FAT file system is limited to 65,525 clusters.
The size of a cluster must be a power of 2 and less than 65,536 bytes–this
results in a maximum cluster size of 32,768 bytes (32K). Thus max size for FAT16
is

65,525 * 32,768 bytes = 2 GB.

The problem is that NT will install properly and run fine even in the drive
with 2048 cylinders if you create a large partiton, even a 18GB or 21GB. During
the install, Windows files used during the boot process are compacted in the
early sectors. Staying within the 1024 cylinder int13 limitation. But its a crap
shoot. Lets say you have mostly filled your HD and the that next niffty service
pack comes along and up apply it. Unfortunately at this point, the updated dlls
and other system files are spread across the entire partition. If any of the
critical files are stored above the 1024 cylinder limit, on your next boot, you
will get the thrilling message, INACCESSIBLE_BOOT_DEVICE

Related:
Boot Partition Created During Setup Limited to 4 Gigabytes

Windows NT 4.0 Supports Maximum of 7.8-GB System Partition

Windows NT Partitioning Rules During Setup

Boot Partition Created During Setup Limited to 4 Gigabytes

Windows NT Boot Process and Hard Disk Constraints

1024 Cylinder Limit, How Windows NT Gets Drive Geometry

How Windows NT Handles Drive Translation

About The Author

Leave a Comment

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Scroll to Top