Note If you install software updates to a Windows NT 4.0-based computer that has a system partition that is larger than 7.8 GB, your computer may not restart correctly. For example, after you install a security update, you may receive the following error message when you restart your computer:
Disk I/O error status=00000001
Windows NT could not start because the following file is missing or corrupt: winnt\system32\Ntoskrnl.exe
Please reinstall a copy of the above file.
A boot partition is defined as the partition containing the system files. For Windows NT, this is the partition containing the %SystemRoot%\System32 folder.
The system partition and boot partition can be on the same partition or on different partitions. Because there can be multiple operating systems installed on a single computer, a computer can have multiple boot partitions, but a computer has only a single system partition.
In some cases, the boot partition must be entirely within the first 7.8 GB of the drive. If the Boot.ini file uses the multi() syntax for locating the boot partition, NTLDR uses the INT13 interface to load the HAL, the kernel, and boot-start device drivers. In this case, these files must reside within the 7.8 GB addressable range of the INT13 interface. If the Boot.ini file uses scsi() syntax to find the boot partition, then a file named Ntbootdd.sys should exist on the system partition. This file is simply a renamed copy of the disk controller driver. In this case, NTLDR uses the Ntbootdd.sys driver to access the disk when loading the HAL, kernel, and boot-start device drivers. The addressable area of the disk is determined by this driver.
When an Intel-based computer first boots, a number of things occur that result in the operating system being loaded and started. This process, known as the bootstrap process, has inherent hardware and software limitations beyond which Windows NT cannot operate. It is these limitations that prevent Windows NT 4.0 from using a partition larger than 7.8 GB as a system partition.
During the bootstrap process, the only mechanism available to Windows NT (or any other operating system) to access the drive is a set of functions in the BIOS known as Interrupt 13 (INT13). The INT13 functions allow low-level code to read from and write to the drive by addressing a specific sector on the drive. When the INT13 architecture was developed back in the early 1980s, the possibility of multi-gigabyte hard disks was not taken into consideration. The INT13 functions define 24 bits to describe a sector on the hard disk. This breaks down to a maximum of 256 heads (or sides), 1024 cylinders, and 63 sectors. With these numbers, only 256*1024*63 (or 16,515,072) sectors can be used with INT13 functions. At a standard 512 bytes per sector, this is 8,455,716,864 bytes, or approximately 7.8 GB. Note that for most modern drives, the computer's BIOS must support some form of sector translation for the BIOS functions to address the first 7.8 GB of disk space. The BIOS in virtually all modern computers supports "Logical Block Addressing," which allows INT13 functions to address the first 7.8 GB of drive space independent of the drive's physical geometry.
The INT13 functions are the only means available to the operating system to gain access to the drive and system partition until the operating system loads additional drivers that allow it to gain access to the drive without going through INT13. Therefore, Windows NT 4.0 cannot use a system partition larger than 7.8 GB. In fact, the entire system partition must be entirely within the first 7.8 GB of the physical disk. Windows NT can use a 7.8-GB system partition only if the partition begins at the start of the physical drive.
Note Partitions other than the system partition are not affected by the these limitations.
Other operating systems, such as Microsoft Windows 95 OEM Service Release 2, Microsoft Windows 98, and Microsoft Windows 2000, can boot from larger partitions because these operating systems were written after the computer industry defined a new standard for BIOS INT13 functions (the "INT13 extensions") and implemented this new functionality on manufactured motherboards. Because Windows NT 4.0 was written before this new standard was invented, Windows NT 4.0 is unaware of this new technology and is unable to use its features.
When you are installing Windows NT 4.0, you can create a system partition with a maximum size of 4 GB. This occurs because Setup first formats the partition using the FAT file system. If you want to use an NTFS partition, the partition is converted to NTFS after the first reboot. The FAT file system has a file system limitation (unrelated to any BIOS limitations) of 4 GB. When you perform an unattended installation, use of the ExtendOEMPartition directive in an Unattend.txt file can expand the system partition to a maximum of 7.8 GB.
In the future, additional limitations may come into play as well. Although the NTFS file system can address 16 exabytes of disk space in a single partition, current disk-partitioning schemes store partition information in structures that limit partitions to 2^32 sectors, or 2 terabytes, in size. The ATA hardware interface uses 28-bit addressing, which supports drives that are 2^24 sectors, or 137 GB, in size. These limitations may apply to partitions other than the system partition as well.
Note that file system limitations and hardware limitations exist independently of each other, and the most restrictive of the two is the determining factor in the maximum partition size. Another factor to consider when you are troubleshooting partitioning problems is that hard disk manufacturers often use "decimal megabytes" (1 megabyte = 1,000,000 bytes), whereas Windows NT uses "binary megabytes" (1 megabytes = 1,048,576 bytes). Using both definitions of a megabyte in calculations can often account for "lost" disk space. Also, this article assumes a sector size of 512 bytes in all calculations. Although a 512-byte sector has become a de facto industry standard, it is possible that disk manufacturers could produce drives with a different sector size. This would result in a corresponding change in partition limits. Partitions are based on cylinder, head, and sector calculations, not on byte calculations. Therefore, a change in bytes per sector causes a change in bytes per partition.
Article ID: 224526 - Last Review: Feb 23, 2007 - Revision: 1