You are on page 1of 5

Note If you find fat32format a bit fiddly to use or these instructions a bit hard to follow you

should try the replacement for fat32format. It is a Windows application with a GUI. Try it
here

I recently got a SATA 250GB disk for testing FATLIB. It turns out that Windows XP won't
let you format a volume bigger than 32GB with FAT32. I could use NTFS, but that's not what
I FATlib supports. In fact, NTFS can only be written safely by Windows XP - there are as far
as I know no other drivers for other OS's, unlike FAT which is supported by virtually
anything.

As Microsoft put it here

You cannot format a volume larger than 32 gigabytes (GB) in size using the FAT32 file
system during the Windows XP installation process. Windows XP can mount and support
FAT32 volumes larger than 32 GB (subject to the other limits), but you cannot create a
FAT32 volume larger than 32 GB by using the Format tool during Setup. If you need to
format a volume that is larger than 32 GB, use the NTFS file system to format it. Another
option is to start from a Microsoft Windows 98 or Microsoft Windows Millennium Edition
(Me) Startup disk and use the Format tool included on the disk.

Using Windows 98 obviously opens up other issues - It doesn't support USB 2.0 or SATA as
far as I know. Formatting a huge disk will take ages. It suports IDE, but not 48bit LBA, which
is required for drives greater than 137GB. Also, you need to patch format.exe and fdisk to
work with disks greater than 64GB. Even then scandisk will corrupt large disks unless you
disable it. It can be done, but basically, this is ancient 16 bit code, and using it on modern
hardware is not a good idea. There is a port of mkdosfs from Linux to Win32. I tried it, and
chkdsk complained about being unable to test a RAW filesystem. It also uses funny cluster
sizes, only 4K for normal sized disks.

Actually, looking back at the Microsoft comment, if I could format the volume myself, all
would be OK. Fat32 is pretty simple, so it occured to me to write a fast format routine to do
the job. Note that the 32GB limit is a limit of the formatter in Windows XP. FAT32 itselft
should be OK to 2TB, limited by a 32 bit sector count in the boot sector. XP comes with a
partitioning tool, called Disk Management. It even has Wizards for partitoning. This should
be a cinch.

I've tested this with a SATA disk as follows. Power off the computer and connect the disk.
Power up again - check the Bios finds it. If you have a IDE or SATA disk, make sure you
power off before connecting, USB and Firewire ones can be connected with the power on.

Click Start menu, select Run and enter diskmgmt.msc

If it asks you to initialise the disk, make sure you select a Basic disk, as opposed to a
Dynamic.

There's a guide on Disk Management here You need to find the disk with unallocated space.
Right click on it and select "New Partition" and follow these steps, clicking "Next" to get
move on at each stage.

1. Partition Wizard starts, just click next to move on


2. Select Primary Partition.
3. Enter the maximum size for the Partition Size
4. Choose assign a drive letter. I used F:
5. Select "Do not Format this partition"
6. There will be a dialog box, summarising all the previous stuff. Click Finish

Now you have a drive letter, this is what we will pass to the formatter

Now download a copy of fat32format. Extract the single EXE file to somewhere suitable, like
C:\.

Click Start->Run and enter

cmd

When the command prompt opens, type this - C:\ is the place you extracted the exe file to.
Note if this sort of command line stuff makes your head hurt, you should probably give this a
try instead

CD /D C:\

press enter and then type this. You need to replace f: with the drive letter you are trying to
format.

fat32format f:

You should see this displayed

Warning ALL data on drive 'f' will be lost irretrievably, are you sure
(y/n)

Now when it says this, it really means it. If you format the boot sector, FATs and root
directory will be filled with zeros. By typing pressing Y and hitting return, you're also
absolving me of liability for whatever was on the disk before.

Assuming you don't bail out at this point you should see something like this -

Warning ALL data on drive 'f' will be lost irretrievably, are you sure
(y/n) :y
Size : 250GB 488392002 sectors
512 Bytes Per Sector, Cluster size 32768 bytes
Volume ID is 1bdb:2c1d
32 Reserved Sectors, 59604 Sectors per FAT, 2 fats
7629261 Total clusters
7629260 Free Clusters
Formatting drive f:...
Clearing out 119304 sectors for Reserved sectors, fats and root
cluster...
Wrote 61083648 bytes in 0.988463 seconds, 61796609.106193 bytes/sec
Initialising reserved sectors and FATs...
Done
This means that all has gone according to plan. It should take about 4 seconds per Terabyte to
format the disk. You can run chkdsk f: at this point if you're curious, and see something like
this -

The type of the file system is FAT32.


Volume Serial Number is 1BDB-2C1D
Windows is verifying files and folders...
File and folder verification is complete.
Windows has checked the file system and found no problems.
244,136,352 KB total disk space.
244,136,320 KB are available.

32,768 bytes in each allocation unit.


7,629,261 total allocation units on disk.
7,629,260 allocation units available on disk.

This shows that my calculations match up with the ones inside Windows, which is good news

