It took a little digging around, but I discovered the solution. Linux apparently treats a disk partition, regardless how large, as a _file_, and subject to the 2GB file size limitation (2**31 - 1 bytes). However, it handles an entire disk as something else again, and allows writes to it beyond the 2GB boundary. By using fdisk's expert mode to determine exactly how many sectors there were between the MBR/partition table and the start of the hdb1 partition, I then did the following: # dd bs=512 if=/dev/hdb of=cyl0 count=63 #actually only 1 track # cat cyl0 hda1a hda1b | dd of=/dev/hdb 8193149+0 records in 8193149+0 records out Success! And /dev/hdb1 is correctly mountable as a VFAT filesystem. After thinking a bit about it, I probably could have skipped the "cyl0" step and just done: # cat hda1a hda1b | dd bs=512 of=/dev/hdb seek=63 Thanks to those who responded. Jim