fd(7D) manual page
Table of Contents
fd, fdc - drivers for floppy disks and floppy disk controllers
/dev/diskette0/dev/rdiskette0
/dev/diskette[0-1]/dev/rdiskette[0-1]
The fd driver provides
the interfaces to the floppy disks using the Intel 82072 on sun4c systems
and the Intel 82077 on sun4m systems.
The fd and fdc drivers provide the
interfaces to floppy disks using the Intel 8272, Intel 82077, NEC
765,
or compatible disk controllers on x86 and PowerPC systems.
The default partitions
for the floppy driver are:
a | All cylinders except the last |
b | Only the last
cylinder |
c | Entire diskette |
The fd driver autosenses the density of the diskette.
When the floppy is first opened the driver looks for a SunOS label in logical
block 0 of the diskette. If attempts to read the SunOS label fail, the
open will fail. If block 0 is read successfully but a SunOS label is not
found, auto-sensed geometry and default partitioning are assumed.
The fd
driver supports both block and raw interfaces. The block files access the
diskette using the system’s normal buffering mechanism and may be read and
written without regard to physical diskette records. There is also a "raw"
interface that provides for direct transmission between the diskette and
the user’s read or write buffer. A single read(2)
or write(2)
call usually
results in one I/O operation; therefore raw I/O is considerably more efficient
when many words are transmitted.
For 3.5" double-sided diskettes,
the following densities are supported:
- 1.7 Mbyte density
- 80 cylinders,
21 sectors per track, 1.7 Mbyte capacity
- high density
- 80 cylinders, 18 sectors
per track, 1.44 Mbyte capacity
- double density
- 80 cylinders, 9 sectors per
track, 720 Kbyte capacity
- medium density
- 77 cylinders, 8 sectors per track,
1.2 Mbyte capacity (sun4m only)
- extended density
- 80 cylinders,
36 sectors per track, 2.88 Mbyte capacity
- 1.7 Mbyte density
- 80 cylinders,
21 sectors per track, 1.7 Mbyte capacity
- high density
- 80 cylinders, 18
sectors per track, 1.44 Mbyte capacity
- double density
- 80 cylinders, 9 sectors
per track, 760 Kbyte capacity
For 5.25" double-sided diskettes,
the following densities are supported:
5.25" diskettes are not supported.
- high density
- 80 cylinders, 15 sectors per track, 1.2 Mbyte
capacity
- double density
- 40 cylinders, 9 sectors per track, 360 Kbyte capacity
- double density
- 40 cylinders, 8 sectors per track, 320 Kbyte capacity
- quad
density
- 80 cylinders, 9 sectors per track, 720 Kbyte capacity
- double density
- 40 cylinders, 16 sectors per track (256 bytes per sector), 320 Kbyte capacity
- double density
- 40 cylinders, 4 sectors per track (1024 bytes per sector),
320 Kbyte capacity
- EBUSY
- During opening, the partition has been
opened for exclusive access and another process wants to open the partition.
Once open, this error is returned if the floppy disk driver attempted to
pass a command to the floppy disk controller when the controller was busy
handling another command. In this case, the application should try the
operation again.
- EFAULT
- An invalid address was specified in an ioctl command
(see fdio(7I)
).
- EINVAL
- The number of bytes read or written is not a multiple
of the diskette’s sector size. This error is also returned when an unsupported
command is specified using the FDIOCMD
ioctl command (see fdio(7I)
).
- EIO
- During opening, the diskette does not have a label or there is no
diskette in the drive. Once open, this error is returned if the requested
I/O transfer could not be completed.
- ENOSPC
- An attempt was made to write
past the end of the diskette.
- ENOTTY
- The floppy disk driver does not support
the requested ioctl functions (see fdio(7I)
).
- ENXIO
- The floppy disk device
does not exist or the device is not ready.
- EROFS
- The floppy disk device
is opened for write access and the diskette in the drive is write protected.
- ENOSYS
- The floppy disk device does not support the
requested ioctl function ( FDEJECT
).
The driver attempts to initialize itself using the information
found in the configuration file, /kernel/drv/fd.conf.
name="fd" parent="fdc" unit=0;
name="fd" parent="fdc" unit=1;
The driver attempts to initialize itself using the information found
in the configuration file, /platform/prep/kernel/drv/fd.conf.
name="fd" parent="fdc" unit=0 density="DSHD" size=3;
name="fd" parent="fdc" unit=1 density="DSHD" size=3;
- /kernel/drv/fd
- driver module
- /usr/include/sys/fdreg.h
- structs and definitions for Intel 82072 and 82077
controllers
- /usr/include/sys/fdvar.h
- structs and definitions for floppy drivers
- /dev/diskette
- device file
- /dev/diskette0
- device file
- /dev/rdiskette
- raw device file
- /dev/rdiskette0
- raw device file
For ucb compatibility:
- /dev/fd0[a-c]
- block file
- /dev/rfd0[a-c]
- raw file
- /vol/dev/diskette0
- directory containing volume management character
device file
- /bol/dev/rdiskette0
- directory containing the volume management
raw character device file
- /vol/dev/aliases/floppy0
- symbolic link to the
entry in /vol/dev/rdiskette0
- /kernel/drv/fd
- driver module
- /kernel/drv/fd.conf
- configuration file for floppy driver
- /kernel/drv/fdc
- floppy-controller driver
module
- /kernel/drv/fdc.conf
- configuration file for the floppy-controller
- /usr/include/sys/fdc.h
- structs and definitions for x86 floppy devices
- /usr/include/sys/fdmedia.h
- structs and definitions for x86 floppy media
- /platform/prep/kernel/drv/fd
- driver module
- /platform/prep/kernel/drv/fd.conf
- configuration file for floppy driver
- /platform/prep/kernel/drv/fdc
- floppy-controller
driver module
- /platform/prep/kernel/drv/fdc.conf
- configuration file for
the floppy-controller
- /usr/include/sys/fdc.h
- structs and definitions for
PowerPC floppy devices
- /usr/include/sys/fdmedia.h
- structs and definitions for PowerPC floppy media
- x86 and PowerPC First Drive:
- /dev/diskette
- device file
- /dev/diskette0
- device file
- /dev/rdiskette
- raw device file
- /dev/rdiskette0
- raw device file
For ucb compatibility:
- /dev/fd0[a-c]
- block file
- /dev/rfd0[a-c]
- raw file
- /vol/dev/diskette0
- directory containing volume management character device
file
- /bol/dev/rdiskette0
- directory containing the volume management raw
character device file
- /vol/dev/aliases/floppy0
- symbolic link to the entry
in /vol/dev/rdiskette0
- x86 and PowerPC Second Drive:
- /dev/diskette1
- device file
- /dev/rdiskette1
- raw device file
For ucb compatibility:
- /dev/fd1[a-c]
- block file
- /dev/rfd1[a-c]
- raw file
- /vol/dev/diskette1
- directory containing volume management character
device file
- /bol/dev/rdiskette1
- directory containing the volume management
raw character device file
- /vol/dev/aliases/floppy1
- symbolic link to the
entry in /vol/dev/rdiskette1
fdformat(1)
, dd(1M)
, drvconfig(1M)
,
vold(1M)
, read(2)
, write(2)
, driver.conf(4)
, dkio(7I)
, fdio(7I)
- fd<n>: <command name> failed (<sr1> <sr2> <sr3>)
- The <command name> failed
after several retries on drive <n>. The three hex values in parenthesis are
the contents of status register 0, status register 1, and status register
2 of the Intel 8272, the Intel 82072, and the Intel 82077 Floppy Disk Controller
on completion of the command as documented in the data sheet for that part.
This error message is usually followed by one of the following, interpreting
the bits of the status register:
- fd<n>:
- not writable
- fd<n>:
- crc error blk
<block number>
There was a data error on <block number>.
- fd<n>:
- bad format
- fd<n>:
- timeout
- fd<n>:
- drive not ready
- fd<n>:
- unformatted diskette or no diskette in drive
- fd<n>:
- block <block number> is past the end! (nblk=<total number of blocks>)
The operation tried to access a block number that is greater than the total
number of blocks.
- fd<n>:
- b_bcount 0x<op_size> not % 0x<sect_size>
The size of an operation is not a multiple of the sector size.
- fd<n>:
- overrun/underrun
- fd<n>: host bus error
There was a hardware error on a system bus.
Overrun/underrun errors
occur when accessing a diskette while the system is heavily loaded. Decrease
the load on the system and retry the diskette access.
3.5" high density
diskettes have 18 sectors per track and 5.25" high density diskettes have
15 sectors per track. They can cross a track (though not a cylinder) boundary
without losing data, so when using dd(1M)
to or from a diskette, you should
specify bs=18k or multiples thereof for 3.5" diskettes, and bs=15k or multiples
thereof for 5.25" diskettes.
The SPARC fd driver is not an unloadable module.
Under Solaris for x86, the configuration of the floppy drives is specified
in CMOS
configuration memory. Use the BIOS
setup program or an EISA
or
MicroChannel configuration program for the system to define the diskette
size and density/capacity for each installed drive. Note that MS-DOS
may
operate the floppy drives correctly, even though the CMOS
configuration
may be in error. Solaris for x86 relies on the CMOS
configuration to be
accurate.
Under Solaris (PowerPC Edition), the configuration of the floppy
drives is specified in the configuration file.
Table of Contents