Formatting big external disks so that they can be read and written in all operating systems: Windows, Linux, and Mac

The Problem:

Windows prefers to use the NTFS filesystem for all disks, and does not let you format large disks in any other fielsystem. Windows refuses to use anything except NTFS to format an external disk if it is bigger than 32 Gbytes.

Macs will read but not write the NTFS file system

Linux systems vary, but most will not guarantee to write NTFS properly.

The Solution:

The old Windows FAT32 filesystem (also called vfat, which is the linux name for the same thing) can be read and written by all the operating systems. The only problem is that you have to use Linux to format your USB disk since Windows refuses to do so out of shear perversity. The relevant linux commands are fdisk (to create a partition) and mkfs (to make the vfat filesystem).

Run the hardware monitor program and take note of the names of the existing disks.

Then put your new disk in a USB-2 enclosure (if it doesn't come in an enclosure already) and plug it into a USB-2 port on one of the Linux systems such as pc40 in the prep room.

If it mounts itself automatically, run cat /proc/mounts (the filesystem type is the third argument listed for each disk; most linux disks are type ext3) to check to see if it is already a vfat filesystem. If so, you are done. If not, then right-click on the disk icon and dismount (or "eject") it.

Look in the hardware monitor to find out the name of the new disk that was detected after you plugged in your USB disk. It will normally be something like /dev/sdc.

Create a partition on the new disk using the fdisk program, by typing fdisk /dev/sdc (if the new disk is /dev/sdc). First read the manual page for fdisk. Do not run fdisk on any of the existing disks that were already on the machine before you plugged in your new USB disk; if necessary, unplug the new one and make sure that the name you think it is disappears from the hardware monitor's list.

Commands within fdisk are l to list the existing partition table (usually absent on a new disk), m to get help on the other commands. You want to create a single partition the size of the entire disk (maximum size) of type "b" (Windows95, not LBA). the partition will automatically be named /dev/sdc1 if the disk is /dev/sdc. Write the new partition info onto the disk with the w command, and exit fdisk.

Make a vfat filesystem on the new partition by typing mkfs -t vfat /dev/sdc1 (assuming that /dev/sdc1 is the name of the new partition that you just created). It only takes a minute or two.

Power down the disk or unplug it from the USB. Wait a few minutes. Then plug it in again. The linux system generally will automatically mount it as /media/disk. Generally you can right-click to unmount the disk.

Alternatively, you can use the mount and umount commands from a terminal window. To see what is mounted use the df -h command. To mount something, if the disk does not mount itself automatically, you use the mount command in a line like mount -t vfat /dev/sdc1 /mnt/disk. You then refer to the files on the disk as directories within /mnt/disk. To unmount something, use the umount command on either the device name (such as umount /dev/sdc1) or else on the name of the mount point (such as umount /mnt/disk). You can not be inside a directory on the disk that you want to unmount, or you will get the error message "mount device busy".

You can now plug this disk into computers running any of the operating systems, and it will be available for full read-write use. These disks seem to write at only about 25 Mbyte/sec, so writing Gbytes can take a while.