--->Diese Seite gibts auch in Deutsch.

Accessing harddisks bigger than 8GB/32GB/64GB/128GB without a new BIOS or a diskmanager

Having a PC bought some years ago which still works well there is only one thing the user wants to upgrade: The harddisk got too small for all the data on it. Today it does not make much sense purchasing a disk drive with less than 20 GB space on it, but you may wonder if your PC can handle all of it or just the first 8 GB.

The simplest case would be if the BIOS already has support for such drives or if there is a BIOS update for your mainboard which can be installed in a few of minutes (read Wimīs BIOS page for details) .
But what to do if there isnīt a new BIOS or if the manufacturer is unknown? Some hard disk drive manufacturers provide disk managers which install the missing BIOS functions, but they are not unproblematic:

How to access the entire drive

Some theory first

The 8GB problem

The 8GB limit only applies to the longtime standard BIOS functions. In order to access bigger drives, some extensions were added to them (the so-called INT13h-extensions, INT 13h are the functions to access the disk drive via BIOS). Operating systems not aware of these extensions like MS-DOS 6 are still limited to the lower 8 GB even with a new BIOS.

Since the 16 bit BIOS services require quite a high overhead to be used within a 32 bit operating system, all newer operating systems (Windows 3.11/ Win9x, NT, Linux, BeOS and other UNIXes) use special drivers for accessing the disk drive interface hardware directly. The BIOS is only used if there isnīt an appropriate driver.
Unless you do not use a very exotic or outdated piece of hardware the BIOS is bypassed by these drivers. The BIOS is only used while the operating system is loading, and only at that time the disk drive access is limited to the lower 8 GB!

So only the operating system data has to be below the 8 GB barrier. The most secure way to do this is putting the operating system onto a partition which lies completely within the first 8 GB. It is also a good idea not to create a partition which uses both space below and above 8 GB, since its size would not be complete if BIOS or DOS accesses it, thus causing problems if a directory or a file position crosses the 8 GB border.

The 32GB/64GB problem

Like the 8GB problem, the 32GB/64GB problem is also a BIOS limitation. The BIOS fails initializing harddrives beeing larger than 32GB and causes the system to lock up during the boot process. See Petr Soucekīs page for details.

The 128GB problem

This is a limitation in the EIDE hardware. Luckily, it can be circumvented completely on the harddisk side of the EIDE system, so you only need a current driver supporting such disks. Windows2000 with ServicePack 4 allows enabling support for drives larger 128GB by setting the registry dword value EnableBigLba to 1 in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters branch. WindowsXP has a built-in driver for it since ServicePack 2, and there is even a shareware solution for Win9x.

See 48bitLBA.com for more information about IDE addressing above 128GB.

Step by step solution of the 8GB problem

We have to divide the harddisk space into 2 parts:

Space under 8 GB

The easiest way looks like this:
For creating the partition(s) below 8 GB use a partitioning tool relying on the BIOS functions. That ensures not crossing the 8 GB barrier, since these programs treat harddisks bigger than 8 GB like 8 GB ones. DOS-FDISK (also used in Win9x) is one of these, under Linux it depends whether the installation system is using standard or enhanced drivers.
Using FDISK, select the entire harddisk (which, in this case means 8 GB = 100%).

Place above 8 GB

Now a operating system with working 32 bit harddisk drivers and a partitioning program using these drivers is required. I am not aware if 3rd party software for Windows can do the job, if you do please let me know. Same goes for UNIX/Linux. WindowsNT/2000/XP features a drive manager which should work fine. Otherwise try one of the following workarounds:

The hardware way

If you have access to a computer which does support drives larger than 8GB directly, you can temporarily install the drive into this one and finish creating partitions there. Keep additional jumpers, IDE cables and maybe Y-power cables or a laptop-harddisk adapter handy, if needed.

The software way

You can create new partitions using the disk management of a running Windows 2000 or XP, which however lacks flexibility, or use the partitioning tools available on many Linux-Live or installation discs. Make sure that these do not rely on the BIOS, though!

