I have a 32 Gig Corsair flash drive that I just got. I figured I would make 2 partitions. One for a bootable SystemRescueCD install and the rest of the flash drive for storage. The first partition will be for SystemRescueCD and will be fat32. The second partition will be NTFS. I Partitioned it with fdisk and made both filesystems with mkfs.vfat and mkfs.ntfs. No problems. I put SystemRescueCD on the first partition and it booted fine.
I mount the NTFS partition in linux and write some files to so I can take them to a friends house. She puts it in her windows machine and it mounts the SystemRescueCD partiton. That's it. So I look in disk manager and I can see the second partition and it says "Healthy". I right click and try to assign a drive letter to the partition. Windows XP errors out and says the partition is not "activated" and I have to reboot to activate it. Rebooting does not help. So I have to boot into SystemRescueCD (now I'm glad I had it) and mount up her C drive and my NTFS flash partition so I could copy over the files.
I thought it was me but I find out this is a limitation with Windows XP (not sure about Vista). On the Corsair forum I found a this post by someone with the same problem. People tell him that Windows XP has a limitation with removable disks. It will only recognize the first partition on a removable disk. WHAT KIND OF CRAPPY M$ MOVE IS THAT!! So the "fix" is to flip a bit in the flash drives firmware so it reports to Windows as a fixed disk. Then you can magically assign all partitions drive letters. Problem is Corsair will not give out the software to flip this bit. I will not fault Corsair for Windows XP's shortcomings but a little help would be a nice customer friendly move.
There is a way to hack the windows drive to make it recognize the removable disk as a fixed disk but you would have to do this for every windows machine you visit. That's a bit of a pain. Screwed over my M$ again. This limitation might be old news to most people but for us Linux guys who don't get into the Windows world much it's just something we assume will work with Linux and it does.
The best workaround I have found is to just put the NTFS partition as the first partition and the SystemRescueCD partition as the second partition. Then just install syslinux to the second partition and make sure you set the partition with the bootable flag. See my entry on SystemRescueCD to check out how to do this.