Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
FDREAD(1)               FreeBSD General Commands Manual              FDREAD(1)

     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 other-
     wise 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 mes-

     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 informa-
             tion 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:

             +o   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.  Note that this will cause the erroneous
                 data to be included in the output file!  Still, this is the
                 best recovery action that can be taken at all.

             +o   All other errors are really fatal (usually, the FDC did not
                 find the sector ID fields), thus a dummy block with fill
                 bytes will be included in the output file.

             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 cylin-
     der, head, and sector number, plus the ``sector shift value'', respec-
     tively).  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.

     dd(1), fdwrite(1), sysexits(3), fdc(4), fdcontrol(8)

     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 han-
     dle a floppy.

     The command appeared in FreeBSD 5.0.

     Program and man page by Jorg 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.

FreeBSD 6.2                      May 14, 2001                      FreeBSD 6.2


Want to link to this manual page? Use this URL:

home | help