For a long while I had an extra partition on my Windows laptop, a second primary partition, that I had formatted as FAT32. I used it for my Knoppix /home image and whatnot.
Of late, I thought it would be useful to install Debian Sarge natively, so I set out to do exactly that. Unfortunately, when I nuked the second primary partition, created an extended partition, then created an ext3 filesystem on said partition, Windows 2000 had a cow on next boot. It seems it really misses FAT32.
With some fiddling, I managed to convince it with Disk Management that a disk letter should not be assigned to the partition, but Windows would still hang for long periods of time at boot up (an improvement over hanging every time there was disk I/O with a letter was assigned) while it searched for its long lost FAT32 filesystem.
Actually, that’s not entirely true and therein lies the solution. Windows was keying off the FAT32 signature that was still alive and well somewhere in the first two 512 byte sectors of the partition. Some fiddling with hexeditor, a ncurses based hex and disk editor, allowed me to poke around. It was pretty obvious from what was in the boot sector that merely repartitioning and using mkfs.ext3 to create an ext3 filesystem wasn’t enough to wipe the old FAT32 stuff from the first two sectors. I found gpart helpful as well to examine the partition table and look for any rogue filesystems.
Finally I merely zeroed the first two sectors of the ext3 partition, which I had not installed GRUB or lilo into and thus wouldn’t be missing. A dd if=/dev/zero of=/dev/hdc5 bs=512 count=2 later and Windows 2000 was once again ignorant that any FAT32 filesystem might be buried somewhere on my disk (hint: aren’t any now) and everyone was happy again.
I am pleased to report that no Windows 2000 installation was wounded during this experiment, though nearly so.