A really good partitioning program comes along with the free operating system BeOS Personal Edition (BeOS-Homepage). It requires 500 MB within an existing partition. If you do not want to download the 40-50 MB installation package you may be able to find it on older CDs of common computer magazines.
After starting BeOS you can find the partitioning tool at Preferences -> DriveSetup. It shows all drives detected, including the harddisk. Via clicking on it the entries in the partition table can be seen (Note: if you created more than 2 partitions under DOS you may only see 2 since FDISK puts all following partitions into the second one which is therefore called extended partition). 4 entries are possible, one or two of them are normally marked as used (the ones created with FDISK). Make sure the partitions are NOT mounted.
Selecting Setup -> Partition -> Intel one accesses the partitioning dialogue:
The graphic shows the current partitioning state. In order to change them, the corresponding lock at the left has to be open (open and close them by clicking on them). Attention: Do not change existing partitions if you want to keep the data on them! If you are already using these partition(s) take special care since modifying them will cause their data to be lost.
Using the mouse you can assign the unused space to one or more of the remaining partitions, start and end of them are displayed both graphically and in numerics. Then select an appropriate partition type (for Windows 95/98/ME select: DOS 32 Bit FAT (LBA)).
If you are unsure if you have done everything the right way you can cancel it and start it again. Compared to FDISK under DOS or Linux the BeOS program is a really easy and most safe to use.

Resumee

Now the rest of the harddisk can be used, except under DOS (note that you still have to keep your operating system(s) itself in the partition(s) below 8 GB). Of course, do not forget to format the new partition before using it ;-)

Solving the 32GB/64GB problem

Some drives allow limiting their capacity to 32GB (by using a jumper or a software tool) in order to make them usable on older computers. However, this is only acceptable if only a small percentage of the disk capacity is lost: There is no way to access the rest of it as long as the limit is set. One might also buy a new mainboard, but this is a rather expensive solution.

The secondary controller method

Instead of using the onboard EIDE controller, one might also buy a new EIDE controller with a BIOS supporting larger drives. Such controllers are also fully bootable.

But there is a cheaper method: Some mainboards support switching the secondary EIDE controller of in the BIOS setting while still allowing it to be enabled within the EIDE driver of the operating system.

Many older PCs contain a soundcard with a built-in IDE-CDROM interface. It is also possible to connect a harddisk to this controller! Since this controller is initialized after the BIOS boot procedure, the BIOS limits do not take effect. The disk drive will be accessible under any OS supporting such additional interfaces like Windows95 and later as well as many Unixes. The drawback of this no-cost method is that the new drive wonīt be bootable, and the soundcard IDE interfaces are slower (a few MB/sec) than their onboard or add-on counterparts.

The second disk method

A possible workaround is based on the idea, that one does not include the new drive in the BIOS setup. It wonīt try to initialize the drive then, but it wonīt boot from it either. Thus, one has to keep a bootable drive (e.g., the old one) in the computer.

First, set the position of the new drive in the BIOS setup to NONE. The status of other drives remains unchanged. You should do this before installing the new drive, or you might not be able to access the BIOS setup without uninstalling it again.

Next step is to install the new disk as a master or slave drive according to the BIOS setting.

After power on, the system should behave as it did without the new drive. There shouldnīt be any notice that something has changed at all. Now it is the task of the operating system to scan the EIDE bus for all drives and detect all of them. However, this will only work if the operating system does not rely on the BIOS! Suitable operating systems are e.g. Windows2000 and XP, but not Windows95 or DOS.

Resumee

The workaround described is most likely to be used for drives only beeing used for storing data and applications used under suitable operating systems. These also provide the tools for partitioning the disk.

Notes

Mail the Author: webmeister@deinmeister.de
Additional support provided by Henrik Epstein

Homepage Programming Win32Asm Downloads Software Hardware Cartoons Sitemap