Hamilton LaboratoriesHamilton C shell 2012User guideExternal utilities

dskwrite

Oregon Coast

dskwrite
Previous | Next

        Write Raw Sectors to a Disk

Usage:  dskwrite [-abcdEfFhHLSTvxz-] [-Z!] [-n name] [-N sectors]
                 [-s size] [-t tracks] [-V volid]
                 [ disk: ] [ <sectorlist> ]

   dskwrite copies stdin to the low-level raw sectors on the disk
   you specify.

   In conjunction with dskread, dskwrite is most useful as a quick
   diskette duplication utility:  you can read a whole diskette
   image into a file with dskread, then write it back out with
   dskwrite to a new diskette.  But it's also useful for dumping
   a long stream of data across a series of diskettes, formatting
   and filling each with as much as possible before requesting
   the next one.

   The disk is given as a single alphabetic drive letter plus a
   colon.  If no disk is specified, the first logical drive is
   assumed.  (In most machines, this is the a: drive.)

Operation:

   dskwrite normally starts at cylinder 0, head 0, sector 0 and
   walks through the whole disk, writing all the sectors on a track
   under one head and then all tracks in a cylinder before
   repositioning the heads to the next cylinder.  You can also
   cause dskwrite to write to just specific sectors by giving it
   a sector list.

   dskwrite always writes whole sectors and, if requested,
   formats whole tracks.  If the last sector is only partially-
   used, dskwrite fills it out with binary zeros.

   To avoid conflicts with other applications, dskwrite always
   locks a drive before actually writing to it.

Basic Options:

   -a            Autoformat.  If the disk appears to be unformatted,
                 automatically do a low-level format of the entire
                 disk.
   -f            Low-level format the entire disk as data is copied
                 to it from stdin.
   -F            Low-level format the entire diskette and create an
                 empty FAT filesystem.  Do not read anything from
                 stdin.
   -S            Share the drive for read/write access by other
                 processes.
   -v            Verify.  Read back and verify each write.
   -h            Help.  (This screen.)
   --            End of options.

Options for using the disk as a serial media:

   -b            Boot record.  Write a simple non-system disk
                 boot record and parameter block corresponding to
                 the particular media into sector 0.  If writing
                 the entire disk, continue with the next sector.
   -c            Continuation.  If there's more data on stdin
                 after an entire disk has been written, prompt
                 for a new disk to be inserted and continue.  If
                 -d is specified also, the filename extension on
                 each disk will be the disk number, i.e., 001,
                 002, 003, etc.
   -d            Dummy filesystem.  Write a boot record and a FAT
                 filesystem into the initial sectors allocating
                 whatever is written to a single file.
   -n <name>     The filename to be given to any data written
                 onto the disk if the -d (dummy filesystem) option
                 is used.  Default is 'bindata'.

Formatting:

   Default is to let Windows NT try to determine how the media
   has been formatted and not to reformat the disk.

   If the disk isn't already formatted and the -a (autoformat)
   option is selected or if formatting is explicitly requested
   with the -f or -F options, dskwrite will do a low-level
   format of the media.

   Dskwrite takes its specification of the format (e.g., low- or
   high-density) from the following sources, in decreasing priority:

     1.  Explicit specifications on the command line.
     2.  The Windows NT kernel's guess at the media format, assuming
         the disk is already formatted and not being re-formatted.
     3.  The format parameters in the boot sector copied from stdin,
         assuming neither the -b nor the -d options is given.
     4.  The previous format of the media, assuming it's already
         formatted in a standard configuration but being reformatted.
     5.  The highest-density format supported by the drive.

   Unless you specify -b or -d, dskwrite will expect to copy a
   compatible disk image from stdin including a suitable boot
   sector, etc.  That happens automatically when dskread'ing
   a whole disk is paired with dskwrite'ing a whole disk but
   not otherwise.

Explicit Format Specification Options:

   -E            Extended density (2.88M) format.
   -H            High density format.
   -L            Low density format.
   -N <sectors>  Sectors per track.
   -s <size>     Sector size.  Normally only 512 is supported but,
                 depending on your hardware, you may also be able
                 to create 128, 256 or 1024-byte sectors.
   -t <tracks>   Number of tracks.

