Marcin Policht’s latest article discusses a potential issue that can arise with today’s larger hard drives when attempting to install Windows 2000 or Windows XP on an older computer.
Those of you who have dealt with computers for more than a couple of years can probably remember a time when disk capacity was measured in megabytes. Today, even the least expensive PCs come with hard drives no smaller than a few gigabytes. Although it seems that this would be beneficial from every conceivable point of view, at least one issue should be kept in mind.
One of the ways that software communicates with underlying hardware is through firmware included in the Basic Input Output System (BIOS) chip (the other is directly via drivers). Some of this communication takes place as soon as the computer is turned on. One of the actions during this stage is reading files stored on the hard drive that are necessary to initialize the operating system. This hard drive access is handled through firmware code invoked by the interrupt 13. This code remained unchanged from the early days of PC BIOS until the late 1990s.
The problem results from the fact that the code’s addressing format limits the number of disk cylinders to 1024 (with the typical disk sector size of 512 bytes), which translates to 7.8 GB of disk space. This limitation is relevant only when the BIOS is being used for hard drive access. Newer operating systems (starting with Windows NT and Windows 98), once fully loaded, use their own storage device and file system drivers. However, since these drivers are not available in the early boot stage, the boot and system partition in Windows NT are limited to 7.8 GB.
You don’t really hear about this restriction with Windows 2000 or XP, though. The reason for that is a new standard, called Interrupt 13 extensions, that emerged in the late 1990s and pushed the drive size limit to 9 TB (which hopefully will be sufficient for the next couple of years). Post-Windows NT 4.0 Microsoft operating systems take advantage of the Int 13 Extensions, so the old limit is no longer an issue. Or is it?
Remember that for this functionality to work properly, you must have the right mix of firmware and software. An operating system cannot take advantage of the BIOS feature that does not exist in the BIOS in the first place. So be careful when installing Windows 2000 or XP on older PCs. Ensure that Int 13 Extensions are supported. If you don’t see them available, try downloading a BIOS update from the motherboard manufacturer. Otherwise, create a boot and system partitions smaller than 7.8 GB. If the operating system is already installed, use utilities such as Partition Magic to resize the drive without destroying its content.
You can also ignore the issue if your disk space utilization is low. You will run into problems only if one of the system files necessary to boot ends up beyond the limit reachable through the BIOS. This typically happens as a result of installing operating system updates on a fragmented drive. So, at the very least, regularly run the defragmentation program of your choice.
The resulting symptom typically would be a blue screen during the boot process with the message indicating that one of the critical system files is missing or corrupted. If this happens, your best bet would be to remove the hard drive from the affected computer, connect it to another system with an operating system already installed, and run defragmentation software on the drive (plus clean up the disk to ensure that file is moved below the 7.8 GB limit). After that, you should be able to put it back in the original system and boot successfully.