| \input texinfo @c -*-texinfo-*- |
| @comment %**start of header |
| @setfilename mtools.info |
| @include version.texi |
| @settitle Mtools @value{VERSION} |
| @syncodeindex pg cp |
| @comment %**end of header |
| |
| @comment MANskip 5 |
| |
| @copying |
| This manual is for Mtools (version @value{VERSION}, @value{UPDATED}), |
| which is a collection of tools to allow Unix systems to manipulate |
| MS-DOS files. |
| |
| Copyright @copyright{} 2007, 2009 Free Software Foundation, Inc. |
| Copyright @copyright{} 1996-2005,2007-2011,2013 Alain Knaff. |
| |
| @quotation |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the GNU Free Documentation License, Version 1.3 or |
| any later version published by the Free Software Foundation; with no |
| Invariant Sections, with no Front-Cover Texts, and with no Back-Cover |
| Texts. A copy of the license is included in the section entitled |
| ``GNU Free Documentation License''. |
| @end quotation |
| @end copying |
| |
| @ignore |
| @unnumbered Name |
| mtools - utilities to access DOS disks in Unix. |
| @end ignore |
| |
| @include sysconfdir.texi |
| |
| @iftex |
| @finalout |
| @end iftex |
| |
| @dircategory DOS |
| @direntry |
| * Mtools: (mtools). Mtools: utilities to access DOS disks in Unix. |
| @end direntry |
| |
| |
| @titlepage |
| @title Mtools |
| |
| @c The following two commands start the copyright page. |
| @page |
| @vskip 0pt plus 1filll |
| @insertcopying |
| @end titlepage |
| |
| @c Output the table contents at the beginning |
| @contents |
| |
| @ifnottex |
| @node Top, Location, (dir), (dir) |
| @top Mtools doc |
| |
| This is mtools' documentation. |
| @end ifnottex |
| |
| @comment MANstart 1 |
| |
| @unnumbered Introduction |
| Mtools is a collection of tools to allow Unix systems to manipulate |
| MS-DOS files: read, write, and move around files on an MS-DOS |
| file system (typically a floppy disk). Where reasonable, each program |
| attempts to emulate the MS-DOS equivalent command. However, |
| unnecessary restrictions and oddities of DOS are not emulated. For |
| instance, it is possible to move subdirectories from one subdirectory |
| to another. |
| |
| Mtools is sufficient to give access to MS-DOS file systems. For |
| instance, commands such as @code{mdir a:} work on the @code{a:} floppy |
| without any preliminary mounting or initialization (assuming the default |
| @file{@value{SYSCONFDIR}mtools.conf} works on your machine). With mtools, one can |
| change floppies too without unmounting and mounting. |
| |
| @insertcopying |
| |
| @menu |
| * Location:: Where to find mtools and early bug fixes |
| * Common features:: Common features of all mtools commands |
| * Configuration:: How to configure mtools for your environment |
| * Commands:: The available mtools commands |
| * Compiling mtools:: Architecture specific compilation flags |
| * Porting mtools:: Porting mtools to architectures which are not |
| yet supported |
| |
| * Command Index:: Command Index |
| * Variable Index:: Variable Index |
| * Concept Index:: Concept Index |
| @end menu |
| |
| @node Location, Common features, Top, Top |
| @chapter Where to get mtools |
| @cindex bugs |
| @cindex ALPHA patches |
| @cindex patches |
| @cindex diffs |
| @cindex mailing list |
| |
| Mtools can be found at the following places (and their mirrors): |
| @example |
| http://ftp.gnu.org/gnu/mtools/mtools-@value{VERSION}.tar.gz |
| @end example |
| |
| These patches are named |
| @code{mtools-}@var{version}@code{-}@var{ddmm}@code{.taz}, where version |
| stands for the base version, @var{dd} for the day and @var{mm} for the |
| month. Due to a lack of space, I usually leave only the most recent |
| patch. |
| |
| There is an mtools mailing list at info-mtools @@ gnu.org . Please |
| send all bug reports to this list. You may subscribe to the list at |
| https://lists.gnu.org/mailman/listinfo/info-mtools. (N.B. Please |
| remove the spaces around the "@@". I left them there in order to fool |
| spambots.) Announcements of new mtools versions will also be sent to |
| the list, in addition to the Linux announce newsgroups. The mailing |
| list is archived at http://lists.gnu.org/pipermail/info-mtools/ |
| |
| |
| @node Common features, Configuration, Location, Top |
| @chapter Common features of all mtools commands |
| |
| @menu |
| * arguments:: What the command line parameters of mtools |
| mean |
| * drive letters:: Which drives are defined by default |
| * directory:: Current working directory |
| * long names:: VFAT-style long filenames |
| * name clashes:: Name clash handling, and associated command |
| line options |
| * case sensitivity:: Case sensitivity |
| * high capacity formats:: How to fit more data on your floppies |
| * exit codes:: Exit codes |
| * bugs:: Happens to everybody |
| @end menu |
| |
| @node arguments, drive letters, Common features, Common features |
| @section Options and filenames |
| @cindex Filenames |
| @cindex Options |
| MS-DOS filenames are composed of a drive letter followed by a colon, a |
| subdirectory, and a filename. Only the filename part is mandatory, the |
| drive letter and the subdirectory are optional. Filenames without a |
| drive letter refer to Unix files. Subdirectory names can use either the |
| '@code{/}' or '@code{\}' separator. The use of the '@code{\}' separator |
| or wildcards requires the names to be enclosed in quotes to protect them |
| from the shell. However, wildcards in Unix filenames should not be |
| enclosed in quotes, because here we @strong{want} the shell to expand |
| them. |
| |
| The regular expression "pattern matching" routines follow the Unix-style |
| rules. For example, `@code{*}' matches all MS-DOS files in lieu of |
| `@code{*.*}'. The archive, hidden, read-only and system attribute bits |
| are ignored during pattern matching. |
| |
| All options use the @code{-} (minus) as their first character, not |
| @code{/} as you'd expect in MS-DOS. |
| |
| Most mtools commands allow multiple filename parameters, which |
| doesn't follow MS-DOS conventions, but which is more user-friendly. |
| |
| Most mtools commands allow options that instruct them how to handle |
| file name clashes. @xref{name clashes}, for more details on these. |
| |
| All commands accept the @code{-i} flag which allows to specify an |
| image file (@xref{drive letters}). |
| |
| All commands accept the @code{-V} flag which prints the version, and |
| most accept the @code{-v} flag, which switches on verbose mode. In |
| verbose mode, these commands print out the name of the MS-DOS files |
| upon which they act, unless stated otherwise. @xref{Commands}, for a |
| description of the options which are specific to each command. |
| |
| @node drive letters, directory, arguments, Common features |
| @section Drive letters |
| |
| The meaning of the drive letters depends on the target architectures. |
| However, on most target architectures, drive A is the first floppy |
| drive, drive B is the second floppy drive (if available), drive J is a |
| Jaz drive (if available), and drive Z is a Zip drive (if available). On |
| those systems where the device name is derived from the SCSI id, the Jaz |
| drive is assumed to be at SCSI target 4, and the Zip at SCSI target 5 |
| (factory default settings). On Linux, both drives are assumed to be the |
| second drive on the SCSI bus (/dev/sdb). The default settings can be |
| changes using a configuration file (@pxref{Configuration}). |
| |
| The drive letter : (colon) has a special meaning. It is used to access |
| image files which are directly specified on the command line using the |
| @code{-i} options. |
| |
| Example: |
| @example |
| mcopy -i my-image-file.bin ::file1 ::file2 . |
| @end example |
| |
| This copies @code{file1} and @code{file2} from the image file |
| (@code{my-image-file.bin}) to the @code{/tmp} directory. |
| |
| You can also supply an offset within the image file by including |
| @code{@@@@}@var{offset} into the file name. |
| |
| Example: |
| @example |
| mcopy -i my-image-file.bin@@@@1M ::file1 ::file2 . |
| @end example |
| |
| This looks for the image at the offset of 1M in the file, rather than |
| at its beginning. |
| |
| @node directory, long names, drive letters, Common features |
| @section Current working directory |
| @pindex mcd (introduction) |
| @cindex Directory |
| @cindex Working directory |
| @cindex Current working directory |
| @cindex Default directory |
| |
| The @code{mcd} command (@ref{mcd}) is used to establish the device and |
| the current working directory (relative to the MS-DOS file system), |
| otherwise the default is assumed to be @code{A:/}. However, unlike |
| MS-DOS, there is only one working directory for all drives, and not one |
| per drive. |
| |
| @node long names, name clashes, directory, Common features |
| @section VFAT-style long file names |
| @cindex Long file name |
| @cindex Windows 95-style file names |
| @cindex VFAT-style file names |
| @cindex Primary file name (long names) |
| @cindex Secondary file name (long names) |
| |
| This version of mtools supports VFAT style long filenames. If a Unix |
| filename is too long to fit in a short DOS name, it is stored as a |
| VFAT long name, and a companion short name is generated. This short |
| name is what you see when you examine the disk with a pre-7.0 version |
| of DOS. |
| The following table shows some examples of short names: |
| |
| @example |
| Long name MS-DOS name Reason for the change |
| --------- ---------- --------------------- |
| thisisatest THISIS~1 filename too long |
| alain.knaff ALAIN~1.KNA extension too long |
| prn.txt PRN~1.TXT PRN is a device name |
| .abc ABC~1 null filename |
| hot+cold HOT_CO~1 illegal character |
| @end example |
| |
| As you see, the following transformations happen to derive a short |
| name: |
| @itemize @bullet |
| @item |
| Illegal characters are replaced by underscores. The illegal characters |
| are @code{;+=[]',\"*\\<>/?:|}. |
| @item |
| Extra dots, which cannot be interpreted as a main name/extension |
| separator are removed |
| @item |
| A @code{~}@var{n} number is generated, |
| @item |
| The name is shortened so as to fit in the 8+3 limitation |
| @end itemize |
| |
| The initial Unix-style file name (whether long or short) is also called |
| the @dfn{primary} name, and the derived short name is also called the |
| @dfn{secondary} name. |
| |
| Example: |
| @example |
| mcopy /etc/motd a:Reallylongname |
| @end example |
| Mtools creates a VFAT entry for Reallylongname, and uses REALLYLO as |
| a short name. Reallylongname is the primary name, and REALLYLO is the |
| secondary name. |
| @example |
| mcopy /etc/motd a:motd |
| @end example |
| Motd fits into the DOS filename limits. Mtools doesn't need to |
| derivate another name. Motd is the primary name, and there is no |
| secondary name. |
| |
| In a nutshell: The primary name is the long name, if one exists, or |
| the short name if there is no long name. |
| |
| Although VFAT is much more flexible than FAT, there are still names |
| that are not acceptable, even in VFAT. There are still some illegal |
| characters left (@code{\"*\\<>/?:|}), and device names are still |
| reserved. |
| |
| @example |
| Unix name Long name Reason for the change |
| --------- ---------- --------------------- |
| prn prn-1 PRN is a device name |
| ab:c ab_c-1 illegal character |
| @end example |
| |
| As you see, the following transformations happen if a long name is |
| illegal: |
| @itemize @bullet |
| @item |
| Illegal characters are replaces by underscores, |
| @item |
| A @code{-}@var{n} number is generated, |
| @end itemize |
| |
| @node name clashes, case sensitivity, long names, Common features |
| @section Name clashes |
| @cindex Name clashes |
| @cindex Duplicate file names |
| @cindex Overwriting files |
| @cindex Primary file name (name clashes) |
| @cindex Secondary file name (name clashes) |
| |
| When writing a file to disk, its long name or short name may collide |
| with an already existing file or directory. This may happen for all |
| commands which create new directory entries, such as @code{mcopy}, |
| @code{mmd}, @code{mren}, @code{mmove}. When a name clash happens, mtools |
| asks you what it should do. It offers several choices: |
| |
| @table @code |
| @item overwrite |
| Overwrites the existing file. It is not possible to overwrite a |
| directory with a file. |
| @item rename |
| Renames the newly created file. Mtools prompts for the new filename |
| @item autorename |
| Renames the newly created file. Mtools chooses a name by itself, without |
| prompting |
| @item skip |
| Gives up on this file, and moves on to the next (if any) |
| @end table |
| |
| To chose one of these actions, type its first letter at the prompt. If |
| you use a lower case letter, the action only applies for this file only, |
| if you use an upper case letter, the action applies to all files, and |
| you won't be prompted again. |
| |
| You may also chose actions (for all files) on the command line, when |
| invoking mtools: |
| |
| @table @code |
| @item -D o |
| Overwrites primary names by default. |
| @item -D O |
| Overwrites secondary names by default. |
| @item -D r |
| Renames primary name by default. |
| @item -D R |
| Renames secondary name by default. |
| @item -D a |
| Autorenames primary name by default. |
| @item -D A |
| Autorenames secondary name by default. |
| @item -D s |
| Skip primary name by default. |
| @item -D S |
| Skip secondary name by default. |
| @item -D m |
| Ask user what to do with primary name. |
| @item -D M |
| Ask user what to do with secondary name. |
| @end table |
| |
| Note that for command line switches lower/upper differentiates between |
| primary/secondary name whereas for interactive choices, lower/upper |
| differentiates between just-this-time/always. |
| |
| The primary name is the name as displayed in Windows 95 or Windows NT: |
| i.e. the long name if it exists, and the short name otherwise. The |
| secondary name is the "hidden" name, i.e. the short name if a long name |
| exists. |
| |
| By default, the user is prompted if the primary name clashes, and the |
| secondary name is autorenamed. |
| |
| If a name clash occurs in a Unix directory, mtools only asks whether |
| to overwrite the file, or to skip it. |
| |
| @node case sensitivity, high capacity formats, name clashes, Common features |
| @section Case sensitivity of the VFAT file system |
| @cindex Case sensitivity |
| |
| The VFAT file system is able to remember the case of the |
| filenames. However, filenames which differ only in case are not allowed |
| to coexist in the same directory. For example if you store a file called |
| LongFileName on a VFAT file system, mdir shows this file as LongFileName, |
| and not as Longfilename. However, if you then try to add LongFilename to |
| the same directory, it is refused, because case is ignored for clash |
| checks. |
| |
| The VFAT file system allows you to store the case of a filename in the |
| attribute byte, if all letters of the filename are the same case, and if |
| all letters of the extension are the same case too. Mtools uses this |
| information when displaying the files, and also to generate the Unix |
| filename when mcopying to a Unix directory. This may have unexpected |
| results when applied to files written using an pre-7.0 version of DOS: |
| Indeed, the old style filenames map to all upper case. This is different |
| from the behavior of the old version of mtools which used to generate |
| lower case Unix filenames. |
| |
| @node high capacity formats, exit codes, case sensitivity, Common features |
| @section high capacity formats |
| @cindex Special formats |
| @cindex High capacity formats |
| @cindex Odd formats |
| @cindex Weird formats |
| @cindex Formats, high capacity |
| @cindex Linux enhancements (High Capacity Formats) |
| |
| Mtools supports a number of formats which allow storage of more data on |
| disk than usual. Due to different operating system abilities, these |
| formats are not supported on all operating systems. Mtools recognizes |
| these formats transparently where supported. |
| |
| In order to format these disks, you need to use an operating system |
| specific tool. For Linux, suitable floppy tools can be found in the |
| @code{fdutils} package at the following locations~: |
| @example |
| @code{http://www.fdutils.linux.lu/}. |
| @end example |
| |
| See the manual pages included in that package for further detail: Use |
| @code{superformat} to format all formats except XDF, and use |
| @code{xdfcopy} to format XDF. |
| |
| @menu |
| * more sectors:: Putting more sectors per track on the disk |
| * bigger sectors:: Use bigger sectors to save header space |
| * 2m:: Use a standard first track |
| * XDF:: OS/2's eXtended density format |
| @end menu |
| |
| @node more sectors, bigger sectors, high capacity formats, high capacity formats |
| @subsection More sectors |
| @cindex fdformat |
| @cindex vgacopy |
| @cindex DMF disks |
| @cindex Windows 95 (DMF disks) |
| |
| The oldest method of fitting more data on a disk is to use more sectors |
| and more cylinders. Although the standard format uses 80 cylinders and |
| 18 sectors (on a 3 1/2 high density disk), it is possible to use up to |
| 83 cylinders (on most drives) and up to 21 sectors. This method allows |
| to store up to 1743K on a 3 1/2 HD disk. However, 21 sector disks are |
| twice as slow as the standard 18 sector disks because the sectors are |
| packed so close together that we need to interleave them. This problem |
| doesn't exist for 20 sector formats. |
| |
| These formats are supported by numerous DOS shareware utilities such as |
| @code{fdformat} and @code{vgacopy}. In his infinite hubris, Bill Gate$ |
| believed that he invented this, and called it @samp{DMF disks}, or |
| @samp{Windows formatted disks}. But in reality, it has already existed |
| years before! Mtools supports these formats on Linux, on SunOS and on |
| the DELL Unix PC. |
| |
| @node bigger sectors, 2m, more sectors, high capacity formats |
| @subsection Bigger sectors |
| @cindex bigger sectors |
| By using bigger sectors it is possible to go beyond the capacity which |
| can be obtained by the standard 512-byte sectors. This is because of the |
| sector header. The sector header has the same size, regardless of how |
| many data bytes are in the sector. Thus, we save some space by using |
| @emph{fewer}, but bigger sectors. For example, 1 sector of 4K only takes |
| up header space once, whereas 8 sectors of 512 bytes have also 8 |
| headers, for the same amount of useful data. |
| |
| This method permits storage of up to 1992K on a 3 1/2 HD disk. |
| |
| Mtools supports these formats only on Linux. |
| |
| @node 2m, XDF, bigger sectors, high capacity formats |
| @subsection 2m |
| @cindex 2m |
| |
| The 2m format was originally invented by Ciriaco Garcia de Celis. It |
| also uses bigger sectors than usual in order to fit more data on the |
| disk. However, it uses the standard format (18 sectors of 512 bytes |
| each) on the first cylinder, in order to make these disks easier to |
| handle by DOS. Indeed this method allows you to have a standard sized |
| boot sector, which contains a description of how the rest of the disk |
| should be read. |
| |
| However, the drawback of this is that the first cylinder can hold less |
| data than the others. Unfortunately, DOS can only handle disks where |
| each track contains the same amount of data. Thus 2m hides the fact that |
| the first track contains less data by using a @dfn{shadow |
| FAT}. (Usually, DOS stores the FAT in two identical copies, for |
| additional safety. XDF stores only one copy, but tells DOS that it |
| stores two. Thus the space that would be taken up by the second FAT copy |
| is saved.) This also means that you should @strong{never use a 2m disk |
| to store anything else than a DOS file system}. |
| |
| Mtools supports these formats only on Linux. |
| |
| @node XDF, , 2m, high capacity formats |
| @subsection XDF |
| @cindex XDF disks |
| @cindex OS/2 (XDF disks) |
| |
| XDF is a high capacity format used by OS/2. It can hold 1840 K per |
| disk. That's lower than the best 2m formats, but its main advantage is |
| that it is fast: 600 milliseconds per track. That's faster than the 21 |
| sector format, and almost as fast as the standard 18 sector format. In |
| order to access these disks, make sure mtools has been compiled with XDF |
| support, and set the @code{use_xdf} variable for the drive in the |
| configuration file. @xref{Compiling mtools}, and @ref{miscellaneous variables}, |
| for details on how to do this. Fast XDF access is only available for |
| Linux kernels which are more recent than 1.1.34. |
| |
| Mtools supports this format only on Linux. |
| |
| @strong{Caution / Attention distributors}: If mtools is compiled on a |
| Linux kernel more recent than 1.3.34, it won't run on an older |
| kernel. However, if it has been compiled on an older kernel, it still |
| runs on a newer kernel, except that XDF access is slower. It is |
| recommended that distribution authors only include mtools binaries |
| compiled on kernels older than 1.3.34 until 2.0 comes out. When 2.0 will |
| be out, mtools binaries compiled on newer kernels may (and should) be |
| distributed. Mtools binaries compiled on kernels older than 1.3.34 won't |
| run on any 2.1 kernel or later. |
| |
| @node exit codes, bugs, high capacity formats, Common features |
| @section Exit codes |
| All the Mtools commands return 0 on success, 1 on utter failure, or 2 |
| on partial failure. All the Mtools commands perform a few sanity |
| checks before going ahead, to make sure that the disk is indeed an |
| MS-DOS disk (as opposed to, say an ext2 or MINIX disk). These checks |
| may reject partially corrupted disks, which might otherwise still be |
| readable. To avoid these checks, set the MTOOLS_SKIP_CHECK |
| environmental variable or the corresponding configuration file variable |
| (@pxref{global variables}) |
| @node bugs, , exit codes, Common features |
| @section Bugs |
| An unfortunate side effect of not guessing the proper device (when |
| multiple disk capacities are supported) is an occasional error message |
| from the device driver. These can be safely ignored. |
| |
| The fat checking code chokes on 1.72 Mb disks mformatted with pre-2.0.7 |
| mtools. Set the environmental variable MTOOLS_FAT_COMPATIBILITY (or the |
| corresponding configuration file variable, @ref{global variables}) to |
| bypass the fat checking. |
| |
| @comment MANskip 1 |
| |
| @ignore |
| @unnumbered Name |
| mtools.conf - mtools configuration files |
| |
| @comment MANend-skip 5 |
| @section Description |
| |
| This manual page describes the configuration files for mtools. They |
| @comment MANskip 5 |
| @end ignore |
| |
| |
| @node Configuration, Commands, Common features, Top |
| |
| |
| @chapter How to configure mtools for your environment |
| @section Description |
| @cindex Configuration files |
| @vindex MTOOLSRC |
| |
| This sections explains the syntax of the configurations files for |
| mtools. The configuration files |
| @comment MANend-skip 5 |
| are called @file{@value{SYSCONFDIR}mtools.conf} and @file{~/.mtoolsrc}. If |
| the environmental variable @code{MTOOLSRC} is set, its contents is used |
| as the filename for a third configuration file. These configuration |
| files describe the following items: |
| |
| @itemize @bullet |
| @item Global configuration flags and variables |
| @item Per drive flags and variables |
| @end itemize |
| |
| |
| @menu |
| * configuration file location:: Where mtools looks for its configuration files |
| * general syntax:: The layout of the configuration files |
| * default values:: Why you don't need a configuration file in most cases |
| * global variables:: Variables that are independent of the drive |
| * per drive variables:: Variables that are specific to a given drive |
| * parsing order:: Location of configuration files and parsing order |
| * old style configuration:: Backwards compatibility |
| @end menu |
| |
| @node configuration file location, general syntax, Configuration, Configuration |
| @section Location of the configuration files |
| |
| @cindex Configuration file name |
| @cindex Name of configuration files |
| @cindex Location of configuration files |
| |
| @file{@value{SYSCONFDIR}mtools.conf} is the system-wide configuration file, |
| and @file{~/.mtoolsrc} is the user's private configuration file. |
| |
| On some systems, the system-wide configuration file is called |
| @file{/etc/default/mtools.conf} instead. |
| |
| |
| @node general syntax, default values, configuration file location, Configuration |
| @subsection General configuration file syntax |
| @cindex Syntax of the configuration file |
| @cindex Configuration file syntax |
| |
| The configuration files is made up of sections. Each section starts |
| with a keyword identifying the section followed by a colon. |
| Then follow variable assignments and flags. Variable assignments take |
| the following form: |
| @display |
| name=value |
| @end display |
| Flags are lone keywords without an equal sign and value following |
| them. A section either ends at the end of the file or where the next |
| section begins. |
| |
| Lines starting with a hash (@code{#}) are comments. Newline characters |
| are equivalent to whitespace (except where ending a comment). The |
| configuration file is case insensitive, except for item enclosed in |
| quotes (such as filenames). |
| |
| @node default values, global variables, general syntax, Configuration |
| @section Default values |
| @cindex Default values |
| @cindex Default configuration |
| @cindex Configuration file |
| For most platforms, mtools contains reasonable compiled-in defaults for |
| physical floppy drives. Thus, you usually don't need to bother with the |
| configuration file, if all you want to do with mtools is to access your |
| floppy drives. On the other hand, the configuration file is needed if |
| you also want to use mtools to access your hard disk partitions and |
| DOSEMU image files. |
| |
| @node global variables, per drive variables, default values, Configuration |
| @section Global variables |
| @cindex Global configuration variables |
| @cindex Drive independent configuration variables |
| @cindex Environmental variables |
| @vindex MTOOLS_SKIP_CHECK |
| @vindex MTOOLS_FAT_COMPATIBILITY |
| @vindex MTOOLS_LOWER_CASE |
| @vindex MTOOLS_NO_VFAT |
| @vindex MTOOLS_DOTTED_DIR |
| @vindex MTOOLS_NAME_NUMERIC_TAIL |
| @vindex MTOOLS_TWENTY_FOUR_HOUR_CLOCK |
| @vindex MTOOLS_LOCK_TIMEOUT |
| @cindex FreeDOS |
| |
| Global flags may be set to 1 or to 0. |
| |
| The following global flags are recognized: |
| |
| @table @code |
| @item MTOOLS_SKIP_CHECK |
| If this is set to 1, mtools skips most of its sanity checks. This is |
| needed to read some Atari disks which have been made with the earlier |
| ROMs, and which would not be recognized otherwise. |
| @item MTOOLS_FAT_COMPATIBILITY |
| If this is set to 1, mtools skips the fat size checks. Some disks have |
| a bigger FAT than they really need to. These are rejected if this |
| option is not set. |
| @item MTOOLS_LOWER_CASE |
| If this is set to 1, mtools displays all-upper-case short filenames as |
| lowercase. This has been done to allow a behavior which is consistent |
| with older versions of mtools which didn't know about the case bits. |
| @item MTOOLS_NO_VFAT |
| If this is set to 1, mtools won't generate VFAT entries for filenames |
| which are mixed-case, but otherwise legal dos filenames. This is useful |
| when working with DOS versions which can't grok VFAT long names, such as |
| FreeDOS. |
| @item MTOOLS_DOTTED_DIR |
| In a wide directory, prints the short name with a dot instead of spaces |
| separating the basename and the extension. |
| @item MTOOLS_NAME_NUMERIC_TAIL |
| If this is set to one (default), generate numeric tails for all long |
| names (~1). If set to zero, only generate numeric tails if otherwise a |
| clash would have happened. |
| @item MTOOLS_TWENTY_FOUR_HOUR_CLOCK |
| If 1, uses the European notation for times (twenty four hour clock), |
| else uses the UK/US notation (am/pm) |
| @item MTOOLS_LOCK_TIMEOUT |
| How long, in seconds, to wait for a locked device to become free. |
| Defaults to 30. |
| @end table |
| |
| Example: |
| Inserting the following line into your configuration file instructs |
| mtools to skip the sanity checks: |
| @example |
| MTOOLS_SKIP_CHECK=1 |
| @end example |
| |
| Global variables may also be set via the environment: |
| @example |
| export MTOOLS_SKIP_CHECK=1 |
| @end example |
| |
| Global string variables may be set to any value: |
| @table @code |
| @item MTOOLS_DATE_STRING |
| The format used for printing dates of files. By default, is dd-mm-yyyy. |
| @end table |
| |
| @node per drive variables, parsing order, global variables, Configuration |
| @section Per drive flags and variables |
| @cindex Drive description |
| @cindex Drive configuration |
| |
| @menu |
| * general information:: What a drive description looks like |
| * location information:: Where is the drive data physically stored |
| * geometry description:: Describes the physical characteristics of |
| the media |
| * open flags:: Flags passed to the open system call when the |
| device is opened |
| * miscellaneous variables:: Variables which don't fit in either category |
| * miscellaneous flags:: Switch variables, which can be enabled or disabled |
| * multiple descriptions:: How to supply several descriptions for a |
| drive, to be tried one after the other. |
| @end menu |
| |
| @node general information, location information, per drive variables, per drive variables |
| @subsection General information |
| @cindex Drive description, example |
| @cindex Drive configuration, example |
| @vindex drive |
| |
| Per drive flags and values may be described in a drive section. A |
| drive section starts with |
| @code{drive} "@var{driveletter}" : |
| |
| Then follow variable-value pairs and flags. |
| |
| This is a sample drive description: |
| @example |
| drive a: |
| file="/dev/fd0" use_xdf=1 |
| @end example |
| |
| @node location information, geometry description, general information, per drive variables |
| @subsection Location information |
| @cindex Hdimage |
| |
| For each drive, you need to describe where its data is physically |
| stored (image file, physical device, partition, offset). |
| |
| @table @code |
| @item file |
| @cindex Image file |
| @cindex Name of device node |
| @cindex File name of device node |
| @vindex file |
| The name of the file or device holding the disk image. This is |
| mandatory. The file name should be enclosed in quotes. |
| |
| @item partition |
| @cindex DOSEMU hard disk image |
| @cindex Zip disks (partitions) |
| @cindex Jaz disks (partitions) |
| @cindex Syquest disks |
| @cindex Magneto-optical disks |
| @cindex OS/2 (layout of removable media) |
| @cindex Windows NT (layout of removable media) |
| @cindex Removable media |
| @cindex Partitioned image file |
| Tells mtools to treat the drive as a partitioned device, and to use the |
| given partition. Only primary partitions are accessible using this |
| method, and they are numbered from 1 to 4. For logical partitions, use |
| the more general @code{offset} variable. The @code{partition} variable |
| is intended for removable media such as Syquest disks, ZIP drives, and |
| magneto-optical disks. Although traditional DOS sees Syquest disks and |
| magneto-optical disks as @samp{giant floppy disks} which are |
| unpartitioned, OS/2 and Windows NT treat them like hard disks, |
| i.e. partitioned devices. The @code{partition} flag is also useful DOSEMU |
| hdimages. It is not recommended for hard disks for which direct access |
| to partitions is available through mounting. |
| |
| @item offset |
| @cindex Ram disk |
| @cindex Atari Ram disk |
| Describes where in the file the MS-DOS file system starts. This is useful |
| for logical partitions in DOSEMU hdimages, and for ATARI ram disks. By |
| default, this is zero, meaning that the file system starts right at the |
| beginning of the device or file. |
| @end table |
| |
| @node geometry description, open flags, location information, per drive variables |
| @subsection Disk Geometry Configuration |
| @cindex Disk Geometry |
| @cindex Configuration of disk geometry |
| @cindex Description of disk geometry |
| @cindex Format of disk |
| @cindex High density disk |
| @cindex Low density disk |
| @pindex mformat (geometry used for) |
| |
| Geometry information describes the physical characteristics about the |
| disk. Its has three purposes: |
| |
| @table @asis |
| @item formatting |
| The geometry information is written into the boot sector of the newly |
| made disk. However, you may also describe the geometry information on |
| the command line. @xref{mformat}, for details. |
| @item filtering |
| On some Unixes there are device nodes which only support one physical |
| geometry. For instance, you might need a different node to access a disk |
| as high density or as low density. The geometry is compared to the |
| actual geometry stored on the boot sector to make sure that this device |
| node is able to correctly read the disk. If the geometry doesn't match, |
| this drive entry fails, and the next drive entry bearing the same drive |
| letter is tried. @xref{multiple descriptions}, for more details on |
| supplying several descriptions for one drive letter. |
| |
| If no geometry information is supplied in the configuration file, all |
| disks are accepted. On Linux (and on SPARC) there exist device nodes |
| with configurable geometry (@file{/dev/fd0}, @file{/dev/fd1} etc), |
| and thus filtering is not needed (and ignored) for disk drives. (Mtools |
| still does do filtering on plain files (disk images) in Linux: this is |
| mainly intended for test purposes, as I don't have access to a Unix |
| which would actually need filtering). |
| |
| If you do not need filtering, but want still a default geometry for |
| mformatting, you may switch off filtering using the @code{mformat_only} |
| flag. |
| |
| If you want filtering, you should supply the @code{filter} flag. If you |
| supply a geometry, you must supply one of both flags. |
| |
| @item initial geometry |
| On devices that support it (usually floppy devices), the geometry |
| information is also used to set the initial geometry. This initial |
| geometry is applied while reading the boot sector, which contains the |
| real geometry. If no geometry information is supplied in the |
| configuration file, or if the @code{mformat_only} flag is supplied, no |
| initial configuration is done. |
| |
| On Linux, initial geometry is not really needed, as the configurable |
| devices are able to auto-detect the disk type accurately enough (for |
| most common formats) to read the boot sector. |
| @end table |
| |
| Wrong geometry information may lead to very bizarre errors. That's why I |
| strongly recommend that you add the @code{mformat_only} flag to your |
| drive description, unless you really need filtering or initial geometry. |
| |
| The following geometry related variables are available: |
| |
| @table @code |
| @item cylinders |
| @itemx tracks |
| @vindex cylinders |
| @vindex tracks |
| The number of cylinders. (@code{cylinders} is the preferred form, |
| @code{tracks} is considered obsolete) |
| @item heads |
| @vindex heads |
| The number of heads (sides). |
| @item sectors |
| @vindex sectors |
| The number of sectors per track. |
| @end table |
| |
| Example: the following drive section describes a 1.44M drive: |
| |
| @example |
| drive a: |
| file="/dev/fd0H1440" |
| fat_bits=12 |
| cylinders=80 heads=2 sectors=18 |
| mformat_only |
| @end example |
| |
| The following shorthand geometry descriptions are available: |
| |
| @table @code |
| @item 1.44m |
| high density 3 1/2 disk. Equivalent to: |
| @code{fat_bits=12 cylinders=80 heads=2 sectors=18} |
| @item 1.2m |
| high density 5 1/4 disk. Equivalent to: |
| @code{fat_bits=12 cylinders=80 heads=2 sectors=15} |
| @item 720k |
| double density 3 1/2 disk. Equivalent to: |
| @code{fat_bits=12 cylinders=80 heads=2 sectors=9} |
| @item 360k |
| double density 5 1/4 disk. Equivalent to: |
| @code{fat_bits=12 cylinders=40 heads=2 sectors=9} |
| @end table |
| |
| The shorthand format descriptions may be amended. For example, |
| @code{360k sectors=8} |
| describes a 320k disk and is equivalent to: |
| @code{fat_bits=12 cylinders=40 heads=2 sectors=8} |
| |
| @node open flags, miscellaneous variables, geometry description, per drive variables |
| @subsection Open Flags |
| @vindex sync |
| @vindex nodelay |
| @vindex exclusive |
| @cindex open flags |
| @cindex synchronous writing |
| @cindex exclusive access to a drive |
| |
| Moreover, the following flags are available: |
| |
| @table @code |
| @item sync |
| All i/o operations are done synchronously |
| @item nodelay |
| The device or file is opened with the O_NDELAY flag. This is needed on |
| some non-Linux architectures. |
| @item exclusive |
| The device or file is opened with the O_EXCL flag. On Linux, this |
| ensures exclusive access to the floppy drive. On most other |
| architectures, and for plain files it has no effect at all. |
| @end table |
| |
| |
| @node miscellaneous variables, miscellaneous flags, open flags, per drive variables |
| @subsection General Purpose Drive Variables |
| |
| The following general purpose drive variables are available. Depending |
| to their type, these variables can be set to a string (precmd) or |
| an integer (all others) |
| |
| @table @code |
| @item fat_bits |
| @vindex fat_bits |
| The number of FAT bits. This may be 12 or 16. This is very rarely |
| needed, as it can almost always be deduced from information in the |
| boot sector. On the contrary, describing the number of fat bits may |
| actually be harmful if you get it wrong. You should only use it if |
| mtools gets the auto-detected number of fat bits wrong, or if you want |
| to mformat a disk with a weird number of fat bits. |
| @item codepage |
| Describes the DOS code page used for short filenames. This is a number |
| between 1 and 999. By default, code page 850 is used. The reason for |
| this is because this code page contains most of the characters that are |
| also available in ISO-Latin-1. You may also specify a global code page |
| for all drives by using the global @code{default_codepage} parameter |
| (outside of any drive description). This parameters exists starting at |
| version 4.0.0 |
| |
| @item data_map |
| Remaps data from image file. This is useful for image files which |
| might need additional zero-filled sectors to be inserted. Such is the |
| case for instance for IBM 3174 floppy images. These images represent |
| floppy disks with fewer sectors on their first cylinder. These missing |
| sectors are not stored in the image, but are still counted in the |
| filesystem layout. The data_map allows to fake these missing sectors |
| for the upper layers of mtools. A data_map is a comma-separated |
| sequence of source type and size. Source type may be @code{zero} for |
| zero-filled sectors created by map, @code{skip} for data in raw image |
| to be ignored (skipped), and nothing for data to be used as is |
| (copied) from the raw image. Datamap is automatically complemented by |
| an implicit last element of data to be used as is from current offset |
| to end of file. Each size is a number followed by a unit: @code{s} for |
| a 512 byte sector, @code{K} for Kbytes, @code{M} for megabytes, |
| @code{G} for gigabytes, and nothing for single bytes. |
| |
| Example: |
| |
| @code{data_map=1s,zero31s,28s,skip1s} would be a map for use with IBM |
| 3174 floppy images. First sector (@code{1s}, boot sector) is used as |
| is. Then follow 31 fake zero-filled sectors (@code{zero31s}), then the |
| next 28 sectors from image (@code{28s}) are used as is (they contain |
| FAT and root directory), then one sector from image is skipped |
| (@code{skip1s}), and finally the rest of image is used as is |
| (implicit) |
| |
| |
| @item precmd |
| @cindex Solaris (volcheck) |
| @cindex Executing commands before opening the device |
| On some variants of Solaris, it is necessary to call 'volcheck -v' |
| before opening a floppy device, in order for the system to notice that |
| there is indeed a disk in the drive. @code{precmd="volcheck -v"} in the |
| drive clause establishes the desired behavior. |
| |
| @item blocksize |
| @cindex raw device |
| @cindex character devices |
| @cindex blocksize |
| This parameter represents a default block size to be always used on this |
| device. All I/O is done with multiples of this block size, |
| independently of the sector size registered in the file system's boot |
| sector. This is useful for character devices whose sector size is not |
| 512, such as for example CD-ROM drives on Solaris. |
| |
| @end table |
| |
| Only the @code{file} variable is mandatory. The other parameters may |
| be left out. In that case a default value or an auto-detected value is |
| used. |
| |
| |
| |
| @node miscellaneous flags, multiple descriptions, miscellaneous variables, per drive variables |
| @subsection General Purpose Drive Flags |
| |
| A flag can either be set to 1 (enabled) or 0 (disabled). If the value is |
| omitted, it is enabled. For example, @code{scsi} is equivalent to |
| @code{scsi=1} |
| |
| @table @code |
| @item nolock |
| @cindex disable locking |
| @cindex locking (disabling it) |
| @cindex plain floppy: device xxx busy |
| Instruct mtools to not use locking on this drive. This is needed on |
| systems with buggy locking semantics. However, enabling this makes |
| operation less safe in cases where several users may access the same |
| drive at the same time. |
| |
| @item scsi |
| @cindex setuid installation (needed for raw SCSI I/O) |
| @cindex Solaris (Raw access to SCSI devices such as Zip & Jaz) |
| @cindex SunOS (Raw access to SCSI devices such as Zip & Jaz) |
| @cindex Zip disks (raw SCSI access) |
| @cindex Jaz disks (raw SCSI access) |
| @cindex Syquest disks (raw SCSI access) |
| @cindex SCSI devices |
| When set to 1, this option tells mtools to use raw SCSI I/O instead of |
| the standard read/write calls to access the device. Currently, this is |
| supported on HP-UX, Solaris and SunOS. This is needed because on some |
| architectures, such as SunOS or Solaris, PC media can't be accessed |
| using the @code{read} and @code{write} system calls, because the OS expects |
| them to contain a Sun specific "disk label". |
| |
| As raw SCSI access always uses the whole device, you need to specify the |
| "partition" flag in addition |
| |
| On some architectures, such as Solaris, mtools needs root privileges to |
| be able to use the @code{scsi} option. Thus mtools should be installed |
| setuid root on Solaris if you want to access Zip/Jaz drives. Thus, if |
| the @code{scsi} flag is given, @code{privileged} is automatically |
| implied, unless explicitly disabled by @code{privileged=0} |
| |
| Mtools uses its root privileges to open the device, and to issue the |
| actual SCSI I/O calls. Moreover, root privileges are only used for |
| drives described in a system-wide configuration file such as |
| @file{@value{SYSCONFDIR}mtools.conf}, and not for those described in |
| @file{~/.mtoolsrc} or @file{$MTOOLSRC}. |
| |
| @item privileged |
| @cindex setuid installation |
| @cindex setgid installation |
| When set to 1, this instructs mtools to use its setuid and setgid |
| privileges for opening the given drive. This option is only valid for |
| drives described in the system-wide configuration files (such as |
| @file{@value{SYSCONFDIR}mtools.conf}, not @file{~/.mtoolsrc} or |
| @file{$MTOOLSRC}). Obviously, this option is also a no op if mtools is |
| not installed setuid or setgid. This option is implied by 'scsi=1', but |
| again only for drives defined in system-wide configuration files. |
| Privileged may also be set explicitly to 0, in order to tell mtools not |
| to use its privileges for a given drive even if @code{scsi=1} is set. |
| |
| Mtools only needs to be installed setuid if you use the |
| @code{privileged} or @code{scsi} drive variables. If you do not use |
| these options, mtools works perfectly well even when not installed |
| setuid root. |
| |
| @item vold |
| @cindex Solaris (vold) |
| @cindex Vold (mediamgr) |
| |
| Instructs mtools to interpret the device name as a vold identifier |
| rather than as a filename. The vold identifier is translated into a |
| real filename using the @code{media_findname()} and |
| @code{media_oldaliases()} functions of the @code{volmgt} library. This |
| flag is only available if you configured mtools with the |
| @code{--enable-new-vold} option before compilation. |
| |
| @item swap |
| @cindex Atari |
| @cindex Wordswapped |
| |
| Consider the media as a word-swapped Atari disk. |
| |
| @item use_xdf |
| @cindex XDF disks (how to configure) |
| @vindex use_xdf |
| If this is set to a non-zero value, mtools also tries to access this |
| disk as an XDF disk. XDF is a high capacity format used by OS/2. This |
| is off by default. @xref{XDF}, for more details. |
| @item mformat_only |
| @vindex mformat_only |
| Tells mtools to use the geometry for this drive only for mformatting and |
| not for filtering. |
| |
| @item filter |
| @vindex filter |
| Tells mtools to use the geometry for this drive both for mformatting and |
| filtering. |
| |
| @item remote |
| Tells mtools to connect to floppyd (@pxref{floppyd}). |
| @end table |
| |
| |
| @node multiple descriptions, , miscellaneous flags, per drive variables |
| @subsection Supplying multiple descriptions for a drive |
| |
| It is possible to supply multiple descriptions for a drive. In that |
| case, the descriptions are tried in order until one is found that |
| fits. Descriptions may fail for several reasons: |
| |
| @enumerate |
| @item |
| because the geometry is not appropriate, |
| @item |
| because there is no disk in the drive, |
| @item |
| or because of other problems. |
| @end enumerate |
| |
| Multiple definitions are useful when using physical devices which are |
| only able to support one single disk geometry. |
| Example: |
| @example |
| drive a: file="/dev/fd0H1440" 1.44m |
| drive a: file="/dev/fd0H720" 720k |
| @end example |
| |
| This instructs mtools to use /dev/fd0H1440 for 1.44m (high density) |
| disks and /dev/fd0H720 for 720k (double density) disks. On Linux, this |
| feature is not really needed, as the /dev/fd0 device is able to handle |
| any geometry. |
| |
| You may also use multiple drive descriptions to access both of your |
| physical drives through one drive letter: |
| |
| @example |
| drive z: file="/dev/fd0" |
| drive z: file="/dev/fd1" |
| @end example |
| |
| With this description, @code{mdir z:} accesses your first physical |
| drive if it contains a disk. If the first drive doesn't contain a disk, |
| mtools checks the second drive. |
| |
| When using multiple configuration files, drive descriptions in the files |
| parsed last override descriptions for the same drive in earlier |
| files. In order to avoid this, use the @code{drive+} or @code{+drive} |
| keywords instead of @code{drive}. The first adds a description to the |
| end of the list (i.e. it will be tried last), and the first adds it to |
| the start of the list. |
| |
| @node parsing order, old style configuration, per drive variables, Configuration |
| @section Location of configuration files and parsing order |
| @cindex Parsing order |
| @cindex Configuration file parsing order |
| @cindex Configuration file name (parsing order) |
| @cindex Name of configuration files (parsing order) |
| @cindex Location of configuration files (parsing order) |
| |
| The configuration files are parsed in the following order: |
| @enumerate |
| @item |
| compiled-in defaults |
| @item |
| @file{@value{SYSCONFDIR}mtools.conf} |
| @item |
| @file{~/.mtoolsrc}. |
| @item |
| @file{$MTOOLSRC} (file pointed by the @code{MTOOLSRC} environmental |
| variable) |
| @end enumerate |
| |
| Options described in the later files override those described in the |
| earlier files. Drives defined in earlier files persist if they are not |
| overridden in the later files. For instance, drives A and B may be |
| defined in @file{@value{SYSCONFDIR}mtools.conf} and drives C and D may be |
| defined in @file{~/.mtoolsrc} However, if @file{~/.mtoolsrc} also |
| defines drive A, this new description would override the description of |
| drive A in @file{@value{SYSCONFDIR}mtools.conf} instead of adding to it. If |
| you want to add a new description to a drive already described in an |
| earlier file, you need to use either the @code{+drive} or @code{drive+} |
| keyword. |
| |
| @node old style configuration, , parsing order, Configuration |
| @section Backwards compatibility with old configuration file syntax |
| @cindex Backwards compatibility |
| @cindex Old configuration file syntax |
| @cindex Configuration file, old syntax |
| |
| The syntax described herein is new for version @code{mtools-3.0}. The |
| old line-oriented syntax is still supported. Each line beginning with a |
| single letter is considered to be a drive description using the old |
| syntax. Old style and new style drive sections may be mixed within the |
| same configuration file, in order to make upgrading easier. Support for |
| the old syntax will be phased out eventually, and in order to discourage |
| its use, I purposefully omit its description here. |
| |
| @comment MANskip 5 |
| |
| @node Commands, Compiling mtools, Configuration, Top |
| @chapter Command list |
| @cindex Command list |
| @cindex List of available commands |
| |
| This section describes the available mtools commands, and the command |
| line parameters that each of them accepts. Options which are common to |
| all mtools commands are not described here, @ref{arguments} for a |
| description of those. |
| |
| @menu |
| * floppyd:: floppy daemon to run on your X server box |
| * floppyd_installtest:: small utility to check for the presence of floppyd |
| * mattrib:: change MS-DOS file attribute flags |
| * mbadblocks:: tests a floppy disk, and marks the bad blocks in the FAT |
| * mcat:: same as cat. Only useful with floppyd. |
| * mcd:: change MS-DOS directory |
| * mcopy:: copy MS-DOS files to/from Unix |
| * mdel:: delete an MS-DOS file |
| * mdeltree:: recursively delete an MS-DOS directory |
| * mdir:: display an MS-DOS directory |
| * mdu:: list space occupied by directory and its contents |
| * mformat:: add an MS-DOS file system to a low-level formatted floppy disk |
| * minfo:: get information about an MS-DOS file system. |
| * mlabel:: make an MS-DOS volume label |
| * mkmanifest:: makes a list of short name equivalents |
| * mmd:: make an MS-DOS subdirectory |
| * mmount:: mount an MS-DOS disk |
| * mpartition:: create an MS-DOS as a partition |
| * mrd:: remove an MS-DOS subdirectory |
| * mmove:: move or rename an MS-DOS file or subdirectory |
| * mren:: rename an existing MS-DOS file |
| * mshortname:: shows the short name of a file |
| * mshowfat:: shows the FAT map of a file |
| * mtoolstest:: tests and displays the configuration |
| * mtype:: display contents of an MS-DOS file |
| * mzip:: zip disk specific commands |
| @end menu |
| |
| @node floppyd, floppyd_installtest, Commands, Commands |
| @section Floppyd |
| @pindex floppyd |
| @cindex X terminal |
| @cindex remote floppy access |
| |
| @code{Floppyd} is used as a server to grant access to the floppy drive |
| to clients running on a remote machine, just as an X server grants |
| access to the display to remote clients. It has the following syntax: |
| |
| @code{floppyd} [@code{-d}] [@code{-l}] [@code{-s} @var{port}] [@code{-r} |
| @var{user}] [@code{-b} @var{ipaddr}] [@code{-x} @var{display}] @var{devicenames} |
| |
| |
| @code{floppyd} is always associated with an X server. It runs on the |
| same machine as its X server, and listens on port 5703 and above. |
| |
| @subsection Authentication |
| |
| @code{floppyd} authenticates remote clients using the @code{Xauthority} |
| protocol. Xhost authentication is not supported. Each floppyd is |
| associated with an X server. When a remote client attempts to connect |
| to floppyd, it sends floppyd the X authority record corresponding to |
| floppyd's X server. Floppyd in turn then tries to open up a connection |
| to the X server in order to verify the authenticity of the xauth record. |
| If the connection to the X server succeeds, the client is granted |
| access. |
| @code{DISPLAY}. |
| |
| @strong{Caution}: In order to make authentication work correctly, the |
| local host should @strong{not} be listed in the @code{xhost} list of |
| allowed hosts. |
| Indeed, hosts listed in @code{xhost} do not need a correct |
| @code{Xauthority} cookie to connect to the X server. As @code{floppyd} |
| runs on the same host as the X server, all its probe connection would |
| succeed even for clients who supplied a bad cookie. This means that |
| your floppy drive would be open to the world, i.e. a huge security hole. |
| If your X server does not allow you to remove @code{localhost:0} and |
| @code{:0} from the @code{xhost} list, you can prevent floppyd from |
| probing those display names with the @code{-l} option. |
| |
| @subsection Command line options |
| |
| @table @code |
| @item d |
| Daemon mode. Floppyd runs its own server loop. Do not supply this if |
| you start floppyd from @code{inetd.conf} |
| @item s @var{port} |
| Port number for daemon mode. Default is 5703 + @var{displaynumber}. |
| This flag implies daemon mode. For example, for display |
| @code{hitchhiker:5}, the port would be 5708. |
| @item b @var{ipaddr} |
| Bind address (for multi homed hosts). This flag implies daemon mode |
| @item r @var{user} |
| Run the server under as the given user |
| @item x @var{display} |
| X display to use for authentication. By default, this is taken from the |
| @code{DISPLAY} variable. If neither the @code{x} attribute is present |
| nor @code{DISPLAY} is set, floppyd uses @code{:0.0}. |
| @end table |
| |
| @var{devicenames} is a list of device nodes to be opened. Default |
| is @code{/dev/fd0}. Multiple devices are only supported on mtools |
| versions newer than 3.9.11. |
| |
| |
| @subsection Connecting to floppyd |
| |
| In order to use floppyd, add the flag @code{remote} to the device |
| description in your @file{~/.mtoolsrc} file. If the flag @code{remote} |
| is given, the @code{file} parameter of the device description is taken |
| to be a remote address. It's format is the following: |
| @var{hostname}@code{:}@var{displaynumber}[@code{/}[@var{baseport}][@code{/}@var{drive}]]. When |
| using this entry, mtools connects to port |
| @var{baseport}+@var{displaynumber} at @var{hostname}. By default |
| @var{baseport} is 5703. The drive parameter is to distinguish among |
| multiple drives associated with a single display (only mtools versions |
| more recent than 3.9.11) |
| |
| @subsection Examples: |
| |
| The following starts a floppy daemon giving access to @file{/dev/fd0}, |
| listening on the default port 5703, tied to the default X servers: |
| |
| @example |
| floppyd -d /dev/fd0 |
| @end example |
| |
| Each of the following starts a floppy daemon giving access to |
| @file{/dev/fd1}, tied to the :1 local X servers, and listening on port |
| 5704. We assume that the local host is named @code{hitchhiker}. |
| |
| @example |
| floppyd -d /dev/fd0 |
| floppyd -d -x :1 -p 5704 /dev/fd0 |
| @end example |
| |
| If you want to start floppyd by @code{inetd} instead of running it as a |
| daemon, insert the following lines into @file{/etc/services}: |
| @example |
| # floppy daemon |
| floppyd-0 5703/tcp # floppy daemon for X server :0 |
| floppyd-1 5704/tcp # floppy daemon for X server :1 |
| @end example |
| |
| And insert the following into @file{/etc/inetd.conf} (assuming that you |
| have defined a user named floppy in your @file{/etc/passwd}): |
| |
| @example |
| # floppy daemon |
| floppyd-0 stream tcp wait floppy /usr/sbin/floppyd floppyd /dev/fd0 |
| floppyd-1 stream tcp wait floppy /usr/sbin/floppyd floppyd -x :1 /dev/fd0 |
| @end example |
| |
| Note that you need to supply the X display names for the second |
| floppyd. This is because the port is opened by inetd.conf, and hence |
| floppyd cannot know its number to interfere the display number. |
| |
| |
| On the client side, insert the following into your @file{~/.mtoolsrc} |
| to define a drive letter accessing floppy drive in your X terminal: |
| @example |
| drive x: file="$DISPLAY" remote |
| @end example |
| |
| If your X terminal has more than one drive, you may access the |
| additional drives as follows: |
| @example |
| drive y: file="$DISPLAY//1" remote |
| drive z: file="$DISPLAY//2" remote |
| @end example |
| |
| @node floppyd_installtest, mattrib, floppyd, Commands |
| @section Floppyd_installtest |
| @pindex floppyd_installtest |
| @cindex X terminal |
| @cindex remote floppy access |
| |
| @code{Floppyd_installtest} is used to check for the presence of a running |
| floppyd daemon. This is useful, if you have a small front-end script to |
| mtools, which decides whether to use floppyd or not. |
| |
| @code{floppyd_installtest} [@code{-f}] Connect-String |
| |
| If the @code{-f} option is specified, @code{floppyd_installtest} does a |
| full X-Cookie authentication and complains if this does not work. |
| |
| The connect-String has the format described in the floppyd-section: |
| @var{hostname}@code{:}@var{displaynumber}[@code{/}@var{baseport}] |
| |
| @node mattrib, mbadblocks, floppyd_installtest, Commands |
| @section Mattrib |
| @pindex mattrib |
| @cindex Changing file attributes |
| @cindex Hidden files |
| @cindex Read-only files (changing the attribute) |
| @cindex System files |
| @cindex Archive bit |
| |
| @code{Mattrib} is used to change MS-DOS file attribute flags. It has the |
| following syntax: |
| |
| @code{mattrib} [@code{-a|+a}] [@code{-h|+h}] [@code{-r|+r}] |
| [@code{-s|+s}] [@code{-/}] [@code{-p}] [@code{-X}] @var{msdosfile} [ @var{msdosfiles} @dots{} ] |
| |
| @code{Mattrib} adds attribute flags to an MS-DOS file (with the |
| `@code{+}' operator) or remove attribute flags (with the `@code{-}' |
| operator). |
| |
| @code{Mattrib} supports the following attribute bits: |
| |
| @table @code |
| @item a |
| Archive bit. Used by some backup programs to indicate a new file. |
| @item r |
| Read-only bit. Used to indicate a read-only file. Files with this bit |
| set cannot be erased by @code{DEL} nor modified. |
| @item s |
| System bit. Used by MS-DOS to indicate a operating system file. |
| @item h |
| Hidden bit. Used to make files hidden from @code{DIR}. |
| @end table |
| |
| @code{Mattrib} supports the following command line flags: |
| @table @code |
| @item / |
| Recursive. Recursively list the attributes of the files in the subdirectories. |
| @item X |
| Concise. Prints the attributes without any whitespace padding. If |
| neither the "/" option is given, nor the @var{msdosfile} contains a |
| wildcard, and there is only one MS-DOS file parameter on the command |
| line, only the attribute is printed, and not the filename. This option |
| is convenient for scripts |
| @item p |
| Replay mode. Outputs a series of @code{mformat} commands that will |
| reproduce the current situation, starting from a situation as left by |
| untarring the MS-DOS file system. Commands are only output for |
| attribute settings that differ from the default (archive bit set for |
| files, unset for directories). This option is intended to be used in |
| addition to tar. The @code{readonly} attribute is not taken into |
| account, as tar can set that one itself. |
| @end table |
| |
| @node mbadblocks, mcat, mattrib, Commands |
| @section Mbadblocks |
| @pindex mbadblocks |
| @cindex Marking blocks as bad |
| @cindex Bad blocks |
| @cindex Read errors |
| |
| The @code{mbadblocks} command is used to mark some clusters on an |
| MS-DOS filesystem bad. It has the following syntax: |
| |
| @code{mbadblocks} [@code{-s} @var{sectorlist}|@code{-c} @var{clusterlist}|-w] @var{drive}@code{:} |
| |
| If no command line flags are supplied, @code{Mbadblocks} scans an |
| MS-DOS filesystem for bad blocks by simply trying to read them and |
| flag them if read fails. All blocks that are unused are scanned, and |
| if detected bad are marked as such in the FAT. |
| |
| This command is intended to be used right after @code{mformat}. It is |
| not intended to salvage data from bad disks. |
| |
| |
| @subsection Command line options |
| |
| @table @code |
| @item c @var{file} |
| Use a list of bad clusters, rather than scanning for bad clusters |
| itself. |
| @item s @var{file} |
| Use a list of bad sectors (counted from beginning of filesystem), |
| rather than trying for bad clusters itself. |
| @item w |
| Write a random pattern to each cluster, then read it back and flag |
| cluster as bad if mismatch. Only free clusters are tested in such a |
| way, so any file data is preserved. |
| @end table |
| |
| @subsection Bugs |
| @code{Mbadblocks} should (but doesn't yet :-( ) also try to salvage bad |
| blocks which are in use by reading them repeatedly, and then mark them |
| bad. |
| |
| @node mcat, mcd, mbadblocks, Commands |
| @section Mcat |
| |
| The @code{mcat} command is used to copy an entire disk image from or |
| to the floppy device. It uses the following syntax: |
| |
| @code{mcat} [@code{-w}] @var{drive}@code{:} |
| @pindex mcat |
| @cindex Copying an entire disk image |
| @cindex Disk image |
| @cindex Floppyd cat |
| |
| @code{Mcat} performs the same task as the Unix @code{cat} command. It |
| is included into the mtools package, since @code{cat} cannot access |
| remote floppy devices offered by the mtools floppy daemon. |
| Now it is possible to create boot floppies remotely. |
| |
| The default operation is reading. The output is written to stdout. |
| |
| If the @code{-w} option is specified, mcat reads a disk-image from |
| stdin and writes it to the given device. |
| @strong{Use this carefully!} Because of the low-level nature of this |
| command, it will happily destroy any data written before on the |
| disk without warning! |
| |
| @node mcd, mcopy, mcat, Commands |
| @section Mcd |
| @pindex mcd |
| @cindex Directory (changing) |
| @cindex Working directory |
| @cindex Current working directory (changing the) |
| @cindex Default directory (changing the) |
| @cindex Mcwd file |
| |
| The @code{mcd} command is used to change the mtools working directory |
| on the MS-DOS disk. It uses the following syntax: |
| |
| @example |
| @code{mcd} [@var{msdosdirectory}] |
| @end example |
| |
| Without arguments, @code{mcd} reports the current device and working |
| directory. Otherwise, @code{mcd} changes the current device and current |
| working directory relative to an MS-DOS file system. |
| |
| The environmental variable @code{MCWD} may be used to locate the file |
| where the device and current working directory information is stored. |
| The default is @file{$HOME/.mcwd}. Information in this file is ignored |
| if the file is more than 6 hours old. |
| |
| @code{Mcd} returns 0 on success or 1 on failure. |
| |
| Unlike MS-DOS versions of @code{CD}, @code{mcd} can be used to change to |
| another device. It may be wise to remove old @file{.mcwd} files at logout. |
| |
| @node mcopy, mdel, mcd, Commands |
| @section Mcopy |
| @pindex mcopy |
| @cindex Reading MS-DOS files |
| @cindex Writing MS-DOS files |
| @cindex Copying MS-DOS files |
| @cindex Concatenating MS-DOS files |
| @cindex Text files |
| @cindex CR/LF conversions |
| |
| The @code{mcopy} command is used to copy MS-DOS files to and from |
| Unix. It uses the following syntax: |
| |
| @example |
| @code{mcopy} [@code{-bspanvmQT}] [@code{-D} @var{clash_option}] @var{sourcefile} @var{targetfile} |
| @code{mcopy} [@code{-bspanvmQT}] [@code{-D} @var{clash_option}] @var{sourcefile} [ @var{sourcefiles}@dots{} ] @var{targetdirectory} |
| @code{mcopy} [@code{-tnvm}] @var{MSDOSsourcefile} |
| @end example |
| |
| |
| |
| @code{Mcopy} copies the specified file to the named file, or copies |
| multiple files to the named directory. The source and target can be |
| either MS-DOS or Unix files. |
| |
| The use of a drive letter designation on the MS-DOS files, 'a:' for |
| example, determines the direction of the transfer. A missing drive |
| designation implies a Unix file whose path starts in the current |
| directory. If a source drive letter is specified with no attached file |
| name (e.g. @code{mcopy a: .}), all files are copied from that drive. |
| |
| If only a single, MS-DOS source parameter is provided (e.g. "mcopy |
| a:foo.exe"), an implied destination of the current directory |
| (`@code{.}') is assumed. |
| |
| A filename of `@code{-}' means standard input or standard output, depending |
| on its position on the command line. |
| |
| @code{Mcopy} accepts the following command line options: |
| |
| @table @code |
| @item t |
| Text file transfer. Mcopy translates incoming carriage return/line |
| feeds to line feeds when copying from MS-DOS to Unix, and vice-versa when |
| copying from Unix to MS-DOS. |
| @item b |
| Batch mode. Optimized for huge recursive copies, but less secure if a |
| crash happens during the copy. |
| @item s |
| Recursive copy. Also copies directories and their contents |
| @item p |
| Preserves the attributes of the copied files |
| @item Q |
| When mcopying multiple files, quits as soon as one copy fails (for |
| example due to lacking storage space on the target disk) |
| @item a |
| Text (ASCII) file transfer. @code{ASCII} translates incoming carriage |
| return/line feeds to line feeds. |
| @item T |
| Text (ASCII) file transfer with character set conversion. Differs from |
| @code{-a} in the @code{ASCII} also translates incoming PC-8 characters |
| to ISO-8859-1 equivalents as far as possible. When reading DOS files, |
| untranslatable characters are replaced by '@code{#}'; when writing DOS files, |
| untranslatable characters are replaced by '@code{.}'. |
| @item n |
| No confirmation when overwriting Unix files. @code{ASCII} doesn't |
| warn the user when overwriting an existing Unix file. If the target |
| file already exists, and the @code{-n} option is not in effect, |
| @code{mcopy} asks whether to overwrite the file or to rename the new |
| file (see @ref{name clashes}) for details). In order to switch off |
| confirmation for DOS files, use @code{-o}. |
| @item m |
| Preserve the file modification time. |
| @item v |
| Verbose. Displays the name of each file as it is copied. |
| @end table |
| |
| @subsection Bugs |
| Unlike MS-DOS, the '+' operator (append) from MS-DOS is not |
| supported. However, you may use @code{mtype} to produce the same effect: |
| @example |
| mtype a:file1 a:file2 a:file3 >unixfile |
| mtype a:file1 a:file2 a:file3 | mcopy - a:msdosfile |
| @end example |
| |
| @node mdel, mdeltree, mcopy, Commands |
| @section Mdel |
| @pindex mdel |
| @cindex removing MS-DOS files |
| @cindex erasing MS-DOS files |
| @cindex deleting MS-DOS files |
| |
| The @code{mdel} command is used to delete an MS-DOS file. Its syntax |
| is: |
| |
| @display |
| @code{mdel} [@code{-v}] @var{msdosfile} [ @var{msdosfiles} @dots{} ] |
| @end display |
| |
| @code{Mdel} deletes files on an MS-DOS file system. |
| |
| @code{Mdel} asks for verification prior to removing a read-only file. |
| |
| @node mdeltree, mdir, mdel, Commands |
| @section Mdeltree |
| @pindex mdeltree |
| @cindex removing an MS-DOS directory recursively |
| @cindex erasing an MS-DOS directory recursively |
| @cindex deleting an MS-DOS directory recursively |
| @cindex recursively removing an MS-DOS directory |
| |
| The @code{mdeltree} command is used to delete an MS-DOS file. Its syntax |
| is: |
| |
| @display |
| @code{mdeltree} [@code{-v}] @var{msdosdirectory} [@var{msdosdirectories}@dots{}] |
| @end display |
| |
| @code{Mdeltree} removes a directory and all the files and subdirectories |
| it contains from an MS-DOS file system. An error occurs if the directory |
| to be removed does not exist. |
| |
| @node mdir, mdu, mdeltree, Commands |
| @section Mdir |
| @pindex mdir |
| @cindex Read-only files (listing them) |
| @cindex Listing a directory |
| @cindex Directory listing |
| |
| The @code{mdir} command is used to display an MS-DOS directory. Its |
| syntax is: |
| |
| @code{mdir} [@code{-/}] [@code{-f}] [@code{-w}] [@code{-a}] [@code{-b}] @var{msdosfile} [ @var{msdosfiles}@dots{}] |
| |
| @code{Mdir} |
| displays the contents of MS-DOS directories, or the entries for some |
| MS-DOS files. |
| |
| @code{Mdir} supports the following command line options: |
| |
| @table @code |
| @item / |
| Recursive output, just like MS-DOS' @code{-s} option |
| @item w |
| Wide output. With this option, @code{mdir} prints the filenames across |
| the page without displaying the file size or creation date. |
| @item a |
| Also list hidden files. |
| @item f |
| Fast. Do not try to find out free space. On larger disks, finding out |
| the amount of free space takes up some non trivial amount of time, as |
| the whole FAT must be read in and scanned. The @code{-f} flag bypasses |
| this step. This flag is not needed on FAT32 file systems, which store |
| the size explicitly. |
| @item b |
| Concise listing. Lists each directory name or filename, one per line |
| (including the filename extension). This switch displays no heading |
| information and no summary. Only a newline separated list of pathnames |
| is displayed. |
| @end table |
| |
| An error occurs if a component of the path is not a directory. |
| |
| @node mdu, mformat, mdir, Commands |
| @section Mdu |
| @pindex mdu |
| @cindex Space occupied by directories and files |
| @cindex du |
| @cindex Listing space occupied by directories and files |
| @cindex Occupation of space by directories and files |
| |
| @code{Mdu} is used to list the space occupied by a directory, its |
| subdirectories and its files. It is similar to the @code{du} command on |
| Unix. The unit used are clusters. Use the minfo command to find out |
| the cluster size. |
| |
| @code{mdu} [@code{-a}] [ @var{msdosfiles} @dots{} ] |
| |
| |
| @table @code |
| @item a |
| All files. List also the space occupied for individual files. |
| @item s |
| Only list the total space, don't give details for each subdirectory. |
| @end table |
| |
| |
| |
| @node mformat, mkmanifest, mdu, Commands |
| @section Mformat |
| @pindex mformat |
| @cindex Initializing disks |
| @cindex Formatting disks |
| @cindex File system creation |
| |
| The @code{mformat} command is used to add an MS-DOS file system to a |
| low-level formatted diskette. Its syntax is: |
| |
| @display |
| @code{mformat} [@code{-t} @var{cylinders}|@code{-T} @var{tot_sectors}] [@code{-h} @var{heads}] [@code{-s} @var{sectors}] |
| [@code{-f} @var{size}] [@code{-1}] [@code{-4}] [@code{-8}] |
| [@code{-v} @var{volume_label}] |
| [@code{-F}] [@code{-S} @var{sizecode}] |
| [@code{-M} @var{software_sector_size}] |
| [@code{-N} @var{serial_number}] [@code{-a}] |
| [@code{-C}] [@code{-H} @var{hidden_sectors}] [@code{-I} @var{fsVersion}] |
| [@code{-r} @var{root_sectors}] [@code{-L} @var{fat_len}] |
| [@code{-B} @var{boot_sector}] [@code{-k}] |
| [@code{-m} @var{media_descriptor}] |
| [@code{-K} @var{backup_boot}] |
| [@code{-R} @var{nb_reserved_sectors}] |
| [@code{-c} @var{clusters_per_sector}] |
| [@code{-d} @var{fat_copies}] |
| [@code{-X}] [@code{-2} @var{sectors_on_track_0}] [@code{-3}] |
| [@code{-0} @var{rate_on_track_0}] [@code{-A} @var{rate_on_other_tracks}] |
| @var{drive:} |
| @end display |
| |
| @code{Mformat} adds a minimal MS-DOS file system (boot sector, FAT, and |
| root directory) to a diskette that has already been formatted by a Unix |
| low-level format. |
| |
| |
| The following options are supported: (The S, 2, 1 and M options may not |
| exist if this copy of mtools has been compiled without the USE_2M |
| option) |
| |
| The following options are the same as for MS-DOS's format command: |
| |
| @comment xMANoptions |
| |
| @table @code |
| @item v |
| Specifies the volume label. A volume label identifies the disk and can |
| be a maximum of 11 characters. If you omit the -v switch, mformat will |
| assign no label to the disk. |
| @item f |
| Specifies the size of the DOS file system to format. Only a certain |
| number of predefined sizes are supported by this flag; for others use |
| the -h/-t/-s flags. The following sizes are supported: |
| @table @asis |
| @item 160 |
| 160K, single-sided, 8 sectors per track, 40 cylinders (for 5 1/4 DD) |
| @item 180 |
| 160K, single-sided, 9 sectors per track, 40 cylinders (for 5 1/4 DD) |
| @item 320 |
| 320K, double-sided, 8 sectors per track, 40 cylinders (for 5 1/4 DD) |
| @item 360 |
| 360K, double-sided, 9 sectors per track, 40 cylinders (for 5 1/4 DD) |
| @item 720 |
| 720K, double-sided, 9 sectors per track, 80 cylinders (for 3 1/2 DD) |
| @item 1200 |
| 1200K, double-sided, 15 sectors per track, 80 cylinders (for 5 1/4 HD) |
| @item 1440 |
| 1440K, double-sided, 18 sectors per track, 80 cylinders (for 3 1/2 HD) |
| @item 2880 |
| 2880K, double-sided, 36 sectors per track, 80 cylinders (for 3 1/2 ED) |
| @end table |
| |
| @item t |
| Specifies the number of tracks on the disk. |
| @item T |
| Specifies the number of total sectors on the disk. Only one of these 2 |
| options may be specified (tracks or total sectors) |
| @item h |
| The number of heads (sides). |
| @item s |
| Specifies the number of sectors per track. If the 2m option is given, |
| number of 512-byte sector equivalents on generic tracks (i.e. not head 0 |
| track 0). If the 2m option is not given, number of physical sectors per |
| track (which may be bigger than 512 bytes). |
| |
| @item 1 |
| Formats a single side (equivalent to -h 1) |
| |
| @item 4 |
| Formats a 360K double-sided disk (equivalent to -f 360). When used |
| together with -the 1 switch, this switch formats a 180K disk |
| |
| @item 8 |
| Formats a disk with 8 sectors per track. |
| |
| @end table |
| |
| MS-DOS format's @code{q}, @code{u} and @code{b} options are not |
| supported, and @code{s} has a different meaning. |
| |
| The following options are specific to mtools: |
| |
| @table @code |
| |
| @item F |
| Format the partition as FAT32. |
| |
| @item S |
| The size code. The size of the sector is 2 ^ (sizecode + 7). |
| @item X |
| formats the disk as an XDF disk. @xref{XDF}, for more details. The disk |
| has first to be low-level formatted using the xdfcopy utility included |
| in the fdutils package. XDF disks are used for instance for OS/2 install |
| disks. |
| @item 2 |
| 2m format. The parameter to this option describes the number of |
| sectors on track 0, head 0. This option is recommended for sectors |
| bigger than normal. |
| @item 3 |
| don't use a 2m format, even if the current geometry of the disk is a 2m |
| geometry. |
| @item 0 |
| Data transfer rate on track 0 |
| @item A |
| Data transfer rate on tracks other than 0 |
| @item M |
| software sector size. This parameter describes the sector size in bytes used |
| by the MS-DOS file system. By default it is the physical sector size. |
| @item N |
| Uses the requested serial number, instead of generating one |
| automatically |
| @item a |
| If this option is given, an Atari style serial number is generated. |
| Ataris store their serial number in the OEM label. |
| @item C |
| creates the disk image file to install the MS-DOS file system on |
| it. Obviously, this is useless on physical devices such as floppies |
| and hard disk partitions, but is interesting for image files. |
| @item H |
| number of hidden sectors. This parameter is useful for formatting hard |
| disk partition, which are not aligned on track boundaries (i.e. first |
| head of first track doesn't belong to the partition, but contains a |
| partition table). In that case the number of hidden sectors is in |
| general the number of sectors per cylinder. This is untested. |
| @item I |
| Sets the fsVersion id when formatting a FAT32 drive. In order to find |
| this out, run minfo on an existing FAT32 drive, and mail me about it, so |
| I can include the correct value in future versions of mtools. |
| @item c |
| Sets the size of a cluster (in sectors). If this cluster size would |
| generate a FAT that too big for its number of bits, mtools automatically |
| increases the cluster size, until the FAT is small enough. If no |
| cluster size is specified explicitly, mtools uses a default value as |
| described in section ``Number of sectors per cluster'' below. |
| @item d |
| Sets the number of FAT copies. Default is 2. This setting can also be |
| specified using the @code{MTOOLS_NFATS} environment variable. |
| @item r |
| Sets the size of the root directory (in sectors). Only applicable to 12 |
| and 16 bit FATs. This setting can also be specified using the |
| @code{MTOOLS_DIR_LEN} environment variable. |
| @item L |
| Sets the length of the FAT. |
| @item B |
| Use the boot sector stored in the given file or device, instead of using |
| its own. Only the geometry fields are updated to match the target disks |
| parameters. |
| @item k |
| Keep the existing boot sector as much as possible. Only the geometry |
| fields and other similar file system data are updated to match the target |
| disks parameters. |
| @item K |
| Sets the sector number where the backup of the boot sector should be |
| stored (only relevant on FAT32). |
| @item R |
| Sets the number of reserved sectors for this filesystem. This must be |
| at least 1 for non-FAT32 disks, and at least 3 for FAT disks (in order |
| to accommodate the boot sector, the info sector and the backup boot |
| sector). |
| |
| @item m |
| Use a non-standard media descriptor byte for this disk. The media |
| descriptor is stored at position 21 of the boot sector, and as first |
| byte in each FAT copy. Using this option may confuse DOS or older mtools |
| version, and may make the disk unreadable. Only use if you know what you |
| are doing. |
| |
| @end table |
| |
| To format a diskette at a density other than the default, you must supply |
| (at least) those command line parameters that are different from the |
| default. |
| |
| @code{Mformat} returns 0 on success or 1 on failure. |
| |
| It doesn't record bad block information to the Fat, use |
| @code{mbadblocks} for that. |
| |
| @subsection Number of sectors per cluster |
| |
| If the user indicates no cluster size, mformat figures out a default |
| value for it. |
| |
| For FAT32 it uses the following table to determine the number of |
| sectors per cluster, depending on the total number of sectors on the |
| filesystem. |
| |
| more than 32*1024*1024*2: 64 sectors@* |
| between 16*1024*1024*2 and 32*1024*1024*2: 32 sectors@* |
| between 8*1024*1024*2 and 16*1024*1024*2: 16 sectors@* |
| between 260*1024*2 and 81024*1024*2: 1 sectors@* |
| |
| This is derived from information on page 20 of Microsoft's |
| @code{fatgen103} document, which currently can be found at the |
| following address: |
| |
| @code{https://staff.washington.edu/dittrich/misc/fatgen103.pdf} |
| |
| For FAT12 and FAT16, mformat uses an iterative approach, where it |
| starts with a set value, which it doubles until it is able to fill up |
| the disk using that cluster size and a number of cluster less than the |
| maximum allowed. |
| |
| The starting value is 1 for disks with one head or less than 2000 |
| sectors, and 2 for disks with more than one head, and more than 2000 |
| sectors. |
| |
| The number of sectors per cluster cannot go beyond 128. |
| |
| @node mkmanifest, minfo, mformat, Commands |
| @section Mkmanifest |
| @pindex mkmanifest |
| @cindex packing list |
| |
| The @code{mkmanifest} command is used to create a shell script (packing |
| list) to restore Unix filenames. Its syntax is: |
| |
| @code{mkmanifest} [ @var{files} ] |
| |
| @code{Mkmanifest} creates a shell script that aids in the restoration of |
| Unix filenames that got clobbered by the MS-DOS filename restrictions. |
| MS-DOS filenames are restricted to 8 character names, 3 character |
| extensions, upper case only, no device names, and no illegal characters. |
| |
| |
| The mkmanifest program is compatible with the methods used in |
| @code{pcomm, arc,} and @code{mtools} to change perfectly good Unix |
| filenames to fit the MS-DOS restrictions. This command is only useful if |
| the target system which will read the diskette cannot handle VFAT long |
| names. |
| |
| @subsection Example |
| You want to copy the following Unix files to a MS-DOS diskette (using the |
| @code{mcopy} command). |
| |
| @example |
| very_long_name |
| 2.many.dots |
| illegal: |
| good.c |
| prn.dev |
| Capital |
| @end example |
| |
| @code{ASCII} |
| converts the names to: |
| |
| @example |
| very_lon |
| 2xmany.dot |
| illegalx |
| good.c |
| xprn.dev |
| capital |
| @end example |
| |
| The command: |
| @example |
| mkmanifest very_long_name 2.many.dots illegal: good.c prn.dev Capital >manifest |
| @end example |
| would produce the following: |
| @example |
| mv very_lon very_long_name |
| mv 2xmany.dot 2.many.dots |
| mv illegalx illegal: |
| mv xprn.dev prn.dev |
| mv capital Capital |
| @end example |
| |
| Notice that "good.c" did not require any conversion, so it did not |
| appear in the output. |
| |
| Suppose I've copied these files from the diskette to another Unix |
| system, and I now want the files back to their original names. If the |
| file "manifest" (the output captured above) was sent along with those |
| files, it could be used to convert the filenames. |
| |
| @subsection Bugs |
| |
| The short names generated by @code{mkmanifest} follow the old convention |
| (from mtools-2.0.7) and not the one from Windows 95 and mtools-3.0. |
| |
| |
| @node minfo, mlabel, mkmanifest, Commands |
| @section Minfo |
| @pindex minfo |
| @cindex mformat parameters |
| @cindex getting parameters of a MS-DOS file system |
| |
| The @code{minfo} command prints the parameters of a MS-DOS file system, such |
| as number of sectors, heads and cylinders. It also prints an mformat |
| command line which can be used to create a similar MS-DOS file system on |
| another media. However, this doesn't work with 2m or XDF media, and |
| with MS-DOS 1.0 file systems |
| @display |
| @code{minfo} @var{drive}: |
| @end display |
| |
| Minfo supports the following option: |
| @table @code |
| @item v |
| Prints a hexdump of the boot sector, in addition to the other information |
| @end table |
| |
| |
| @node mlabel, mmd, minfo, Commands |
| @section Mlabel |
| @pindex mlabel |
| @cindex Labeling a disk |
| @cindex Disk label |
| |
| The @code{mlabel} command adds a volume label to a disk. Its syntax is: |
| @display |
| @code{mlabel} [@code{-vcsn}] [@code{-N} @var{serial}] @var{drive}:[@var{new_label}] |
| @end display |
| |
| @code{Mlabel} displays the current volume label, if present. If |
| @var{new_label} is not given, and if neither the @code{c} nor the |
| @code{s} options are set, it prompts the user for a new volume label. |
| To delete an existing volume label, press return at the prompt. |
| |
| The label is limited to 11 single-byte characters, |
| e.g. @code{Name1234567}. |
| |
| Reasonable care is taken to create a valid MS-DOS volume label. If an |
| invalid label is specified, @code{mlabel} changes the label (and |
| displays the new label if the verbose mode is set). @code{Mlabel} |
| returns 0 on success or 1 on failure. |
| |
| Mlabel supports the following options: |
| @table @code |
| @item c |
| Clears an existing label, without prompting the user |
| @item s |
| Shows the existing label, without prompting the user. |
| @item n |
| Assigns a new (random) serial number to the disk |
| @item N @var{serial} |
| Sets the supplied serial number. The serial number should be supplied as |
| an 8 digit hexadecimal number, without spaces |
| @end table |
| |
| |
| @node mmd, mmount, mlabel, Commands |
| @section Mmd |
| @pindex mmd |
| @cindex Making a directory |
| @cindex Creating a directory |
| @cindex Directory creation |
| @cindex Subdirectory creation |
| |
| The @code{mmd} command is used to make an MS-DOS subdirectory. Its |
| syntax is: |
| |
| @code{mmd} [@code{-D} @var{clash_option}] @var{msdosdirectory} [ |
| @var{msdosdirectories}@dots{} ] |
| |
| @code{Mmd} makes a new directory on an MS-DOS file system. An error occurs |
| if the directory already exists. |
| |
| |
| @node mmount, mmove, mmd, Commands |
| @section Mmount |
| @pindex mmount |
| @cindex Linux enhancements (mmount) |
| @cindex Mounting a disk |
| @cindex High capacity formats, mounting |
| |
| The @code{mmount} command is used to mount an MS-DOS disk. It is only |
| available on Linux, as it is only useful if the OS kernel allows |
| configuration of the disk geometry. Its syntax is: |
| |
| @code{mmount} @var{msdosdrive} [@var{mountargs}] |
| |
| @code{Mmount} |
| reads the boot sector of an MS-DOS disk, configures the drive geometry, |
| and finally mounts it passing |
| @code{mountargs} to @code{mount. } |
| If no mount arguments are specified, the name of the device is |
| used. If the disk is write protected, it is automatically mounted read |
| only. |
| |
| |
| @node mmove, mpartition, mmount, Commands |
| @section Mmove |
| @pindex mmove |
| @cindex Moving files (mmove) |
| @cindex Renaming files (mmove) |
| |
| The @code{mmove} command is used to move or rename an existing MS-DOS |
| file or subdirectory. |
| @display |
| @code{mmove} [@code{-v}] [@code{-D} @var{clash_option}] @var{sourcefile} @var{targetfile} |
| @code{mmove} [@code{-v}] [@code{-D} @var{clash_option}] @var{sourcefile} [ @var{sourcefiles}@dots{} ] @var{targetdirectory} |
| @end display |
| @code{Mmove} moves or renames an existing MS-DOS file or |
| subdirectory. Unlike the MS-DOS version of @code{MOVE}, @code{mmove} is |
| able to move subdirectories. Files or directories can only be moved |
| within one file system. Data cannot be moved from MS-DOS to Unix or |
| vice-versa. If you omit the drive letter from the target file or |
| directory, the same letter as for the source is assumed. If you omit |
| the drive letter from all parameters, drive a: is assumed by default. |
| |
| @node mpartition, mrd, mmove, Commands |
| @section Mpartition |
| @pindex mpartition |
| @cindex partitions (creating) |
| @cindex Zip disks (partitioning them) |
| @cindex Jaz disks (partitioning them) |
| |
| The @code{mpartition} command is used to create MS-DOS file systems as |
| partitions. This is intended to be used on non-Linux systems, |
| i.e. systems where fdisk and easy access to SCSI devices are not |
| available. This command only works on drives whose partition variable |
| is set. |
| |
| @display |
| @code{mpartition} @code{-p} @var{drive} |
| @code{mpartition} @code{-r} @var{drive} |
| @code{mpartition} @code{-I} [@code{-B} @var{bootSector}] @var{drive} |
| @code{mpartition} @code{-a} @var{drive} |
| @code{mpartition} @code{-d} @var{drive} |
| @code{mpartition} @code{-c} [@code{-s} @var{sectors}] [@code{-h} @var{heads}] |
| [@code{-t} @var{cylinders}] [@code{-v} [@code{-T} @var{type}] [@code{-b} |
| @var{begin}] [@code{-l} length] [@code{-f}] |
| |
| @end display |
| |
| Mpartition supports the following operations: |
| |
| @table @code |
| @item p |
| Prints a command line to recreate the partition for the drive. Nothing |
| is printed if the partition for the drive is not defined, or an |
| inconsistency has been detected. If verbose (@code{-v}) is also set, |
| prints the current partition table. |
| @item r |
| Removes the partition described by @var{drive}. |
| @item I |
| Initializes the partition table, and removes all partitions. |
| @item c |
| Creates the partition described by @var{drive}. |
| @item a |
| "Activates" the partition, i.e. makes it bootable. Only one partition |
| can be bootable at a time. |
| @item d |
| "Deactivates" the partition, i.e. makes it unbootable. |
| @end table |
| |
| If no operation is given, the current settings are printed. |
| |
| For partition creations, the following options are available: |
| @table @code |
| @item s @var{sectors} |
| The number of sectors per track of the partition (which is also the |
| number of sectors per track for the whole drive). |
| @item h @var{heads} |
| The number of heads of the partition (which is also the number of heads |
| for the whole drive). By default, the geometry information (number of |
| sectors and heads) is figured out from neighboring partition table |
| entries, or guessed from the size. |
| @item t @var{cylinders} |
| The number of cylinders of the partition (not the number of cylinders of |
| the whole drive. |
| @item b @var{begin} |
| The starting offset of the partition, expressed in sectors. If begin |
| is not given, @code{mpartition} lets the partition begin at the start |
| of the disk (partition number 1), or immediately after the end of the |
| previous partition. |
| @item l @var{length} |
| The size (length) of the partition, expressed in sectors. If end is |
| not given, @code{mpartition} figures out the size from the number of |
| sectors, heads and cylinders. If these are not given either, it gives |
| the partition the biggest possible size, considering disk size and |
| start of the next partition. |
| @end table |
| |
| The following option is available for all operation which modify the |
| partition table: |
| @table @code |
| @item f |
| Usually, before writing back any changes to the partition, mpartition |
| performs certain consistency checks, such as checking for overlaps and |
| proper alignment of the partitions. If any of these checks fails, the |
| partition table is not changed. The @code{-f} allows you to override |
| these safeguards. |
| @end table |
| |
| The following options are available for all operations: |
| @table @code |
| @item v |
| Together with @code{-p} prints the partition table as it is now (no |
| change operation), or as it is after it is modified. |
| @item vv |
| If the verbosity flag is given twice, @code{mpartition} will print out |
| a hexdump of the partition table when reading it from and writing it |
| to the device. |
| @end table |
| |
| The following option is available for partition table initialization: |
| @table @code |
| @item B @var{bootSector} |
| Reads the template master boot record from file @var{bootSector}. |
| @end table |
| |
| @subsection Choice of partition type |
| |
| Mpartition proceeds as follows to pick a type for the partition: |
| |
| @itemize - |
| @item |
| FAT32 partitions are assigned type 0x0C (``@code{Win95 FAT32, LBA}'') |
| |
| @item |
| For all others, if the partition fits entirely within the first 65536 |
| sectors of the disk, assign 0x01 (``@code{DOS FAT12, CHS}'') for FAT12 |
| partition and 0x04 (``@code{DOS FAT16, CHS}'') for FAT16 partitions |
| |
| @item |
| If not covered by the above, assign 0x06 (``@code{DOS BIG FAT16 CHS}'') if partition fits entirely within the first 1024 cylinders (CHS mode) |
| |
| @item |
| All remaining cases get 0x0E (``@code{Win95 BIG FAT16, LBA}'') |
| |
| @end itemize |
| |
| If number of fat bits is not known (not specified in drive's |
| definition), then FAT12 is assumed for all drives with less than 4096 |
| sectors, and FAT16 for those with more than 4096 sectors. |
| |
| This corresponds more or less to the definitions outlined at @code{https://en.wikipedia.org/wiki/Partition_type#List_of_partition_IDs} |
| and |
| @code{https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc977219(v=technet.10)}, |
| with two notable differences: |
| |
| @itemize - |
| @item |
| If fat bits are unknown, the reference documents consider drives with |
| less than 32680 sectors to be FAT12. Mtools uses 4096 sectors as the |
| cutoff point, as older versions of DOS only support FAT12 on disks |
| with less than 4096 sectors (and these older versions are the ones |
| which would be most likely to use FAT12 in the first place). |
| |
| @item |
| The reference documents use a 8GB (wikipedia) or a 4GB (Microsoft) |
| cutoff between 0x06 (@code{DOS BIG FAT16 CHS}) and 0x0E. Mtools uses |
| 1024 cylinders. This is because any partition beyond 1024 cylinders |
| must be LBA and cannot be CHS. 8GB works out to be the biggest |
| capacity which can be represented as CHS (63 sectors, 255 heads and |
| 1024 cylinders). 4GB is the capacity limit for windows 2000, so it |
| makes sense that a documentation for windows 2000 would specify this |
| as the upper limit for any partition type. |
| |
| @end itemize |
| |
| @node mrd, mren, mpartition, Commands |
| @section Mrd |
| @pindex mrd |
| @cindex Removing a directory |
| @cindex Erasing a directory |
| @cindex Deleting a directory |
| @cindex Directory removing |
| @cindex Subdirectory removing |
| |
| The @code{mrd} command is used to remove an MS-DOS subdirectory. Its |
| syntax is: |
| |
| @display |
| @code{mrd} [@code{-v}] @var{msdosdirectory} [ @var{msdosdirectories}@dots{} ] |
| @end display |
| |
| @code{Mrd} removes a directory from an MS-DOS file system. An error occurs |
| if the directory does not exist or is not empty. |
| |
| @node mren, mshortname, mrd, Commands |
| @section Mren |
| @pindex mren |
| @cindex Renaming files (mren) |
| @cindex Moving files (mren) |
| |
| The @code{mren} command is used to rename or move an existing MS-DOS |
| file or subdirectory. Its syntax is: |
| |
| @display |
| @code{mren} [@code{-voOsSrRA}] @var{sourcefile} @var{targetfile} |
| @end display |
| |
| @code{Mren} |
| renames an existing file on an MS-DOS file system. |
| |
| In verbose mode, @code{Mren} displays the new filename if the name |
| supplied is invalid. |
| |
| If the first syntax is used (only one source file), and if the target |
| name doesn't contain any slashes or colons, the file (or subdirectory) |
| is renamed in the same directory, instead of being moved to the current |
| @code{mcd} directory as would be the case with @code{mmove}. Unlike the |
| MS-DOS version of @code{REN}, @code{mren} can be used to rename |
| directories. |
| |
| @node mshortname, mshowfat, mren, Commands |
| @section Mshortname |
| @pindex mshortname |
| |
| The @code{mshortname} command is used to display the short name of a |
| file. Syntax: |
| |
| @display |
| @code{mshortname} @var{files} |
| @end display |
| |
| The shortname is displayed as it is stored in raw format on disk, |
| without any character set conversion. |
| |
| @node mshowfat, mtoolstest, mshortname, Commands |
| @section Mshowfat |
| @pindex mshowfat |
| @cindex Clusters of a file |
| @cindex Fat |
| |
| The @code{mshowfat} command is used to display the FAT entries for a |
| file. Syntax: |
| |
| @display |
| @code{mshowfat} [@code{-o} @var{offset}] @var{files} |
| @end display |
| |
| If no offset is given, a list of all clusters occupied by the file is |
| printed. If an offset is given, only the number of the cluster |
| containing that offset is printed. |
| |
| @node mtoolstest, mtype, mshowfat, Commands |
| @section Mtoolstest |
| @pindex mtoolstest |
| @cindex Testing configuration file for correctness |
| @cindex Checking configuration file |
| @cindex Verifying configuration file |
| |
| The @code{mtoolstest} command is used to tests the mtools configuration |
| files. To invoke it, just type @code{mtoolstest} without any arguments. |
| @code{Mtoolstest} reads the mtools configuration files, and prints the |
| cumulative configuration to @code{stdout}. The output can be used as a |
| configuration file itself (although you might want to remove redundant |
| clauses). You may use this program to convert old-style configuration |
| files into new style configuration files. |
| |
| @node mtype, mzip, mtoolstest, Commands |
| @section Mtype |
| |
| The @code{mtype} command is used to display contents of an MS-DOS |
| file. Its syntax is: |
| |
| @display |
| @code{mtype} [@code{-ts}] @var{msdosfile} [ @var{msdosfiles}@dots{} ] |
| @end display |
| |
| @code{Mtype} displays the specified MS-DOS file on the screen. |
| |
| In addition to the standard options, @code{Mtype} allows the following |
| command line options: |
| |
| @table @code |
| @item t |
| Text file viewing. @code{Mtype} translates incoming carriage |
| return/line feeds to line feeds. |
| @item s |
| @code{Mtype} strips the high bit from the data. |
| @end table |
| |
| The @code{mcd} command may be used to establish the device and the |
| current working directory (relative to MS-DOS), otherwise the default is |
| @code{A:/}. |
| |
| @code{Mtype} returns 0 on success, 1 on utter failure, or 2 on partial |
| failure. |
| |
| Unlike the MS-DOS version of @code{TYPE}, @code{mtype} allows multiple |
| arguments. |
| |
| |
| @node mzip, , mtype, Commands |
| @section Mzip |
| @cindex Zip disk (utilities) |
| @cindex Jaz disk (utilities) |
| @cindex Ejecting a Zip/Jaz disk |
| @cindex Write protecting a Zip/Jaz disk |
| @pindex mzip |
| @cindex ZipTools disk |
| @cindex Tools disk (Zip and Jaz drives) |
| @cindex APlaceForYourStuff |
| @cindex password protected Zip disks |
| |
| The @code{mzip} command is used to issue ZIP disk specific commands on |
| Linux, Solaris or HP-UX. Its syntax is: |
| |
| @display |
| @code{mzip} [@code{-epqrwx}] |
| @end display |
| |
| @code{Mzip} allows the following |
| command line options: |
| |
| @table @code |
| @item e |
| Ejects the disk. |
| @item f |
| Force eject even if the disk is mounted (must be given in addition to |
| @code{-e}). |
| @item r |
| Write protect the disk. |
| @item w |
| Remove write protection. |
| @item p |
| Password write protect. |
| @item x |
| Password protect |
| @item u |
| Temporarily unprotect the disk until it is ejected. The disk becomes |
| writable, and reverts back to its old state when ejected. |
| @item q |
| Queries the status |
| @end table |
| |
| To remove the password, set it to one of the password-less modes |
| @code{-r} or @code{-w}: mzip will then ask you for the password, and |
| unlock the disk. If you have forgotten the password, you can get rid of |
| it by low-level formatting the disk (using your SCSI adapter's BIOS |
| setup). |
| |
| The ZipTools disk shipped with the drive is also password protected. On |
| MS-DOS or on a Mac, this password is automatically removed once the |
| ZipTools have been installed. From various articles posted to Usenet, I |
| learned that the password for the tools disk is |
| @code{APlaceForYourStuff}@footnote{To see the articles, search for |
| @code{APlaceForYourStuff} using Google Groups}. Mzip knows about this |
| password, and tries it first, before prompting you for a password. Thus |
| @code{mzip -w z:} unlocks the tools disk@footnote{I didn't know about |
| this yet when I bought my own Zip drive. Thus I ended up reformatting |
| my tools disk, and hence I haven't had the opportunity to test the |
| password yet. If anybody still has their tools disk with the original |
| password, could you try it out? Thanks in advance}. The tools disk is |
| formatted in a special way so as to be usable both in a PC and in a Mac. |
| On a PC, the Mac file system appears as a hidden file named |
| @file{partishn.mac}. You may erase it to reclaim the 50 Megs of space |
| taken up by the Mac file system. |
| |
| |
| @subsection Bugs |
| |
| This command is a big kludge. A proper implementation would take a |
| rework of significant parts of mtools, but unfortunately I don't have |
| the time for this right now. The main downside of this implementation is |
| that it is inefficient on some architectures (several successive calls |
| to mtools, which defeats mtools' caching). |
| |
| @node Compiling mtools, Porting mtools, Commands, Top |
| @chapter Architecture specific compilation flags |
| @cindex XDF disks (compile time configuration) |
| @cindex Solaris (compile time configuration of vold) |
| @cindex Vold (compile time configuration) |
| @cindex Compile time configuration |
| |
| To compile mtools, first invoke @code{./configure} before |
| @code{make}. In addition to the standard @code{autoconfigure} flags, |
| there are two architecture specific flags available. |
| |
| @table @code |
| @item ./configure --enable-xdf |
| @itemx ./configure --disable-xdf |
| Enables support for XDF disks. This is on by default. @xref{XDF}, |
| for details. |
| @item ./configure --enable-vold |
| @itemx ./configure --disable-vold |
| Enables support for vold on Solaris. When used in conjunction with vold, |
| mtools should use different device nodes than for direct access. |
| |
| @item ./configure --enable-new-vold |
| @itemx ./configure --disable-new-vold |
| Enables new support for vold on Solaris. This is supposed to work more |
| smoothly than the old support. |
| |
| @item ./configure --enable-floppyd |
| @itemx ./configure --disable-floppyd |
| Enables support for floppyd. By default, floppyd support is enabled as |
| long as the necessary X includes and libraries are available. |
| @end table |
| |
| @node Porting mtools, Command Index, Compiling mtools, Top |
| @chapter Porting mtools to architectures which are not supported yet |
| @cindex Porting |
| @cindex Compiled-in defaults |
| |
| This chapter is only interesting for those who want to port mtools to |
| an architecture which is not yet supported. For most common systems, |
| default drives are already defined. If you want to add default drives |
| for a still unsupported system, run configuration.guess, to see which |
| identification autoconf uses for that system. This identification is |
| of the form cpu-vendor-os (for example sparc-sun-sunos). The cpu and |
| the OS parts are passed to the compiler as preprocessor flags. |
| The OS part is passed to the compiler in three forms. |
| @enumerate |
| @item |
| The complete OS name, with dots replaced by underscores. SCO3.2v2 would |
| yield sco3_2v2 |
| @item |
| The base OS name. SCO3.2v2 would yield Sco |
| @item |
| The base OS name plus its major version. SCO3.2v2 would yield Sco3 |
| @end enumerate |
| |
| All three versions are passed, if they are different. |
| |
| To define the devices, use the entries for the systems that are already |
| present as templates. In general, they have the following form: |
| |
| @example |
| #if (defined (my_cpu) && defined(my_os)) |
| #define predefined_devices |
| struct device devices[] = @{ |
| @{ "/dev/first_drive", 'drive_letter', drive_description@}, |
| @dots{} |
| @{ "/dev/last_drive", 'drive_letter', drive_description@} |
| @} |
| #define INIT_NOOP |
| #endif |
| @end example |
| |
| "/dev/first_drive" is the name of the device or image file |
| representing the drive. Drive_letter is a letter ranging from a to z |
| giving access to the drive. Drive_description describes the type of the |
| drive: |
| @table @code |
| @item ED312 |
| extra density (2.88M) 3 1/2 disk |
| @item HD312 |
| high density 3 1/2 disk |
| @item DD312 |
| double density 3 1/2 disk |
| @item HD514 |
| high density 5 1/4 disk |
| @item DD514 |
| double density 5 1/4 disk |
| @item DDsmall |
| 8 sector double density 5 1/4 disk |
| @item SS514 |
| single sided double density 5 1/4 disk |
| @item SSsmall |
| single sided 8 sector double density 5 1/4 disk |
| @item GENFD |
| generic floppy drive (12 bit FAT) |
| @item GENHD |
| generic hard disk (16 bit FAT) |
| @item GEN |
| generic device (all parameters match) |
| @item ZIPJAZ(flags) |
| generic ZIP drive using normal access. This uses partition 4. |
| @code{Flags} are any special flags to be passed to open. |
| @item RZIPJAZ(flags) |
| generic ZIP drive using raw SCSI access. This uses partition 4. |
| @code{Flags} are any special flags to be passed to open. |
| @item REMOTE |
| the remote drive used for floppyd. Unlike the other items, this macro |
| also includes the file name ($DISPLAY) and the drive letter (X) |
| @end table |
| |
| Entries may be described in more detail: |
| @example |
| fat_bits,open_flags,cylinders,heads,sectors,DEF_ARG |
| @end example |
| or, if you need to describe an offset (file system doesn't start at |
| beginning of file system) |
| @example |
| fat_bits, open_flags, cylinders, heads, sectors, offset, DEF_ARG0 |
| @end example |
| |
| @table @code |
| @item fat_bits |
| is either 12, 16 or 0. 0 means that the device accepts both types of |
| FAT. |
| @item open_flags |
| may include flags such as O_NDELAY, or O_RDONLY, which might be |
| necessary to open the device. 0 means no special flags are needed. |
| @item cylinders,heads,sectors |
| describe the geometry of the disk. If cylinders is 0, the heads and sectors |
| parameters are ignored, and the drive accepts any geometry. |
| @item offset |
| is used if the DOS file system doesn't begin at the start of the device |
| or image file. This is mostly useful for Atari Ram disks (which contain |
| their device driver at the beginning of the file) or for DOS emulator |
| images (which may represent a partitioned device. |
| @end table |
| |
| Definition of defaults in the devices file should only be done if these |
| same devices are found on a large number of hosts of this type. In that |
| case, could you also let me know about your new definitions, so that I |
| can include them into the next release. For purely local file, I |
| recommend that you use the @code{@value{SYSCONFDIR}mtools.conf} and |
| @code{~/.mtoolsrc} configuration files. |
| |
| However, the devices files also allows you to supply geometry setting |
| routines. These are necessary if you want to access high capacity |
| disks. |
| |
| Two routines should be supplied: |
| |
| @enumerate |
| @item |
| Reading the current parameters |
| @example |
| static inline int get_parameters(int fd, struct generic_floppy_struct *floppy) |
| @end example |
| |
| This probes the current configured geometry, and return it in |
| the structure generic_floppy_struct (which must also be declared). |
| Fd is an open file descriptor for the device, and buf is an already |
| filled in stat structure, which may be useful. |
| This routine should return 1 if the probing fails, and 0 otherwise. |
| |
| @item |
| Setting new parameters |
| @example |
| static inline int set_parameters(int fd, struct generic_floppy_struct *floppy) |
| struct stat *buf) |
| @end example |
| This configures the geometry contained in floppy on the file descriptor |
| fd. Buf is the result of a stat call (already filled in). This should |
| return 1 if the new geometry cannot be configured, and 0 otherwise. |
| @end enumerate |
| |
| A certain number of preprocessor macros should also be supplied: |
| |
| @table @code |
| @item TRACKS(floppy) |
| refers to the track field in the floppy structure |
| @item HEADS(floppy) |
| refers to the heads field in the floppy structure |
| @item SECTORS(floppy) |
| refers to the sectors per track field in the floppy structure |
| @item SECTORS_PER_DISK(floppy) |
| refers to the sectors per disk field in the floppy structure (if |
| applicable, otherwise leave undefined) |
| |
| @item BLOCK_MAJOR |
| major number of the floppy device, when viewed as a block device |
| |
| @item CHAR_MAJOR |
| major number of the floppy device, when viewed as a character device |
| (a.k.a. "raw" device, used for fsck) (leave this undefined, if your OS |
| doesn't have raw devices) |
| @end table |
| |
| For the truly high capacity formats (XDF, 2m, etc), there is no clean |
| and documented interface yet. |
| |
| @comment MANskip 1 |
| |
| @node Command Index, Variable Index, Porting mtools, Top |
| @unnumbered Command Index |
| @printindex pg |
| |
| @node Variable Index, Concept Index, Command Index, Top |
| @unnumbered Variable index |
| @printindex vr |
| |
| @node Concept Index, , Variable Index, Top |
| @unnumbered Concept index |
| @printindex cp |
| |
| @comment MANend-skip 1 |
| @comment MANend-skip 5 |
| @bye |