234 lines
6.9 KiB
Groff
234 lines
6.9 KiB
Groff
.\"
|
|
.\" Copyright (c) 2001 Joerg Wunsch
|
|
.\"
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.\"
|
|
.Dd May 14, 2001
|
|
.Os
|
|
.Dt FDREAD 1
|
|
.Sh NAME
|
|
.Nm fdread
|
|
.Nd read floppy disks
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl qr
|
|
.Op Fl d Ar device
|
|
.Op Fl f Ar fillbyte
|
|
.Op Fl o Ar file
|
|
.Nm
|
|
.Op Fl d Ar device
|
|
.Fl I Ar numsects
|
|
.Op Fl t Ar trackno
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
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.
|
|
.Pp
|
|
The
|
|
.Nm
|
|
utility
|
|
will always read an entire floppy medium, and write its contents to
|
|
the respective output file.
|
|
Unlike other tools like
|
|
.Xr dd 1 ,
|
|
.Nm
|
|
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
|
|
.Nm
|
|
is working, kernel error reporting for floppy errors is turned off, so
|
|
the console and/or syslog are not flooded with kernel error messages.
|
|
.Pp
|
|
The
|
|
.Nm
|
|
utility accepts the following options:
|
|
.Bl -tag -width indent
|
|
.It Fl 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.
|
|
.It Fl r
|
|
Enable error recovery.
|
|
By default,
|
|
.Nm
|
|
stops after the first unrecovered read error, much like
|
|
.Xr dd 1
|
|
does.
|
|
In recovery mode, however, one of two recovery actions will be
|
|
taken:
|
|
.Bl -bullet
|
|
.It
|
|
If the error was a CRC error in the data field, the
|
|
kernel is told to ignore the error, and data are transferred to the
|
|
output file anyway.
|
|
.Bf -emphasis
|
|
Note that this will cause the erroneous data
|
|
to be included in the output file!
|
|
.Ef
|
|
Still, this is the best recovery action that can be taken at all.
|
|
.It
|
|
All other errors are really fatal (usually, the FDC didn't find the
|
|
sector ID fields), thus a dummy block with fill
|
|
bytes will be included in the output file.
|
|
.El
|
|
.Pp
|
|
Unless operating in quiet mode, the action taken and the location of
|
|
the error in the output file will be displayed.
|
|
.It Fl d Ar device
|
|
Specify the input floppy device, defaulting to
|
|
.Pa /dev/fd0 .
|
|
The parameter
|
|
.Ar device
|
|
must be a valid floppy disk device.
|
|
.It Fl f Ar fillbyte
|
|
Value of the fill byte used for dummy blocks in the output file in
|
|
recovery mode.
|
|
Defaults to
|
|
.Ql 0xf0 .
|
|
(Mnemonic:
|
|
.Dq foo . )
|
|
The value can be specified using the usual C language notation of
|
|
the number base.
|
|
.It Fl o Ar file
|
|
Specify the output file to be
|
|
.Ar file .
|
|
By default, the data will be written to standard output.
|
|
.It Fl I Ar numsects
|
|
Read
|
|
.Ar numsects
|
|
sector ID fields, and write out their contents to standard output.
|
|
Each sector ID field contains recorded values for the cylinder number
|
|
.Pq Ql C ,
|
|
the head number
|
|
.Pq Ql H ,
|
|
the record number (sector number starting with 1)
|
|
.Pq Ql R ,
|
|
and the
|
|
.Em sector shift value
|
|
(0 = 128 bytes, 1 = 256 bytes, 2 = 512 bytes, 3 = 1024 bytes)
|
|
.Pq Ql N .
|
|
The
|
|
.Fl I
|
|
option is mutually exclusive with all other options except
|
|
.Fl d Ar device
|
|
and
|
|
.Fl t Ar trackno .
|
|
.It Fl t Ar trackno
|
|
Specify the track number (cylinder number * number of heads + head
|
|
number) to read the sector ID fields from; only allowed together with
|
|
the
|
|
.Fl I Ar numsects
|
|
option.
|
|
.El
|
|
.Sh FILES
|
|
.Bl -tag -width /dev/fd0
|
|
.It Pa /dev/fd0
|
|
Default device to read from.
|
|
.El
|
|
.Sh EXIT STATUS
|
|
The
|
|
.Nm
|
|
utility sets the exit value according to
|
|
.Xr sysexits 3 .
|
|
In recovery mode, the exit value will be set to
|
|
.Dv EX_IOERR
|
|
if any error occurred during processing (even in quiet mode).
|
|
.Sh DIAGNOSTICS
|
|
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.
|
|
.Pp
|
|
The FDC error status includes the three FDC status registers
|
|
.Ql ST0 ,
|
|
.Ql ST1 ,
|
|
and
|
|
.Ql ST2 ,
|
|
as well as the location of the error (physical cylinder, head, and sector
|
|
number, plus the
|
|
.Dq sector shift value ,
|
|
respectively).
|
|
See the manual for the NE765 or compatible for details
|
|
about the status register contents.
|
|
.Pp
|
|
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.
|
|
.Sh SEE ALSO
|
|
.Xr dd 1 ,
|
|
.Xr fdwrite 1 ,
|
|
.Xr sysexits 3 ,
|
|
.Xr fdc 4 ,
|
|
.Xr fdcontrol 8
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
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
|
|
.Xr dd 1
|
|
with too many hard to memorize options that might be useful to handle
|
|
a floppy.
|
|
.Pp
|
|
The command appeared in
|
|
.Fx 5.0 .
|
|
.Sh AUTHORS
|
|
Program and man page by
|
|
.An J\(:org Wunsch .
|
|
.Sh BUGS
|
|
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
|
|
.Fl r
|
|
is only reliable if
|
|
.Ar device
|
|
is the only active drive on that controller.
|
|
.Pp
|
|
No attempt beyond the floppy error retry mechanism of
|
|
.Xr fdc 4
|
|
is made in order to see whether bad sectors could still be read
|
|
without errors by trying multiple times.
|
|
.Pp
|
|
Bits that are (no longer) available on the floppy medium cannot be
|
|
guessed by
|
|
.Nm .
|