Other Advanced Options:

   -T            Low-level format the media track-at-a-time as
                 the disk is written.  Only as much of the disk
                 as is being written to will be formatted.
   -V <volid>    The volume identifier to be written into the
                 dummy filesystem header if -F or -d is used.
                 (Ignored otherwise.)
   -x            Force use of a non-standard format or writing of
                 non-standard format parameters to the boot sector.
   -z            Zero-length files written with -d option should
                 still be added to the directory.  (Otherwise,
                 they're ignored.)
   -Z!           Force write to a hard disk.  Warning! Very risky
                 unless you know exactly what you're doing.

Sector lists:

   Optionally, you can specify a list of sectors you want written.
   Sectors are given in

                 (cylinder, head, sector)

   coordinates with parentheses around and commas or white space
   to separate the numeric values you write.  Cylinders, heads and
   sectors are counted from zero and can be specified in decimal,
   hex or octal.

   A single sector specified alone means just that sector.
   Listing several separated by commas or spaces means each one
   individually.

   A pair of sectors joined by a hyphen means a range:  all the
   consecutive sectors beginning with the first and running
   through to the second.

   Specifying a negative number as an ordinate means use the
   highest possible value for that disk.

   If any of the ordinates of a sector are omitted, they're assumed
   to be zero except when it closes a range, in which case it means
   use the highest possible value.

Examples:

  1.  To duplicate a whole diskette image, autoformatting the
      output media if it's not already formatted:

          dskread a: > dskimage.a
          dskwrite -av a: < dskimage.a

  2.  To use dskwrite to format a disk with an empty FAT file
      system, use either:

          dskwrite -F a:
      or:
          dskwrite -df a: < nul

  3.  To rewrite just the boot sector to make it a non-system
      disk:

          dskwrite -b a: < nul

  4.  To use a diskette as a serial archive media:

      The -d option allows you to request just enough dummy file
      system "envelope" around the otherwise arbitrary data you
      intend to write to ensure the disk can still be used with
      other Windows NT utilities.  Here's an example writing the
      result of a tar'ing (archiving) a whole directory to a series
      of diskettes, again autoformatting:

          tar -cs mydir | dskwrite -avcd -n mydir a:

      It's restored with

          dskread -dc -n mydir a: | tar -xs

      The diskettes used do not all have to be the same density;
      any mix of high and low is okay.  But remember that if a disk
      isn't already formatted, there's no way for dskwrite to tell
      whether it should be high or low density; any disks it has
      to format will all be formatted the same way.

  5.  Reading or writing tar-format floppies:

      Many UNIX machines support the use of a floppy as a tar
      archive media, just as if it were a tape.  Every sector
      contains data; there's no filesystem and no boot record
      at all.  This allows the greatest possible amount of data
      to be written to the disk and it does allow interchange
      with a UNIX machine, but tar-format floppies are not
      readable by any ordinary utilities.
      
      Here's an example, tar'ing mydir to a single tar-format
      floppy:

          tar -cs mydir | dskwrite -vx a:

      It's restored with

          dskread a: | tar -xs

      If the amount of data you're archiving is more than will
      fit on one diskette, use the -c option with dskread and
      dskwrite.  But since there's no labeling recorded on
      the diskettes and the data just runs continuously from
      one diskette to the next, you will need to pay attention
      to the order in which they're written or read.

Non-standard Diskette Formats:

   If you write anything but a standard boot record into the boot
   sector, you will not be able to read it with anything but
   dskread and even then only if you tell it explicitly what
   format was used.  Without a standard parameter block in the
   boot sector, the Windows NT diskette device driver just can't
   tell on its own how the diskette was written.

   Similarly, it's possible you may be able to write a non-
   standard format (e.g., a sector size other than 512 bytes,
   etc.) depending on your hardware.  But doing that may make
   the diskette impossible to read on other machines.

   For that reason, dskwrite normally won't let you write a boot
   record that doesn't match the actual format of the diskette
   nor will it let you write anything other than one of the
   standard format.  To override these checks, you must use the
    -x option.

Writing to a Hard Disk:

   Deliberately, dskwrite normally only lets you write to diskettes.

   Writing to a hard disk is very risky since the chance of
   catastrophic loss of information is so high.  Also, only ESDI
   and SCSI disk controllers routinely map out bad blocks, so
   reading the disk image from one drive and writing it to another
   is unlikely to work if there are bad blocks on either one.

   To force dskwrite to write to a hard disk, you must specify
   the -Z! option, meant to be hard to accidentally type.   In
   effect, the -Z! option means you understand the risk you're
   taking.

Previous | Next