Superformatting is the process of formatting a floppy disk at a capacity higher than it was originally designed or rated for.[1] While it carries a risk of data corruption or wearing out the disk, it was historically used in some floppy-based operating systems (such as specialized Linux distributions) to maximize storage and squeeze in more applications and utilities. muLinux is a notable example of a distribution that utilized this technique.
Another common use was to format low-density 3.5-inch or 5.25-inch floppies as high-density, or even extra-high density (such as HD-36) in the case of 3.5-inch disks. Superformatting is usually done via a low-level formatting process using tools like FORMAT /U in MS-DOS, fdformat, or the more advanced superformat tool in Linux.
Mechanics and extended formats
Superformatting pushes floppy disks to their physical limits by altering how sectors, tracks, and gaps are arranged. Using specialized software like superformat (part of the Linux fdutils package), a standard High-Density (HD) floppy can sometimes be formatted up to 1992 KiB, and an Extra-High Density (ED) disk up to 3984 KiB.[2]
Rotation speed sensitivity
High-capacity formats are incredibly sensitive to the exact rotation speed of the floppy drive and the resulting difference in raw data capacity.[2] Because of this, advanced superformatting tools perform a live measurement of the drive’s raw capacity before proceeding. To save time on subsequent formats, this deviation can be calculated and stored in system configuration files (such as /etc/driveprm on Linux).
“2m” formats
Superformatting often makes use of 2m formats. These formats were specifically designed to hold MS-DOS filesystems by taking advantage of data redundancy. The standard MS-DOS filesystem stores two copies of the File Allocation Table (FAT). To save space, superformatting software can drop the second copy of the FAT from the physical disk, banking on the reliability of the first copy.[2]
Advanced sector configuration
To achieve higher storage yields and optimize read/write speeds, superformatting utilities allow manual or automated overrides of low-level disk geometry.[2]
Sector skewing
To maximize the user data transfer rate, sectors are often arranged so that Sector 1 of a new track or head arrives under the drive head at the very moment the drive is ready to read it after finishing the previous track. The “skew” value describes how far sector number 1 is shifted from the physical index mark.[2]
- Absolute skew: The skew value used for the first formatted track.
- Head skew: The skew added when passing from head 0 to head 1.
- Track skew: The skew added when seeking to the next track.
Formatting gaps and sector sizes
By default, sector sizes are assumed to be 512 bytes, but superformatting can support larger sectors or utilize small auxiliary sectors (“chunks”) to handle heterogeneous sector sizes. Users can also manipulate the format gap (the physical distance between sectors) to pack data more tightly onto a track.[2]
Limitations and troubleshooting
- Physical media degradation: “Notched” disks or low-density disks forced into high-density formats will usually yield many bad sectors, especially if the formatted capacity is considerably higher (1.5 to 3 times more) than intended.
- Hardware variances: If a drive is too far out of manufacturer tolerance, verification of the superformatted disk will fail with I/O errors. Utilities like
floppymeterare often required to measure the drive’s specific tolerances.[2] - Operating system compatibility: Some extreme superformatting techniques (like zero-based sector numbering) result in disks that cannot be read or written to by standard OS APIs.[2]
Examples of superformatting commands
The following examples show how the Linux superformat utility is used to achieve custom disk capacities:[2]
| Command | Target Drive | Resulting Format |
|---|---|---|
superformat /dev/fd0 hd |
Drive 0 (3.5″) | Standard 1440 KB HD format |
superformat /dev/fd0 dd |
Drive 0 (3.5″) | Standard 720 KB DD format |
superformat /dev/fd0 sect=21 cyl=83 |
Drive 0 (3.5″) | Extended 1743 KB format (83 cylinders, 21 sectors) |
superformat /dev/fd0 tracksize=12KB cyl=83 mss |
Drive 0 (3.5″) | Extended 1992 KB format (83 cylinders, 2 heads, 12 KB per track) |
References
See also
- IBM Extended Density Format (XDF), a superformatting technique used by IBM
- Distribution Media Format (DMF), a similar format used by Microsoft
- fdformat, a program that allows the formatting of high-capacity floppy disks
- fdutils, a collection of utilities for configuring floppy drives in Linux