[nSLUG] External hard drive problems

Daniel Morrison draker at gmail.com
Thu Mar 13 17:58:39 ADT 2008

On 13/03/2008, Jim Haliburton <jim at on-site.ns.ca> wrote:

>  This Knowledge base article, # 314463 on Microsoft.com,  indicates that
>  XP cannot create or format FAT32  larger than 32Gb but it can read larger
>  than 32 GB.  Maximum cluster size is 32kb.
>  If the partition has been created with a cluster size larger than 32kb it
>  will fail.

>  If you use Win98 SE or Win ME (sic) you can create a partition larger
>  than 32Gb which XP can read and write.  It wil have the correct maximum
>  cluster size for the partition size you select.

Thank you for this extra info.

It sounds like this could be done with Linux and mkdosfs, with the
appropriate paramaters.

Default sector size is 512 bytes, so it would be possible to fit 64
sectors into a cluster without exceeding a 32kB cluster size.

mkdosfs -F 32 -s 64 -S 512 -v /dev/hda1


-F 32 : you must explicitly request FAT32, else it will be FAT12 or FAT16
-s 64 : 64 sectors per cluster
-S 512 : 512 byte sector size
-v     : verbose execution, always good
/dev/hda1 : example device to create the filesystem on

I haven't tried to do this for real, so don't blame me if it doesn't work.
I was, however, able to do it with the '-C' option (create sparse
filesystem in a file).  I asked for a 250 GB filesystem, but since it was
created sparsely, it ended up only using 63 MB of actual disk space.

Like this:

$ mkdosfs -F 32 -s 64 -S 512 -v -C /tmp/disk 262144000
mkdosfs 2.11 (12 Mar 2005)
/tmp/disk has 64 heads and 32 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 524288000 sectors;
file system has 2 32-bit FATs and 64 sectors per cluster.
FAT size is 63985 sectors, and provides 8189999 clusters.
Volume ID is 47d99402, no volume label.

$ ls -lh /tmp/disk
-rw-rw-r-- 1 draker users 250G 2008-03-13 17:52 /tmp/disk

$ du -sh /tmp/disk
63M     /tmp/disk

# mount -o loop /tmp/disk /mnt/hd

# df -h /mnt/hd
Filesystem            Size  Used Avail Use% Mounted on
/tmp/disk             250G   32K  250G   1% /mnt/hd

# mount | grep loop0
/tmp/disk on /mnt/hd type vfat (rw,loop=/dev/loop0)

Hope this might be helpful.  If anyone does this, let us know if WinXP
handles it OK...


More information about the nSLUG mailing list