fdread
— read
floppy disks
fdread |
[-qr ] [-d
device] [-f
fillbyte] [-o
file] |
fdread |
[-d device]
-I numsects
[-t trackno] |
The fdread
utility reads floppy disks.
Effective read blocking based on the track size is performed, and
floppy-specific error recovery of otherwise bad blocks can be enabled.
The fdread
utility will always read an
entire floppy medium, and write its contents to the respective output file.
Unlike other tools like
dd(1),
fdread
automatically uses a read block size that is
more efficient than reading single blocks (usually one track of data at a
time), but falls back to reading single floppy sectors in case of an
input/output error occurred, in order to obtain as much valid data as
possible. While fdread
is working, kernel error
reporting for floppy errors is turned off, so the console and/or syslog are
not flooded with kernel error messages.
The fdread
utility accepts the following
options:
-q
- Turn on quiet mode. By default, the medium parameters of the device are
being written to standard error output, progress will be indicated by the
approximate number of kilobytes read so far, and errors will be printed
out in detail, including the information about the location of recovered
data in the output. In quiet mode, none of these messages will be
generated.
-r
- Enable error recovery. By default,
fdread
stops
after the first unrecovered read error, much like
dd(1)
does. In recovery mode, however, one of two recovery actions will be
taken:
Unless operating in quiet mode, the action taken and the
location of the error in the output file will be displayed.
-d
device
- Specify the input floppy device, defaulting to
/dev/fd0. The parameter
device must be a valid floppy disk device.
-f
fillbyte
- Value of the fill byte used for dummy blocks in the output file in
recovery mode. Defaults to ‘
0xf0
’.
(Mnemonic: “foo”.) The value can be specified using the
usual C language notation of the number base.
-o
file
- Specify the output file to be file. By default, the
data will be written to standard output.
-I
numsects
- Read numsects sector ID fields, and write out their
contents to standard output. Each sector ID field contains recorded values
for the cylinder number (‘
C
’), the
head number (‘H
’), the record number
(sector number starting with 1)
(‘R
’), and the
sector shift
value (0 = 128 bytes, 1 = 256 bytes, 2 = 512 bytes, 3 = 1024
bytes) (‘N
’). The
-I
option is mutually exclusive with all other
options except -d
device and
-t
trackno.
-t
trackno
- Specify the track number (cylinder number * number of heads + head number)
to read the sector ID fields from; only allowed together with the
-I
numsects option.
- /dev/fd0
- Default device to read from.
The fdread
utility sets the exit value
according to
sysexits(3).
In recovery mode, the exit value will be set to
EX_IOERR
if any error occurred during processing
(even in quiet mode).
Unless running in quiet mode, upon encountering an error, the
status of the floppy disc controller (FDC) will be printed out, both in
hexadecimal form, followed by a textual description that translates those
values into a human-readable form for the most common error cases that can
happen in a PC environment.
The FDC error status includes the three FDC status registers
‘ST0
’,
‘ST1
’, and
‘ST2
’, as well as the location of the
error (physical cylinder, head, and sector number, plus the “sector
shift value”, respectively). See the manual for the NE765 or
compatible for details about the status register contents.
The FDC's status is then examined to determine whether the error
is deemed to be recoverable. If error recovery was requested, the location
of the bad block in the output file is indicated by its (hexadecimal)
bounds. Also, a summary line indicating the total number of transfer errors
will be printed before exiting.
The fdread
utility was written mainly to
provide a means of recovering at least some of the data on bad media, and to
obviate the need to invoke
dd(1) with
too many hard to memorize options that might be useful to handle a
floppy.
The command appeared in FreeBSD 5.0.
Program and man page by Jörg
Wunsch.
Concurrent traffic on the second floppy drive located at the same
FDC will make error recovery attempts pointless, since the FDC status
obtained after a read error occurred cannot be guaranteed to actually belong
to the erroneous transfer. Thus using option -r
is
only reliable if device is the only active drive on
that controller.
No attempt beyond the floppy error retry mechanism of
fdc(4) is
made in order to see whether bad sectors could still be read without errors
by trying multiple times.
Bits that are (no longer) available on the floppy medium cannot be
guessed by fdread
.