|
|
This is mtools.info, produced by makeinfo version 6.5 from mtools.texi.
|
|
|
|
|
|
This manual is for Mtools (version 4.0.26, November 2020), which is a
|
|
|
collection of tools to allow Unix systems to manipulate MS-DOS files.
|
|
|
|
|
|
Copyright (C) 2007, 2009 Free Software Foundation, Inc. Copyright
|
|
|
(C) 1996-2005,2007-2011,2013 Alain Knaff.
|
|
|
|
|
|
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".
|
|
|
INFO-DIR-SECTION DOS
|
|
|
START-INFO-DIR-ENTRY
|
|
|
* Mtools: (mtools). Mtools: utilities to access DOS disks in Unix.
|
|
|
END-INFO-DIR-ENTRY
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: Top, Next: Location, Prev: (dir), Up: (dir)
|
|
|
|
|
|
Mtools doc
|
|
|
**********
|
|
|
|
|
|
This is mtools' documentation.
|
|
|
|
|
|
* Menu:
|
|
|
|
|
|
* Location::
|
|
|
* Common features::
|
|
|
* Configuration::
|
|
|
* Commands::
|
|
|
* Compiling mtools::
|
|
|
* Porting mtools::
|
|
|
* Command Index::
|
|
|
* Variable Index::
|
|
|
* Concept Index::
|
|
|
|
|
|
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 'mdir a:' work on the 'a:' floppy without any
|
|
|
preliminary mounting or initialization (assuming the default
|
|
|
'/etc/mtools.conf' works on your machine). With mtools, one can change
|
|
|
floppies too without unmounting and mounting.
|
|
|
|
|
|
This manual is for Mtools (version 4.0.26, November 2020), which is a
|
|
|
collection of tools to allow Unix systems to manipulate MS-DOS files.
|
|
|
|
|
|
Copyright (C) 2007, 2009 Free Software Foundation, Inc. Copyright
|
|
|
(C) 1996-2005,2007-2011,2013 Alain Knaff.
|
|
|
|
|
|
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".
|
|
|
|
|
|
* 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
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: Location, Next: Common features, Prev: Top, Up: Top
|
|
|
|
|
|
1 Where to get mtools
|
|
|
*********************
|
|
|
|
|
|
Mtools can be found at the following places (and their mirrors):
|
|
|
http://ftp.gnu.org/gnu/mtools/mtools-4.0.26.tar.gz
|
|
|
|
|
|
These patches are named 'mtools-'VERSION'-'DDMM'.taz', where version
|
|
|
stands for the base version, DD for the day and 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/
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: Common features, Next: Configuration, Prev: Location, Up: Top
|
|
|
|
|
|
2 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
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: arguments, Next: drive letters, Prev: Common features, Up: Common features
|
|
|
|
|
|
2.1 Options and filenames
|
|
|
=========================
|
|
|
|
|
|
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
|
|
|
''/'' or ''\'' separator. The use of the ''\'' 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 *want* the shell to expand them.
|
|
|
|
|
|
The regular expression "pattern matching" routines follow the
|
|
|
Unix-style rules. For example, ''*'' matches all MS-DOS files in lieu
|
|
|
of ''*.*''. The archive, hidden, read-only and system attribute bits
|
|
|
are ignored during pattern matching.
|
|
|
|
|
|
All options use the '-' (minus) as their first character, not '/' 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. *Note name clashes::, for more details on these.
|
|
|
All commands accept the '-V' flags which prints the version, and most
|
|
|
accept the '-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. *Note Commands::, for a description of
|
|
|
the options which are specific to each command.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: drive letters, Next: directory, Prev: arguments, Up: Common features
|
|
|
|
|
|
2.2 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 (*note 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 '-i' options.
|
|
|
|
|
|
Example:
|
|
|
mcopy -i my-image-file.bin ::file1 ::file2 .
|
|
|
|
|
|
This copies 'file1' and 'file2' from the image file
|
|
|
('my-image-file.bin') to the '/tmp' directory.
|
|
|
|
|
|
You can also supply an offset within the image file by including
|
|
|
'@@'OFFSET into the file name.
|
|
|
|
|
|
Example:
|
|
|
mcopy -i my-image-file.bin@@1M ::file1 ::file2 .
|
|
|
|
|
|
This looks for the image at the offset of 1M in the file, rather than
|
|
|
at its beginning.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: directory, Next: long names, Prev: drive letters, Up: Common features
|
|
|
|
|
|
2.3 Current working directory
|
|
|
=============================
|
|
|
|
|
|
The 'mcd' command (*note 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 'A:/'. However, unlike MS-DOS,
|
|
|
there is only one working directory for all drives, and not one per
|
|
|
drive.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: long names, Next: name clashes, Prev: directory, Up: Common features
|
|
|
|
|
|
2.4 VFAT-style long file 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:
|
|
|
|
|
|
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
|
|
|
|
|
|
As you see, the following transformations happen to derive a short
|
|
|
name:
|
|
|
* Illegal characters are replaced by underscores. The illegal
|
|
|
characters are ';+=[]',\"*\\<>/?:|'.
|
|
|
* Extra dots, which cannot be interpreted as a main name/extension
|
|
|
separator are removed
|
|
|
* A '~'N number is generated,
|
|
|
* The name is shortened so as to fit in the 8+3 limitation
|
|
|
|
|
|
The initial Unix-style file name (whether long or short) is also
|
|
|
called the "primary" name, and the derived short name is also called the
|
|
|
"secondary" name.
|
|
|
|
|
|
Example:
|
|
|
mcopy /etc/motd a:Reallylongname
|
|
|
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.
|
|
|
mcopy /etc/motd a:motd
|
|
|
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 ('\"*\\<>/?:|'), and device names are still reserved.
|
|
|
|
|
|
Unix name Long name Reason for the change
|
|
|
--------- ---------- ---------------------
|
|
|
prn prn-1 PRN is a device name
|
|
|
ab:c ab_c-1 illegal character
|
|
|
|
|
|
As you see, the following transformations happen if a long name is
|
|
|
illegal:
|
|
|
* Illegal characters are replaces by underscores,
|
|
|
* A '-'N number is generated,
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: name clashes, Next: case sensitivity, Prev: long names, Up: Common features
|
|
|
|
|
|
2.5 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 'mcopy', 'mmd',
|
|
|
'mren', 'mmove'. When a name clash happens, mtools asks you what it
|
|
|
should do. It offers several choices:
|
|
|
|
|
|
'overwrite'
|
|
|
Overwrites the existing file. It is not possible to overwrite a
|
|
|
directory with a file.
|
|
|
'rename'
|
|
|
Renames the newly created file. Mtools prompts for the new
|
|
|
filename
|
|
|
'autorename'
|
|
|
Renames the newly created file. Mtools chooses a name by itself,
|
|
|
without prompting
|
|
|
'skip'
|
|
|
Gives up on this file, and moves on to the next (if any)
|
|
|
|
|
|
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:
|
|
|
|
|
|
'-D o'
|
|
|
Overwrites primary names by default.
|
|
|
'-D O'
|
|
|
Overwrites secondary names by default.
|
|
|
'-D r'
|
|
|
Renames primary name by default.
|
|
|
'-D R'
|
|
|
Renames secondary name by default.
|
|
|
'-D a'
|
|
|
Autorenames primary name by default.
|
|
|
'-D A'
|
|
|
Autorenames secondary name by default.
|
|
|
'-D s'
|
|
|
Skip primary name by default.
|
|
|
'-D S'
|
|
|
Skip secondary name by default.
|
|
|
'-D m'
|
|
|
Ask user what to do with primary name.
|
|
|
'-D M'
|
|
|
Ask user what to do with secondary name.
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: case sensitivity, Next: high capacity formats, Prev: name clashes, Up: Common features
|
|
|
|
|
|
2.6 Case sensitivity of the VFAT file system
|
|
|
============================================
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: high capacity formats, Next: exit codes, Prev: case sensitivity, Up: Common features
|
|
|
|
|
|
2.7 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
|
|
|
'fdutils' package at the following locations~:
|
|
|
http://www.fdutils.linux.lu/.
|
|
|
|
|
|
See the manual pages included in that package for further detail: Use
|
|
|
'superformat' to format all formats except XDF, and use '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
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: more sectors, Next: bigger sectors, Prev: high capacity formats, Up: high capacity formats
|
|
|
|
|
|
2.7.1 More sectors
|
|
|
------------------
|
|
|
|
|
|
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 'fdformat' and 'vgacopy'. In his infinite hubris, Bill Gate$
|
|
|
believed that he invented this, and called it 'DMF disks', or '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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: bigger sectors, Next: 2m, Prev: more sectors, Up: high capacity formats
|
|
|
|
|
|
2.7.2 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 _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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: 2m, Next: XDF, Prev: bigger sectors, Up: high capacity formats
|
|
|
|
|
|
2.7.3 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 "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 *never use a 2m disk to store anything
|
|
|
else than a DOS file system*.
|
|
|
|
|
|
Mtools supports these formats only on Linux.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: XDF, Prev: 2m, Up: high capacity formats
|
|
|
|
|
|
2.7.4 XDF
|
|
|
---------
|
|
|
|
|
|
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 'use_xdf' variable for the drive in the
|
|
|
configuration file. *Note Compiling mtools::, and *note 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.
|
|
|
|
|
|
*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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: exit codes, Next: bugs, Prev: high capacity formats, Up: Common features
|
|
|
|
|
|
2.8 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 (*note global variables::)
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: bugs, Prev: exit codes, Up: Common features
|
|
|
|
|
|
2.9 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, *note global variables::) to bypass the fat checking.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: Configuration, Next: Commands, Prev: Common features, Up: Top
|
|
|
|
|
|
3 How to configure mtools for your environment
|
|
|
**********************************************
|
|
|
|
|
|
* Menu:
|
|
|
|
|
|
* configuration file location::
|
|
|
* default values::
|
|
|
* global variables::
|
|
|
* per drive variables::
|
|
|
* parsing order::
|
|
|
* old style configuration::
|
|
|
|
|
|
3.1 Description
|
|
|
===============
|
|
|
|
|
|
This sections explains the syntax of the configurations files for
|
|
|
mtools. The configuration files are called '/etc/mtools.conf' and
|
|
|
'~/.mtoolsrc'. If the environmental variable 'MTOOLSRC' is set, its
|
|
|
contents is used as the filename for a third configuration file. These
|
|
|
configuration files describe the following items:
|
|
|
|
|
|
* Global configuration flags and variables
|
|
|
* Per drive flags and variables
|
|
|
|
|
|
* 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
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: configuration file location, Next: general syntax, Prev: Configuration, Up: Configuration
|
|
|
|
|
|
3.2 Location of the configuration files
|
|
|
=======================================
|
|
|
|
|
|
'/etc/mtools.conf' is the system-wide configuration file, and
|
|
|
'~/.mtoolsrc' is the user's private configuration file.
|
|
|
|
|
|
On some systems, the system-wide configuration file is called
|
|
|
'/etc/default/mtools.conf' instead.
|
|
|
|
|
|
* Menu:
|
|
|
|
|
|
* general syntax::
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: general syntax, Next: default values, Prev: configuration file location, Up: Configuration
|
|
|
|
|
|
3.2.1 General 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:
|
|
|
name=value
|
|
|
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 ('#') 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).
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: default values, Next: global variables, Prev: general syntax, Up: Configuration
|
|
|
|
|
|
3.3 Default values
|
|
|
==================
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: global variables, Next: per drive variables, Prev: default values, Up: Configuration
|
|
|
|
|
|
3.4 Global variables
|
|
|
====================
|
|
|
|
|
|
Global flags may be set to 1 or to 0.
|
|
|
|
|
|
The following global flags are recognized:
|
|
|
|
|
|
'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.
|
|
|
'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.
|
|
|
'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.
|
|
|
'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.
|
|
|
'MTOOLS_DOTTED_DIR'
|
|
|
In a wide directory, prints the short name with a dot instead of
|
|
|
spaces separating the basename and the extension.
|
|
|
'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.
|
|
|
'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)
|
|
|
'MTOOLS_LOCK_TIMEOUT'
|
|
|
How long, in seconds, to wait for a locked device to become free.
|
|
|
Defaults to 30.
|
|
|
|
|
|
Example: Inserting the following line into your configuration file
|
|
|
instructs mtools to skip the sanity checks:
|
|
|
MTOOLS_SKIP_CHECK=1
|
|
|
|
|
|
Global variables may also be set via the environment:
|
|
|
export MTOOLS_SKIP_CHECK=1
|
|
|
|
|
|
Global string variables may be set to any value:
|
|
|
'MTOOLS_DATE_STRING'
|
|
|
The format used for printing dates of files. By default, is
|
|
|
dd-mm-yyyy.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: per drive variables, Next: parsing order, Prev: global variables, Up: Configuration
|
|
|
|
|
|
3.5 Per drive flags and variables
|
|
|
=================================
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: general information, Next: location information, Prev: per drive variables, Up: per drive variables
|
|
|
|
|
|
3.5.1 General information
|
|
|
-------------------------
|
|
|
|
|
|
Per drive flags and values may be described in a drive section. A drive
|
|
|
section starts with 'drive' "DRIVELETTER" :
|
|
|
|
|
|
Then follow variable-value pairs and flags.
|
|
|
|
|
|
This is a sample drive description:
|
|
|
drive a:
|
|
|
file="/dev/fd0" use_xdf=1
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: location information, Next: geometry description, Prev: general information, Up: per drive variables
|
|
|
|
|
|
3.5.2 Location information
|
|
|
--------------------------
|
|
|
|
|
|
For each drive, you need to describe where its data is physically stored
|
|
|
(image file, physical device, partition, offset).
|
|
|
|
|
|
'file'
|
|
|
The name of the file or device holding the disk image. This is
|
|
|
mandatory. The file name should be enclosed in quotes.
|
|
|
|
|
|
'partition'
|
|
|
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 'offset' variable. The
|
|
|
'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
|
|
|
'giant floppy disks' which are unpartitioned, OS/2 and Windows NT
|
|
|
treat them like hard disks, i.e. partitioned devices. The
|
|
|
'partition' flag is also useful DOSEMU hdimages. It is not
|
|
|
recommended for hard disks for which direct access to partitions is
|
|
|
available through mounting.
|
|
|
|
|
|
'offset'
|
|
|
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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: geometry description, Next: open flags, Prev: location information, Up: per drive variables
|
|
|
|
|
|
3.5.3 Disk Geometry Configuration
|
|
|
---------------------------------
|
|
|
|
|
|
Geometry information describes the physical characteristics about the
|
|
|
disk. Its has three purposes:
|
|
|
|
|
|
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. *Note mformat::, for details.
|
|
|
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. *Note 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 ('/dev/fd0', '/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 'mformat_only'
|
|
|
flag.
|
|
|
|
|
|
If you want filtering, you should supply the 'filter' flag. If you
|
|
|
supply a geometry, you must supply one of both flags.
|
|
|
|
|
|
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 '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.
|
|
|
|
|
|
Wrong geometry information may lead to very bizarre errors. That's
|
|
|
why I strongly recommend that you add the 'mformat_only' flag to your
|
|
|
drive description, unless you really need filtering or initial geometry.
|
|
|
|
|
|
The following geometry related variables are available:
|
|
|
|
|
|
'cylinders'
|
|
|
'tracks'
|
|
|
The number of cylinders. ('cylinders' is the preferred form,
|
|
|
'tracks' is considered obsolete)
|
|
|
'heads'
|
|
|
The number of heads (sides).
|
|
|
'sectors'
|
|
|
The number of sectors per track.
|
|
|
|
|
|
Example: the following drive section describes a 1.44M drive:
|
|
|
|
|
|
drive a:
|
|
|
file="/dev/fd0H1440"
|
|
|
fat_bits=12
|
|
|
cylinders=80 heads=2 sectors=18
|
|
|
mformat_only
|
|
|
|
|
|
The following shorthand geometry descriptions are available:
|
|
|
|
|
|
'1.44m'
|
|
|
high density 3 1/2 disk. Equivalent to: 'fat_bits=12 cylinders=80
|
|
|
heads=2 sectors=18'
|
|
|
'1.2m'
|
|
|
high density 5 1/4 disk. Equivalent to: 'fat_bits=12 cylinders=80
|
|
|
heads=2 sectors=15'
|
|
|
'720k'
|
|
|
double density 3 1/2 disk. Equivalent to: 'fat_bits=12
|
|
|
cylinders=80 heads=2 sectors=9'
|
|
|
'360k'
|
|
|
double density 5 1/4 disk. Equivalent to: 'fat_bits=12
|
|
|
cylinders=40 heads=2 sectors=9'
|
|
|
|
|
|
The shorthand format descriptions may be amended. For example, '360k
|
|
|
sectors=8' describes a 320k disk and is equivalent to: 'fat_bits=12
|
|
|
cylinders=40 heads=2 sectors=8'
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: open flags, Next: miscellaneous variables, Prev: geometry description, Up: per drive variables
|
|
|
|
|
|
3.5.4 Open Flags
|
|
|
----------------
|
|
|
|
|
|
Moreover, the following flags are available:
|
|
|
|
|
|
'sync'
|
|
|
All i/o operations are done synchronously
|
|
|
'nodelay'
|
|
|
The device or file is opened with the O_NDELAY flag. This is
|
|
|
needed on some non-Linux architectures.
|
|
|
'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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: miscellaneous variables, Next: miscellaneous flags, Prev: open flags, Up: per drive variables
|
|
|
|
|
|
3.5.5 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)
|
|
|
|
|
|
'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.
|
|
|
'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
|
|
|
'default_codepage' parameter (outside of any drive description).
|
|
|
This parameters exists starting at version 4.0.0
|
|
|
'precmd'
|
|
|
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. 'precmd="volcheck -v"'
|
|
|
in the drive clause establishes the desired behavior.
|
|
|
|
|
|
'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.
|
|
|
|
|
|
Only the 'file' variable is mandatory. The other parameters may be
|
|
|
left out. In that case a default value or an auto-detected value is
|
|
|
used.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: miscellaneous flags, Next: multiple descriptions, Prev: miscellaneous variables, Up: per drive variables
|
|
|
|
|
|
3.5.6 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, 'scsi' is equivalent to
|
|
|
'scsi=1'
|
|
|
|
|
|
'nolock'
|
|
|
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.
|
|
|
|
|
|
'scsi'
|
|
|
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 'read' and '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 'scsi' option. Thus mtools should
|
|
|
be installed setuid root on Solaris if you want to access Zip/Jaz
|
|
|
drives. Thus, if the 'scsi' flag is given, 'privileged' is
|
|
|
automatically implied, unless explicitly disabled by '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
|
|
|
'/etc/mtools.conf', and not for those described in '~/.mtoolsrc' or
|
|
|
'$MTOOLSRC'.
|
|
|
|
|
|
'privileged'
|
|
|
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 '/etc/mtools.conf', not '~/.mtoolsrc' or '$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 'scsi=1' is
|
|
|
set.
|
|
|
|
|
|
Mtools only needs to be installed setuid if you use the
|
|
|
'privileged' or 'scsi' drive variables. If you do not use these
|
|
|
options, mtools works perfectly well even when not installed setuid
|
|
|
root.
|
|
|
|
|
|
'vold'
|
|
|
|
|
|
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 'media_findname()' and
|
|
|
'media_oldaliases()' functions of the 'volmgt' library. This flag
|
|
|
is only available if you configured mtools with the
|
|
|
'--enable-new-vold' option before compilation.
|
|
|
|
|
|
'swap'
|
|
|
|
|
|
Consider the media as a word-swapped Atari disk.
|
|
|
|
|
|
'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. *Note XDF::, for more details.
|
|
|
'mformat_only'
|
|
|
Tells mtools to use the geometry for this drive only for
|
|
|
mformatting and not for filtering.
|
|
|
|
|
|
'filter'
|
|
|
Tells mtools to use the geometry for this drive both for
|
|
|
mformatting and filtering.
|
|
|
|
|
|
'remote'
|
|
|
Tells mtools to connect to floppyd (*note floppyd::).
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: multiple descriptions, Prev: miscellaneous flags, Up: per drive variables
|
|
|
|
|
|
3.5.7 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:
|
|
|
|
|
|
1. because the geometry is not appropriate,
|
|
|
2. because there is no disk in the drive,
|
|
|
3. or because of other problems.
|
|
|
|
|
|
Multiple definitions are useful when using physical devices which are
|
|
|
only able to support one single disk geometry. Example:
|
|
|
drive a: file="/dev/fd0H1440" 1.44m
|
|
|
drive a: file="/dev/fd0H720" 720k
|
|
|
|
|
|
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:
|
|
|
|
|
|
drive z: file="/dev/fd0"
|
|
|
drive z: file="/dev/fd1"
|
|
|
|
|
|
With this description, '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 'drive+' or '+drive' keywords
|
|
|
instead of '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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: parsing order, Next: old style configuration, Prev: per drive variables, Up: Configuration
|
|
|
|
|
|
3.6 Location of configuration files and parsing order
|
|
|
=====================================================
|
|
|
|
|
|
The configuration files are parsed in the following order:
|
|
|
1. compiled-in defaults
|
|
|
2. '/etc/mtools.conf'
|
|
|
3. '~/.mtoolsrc'.
|
|
|
4. '$MTOOLSRC' (file pointed by the 'MTOOLSRC' environmental variable)
|
|
|
|
|
|
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 '/etc/mtools.conf' and drives C and D may be defined in
|
|
|
'~/.mtoolsrc' However, if '~/.mtoolsrc' also defines drive A, this new
|
|
|
description would override the description of drive A in
|
|
|
'/etc/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 '+drive' or 'drive+' keyword.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: old style configuration, Prev: parsing order, Up: Configuration
|
|
|
|
|
|
3.7 Backwards compatibility with old configuration file syntax
|
|
|
==============================================================
|
|
|
|
|
|
The syntax described herein is new for version '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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: Commands, Next: Compiling mtools, Prev: Configuration, Up: Top
|
|
|
|
|
|
4 Command list
|
|
|
**************
|
|
|
|
|
|
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, *note 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
|
|
|
* mclasserase:: erase memory card
|
|
|
* 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
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: floppyd, Next: floppyd_installtest, Prev: Commands, Up: Commands
|
|
|
|
|
|
4.1 Floppyd
|
|
|
===========
|
|
|
|
|
|
'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:
|
|
|
|
|
|
'floppyd' ['-d'] ['-l'] ['-s' PORT] ['-r' USER] ['-b' IPADDR] ['-x'
|
|
|
DISPLAY] DEVICENAMES
|
|
|
|
|
|
'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.
|
|
|
|
|
|
4.1.1 Authentication
|
|
|
--------------------
|
|
|
|
|
|
'floppyd' authenticates remote clients using the '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.
|
|
|
'DISPLAY'.
|
|
|
|
|
|
*Caution*: In order to make authentication work correctly, the local
|
|
|
host should *not* be listed in the 'xhost' list of allowed hosts.
|
|
|
Indeed, hosts listed in 'xhost' do not need a correct 'Xauthority'
|
|
|
cookie to connect to the X server. As '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 'localhost:0' and ':0' from the 'xhost' list,
|
|
|
you can prevent floppyd from probing those display names with the '-l'
|
|
|
option.
|
|
|
|
|
|
4.1.2 Command line options
|
|
|
--------------------------
|
|
|
|
|
|
'd'
|
|
|
Daemon mode. Floppyd runs its own server loop. Do not supply this
|
|
|
if you start floppyd from 'inetd.conf'
|
|
|
's PORT'
|
|
|
Port number for daemon mode. Default is 5703 + DISPLAYNUMBER.
|
|
|
This flag implies daemon mode. For example, for display
|
|
|
'hitchhiker:5', the port would be 5708.
|
|
|
'b IPADDR'
|
|
|
Bind address (for multi homed hosts). This flag implies daemon
|
|
|
mode
|
|
|
'r USER'
|
|
|
Run the server under as the given user
|
|
|
'x DISPLAY'
|
|
|
X display to use for authentication. By default, this is taken
|
|
|
from the 'DISPLAY' variable. If neither the 'x' attribute is
|
|
|
present nor 'DISPLAY' is set, floppyd uses ':0.0'.
|
|
|
|
|
|
DEVICENAMES is a list of device nodes to be opened. Default is
|
|
|
'/dev/fd0'. Multiple devices are only supported on mtools versions
|
|
|
newer than 3.9.11.
|
|
|
|
|
|
4.1.3 Connecting to floppyd
|
|
|
---------------------------
|
|
|
|
|
|
In order to use floppyd, add the flag 'remote' to the device description
|
|
|
in your '~/.mtoolsrc' file. If the flag 'remote' is given, the 'file'
|
|
|
parameter of the device description is taken to be a remote address.
|
|
|
It's format is the following:
|
|
|
HOSTNAME':'DISPLAYNUMBER['/'[BASEPORT]['/'DRIVE]]. When using this
|
|
|
entry, mtools connects to port BASEPORT+DISPLAYNUMBER at HOSTNAME. By
|
|
|
default 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)
|
|
|
|
|
|
4.1.4 Examples:
|
|
|
---------------
|
|
|
|
|
|
The following starts a floppy daemon giving access to '/dev/fd0',
|
|
|
listening on the default port 5703, tied to the default X servers:
|
|
|
|
|
|
floppyd -d /dev/fd0
|
|
|
|
|
|
Each of the following starts a floppy daemon giving access to
|
|
|
'/dev/fd1', tied to the :1 local X servers, and listening on port 5704.
|
|
|
We assume that the local host is named 'hitchhiker'.
|
|
|
|
|
|
floppyd -d /dev/fd0
|
|
|
floppyd -d -x :1 -p 5704 /dev/fd0
|
|
|
|
|
|
If you want to start floppyd by 'inetd' instead of running it as a
|
|
|
daemon, insert the following lines into '/etc/services':
|
|
|
# floppy daemon
|
|
|
floppyd-0 5703/tcp # floppy daemon for X server :0
|
|
|
floppyd-1 5704/tcp # floppy daemon for X server :1
|
|
|
|
|
|
And insert the following into '/etc/inetd.conf' (assuming that you
|
|
|
have defined a user named floppy in your '/etc/passwd'):
|
|
|
|
|
|
# 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
|
|
|
|
|
|
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 '~/.mtoolsrc' to
|
|
|
define a drive letter accessing floppy drive in your X terminal:
|
|
|
drive x: file="$DISPLAY" remote
|
|
|
|
|
|
If your X terminal has more than one drive, you may access the
|
|
|
additional drives as follows:
|
|
|
drive y: file="$DISPLAY//1" remote
|
|
|
drive z: file="$DISPLAY//2" remote
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: floppyd_installtest, Next: mattrib, Prev: floppyd, Up: Commands
|
|
|
|
|
|
4.2 Floppyd_installtest
|
|
|
=======================
|
|
|
|
|
|
'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.
|
|
|
|
|
|
'floppyd_installtest' ['-f'] Connect-String
|
|
|
|
|
|
If the '-f' option is specified, '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:
|
|
|
HOSTNAME':'DISPLAYNUMBER['/'BASEPORT]
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mattrib, Next: mbadblocks, Prev: floppyd_installtest, Up: Commands
|
|
|
|
|
|
4.3 Mattrib
|
|
|
===========
|
|
|
|
|
|
'Mattrib' is used to change MS-DOS file attribute flags. It has the
|
|
|
following syntax:
|
|
|
|
|
|
'mattrib' ['-a|+a'] ['-h|+h'] ['-r|+r'] ['-s|+s'] ['-/'] ['-p']
|
|
|
['-X'] MSDOSFILE [ MSDOSFILES ... ]
|
|
|
|
|
|
'Mattrib' adds attribute flags to an MS-DOS file (with the ''+''
|
|
|
operator) or remove attribute flags (with the ''-'' operator).
|
|
|
|
|
|
'Mattrib' supports the following attribute bits:
|
|
|
|
|
|
'a'
|
|
|
Archive bit. Used by some backup programs to indicate a new file.
|
|
|
'r'
|
|
|
Read-only bit. Used to indicate a read-only file. Files with this
|
|
|
bit set cannot be erased by 'DEL' nor modified.
|
|
|
's'
|
|
|
System bit. Used by MS-DOS to indicate a operating system file.
|
|
|
'h'
|
|
|
Hidden bit. Used to make files hidden from 'DIR'.
|
|
|
|
|
|
'Mattrib' supports the following command line flags:
|
|
|
'/'
|
|
|
Recursive. Recursively list the attributes of the files in the
|
|
|
subdirectories.
|
|
|
'X'
|
|
|
Concise. Prints the attributes without any whitespace padding. If
|
|
|
neither the "/" option is given, nor the 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
|
|
|
'p'
|
|
|
Replay mode. Outputs a series of '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 'readonly' attribute is not taken
|
|
|
into account, as tar can set that one itself.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mbadblocks, Next: mcat, Prev: mattrib, Up: Commands
|
|
|
|
|
|
4.4 Mbadblocks
|
|
|
==============
|
|
|
|
|
|
The 'mbadblocks' command is used to mark some clusters on an MS-DOS
|
|
|
filesystem bad. It has the following syntax:
|
|
|
|
|
|
'mbadblocks' ['-s' SECTORLIST|'-c' CLUSTERLIST|-w] DRIVE':'
|
|
|
|
|
|
If no command line flags are supplied, '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 'mformat'. It is not
|
|
|
intended to salvage data from bad disks.
|
|
|
|
|
|
4.4.1 Command line options
|
|
|
--------------------------
|
|
|
|
|
|
'c FILE'
|
|
|
Use a list of bad clusters, rather than scanning for bad clusters
|
|
|
itself.
|
|
|
's FILE'
|
|
|
Use a list of bad sectors (counted from beginning of filesystem),
|
|
|
rather than trying for bad clusters itself.
|
|
|
'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.
|
|
|
|
|
|
4.4.2 Bugs
|
|
|
----------
|
|
|
|
|
|
'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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mcat, Next: mcd, Prev: mbadblocks, Up: Commands
|
|
|
|
|
|
4.5 Mcat
|
|
|
========
|
|
|
|
|
|
The 'mcat' command is used to copy an entire disk image from or to the
|
|
|
floppy device. It uses the following syntax:
|
|
|
|
|
|
'mcat' ['-w'] DRIVE':'
|
|
|
|
|
|
'Mcat' performs the same task as the Unix 'cat' command. It is
|
|
|
included into the mtools package, since '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 '-w' option is specified, mcat reads a disk-image from stdin
|
|
|
and writes it to the given device. *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!
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mcd, Next: mclasserase, Prev: mcat, Up: Commands
|
|
|
|
|
|
4.6 Mcd
|
|
|
=======
|
|
|
|
|
|
The 'mcd' command is used to change the mtools working directory on the
|
|
|
MS-DOS disk. It uses the following syntax:
|
|
|
|
|
|
mcd [MSDOSDIRECTORY]
|
|
|
|
|
|
Without arguments, 'mcd' reports the current device and working
|
|
|
directory. Otherwise, 'mcd' changes the current device and current
|
|
|
working directory relative to an MS-DOS file system.
|
|
|
|
|
|
The environmental variable 'MCWD' may be used to locate the file
|
|
|
where the device and current working directory information is stored.
|
|
|
The default is '$HOME/.mcwd'. Information in this file is ignored if
|
|
|
the file is more than 6 hours old.
|
|
|
|
|
|
'Mcd' returns 0 on success or 1 on failure.
|
|
|
|
|
|
Unlike MS-DOS versions of 'CD', 'mcd' can be used to change to
|
|
|
another device. It may be wise to remove old '.mcwd' files at logout.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mclasserase, Next: mcopy, Prev: mcd, Up: Commands
|
|
|
|
|
|
4.7 Mclasserase
|
|
|
===============
|
|
|
|
|
|
The 'mclasserase' command is used to wipe memory cards by overwriting it
|
|
|
three times: first with '0xff', then with '0x00', then with '0xff'
|
|
|
again. The command uses the following syntax:
|
|
|
|
|
|
mclasserase [-d] MSDOSDRIVE
|
|
|
|
|
|
MS-DOS drive is optional, if none is specified, use 'A:'. If more
|
|
|
than one drive are specified, all but the last are ignored.
|
|
|
|
|
|
'Mclasserase' accepts the following command line options:
|
|
|
|
|
|
'd'
|
|
|
Stop after each erase cycle, for testing purposes
|
|
|
'p'
|
|
|
Not yet implemented
|
|
|
|
|
|
'Mclasserase' returns 0 on success or -1 on failure.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mcopy, Next: mdel, Prev: mclasserase, Up: Commands
|
|
|
|
|
|
4.8 Mcopy
|
|
|
=========
|
|
|
|
|
|
The 'mcopy' command is used to copy MS-DOS files to and from Unix. It
|
|
|
uses the following syntax:
|
|
|
|
|
|
mcopy [-bspanvmQT] [-D CLASH_OPTION] SOURCEFILE TARGETFILE
|
|
|
mcopy [-bspanvmQT] [-D CLASH_OPTION] SOURCEFILE [ SOURCEFILES... ] TARGETDIRECTORY
|
|
|
mcopy [-tnvm] MSDOSSOURCEFILE
|
|
|
|
|
|
'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. '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 (''.'') is
|
|
|
assumed.
|
|
|
|
|
|
A filename of ''-'' means standard input or standard output,
|
|
|
depending on its position on the command line.
|
|
|
|
|
|
'Mcopy' accepts the following command line options:
|
|
|
|
|
|
'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.
|
|
|
'b'
|
|
|
Batch mode. Optimized for huge recursive copies, but less secure
|
|
|
if a crash happens during the copy.
|
|
|
's'
|
|
|
Recursive copy. Also copies directories and their contents
|
|
|
'p'
|
|
|
Preserves the attributes of the copied files
|
|
|
'Q'
|
|
|
When mcopying multiple files, quits as soon as one copy fails (for
|
|
|
example due to lacking storage space on the target disk)
|
|
|
'a'
|
|
|
Text (ASCII) file transfer. 'ASCII' translates incoming carriage
|
|
|
return/line feeds to line feeds.
|
|
|
'T'
|
|
|
Text (ASCII) file transfer with character set conversion. Differs
|
|
|
from '-a' in the '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 ''#''; when
|
|
|
writing DOS files, untranslatable characters are replaced by ''.''.
|
|
|
'n'
|
|
|
No confirmation when overwriting Unix files. 'ASCII' doesn't warn
|
|
|
the user when overwriting an existing Unix file. If the target
|
|
|
file already exists, and the '-n' option is not in effect, 'mcopy'
|
|
|
asks whether to overwrite the file or to rename the new file (see
|
|
|
*note name clashes::) for details). In order to switch off
|
|
|
confirmation for DOS files, use '-o'.
|
|
|
'm'
|
|
|
Preserve the file modification time.
|
|
|
'v'
|
|
|
Verbose. Displays the name of each file as it is copied.
|
|
|
|
|
|
4.8.1 Bugs
|
|
|
----------
|
|
|
|
|
|
Unlike MS-DOS, the '+' operator (append) from MS-DOS is not supported.
|
|
|
However, you may use 'mtype' to produce the same effect:
|
|
|
mtype a:file1 a:file2 a:file3 >unixfile
|
|
|
mtype a:file1 a:file2 a:file3 | mcopy - a:msdosfile
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mdel, Next: mdeltree, Prev: mcopy, Up: Commands
|
|
|
|
|
|
4.9 Mdel
|
|
|
========
|
|
|
|
|
|
The 'mdel' command is used to delete an MS-DOS file. Its syntax is:
|
|
|
|
|
|
'mdel' ['-v'] MSDOSFILE [ MSDOSFILES ... ]
|
|
|
|
|
|
'Mdel' deletes files on an MS-DOS file system.
|
|
|
|
|
|
'Mdel' asks for verification prior to removing a read-only file.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mdeltree, Next: mdir, Prev: mdel, Up: Commands
|
|
|
|
|
|
4.10 Mdeltree
|
|
|
=============
|
|
|
|
|
|
The 'mdeltree' command is used to delete an MS-DOS file. Its syntax is:
|
|
|
|
|
|
'mdeltree' ['-v'] MSDOSDIRECTORY [MSDOSDIRECTORIES...]
|
|
|
|
|
|
'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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mdir, Next: mdu, Prev: mdeltree, Up: Commands
|
|
|
|
|
|
4.11 Mdir
|
|
|
=========
|
|
|
|
|
|
The 'mdir' command is used to display an MS-DOS directory. Its syntax
|
|
|
is:
|
|
|
|
|
|
'mdir' ['-/'] ['-f'] ['-w'] ['-a'] ['-b'] MSDOSFILE [ MSDOSFILES...]
|
|
|
|
|
|
'Mdir' displays the contents of MS-DOS directories, or the entries
|
|
|
for some MS-DOS files.
|
|
|
|
|
|
'Mdir' supports the following command line options:
|
|
|
|
|
|
'/'
|
|
|
Recursive output, just like MS-DOS' '-s' option
|
|
|
'w'
|
|
|
Wide output. With this option, 'mdir' prints the filenames across
|
|
|
the page without displaying the file size or creation date.
|
|
|
'a'
|
|
|
Also list hidden files.
|
|
|
'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 '-f' flag
|
|
|
bypasses this step. This flag is not needed on FAT32 file systems,
|
|
|
which store the size explicitly.
|
|
|
'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.
|
|
|
|
|
|
An error occurs if a component of the path is not a directory.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mdu, Next: mformat, Prev: mdir, Up: Commands
|
|
|
|
|
|
4.12 Mdu
|
|
|
========
|
|
|
|
|
|
'Mdu' is used to list the space occupied by a directory, its
|
|
|
subdirectories and its files. It is similar to the 'du' command on
|
|
|
Unix. The unit used are clusters. Use the minfo command to find out
|
|
|
the cluster size.
|
|
|
|
|
|
'mdu' ['-a'] [ MSDOSFILES ... ]
|
|
|
|
|
|
'a'
|
|
|
All files. List also the space occupied for individual files.
|
|
|
's'
|
|
|
Only list the total space, don't give details for each
|
|
|
subdirectory.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mformat, Next: mkmanifest, Prev: mdu, Up: Commands
|
|
|
|
|
|
4.13 Mformat
|
|
|
============
|
|
|
|
|
|
The 'mformat' command is used to add an MS-DOS file system to a
|
|
|
low-level formatted diskette. Its syntax is:
|
|
|
|
|
|
'mformat' ['-t' CYLINDERS|'-T' TOT_SECTORS] ['-h' HEADS] ['-s' SECTORS]
|
|
|
['-f' SIZE] ['-1'] ['-4'] ['-8']
|
|
|
['-v' VOLUME_LABEL]
|
|
|
['-F'] ['-S' SIZECODE]
|
|
|
['-M' SOFTWARE_SECTOR_SIZE]
|
|
|
['-N' SERIAL_NUMBER] ['-a']
|
|
|
['-C'] ['-H' HIDDEN_SECTORS] ['-I' FSVERSION]
|
|
|
['-r' ROOT_SECTORS] ['-L' FAT_LEN]
|
|
|
['-B' BOOT_SECTOR] ['-k']
|
|
|
['-m' MEDIA_DESCRIPTOR]
|
|
|
['-K' BACKUP_BOOT]
|
|
|
['-R' NB_RESERVED_SECTORS]
|
|
|
['-c' CLUSTERS_PER_SECTOR]
|
|
|
['-d' FAT_COPIES]
|
|
|
['-X'] ['-2' SECTORS_ON_TRACK_0] ['-3']
|
|
|
['-0' RATE_ON_TRACK_0] ['-A' RATE_ON_OTHER_TRACKS]
|
|
|
DRIVE:
|
|
|
|
|
|
'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:
|
|
|
|
|
|
'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.
|
|
|
'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:
|
|
|
160
|
|
|
160K, single-sided, 8 sectors per track, 40 cylinders (for 5
|
|
|
1/4 DD)
|
|
|
180
|
|
|
160K, single-sided, 9 sectors per track, 40 cylinders (for 5
|
|
|
1/4 DD)
|
|
|
320
|
|
|
320K, double-sided, 8 sectors per track, 40 cylinders (for 5
|
|
|
1/4 DD)
|
|
|
360
|
|
|
360K, double-sided, 9 sectors per track, 40 cylinders (for 5
|
|
|
1/4 DD)
|
|
|
720
|
|
|
720K, double-sided, 9 sectors per track, 80 cylinders (for 3
|
|
|
1/2 DD)
|
|
|
1200
|
|
|
1200K, double-sided, 15 sectors per track, 80 cylinders (for 5
|
|
|
1/4 HD)
|
|
|
1440
|
|
|
1440K, double-sided, 18 sectors per track, 80 cylinders (for 3
|
|
|
1/2 HD)
|
|
|
2880
|
|
|
2880K, double-sided, 36 sectors per track, 80 cylinders (for 3
|
|
|
1/2 ED)
|
|
|
|
|
|
't'
|
|
|
Specifies the number of tracks on the disk.
|
|
|
'T'
|
|
|
Specifies the number of total sectors on the disk. Only one of
|
|
|
these 2 options may be specified (tracks or total sectors)
|
|
|
'h'
|
|
|
The number of heads (sides).
|
|
|
'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).
|
|
|
|
|
|
'1'
|
|
|
Formats a single side (equivalent to -h 1)
|
|
|
|
|
|
'4'
|
|
|
Formats a 360K double-sided disk (equivalent to -f 360). When used
|
|
|
together with -the 1 switch, this switch formats a 180K disk
|
|
|
|
|
|
'8'
|
|
|
Formats a disk with 8 sectors per track.
|
|
|
|
|
|
MS-DOS format's 'q', 'u' and 'b' options are not supported, and 's'
|
|
|
has a different meaning.
|
|
|
|
|
|
The following options are specific to mtools:
|
|
|
|
|
|
'F'
|
|
|
Format the partition as FAT32.
|
|
|
|
|
|
'S'
|
|
|
The size code. The size of the sector is 2 ^ (sizecode + 7).
|
|
|
'X'
|
|
|
formats the disk as an XDF disk. *Note 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.
|
|
|
'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.
|
|
|
'3'
|
|
|
don't use a 2m format, even if the current geometry of the disk is
|
|
|
a 2m geometry.
|
|
|
'0'
|
|
|
Data transfer rate on track 0
|
|
|
'A'
|
|
|
Data transfer rate on tracks other than 0
|
|
|
'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.
|
|
|
'N'
|
|
|
Uses the requested serial number, instead of generating one
|
|
|
automatically
|
|
|
'a'
|
|
|
If this option is given, an Atari style serial number is generated.
|
|
|
Ataris store their serial number in the OEM label.
|
|
|
'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.
|
|
|
'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.
|
|
|
'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.
|
|
|
'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.
|
|
|
'd'
|
|
|
Sets the number of FAT copies. Default is 2. This setting can
|
|
|
also be specified using the 'MTOOLS_NFATS' environment variable.
|
|
|
'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 'MTOOLS_DIR_LEN' environment variable.
|
|
|
'L'
|
|
|
Sets the length of the FAT.
|
|
|
'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.
|
|
|
'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.
|
|
|
'K'
|
|
|
Sets the sector number where the backup of the boot sector should
|
|
|
be stored (only relevant on FAT32).
|
|
|
'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).
|
|
|
|
|
|
'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.
|
|
|
|
|
|
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.
|
|
|
|
|
|
'Mformat' returns 0 on success or 1 on failure.
|
|
|
|
|
|
It doesn't record bad block information to the Fat, use 'mbadblocks'
|
|
|
for that.
|
|
|
|
|
|
4.13.1 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
|
|
|
'fatgen103' document, which currently can be found at the following
|
|
|
address:
|
|
|
|
|
|
'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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mkmanifest, Next: minfo, Prev: mformat, Up: Commands
|
|
|
|
|
|
4.14 Mkmanifest
|
|
|
===============
|
|
|
|
|
|
The 'mkmanifest' command is used to create a shell script (packing list)
|
|
|
to restore Unix filenames. Its syntax is:
|
|
|
|
|
|
'mkmanifest' [ FILES ]
|
|
|
|
|
|
'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 'pcomm,
|
|
|
arc,' and '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.
|
|
|
|
|
|
4.14.1 Example
|
|
|
--------------
|
|
|
|
|
|
You want to copy the following Unix files to a MS-DOS diskette (using
|
|
|
the 'mcopy' command).
|
|
|
|
|
|
very_long_name
|
|
|
2.many.dots
|
|
|
illegal:
|
|
|
good.c
|
|
|
prn.dev
|
|
|
Capital
|
|
|
|
|
|
'ASCII' converts the names to:
|
|
|
|
|
|
very_lon
|
|
|
2xmany.dot
|
|
|
illegalx
|
|
|
good.c
|
|
|
xprn.dev
|
|
|
capital
|
|
|
|
|
|
The command:
|
|
|
mkmanifest very_long_name 2.many.dots illegal: good.c prn.dev Capital >manifest
|
|
|
would produce the following:
|
|
|
mv very_lon very_long_name
|
|
|
mv 2xmany.dot 2.many.dots
|
|
|
mv illegalx illegal:
|
|
|
mv xprn.dev prn.dev
|
|
|
mv capital Capital
|
|
|
|
|
|
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.
|
|
|
|
|
|
4.14.2 Bugs
|
|
|
-----------
|
|
|
|
|
|
The short names generated by 'mkmanifest' follow the old convention
|
|
|
(from mtools-2.0.7) and not the one from Windows 95 and mtools-3.0.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: minfo, Next: mlabel, Prev: mkmanifest, Up: Commands
|
|
|
|
|
|
4.15 Minfo
|
|
|
==========
|
|
|
|
|
|
The '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
|
|
|
'minfo' DRIVE:
|
|
|
|
|
|
Minfo supports the following option:
|
|
|
'v'
|
|
|
Prints a hexdump of the boot sector, in addition to the other
|
|
|
information
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mlabel, Next: mmd, Prev: minfo, Up: Commands
|
|
|
|
|
|
4.16 Mlabel
|
|
|
===========
|
|
|
|
|
|
The 'mlabel' command adds a volume label to a disk. Its syntax is:
|
|
|
'mlabel' ['-vcsn'] ['-N' SERIAL] DRIVE:[NEW_LABEL]
|
|
|
|
|
|
'Mlabel' displays the current volume label, if present. If NEW_LABEL
|
|
|
is not given, and if neither the 'c' nor the '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.
|
|
|
'Name1234567'.
|
|
|
|
|
|
Reasonable care is taken to create a valid MS-DOS volume label. If
|
|
|
an invalid label is specified, 'mlabel' changes the label (and displays
|
|
|
the new label if the verbose mode is set). 'Mlabel' returns 0 on
|
|
|
success or 1 on failure.
|
|
|
|
|
|
Mlabel supports the following options:
|
|
|
'c'
|
|
|
Clears an existing label, without prompting the user
|
|
|
's'
|
|
|
Shows the existing label, without prompting the user.
|
|
|
'n'
|
|
|
Assigns a new (random) serial number to the disk
|
|
|
'N SERIAL'
|
|
|
Sets the supplied serial number. The serial number should be
|
|
|
supplied as an 8 digit hexadecimal number, without spaces
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mmd, Next: mmount, Prev: mlabel, Up: Commands
|
|
|
|
|
|
4.17 Mmd
|
|
|
========
|
|
|
|
|
|
The 'mmd' command is used to make an MS-DOS subdirectory. Its syntax
|
|
|
is:
|
|
|
|
|
|
'mmd' ['-D' CLASH_OPTION] MSDOSDIRECTORY [ MSDOSDIRECTORIES... ]
|
|
|
|
|
|
'Mmd' makes a new directory on an MS-DOS file system. An error
|
|
|
occurs if the directory already exists.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mmount, Next: mmove, Prev: mmd, Up: Commands
|
|
|
|
|
|
4.18 Mmount
|
|
|
===========
|
|
|
|
|
|
The '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:
|
|
|
|
|
|
'mmount' MSDOSDRIVE [MOUNTARGS]
|
|
|
|
|
|
'Mmount' reads the boot sector of an MS-DOS disk, configures the
|
|
|
drive geometry, and finally mounts it passing 'mountargs' to '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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mmove, Next: mpartition, Prev: mmount, Up: Commands
|
|
|
|
|
|
4.19 Mmove
|
|
|
==========
|
|
|
|
|
|
The 'mmove' command is used to move or rename an existing MS-DOS file or
|
|
|
subdirectory.
|
|
|
'mmove' ['-v'] ['-D' CLASH_OPTION] SOURCEFILE TARGETFILE
|
|
|
'mmove' ['-v'] ['-D' CLASH_OPTION] SOURCEFILE [ SOURCEFILES... ] TARGETDIRECTORY
|
|
|
'Mmove' moves or renames an existing MS-DOS file or subdirectory.
|
|
|
Unlike the MS-DOS version of 'MOVE', '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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mpartition, Next: mrd, Prev: mmove, Up: Commands
|
|
|
|
|
|
4.20 Mpartition
|
|
|
===============
|
|
|
|
|
|
The '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.
|
|
|
|
|
|
'mpartition' '-p' DRIVE
|
|
|
'mpartition' '-r' DRIVE
|
|
|
'mpartition' '-I' ['-B' BOOTSECTOR] DRIVE
|
|
|
'mpartition' '-a' DRIVE
|
|
|
'mpartition' '-d' DRIVE
|
|
|
'mpartition' '-c' ['-s' SECTORS] ['-h' HEADS]
|
|
|
['-t' CYLINDERS] ['-v' ['-T' TYPE] ['-b'
|
|
|
BEGIN] ['-l' length] ['-f']
|
|
|
|
|
|
|
|
|
Mpartition supports the following operations:
|
|
|
|
|
|
'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 ('-v') is also
|
|
|
set, prints the current partition table.
|
|
|
'r'
|
|
|
Removes the partition described by DRIVE.
|
|
|
'I'
|
|
|
Initializes the partition table, and removes all partitions.
|
|
|
'c'
|
|
|
Creates the partition described by DRIVE.
|
|
|
'a'
|
|
|
"Activates" the partition, i.e. makes it bootable. Only one
|
|
|
partition can be bootable at a time.
|
|
|
'd'
|
|
|
"Deactivates" the partition, i.e. makes it unbootable.
|
|
|
|
|
|
If no operation is given, the current settings are printed.
|
|
|
|
|
|
For partition creations, the following options are available:
|
|
|
's SECTORS'
|
|
|
The number of sectors per track of the partition (which is also the
|
|
|
number of sectors per track for the whole drive).
|
|
|
'h 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.
|
|
|
't CYLINDERS'
|
|
|
The number of cylinders of the partition (not the number of
|
|
|
cylinders of the whole drive.
|
|
|
'b BEGIN'
|
|
|
The starting offset of the partition, expressed in sectors. If
|
|
|
begin is not given, 'mpartition' lets the partition begin at the
|
|
|
start of the disk (partition number 1), or immediately after the
|
|
|
end of the previous partition.
|
|
|
'l LENGTH'
|
|
|
The size (length) of the partition, expressed in sectors. If end
|
|
|
is not given, '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.
|
|
|
|
|
|
The following option is available for all operation which modify the
|
|
|
partition table:
|
|
|
'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 '-f'
|
|
|
allows you to override these safeguards.
|
|
|
|
|
|
The following options are available for all operations:
|
|
|
'v'
|
|
|
Together with '-p' prints the partition table as it is now (no
|
|
|
change operation), or as it is after it is modified.
|
|
|
'vv'
|
|
|
If the verbosity flag is given twice, 'mpartition' will print out a
|
|
|
hexdump of the partition table when reading it from and writing it
|
|
|
to the device.
|
|
|
|
|
|
The following option is available for partition table initialization:
|
|
|
'B BOOTSECTOR'
|
|
|
Reads the template master boot record from file BOOTSECTOR.
|
|
|
|
|
|
4.20.1 Choice of partition type
|
|
|
-------------------------------
|
|
|
|
|
|
Mpartition proceeds as follows to pick a type for the partition:
|
|
|
|
|
|
- FAT32 partitions are assigned type 0x0C ("'Win95 FAT32, LBA'")
|
|
|
|
|
|
- For all others, if the partition fits entirely within the first
|
|
|
65536 sectors of the disk, assign 0x01 ("'DOS FAT12, CHS'") for
|
|
|
FAT12 partition and 0x04 ("'DOS FAT16, CHS'") for FAT16 partitions
|
|
|
|
|
|
- If not covered by the above, assign 0x06 ("'DOS BIG FAT16 CHS'") if
|
|
|
partition fits entirely within the first 1024 cylinders (CHS mode)
|
|
|
|
|
|
- All remaining cases get 0x0E ("'Win95 BIG FAT16, LBA'")
|
|
|
|
|
|
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
|
|
|
'https://en.wikipedia.org/wiki/Partition_type#List_of_partition_IDs' and
|
|
|
'https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc977219(v=technet.10)',
|
|
|
with two notable differences:
|
|
|
|
|
|
- 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).
|
|
|
|
|
|
- The reference documents use a 8GB (wikipedia) or a 4GB (Microsoft)
|
|
|
cutoff between 0x06 ('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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mrd, Next: mren, Prev: mpartition, Up: Commands
|
|
|
|
|
|
4.21 Mrd
|
|
|
========
|
|
|
|
|
|
The 'mrd' command is used to remove an MS-DOS subdirectory. Its syntax
|
|
|
is:
|
|
|
|
|
|
'mrd' ['-v'] MSDOSDIRECTORY [ MSDOSDIRECTORIES... ]
|
|
|
|
|
|
'Mrd' removes a directory from an MS-DOS file system. An error
|
|
|
occurs if the directory does not exist or is not empty.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mren, Next: mshortname, Prev: mrd, Up: Commands
|
|
|
|
|
|
4.22 Mren
|
|
|
=========
|
|
|
|
|
|
The 'mren' command is used to rename or move an existing MS-DOS file or
|
|
|
subdirectory. Its syntax is:
|
|
|
|
|
|
'mren' ['-voOsSrRA'] SOURCEFILE TARGETFILE
|
|
|
|
|
|
'Mren' renames an existing file on an MS-DOS file system.
|
|
|
|
|
|
In verbose mode, '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
|
|
|
'mcd' directory as would be the case with 'mmove'. Unlike the MS-DOS
|
|
|
version of 'REN', 'mren' can be used to rename directories.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mshortname, Next: mshowfat, Prev: mren, Up: Commands
|
|
|
|
|
|
4.23 Mshortname
|
|
|
===============
|
|
|
|
|
|
The 'mshortname' command is used to display the short name of a file.
|
|
|
Syntax:
|
|
|
|
|
|
'mshortname' FILES
|
|
|
|
|
|
The shortname is displayed as it is stored in raw format on disk,
|
|
|
without any character set conversion.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mshowfat, Next: mtoolstest, Prev: mshortname, Up: Commands
|
|
|
|
|
|
4.24 Mshowfat
|
|
|
=============
|
|
|
|
|
|
The 'mshowfat' command is used to display the FAT entries for a file.
|
|
|
Syntax:
|
|
|
|
|
|
'mshowfat' ['-o' OFFSET] FILES
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mtoolstest, Next: mtype, Prev: mshowfat, Up: Commands
|
|
|
|
|
|
4.25 Mtoolstest
|
|
|
===============
|
|
|
|
|
|
The 'mtoolstest' command is used to tests the mtools configuration
|
|
|
files. To invoke it, just type 'mtoolstest' without any arguments.
|
|
|
'Mtoolstest' reads the mtools configuration files, and prints the
|
|
|
cumulative configuration to '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.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mtype, Next: mzip, Prev: mtoolstest, Up: Commands
|
|
|
|
|
|
4.26 Mtype
|
|
|
==========
|
|
|
|
|
|
The 'mtype' command is used to display contents of an MS-DOS file. Its
|
|
|
syntax is:
|
|
|
|
|
|
'mtype' ['-ts'] MSDOSFILE [ MSDOSFILES... ]
|
|
|
|
|
|
'Mtype' displays the specified MS-DOS file on the screen.
|
|
|
|
|
|
In addition to the standard options, 'Mtype' allows the following
|
|
|
command line options:
|
|
|
|
|
|
't'
|
|
|
Text file viewing. 'Mtype' translates incoming carriage
|
|
|
return/line feeds to line feeds.
|
|
|
's'
|
|
|
'Mtype' strips the high bit from the data.
|
|
|
|
|
|
The 'mcd' command may be used to establish the device and the current
|
|
|
working directory (relative to MS-DOS), otherwise the default is 'A:/'.
|
|
|
|
|
|
'Mtype' returns 0 on success, 1 on utter failure, or 2 on partial
|
|
|
failure.
|
|
|
|
|
|
Unlike the MS-DOS version of 'TYPE', 'mtype' allows multiple
|
|
|
arguments.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: mzip, Prev: mtype, Up: Commands
|
|
|
|
|
|
4.27 Mzip
|
|
|
=========
|
|
|
|
|
|
The 'mzip' command is used to issue ZIP disk specific commands on Linux,
|
|
|
Solaris or HP-UX. Its syntax is:
|
|
|
|
|
|
'mzip' ['-epqrwx']
|
|
|
|
|
|
'Mzip' allows the following command line options:
|
|
|
|
|
|
'e'
|
|
|
Ejects the disk.
|
|
|
'f'
|
|
|
Force eject even if the disk is mounted (must be given in addition
|
|
|
to '-e').
|
|
|
'r'
|
|
|
Write protect the disk.
|
|
|
'w'
|
|
|
Remove write protection.
|
|
|
'p'
|
|
|
Password write protect.
|
|
|
'x'
|
|
|
Password protect
|
|
|
'u'
|
|
|
Temporarily unprotect the disk until it is ejected. The disk
|
|
|
becomes writable, and reverts back to its old state when ejected.
|
|
|
'q'
|
|
|
Queries the status
|
|
|
|
|
|
To remove the password, set it to one of the password-less modes '-r'
|
|
|
or '-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 'APlaceForYourStuff'(1).
|
|
|
Mzip knows about this password, and tries it first, before prompting you
|
|
|
for a password. Thus 'mzip -w z:' unlocks the tools disk(2). 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
|
|
|
'partishn.mac'. You may erase it to reclaim the 50 Megs of space taken
|
|
|
up by the Mac file system.
|
|
|
|
|
|
4.27.1 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).
|
|
|
|
|
|
---------- Footnotes ----------
|
|
|
|
|
|
(1) To see the articles, search for 'APlaceForYourStuff' using Google
|
|
|
Groups
|
|
|
|
|
|
(2) 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
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: Compiling mtools, Next: Porting mtools, Prev: Commands, Up: Top
|
|
|
|
|
|
5 Architecture specific compilation flags
|
|
|
*****************************************
|
|
|
|
|
|
To compile mtools, first invoke './configure' before 'make'. In
|
|
|
addition to the standard 'autoconfigure' flags, there are two
|
|
|
architecture specific flags available.
|
|
|
|
|
|
'./configure --enable-xdf'
|
|
|
'./configure --disable-xdf'
|
|
|
Enables support for XDF disks. This is on by default. *Note
|
|
|
XDF::, for details.
|
|
|
'./configure --enable-vold'
|
|
|
'./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.
|
|
|
|
|
|
'./configure --enable-new-vold'
|
|
|
'./configure --disable-new-vold'
|
|
|
Enables new support for vold on Solaris. This is supposed to work
|
|
|
more smoothly than the old support.
|
|
|
|
|
|
'./configure --enable-floppyd'
|
|
|
'./configure --disable-floppyd'
|
|
|
Enables support for floppyd. By default, floppyd support is
|
|
|
enabled as long as the necessary X includes and libraries are
|
|
|
available.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: Porting mtools, Next: Command Index, Prev: Compiling mtools, Up: Top
|
|
|
|
|
|
6 Porting mtools to architectures which are not supported yet
|
|
|
*************************************************************
|
|
|
|
|
|
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.
|
|
|
1. The complete OS name, with dots replaced by underscores. SCO3.2v2
|
|
|
would yield sco3_2v2
|
|
|
2. The base OS name. SCO3.2v2 would yield Sco
|
|
|
3. The base OS name plus its major version. SCO3.2v2 would yield Sco3
|
|
|
|
|
|
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:
|
|
|
|
|
|
#if (defined (my_cpu) && defined(my_os))
|
|
|
#define predefined_devices
|
|
|
struct device devices[] = {
|
|
|
{ "/dev/first_drive", 'drive_letter', drive_description},
|
|
|
...
|
|
|
{ "/dev/last_drive", 'drive_letter', drive_description}
|
|
|
}
|
|
|
#define INIT_NOOP
|
|
|
#endif
|
|
|
|
|
|
"/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:
|
|
|
'ED312'
|
|
|
extra density (2.88M) 3 1/2 disk
|
|
|
'HD312'
|
|
|
high density 3 1/2 disk
|
|
|
'DD312'
|
|
|
double density 3 1/2 disk
|
|
|
'HD514'
|
|
|
high density 5 1/4 disk
|
|
|
'DD514'
|
|
|
double density 5 1/4 disk
|
|
|
'DDsmall'
|
|
|
8 sector double density 5 1/4 disk
|
|
|
'SS514'
|
|
|
single sided double density 5 1/4 disk
|
|
|
'SSsmall'
|
|
|
single sided 8 sector double density 5 1/4 disk
|
|
|
'GENFD'
|
|
|
generic floppy drive (12 bit FAT)
|
|
|
'GENHD'
|
|
|
generic hard disk (16 bit FAT)
|
|
|
'GEN'
|
|
|
generic device (all parameters match)
|
|
|
'ZIPJAZ(flags)'
|
|
|
generic ZIP drive using normal access. This uses partition 4.
|
|
|
'Flags' are any special flags to be passed to open.
|
|
|
'RZIPJAZ(flags)'
|
|
|
generic ZIP drive using raw SCSI access. This uses partition 4.
|
|
|
'Flags' are any special flags to be passed to open.
|
|
|
'REMOTE'
|
|
|
the remote drive used for floppyd. Unlike the other items, this
|
|
|
macro also includes the file name ($DISPLAY) and the drive letter
|
|
|
(X)
|
|
|
|
|
|
Entries may be described in more detail:
|
|
|
fat_bits,open_flags,cylinders,heads,sectors,DEF_ARG
|
|
|
or, if you need to describe an offset (file system doesn't start at
|
|
|
beginning of file system)
|
|
|
fat_bits, open_flags, cylinders, heads, sectors, offset, DEF_ARG0
|
|
|
|
|
|
'fat_bits'
|
|
|
is either 12, 16 or 0. 0 means that the device accepts both types
|
|
|
of FAT.
|
|
|
'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.
|
|
|
'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.
|
|
|
'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.
|
|
|
|
|
|
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 '/etc/mtools.conf' and '~/.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:
|
|
|
|
|
|
1. Reading the current parameters
|
|
|
static inline int get_parameters(int fd, struct generic_floppy_struct *floppy)
|
|
|
|
|
|
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.
|
|
|
|
|
|
2. Setting new parameters
|
|
|
static inline int set_parameters(int fd, struct generic_floppy_struct *floppy)
|
|
|
struct stat *buf)
|
|
|
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.
|
|
|
|
|
|
A certain number of preprocessor macros should also be supplied:
|
|
|
|
|
|
'TRACKS(floppy)'
|
|
|
refers to the track field in the floppy structure
|
|
|
'HEADS(floppy)'
|
|
|
refers to the heads field in the floppy structure
|
|
|
'SECTORS(floppy)'
|
|
|
refers to the sectors per track field in the floppy structure
|
|
|
'SECTORS_PER_DISK(floppy)'
|
|
|
refers to the sectors per disk field in the floppy structure (if
|
|
|
applicable, otherwise leave undefined)
|
|
|
|
|
|
'BLOCK_MAJOR'
|
|
|
major number of the floppy device, when viewed as a block device
|
|
|
|
|
|
'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)
|
|
|
|
|
|
For the truly high capacity formats (XDF, 2m, etc), there is no clean
|
|
|
and documented interface yet.
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: Command Index, Next: Variable Index, Prev: Porting mtools, Up: Top
|
|
|
|
|
|
Command Index
|
|
|
*************
|
|
|
|
|
|
|
|
|
File: mtools.info, Node: Variable Index, Next: Concept Index, Prev: Command Index, Up: Top
|
|
|
|
|
|
Variable index
|
|
|
**************
|
|
|
|
|
|
|