5.5. Floppies
A floppy disk
consists of a flexible membrane covered on one
or both sides with similar magnetic substance as a hard disk. The
floppy disk itself doesn't have a read-write head, that is included
in the drive. A floppy corresponds to one platter in a hard disk,
but is removable and one drive can be used to access different
floppies, and the same floppy can be read by many drives, whereas
the hard disk is one indivisible unit.
Like a hard disk, a floppy is divided into tracks and sectors
(and the two corresponding tracks on either side of a floppy
form a cylinder), but there are many fewer of them than on a
hard disk.
A floppy drive can usually use several different types of disks;
for example, a 3.5 inch drive can use both 720 KB and 1.44 MB disks.
Since the drive has to operate a bit differently and the operating
system must know how big the disk is, there are many device files
for floppy drives, one per combination of drive and disk type.
Therefore, /dev/fd0H1440 is the first floppy
drive (fd0), which must be a 3.5 inch drive, using a 3.5 inch, high
density disk (H) of size 1440 KB (1440), i.e., a normal 3.5 inch HD
floppy.
The names for floppy drives are complex, however, and Linux
therefore has a special floppy device type that automatically
detects the type of the disk in the drive. It works by trying to
read the first sector of a newly inserted floppy using different
floppy types until it finds the correct one. This naturally requires
that the floppy is formatted first. The automatic devices are called
/dev/fd0,
/dev/fd1, and so
on.
The parameters the automatic device uses to access a disk can
also be set using the program setfdprm
. This can
be useful if you need to use disks that do not follow any usual
floppy sizes, e.g., if they have an unusual number of sectors, or if
the autodetecting for some reason fails and the proper device file is
missing.
Linux can handle many nonstandard floppy disk formats
in addition to all the standard ones. Some of these require using
special formatting programs. We'll skip these disk types for now,
but in the mean time you can examine the
/etc/fdprm file. It specifies the settings
that setfdprm recognizes.
The operating system must know when a disk has been changed in
a floppy drive, for example, in order to avoid using cached data
from the previous disk. Unfortunately, the signal line that is used
for this is sometimes broken, and worse, this won't always be
noticeable when using the drive from within MS-DOS. If you are
experiencing weird problems using floppies, this might be the
reason. The only way to correct it is to repair the floppy drive.