.\" -*- nroff -*-
.TH MKDOSFS 8 "5 May 1995" "Version 2.x"
.SH NAME
.B mkdosfs
\- create an MS-DOS file system under Linux
.SH SYNOPSIS
.B mkdosfs|mkfs.msdos|mkfs.vfat
[
.B \-A
]
[
.B \-b
.I sector-of-backup
]
[
.B \-c
]
[
.B \-l
.I filename
]
[
.B \-C
]
[
.B \-f
.I number-of-FATs
]
[
.B \-F
.I FAT-size
]
[
.B \-h
.I number-of-hidden-sectors
]
[
.B \-i
.I volume-id
]
.RB [ " \-I " ]
[
.B \-m
.I message-file
]
[
.B \-n
.I volume-name
]
[
.B \-r
.I root-dir-entries
]
[
.B \-R
.I number-of-reserved-sectors
]
[
.B \-s
.I sectors-per-cluster
]
[
.B \-S
.I logical-sector-size
]
[
.B \-v
]
.I device
[
.I block-count
]
.SH DESCRIPTION
.B mkdosfs
is used to create an MS-DOS file system under Linux on a device (usually
a disk partition).
.I device
is the special file corresponding to the device (e.g /dev/hdXX).
.I block-count
is the number of blocks on the device.  If omitted,
.B mkdosfs
automatically determines the file system size.
.SH OPTIONS
.TP
.B \-A
Use Atari variation of the MS-DOS file system. This is default if
\fBmkdosfs\fP is run on an Atari, then this option turns off Atari
format. There are some differences when using Atari format: If not
directed otherwise by the user, \fBmkdosfs\fP will always use 2
sectors per cluster, since GEMDOS doesn't like other values very much.
It will also obey the maximum number of sectors GEMDOS can handle.
Larger file systems are managed by raising the logical sector size.
Under Atari format, an Atari-compatible serial number for the
file system is generated, and a 12 bit FAT is used only for file systems
that have one of the usual floppy sizes (720k, 1.2M, 1.44M, 2.88M), a
16 bit FAT otherwise. This can be overridden with the \fB\-F\fP
option. Some PC-specific boot sector fields aren't written, and a boot
message (option \fB\-m\fP) is ignored.
.TP
.BI \-b " sector-of-backup "
Selects the location of the backup boot sector for FAT32. Default
depends on number of reserved sectors, but usually is sector 6. The
backup must be within the range of reserved sectors.
.TP
.B \-c
Check the device for bad blocks before creating the file system.
.TP
.B \-C
Create the file given as \fIdevice\fP on the command line, and write
the to-be-created file system to it. This can be used to create the
new file system in a file instead of on a real device, and to avoid
using \fBdd\fP in advance to create a file of appropriate size. With
this option, the \fIblock-count\fP must be given, because otherwise
the intended size of the file system wouldn't be known. The file
created is a sparse file, which actually only contains the meta-data
areas (boot sector, FATs, and root directory). The data portions won't
be stored on the disk, but the file nevertheless will have the
correct size. The resulting file can be copied later to a floppy disk
or other device, or mounted through a loop device.
.TP
.BI \-f " number-of-FATs"
Specify the number of file allocation tables in the file system.  The
default is 2.  Currently the Linux MS-DOS file system does not support
more than 2 FATs.
.TP
.BI \-F " FAT-size"
Specifies the type of file allocation tables used (12, 16 or 32 bit).
If nothing is specified, \fBmkdosfs\fR will automatically select
between 12, 16 and 32 bit, whatever fits better for the file system size.
.TP
.BI \-h " number-of-hidden-sectors "
Select the number of hidden sectors in the volume. Apparently some
digital cameras get indigestion if you feed them a CF card without
such hidden sectors, this option allows you to satisfy them. Assumes
\'0\' if no value is given on the command line.
.TP
.I \-i " volume-id"
Sets the volume ID of the newly created file system;
.I volume-id
is a 32-bit hexadecimal number (for example, 2e24ec82).  The default
is a number which depends on the file system creation time.
.TP
.B \-I
It is typical for fixed disk devices to be partitioned so, by default, you are
not permitted to create a filesystem across the entire device.
.B mkdosfs
will complain and tell you that it refuses to work.  This is different
when using MO disks.  One doesn't always need partitions on MO disks.
The file system can go directly to the whole disk.  Under other OSes
this is known as the 'superfloppy' format.

This switch will force
.B mkdosfs
to work properly.
.TP
.BI \-l " filename"
Read the bad blocks list from
.IR filename .
.TP
.BI \-m " message-file"
Sets the message the user receives on attempts to boot this file system
without having properly installed an operating system.  The message
file must not exceed 418 bytes once line feeds have been converted to
carriage return-line feed combinations, and tabs have been expanded.
If the filename is a hyphen (-), the text is taken from standard input.
.TP
.BI \-n " volume-name"
Sets the volume name (label) of the file system.  The volume name can
be up to 11 characters long.  The default is no label.
.TP
.BI \-r " root-dir-entries"
Select the number of entries available in the root directory.  The
default is 112 or 224 for floppies and 512 for hard disks.
.TP
.BI \-R " number-of-reserved-sectors "
Select the number of reserved sectors. With FAT32 format at least 2
reserved sectors are needed, the default is 32. Otherwise the default
is 1 (only the boot sector).
.TP
.BI \-s " sectors-per-cluster"
Specify the number of disk sectors per cluster.  Must be a power of 2,
i.e. 1, 2, 4, 8, ... 128.
.TP
.BI \-S " logical-sector-size"
Specify the number of bytes per logical sector.  Must be a power of 2
and greater than or equal to 512, i.e. 512, 1024, 2048, 4096, 8192,
16384, or 32768.
.TP
.B \-v
Verbose execution.
.SH BUGS
.B mkdosfs
can not create boot-able file systems. This isn't as easy as you might
think at first glance for various reasons and has been discussed a lot
already.
.B mkdosfs
simply will not support it ;)
.SH AUTHOR
Dave Hudson - <dave@humbug.demon.co.uk>; modified by Peter Anvin
<hpa@yggdrasil.com>. Fixes and additions by Roman Hodek
<roman@hodek.net> for Debian/GNU Linux.
.SH ACKNOWLEDGMENTS
.B mkdosfs
is based on code from
.BR mke2fs
(written by Remy Card - <card@masi.ibp.fr>) which is itself based on
.BR mkfs
(written by Linus Torvalds - <torvalds@cs.helsinki.fi>).
.SH SEE ALSO
.BR dosfsck (8),
.BR mkfs (8)
