I have an external device which mounts as an external drive and which I must format in FAT, not FAT32, for use elsewhere. Is there a way to do that from Snow Leopard?


This should do the trick:

In Terminal:

diskutil eraseDisk MS-DOS <newname> <diskID>

where is the new name for the disk and is the disk identifier (you can find this by getting the disk info from Finder or Disk Utility, or by typing "diskutil list" into Terminal).


If you tell OS X to format a disk or volume in "MS-DOS" format, it'll try to choose the "best" option from FAT12, FAT16, or FAT32, based on the volume's size. If you need to override its choice, you have to use the command-line diskutil command with a more explicit volume format like "MS-DOS FAT16". Here's an example:

$ diskutil info /Volumes/UNTITLED/
   Device Identifier:        disk2s1
   Device Node:              /dev/disk2s1
   Part of Whole:            disk2
   [...]

   File System Personality:  MS-DOS FAT32
   Type (Bundle):            msdos
   Name (User Visible):      MS-DOS (FAT32)

   Partition Type:           DOS_FAT_32

...note that at this point, I could either erase & reformat just the volume (disk2s1) or the entire disk (disk2). If the disk isn't partitioned into multiple volumes, it doesn't make much difference. I'll do the whole disk for demo purposes:

$ diskutil erasedisk "MS-DOS FAT16" CUSTOMVOL disk2
   Started erase on disk2
   $<3>Unmounting disk
   $<3>Creating the partition map
   $<3>Waiting for the disks to reappear
   $<3>Formatting disk2s1 as MS-DOS (FAT16) with name CUSTOMVOL
   $<3>512 bytes per physical sector
   /dev/rdisk2s1: 1999456 sectors in 62483 FAT16 clusters (16384 bytes/cluster)
   bps=512 spc=32 res=1 nft=2 rde=512 mid=0xf8 spf=245 spt=32 hds=128 hid=40 drv=0x80 bsec=1999984
   $<3>Mounting disk
   $<3>Finished erase on disk2

$ diskutil info /Volumes/CUSTOMVOL
   Device Identifier:        disk2s1
   Device Node:              /dev/disk2s1
   Part of Whole:            disk2
   Device / Media Name:      CUSTOMVOL
   [...]

   File System Personality:  MS-DOS FAT16
   Type (Bundle):            msdos
   Name (User Visible):      MS-DOS (FAT16)

   Partition Type:           Microsoft Basic Data

Note that you can use diskutil listFilesystems to get a complete list of the volume formats it knows about.