It is also possible to set the cluster size with a -cN parameter where N is the number of sectors
per cluster. On a hard disk, which is the only sort we support, one sector is 512 bytes. The
cluster size will be N times 512. I played around with this, and it seems that Windows XP
supports small cluster sizes, except that chkdsk runs very slowly, presumably because it needs
to read the huge FAT that results from these settings. Given the nature of FAT32, you can't
reduce the cluster size such that the number of clusters is more than 228. I'd recommend using
the default cluster sizes, which are the Microsoft recommended ones, unless you need to force
them for testing or something

You can download either just the fat32format binary ~20K or the fat32format binary and
source ~30K The source code can be compiled with Vistual Studio 6.0 or later. The current
version number is 1.01.

There are a couple of things you need to know before running fat32format. You need to have
Administrator rights on XP for it to work, since it opens the drive in raw write mode. You
also need to make sure that there are no open files on the volume - if there are you will see a
message like this -

Warning ALL data on drive 'f' will be lost irretrievably, are you sure
(y/n) :y
Failed to open device - close any files before formatting
Are you SURE you're formatting the RIGHT DRIVE!!!

Incidentally, if you are running admin and it still complains about open files, you can use
Process Explorer to find out which process is guilty. Run it, Press Ctrl+F and enter the drive
letter, e.g. E: and close any processes that have it open

This should make it a bit harder to lose data, assuming that you have at least one open file on
the drives with data you want to keep. The drive that Windows is currently running from will
have lots of files open - the pagefile, registry etc. I usually keep an Explorer.exe open in the
root directory of any other drives to block format from running. Finally, it will only work with
hard disks with 512 bytes per sector. If you have a DVD-Ram disk, format using the
Windows formatter. If you have an optical disk drive bigger than 32GB, send me a sample
and I'll port to it.
One last thing - fat32format is designed to format disks quickly. It doesn't check for bad
sectors. If you need integrity checks, run a chkdsk /R f: after the format.

Finally and most importantly, it isn't possible to recover your data if you format the wrong
disk, be careful using it. It is licensed under the GPL license - you may distribute source and
binaries. You can build it into an open source application. If you want to build it into a closed
source application you should approach me for licensing it under a BSD style license for a
fee.

Update

If you find this software useful, please send me an some money via Paypal. I've had >170000
downloads, and a lot of emails, 99% successes. There are some fails, but they seem to be with
hard drives which nothing else can write to either. If you have this, try to testing combinations
to find out which is causing the problem. E.g. if you have Disks A and B and USB cases C
and D, try the combinations AC, AD, BC and BD to work out which is bad. Return the bad
component for a replacement, and you're good to go. If you bought a single unit, try getting it
replaced.

Update 2

As of now, fat32format has worked on disks from 40GB to 2TB

Interfaces tested include IDE/PATA, SATA, eSATA, USB and Firewire

The formatted disks work on XP, Mac, Linux, the iPod (40gb), various Nas boxes and
mediaplayers and Norton Ghost 2003

Formatting works on Windows 2000, Windows XP, and Windows Server 2003 and Vista.
Note that Windows 9x/Me are not supported and do not work, but you can use the format.exe
supplied with them instead

If it fails send me an email, please put FAT32 in the subject.

Update 3

If you have problems creating partitions bigger than 137GB on an ATA (IDE) disk connected
to the motherboard, make sure you have SP1 or later and an LBA48 compatible bios. Check
your motherboard site for a bios update.

Vista

fat32format works with Vista. The UI has changed a bit when creating drives and UAC makes
the whole process a bit more cumbersome.

To create drive letters, Right Click on My Computer and Select Manage. UAC prompts you to
escalate privileges, do so. You can right click on empty drives and Initialize them. Once
you've done that you can create new volumes by right clicking on them and selecting New
Simple Volume. Fast formatting them with NTFS is quick and should detect a completely
dead drive.
If you have Vista there is a quick way to get an Admin cmd prompt. Click the Start button/
Windows flag in the bottom left of the screen and enter cmd like on XP but press
Ctrl+Shift+Enter, you'll get a privilege escalation dialog click OK and you end up with an
Admin command prompt, helpfully labelled as Administrator:
C:\Windows\system32\cmd.exe

This is the best way to run fat32format. It's always been Admin only, it's just that on XP most
power users ran with Admin rights all the time.

Versions

1.02
A couple of people asked me about 64K cluster size. There are compatibility problems with
this, as 16 bit set up programs sometimes assume that the cluster size will fit in a 16 bit
integer. When calculating disk space, they thus end up with a value of zero. Fat32format
disables cluster sizes bigger than 32K for this reason. However, some people need this, so the
current version has the check disabled. You still need to force the cluster size by hand though,
e.g. fat32format -c128 f:
1.03
Fixes for making partitions created above sector 0xffff bootable, and a cosmetic fix for the
drive size printout when formatting drives bigger than 1TB ( 0x7fffffff sectors )
1.04
Fix for "Failed to set partition info". Some drives have no partition table, so you can't set the
the partition type.
It was possible to set the cluster size too high resulting in too few clusters, or too high
resulting in too many - fat32 must have between 2^16 and 2^28 clusters because of various
compatibility considerations. Added code to check that.
Fixed an error where it crashes if people use /? to get help
1.05
Added support for bytes per sector values of other than 512
1.07
GPT support, fix for boot sector when using Windows AIK's bootsect.exe,
FSCTL_ALLOW_EXTENDED_DASD_IO

You might also like