.\" -*- nroff -*-
.\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
.\" This file may be copied under the terms of the GNU Public License.
.\" 
.TH MKE2FS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
.SH NAME
mke2fs \- create an ext2/ext3 filesystem
.SH SYNOPSIS
.B mke2fs
[
.B \-c
| 
.B \-l
.I filename
]
[
.B \-b
.I block-size
]
[
.B \-f
.I fragment-size
]
[
.B \-g
.I blocks-per-group
]
[
.B \-i
.I bytes-per-inode
]
[
.B \-I
.I inode-size
]
[
.B \-j
]
[
.B \-J
.I journal-options
]
[
.B \-N
.I number-of-inodes
]
[
.B -n
]
[
.B \-m
.I reserved-blocks-percentage
]
[
.B \-o
.I creator-os
]
[
.B \-O 
.IR feature [,...]
]
[
.B \-q
]
[
.B \-r
.I fs-revision-level
]
[
.B \-E
.I extended-options
]
[
.B \-v
]
[
.B \-F
]
[
.B \-L
.I volume-label
]
[
.B \-M
.I last-mounted-directory
]
[
.B \-S
]
[
.B \-T
.I filesystem-type
]
[
.B \-V
]
.I device
[
.I blocks-count
]
@JDEV@.sp
@JDEV@.B "mke2fs \-O journal_dev"
@JDEV@[
@JDEV@.B \-b
@JDEV@.I block-size
@JDEV@]
.\" No external-journal specific journal options yet (size is ignored)
.\" @JDEV@[
.\" @JDEV@.B \-J
.\" @JDEV@.I journal-options
.\" @JDEV@]
@JDEV@[
@JDEV@.B \-L
@JDEV@.I volume-label
@JDEV@]
@JDEV@[
@JDEV@.B \-n
@JDEV@]
@JDEV@[
@JDEV@.B \-q
@JDEV@]
@JDEV@[
@JDEV@.B \-v
@JDEV@]
@JDEV@.I external-journal
@JDEV@[
@JDEV@.I blocks-count
@JDEV@]
.SH DESCRIPTION
.B mke2fs
is used to create an ext2/ext3 filesystem (usually in a disk partition).
.I device
is the special file corresponding to the device (e.g 
.IR /dev/hdXX ).
.I blocks-count
is the number of blocks on the device.  If omitted,
.B mke2fs
automagically figures the file system size.  If called as
.B mkfs.ext3
a journal is created as if the
.B \-j
option was specified.
.SH OPTIONS
.TP
.BI \-b " block-size"
Specify the size of blocks in bytes.  Valid block size vales are 1024, 
2048 and 4096 bytes per block.  If omitted,
.B mke2fs
block-size is heuristically determined by the file system size and
the expected usage of the filesystem (see the
.B \-T
option).  If 
.I block-size
is negative, then 
.B mke2fs
will use heuristics to determine the
appropriate block size, with the constraint that the block size will be
at least 
.I block-size
bytes.  This is useful for certain hardware devices which require that
the blocksize be a multiple of 2k.
.TP
.B \-c
Check the device for bad blocks before creating the file system.  If
this option is specified twice, then a slower, read-write
test is used instead of a fast read-only test.
.TP
.BI \-E " extended-options"
Set extended options for the filesystem.  Extended options are comma
separated, and may take an argument using the equals ('=') sign.  The
.B -E
option used to be 
.B -R
in earlier versions of 
.BR mke2fs .
The 
.B -R
option is still accepted for backwards compatibility.   The 
following extended options are supported:
.RS 1.2i
.TP
.BI stride= stride-size
Configure the filesystem for a RAID array with
.I stride-size
filesystem blocks. This is the number of blocks read or written to disk
before moving to next disk. This mostly affects placement of filesystem
metadata like bitmaps at
.BR mke2fs (2)
time to avoid placing them on a single disk, which can hurt the performanace.
It may also be used by block allocator.
.TP
.BI stripe-width= stripe-width
Configure the filesystem for a RAID array with
.I stripe-width
filesystem blocks per stripe. This is typically be stride-size * N, where
N is the number of data disks in the RAID (e.g. RAID 5 N+1, RAID 6 N+2).
This allows the block allocator to prevent read-modify-write of the
parity in a RAID stripe if possible when the data is written.
.TP
.BI resize= max-online-resize
Reserve enough space so that the block group descriptor table can grow
to support a filesystem that has max-online-resize blocks.
.TP
.B test_fs
Set a flag in the filesystem superblock indicating that it may be
mounted using experimental kernel code, such as the ext4dev filesystem.
.RE
.TP
.BI \-f " fragment-size"
Specify the size of fragments in bytes.
.TP
.B \-F
Force 
.B mke2fs
to create a filesystem, even if the specified device is not a partition
on a block special device, or if other parameters do not make sense.
In order to force 
.B mke2fs
to create a filesystem even if the filesystem appears to be in use 
or is mounted (a truly dangerous thing to do), this option must be
specified twice.
.TP
.BI \-g " blocks-per-group"
Specify the number of blocks in a block group.  There is generally no
reason the user to ever set this parameter, as the default is optimal
for the filesystem.  (For administrators who are creating
filesystems on RAID arrays, it is preferable to use the
.I stride
RAID parameter as part of the
.B \-R
option rather than manipulating the number of blocks per group.)  
This option is generally used by developers who
are developing test cases.  
.TP
.BI \-i " bytes-per-inode"
Specify the bytes/inode ratio. 
.B mke2fs
creates an inode for every
.I bytes-per-inode
bytes of space on the disk.  The larger the 
.I bytes-per-inode
ratio, the fewer inodes will be created.  This value generally shouldn't
be smaller than the blocksize of the filesystem, since then too many
inodes will be made.  Be warned that is not possible to expand the number 
of inodes on a filesystem after it is created, so be careful deciding the
correct value for this parameter. 
.TP
.BI \-I " inode-size"
Specify the size of each inode in bytes. 
.B mke2fs
creates 256-byte inodes by default.  In kernels after 2.6.10 and some
earlier vendor kernels it is possible to utilize inodes larger than
128-bytes to store
extended attributes for improved performance.  The 
.I inode-size
value must be a power of two larger or equal to 128.  The larger the 
.I inode-size
the more space the inode table will consume, and this reduces the usable
space in the filesystem and can also negatively impact performance.  
Extended attributes
stored in large inodes are not visible with older kernels, and such
filesystems will not be mountable with 2.4 kernels at all.  It is not
possible to change this value after the filesystem is created.
.TP 
.B \-j
Create the filesystem with an ext3 journal.  If the
.B \-J
option is not specified, the default journal parameters will be used to
create an appropriately sized journal (given the size of the filesystem) 
stored within the filesystem.  Note that you must be using a kernel
which has ext3 support in order to actually make use of the journal.
.TP
.BI \-J " journal-options"
Create the ext3 journal using options specified on the command-line.
Journal options are comma
separated, and may take an argument using the equals ('=')  sign.
The following journal options are supported:
.RS 1.2i
.TP
.BI size= journal-size
Create an internal journal (i.e., stored inside the filesystem) of size
.I journal-size 
megabytes.
The size of the journal must be at least 1024 filesystem blocks 
(i.e., 1MB if using 1k blocks, 4MB if using 4k blocks, etc.) 
and may be no more than 102,400 filesystem blocks.  
@JDEV@.TP
@JDEV@.BI device= external-journal
@JDEV@Attach the filesystem to the journal block device located on
@JDEV@.IR external-journal .
@JDEV@The external
@JDEV@journal must already have been created using the command
@JDEV@.IP
@JDEV@.B mke2fs -O journal_dev
@JDEV@.I external-journal
@JDEV@.IP
@JDEV@Note that
@JDEV@.I external-journal
@JDEV@must have been created with the
@JDEV@same block size as the new filesystem.
@JDEV@In addition, while there is support for attaching
@JDEV@multiple filesystems to a single external journal,
@JDEV@the Linux kernel and 
@JDEV@.BR e2fsck (8)
@JDEV@do not currently support shared external journals yet.
@JDEV@.IP
@JDEV@Instead of specifying a device name directly,
@JDEV@.I external-journal
@JDEV@can also be specified by either
@JDEV@.BI LABEL= label
@JDEV@or
@JDEV@.BI UUID= UUID
@JDEV@to locate the external journal by either the volume label or UUID
@JDEV@stored in the ext2 superblock at the start of the journal.  Use
@JDEV@.BR dumpe2fs (8)
@JDEV@to display a journal device's volume label and UUID.  See also the
@JDEV@.B -L
@JDEV@option of
@JDEV@.BR tune2fs (8).
.RE
@JDEV@.IP
@JDEV@Only one of the
@JDEV@.BR size " or " device
@JDEV@options can be given for a filesystem.
.TP
.BI \-l " filename"
Read the bad blocks list from
.IR filename .  
Note that the block numbers in the bad block list must be generated
using the same block size as used by mke2fs.  As a result, the
.B \-c
option to 
.B mke2fs
is a much simpler and less error-prone method of checking a disk for bad
blocks before formatting it, as 
.B mke2fs
will automatically pass the correct parameters to the
.B badblocks
program.
.TP
.BI \-L " new-volume-label"
Set the volume label for the filesystem to
.IR new-volume-label .
The maximum length of the
volume label is 16 bytes.
.TP
.BI \-m " reserved-blocks-percentage"
Specify the percentage of the filesystem blocks reserved for 
the super-user.  This avoids fragmentation, and allows root-owned
daemons, such as 
.BR syslogd (8),
to continue to function correctly after non-privileged processes are 
prevented from writing to the filesystem.  The default percentage 
is 5%.
.TP
.B \-M
Set the last mounted directory for the filesystem.  This might be useful 
for the sake of utilities that key off of the last mounted directory to 
determine where the filesystem should be mounted.
.TP
.B \-n
causes mke2fs to not actually create a filesystem, but display what it
would do if it were to create a filesystem.  This can be used to
determine the location of the backup superblocks for a particular
filesystem, so long as the mke2fs parameters that were passed when the
filesystem was originally created are used again.  (With the
.B \-n 
option added, of course!)
.TP
.BI \-N " number-of-inodes"
overrides the default calculation of the number of inodes that should be 
reserved for the filesystem (which is based on the number of blocks and 
the 
.I bytes-per-inode
ratio).  This allows the user to specify the number 
of desired inodes directly.
.TP
.BI \-o " creator-os"
Manually override the default value of the "creator os" field of the 
filesystem.  Normally the creator field is set by default to the native OS
of the
.B mke2fs
executable.
.TP
.B "\-O \fIfeature\fR[,...]"
Create filesystem with given features (filesystem options), overriding 
the default filesystem options.  The default features which are 
enabled by default are specified by the
.I base_features
relation, either in the
.I [libdefaults]
section in the
.B /etc/mke2fs.conf
configuration file, or in the subsection of the 
.I [fs_types]
section for the filesystem type as specified by the
.B -T
option.  The filesystem type-specific configuration setting found in
the 
.I [fs_types]
section will override the global default found in
.IR [libdefaults] .
.sp
The filesystem feature set will be further edited 
using either the feature set specification specified by this option, 
or if this option is not specified, by the
.I default_features
relation for the filesystem type being created, or in the 
.I [libdefaults]
section of the configuration file.
.sp
The filesystem feature set is comprised of a list of features, separated
by commas, that are to be enabled.  To disable a feature, simply
prefix the feature name with a  caret ('^') character.  The 
pseudo-filesystem feature "none" will clear all filesystem features.
.RS 1.2i
.TP
.B large_file
Filesystem can contain files that are greater than 2GB.  (Modern kernels
set this feature automatically when a file > 2GB is created.)
.TP
.B dir_index
Use hashed b-trees to speed up lookups in large directories.
.TP
.B filetype
Store file type information in directory entries.
.TP
.B has_journal
Create an ext3 journal (as if using the
.B \-j
option).
@JDEV@.TP
@JDEV@.B journal_dev
@JDEV@Create an external ext3 journal on the given device
@JDEV@instead of a regular ext2 filesystem.
@JDEV@Note that
@JDEV@.I external-journal
@JDEV@must be created with the same
@JDEV@block size as the filesystems that will be using it.
.TP
.B resize_inode
Reserve space so the block group descriptor table may grow in the future.
Useful for online resizing using 
.BR resize2fs .
By default 
.B mke2fs
will attempt to reserve enough space so that the
filesystem may grow to 1024 times its initial size.  This can be changed
using
.B resize
extended option.
.TP
.B sparse_super
Create a filesystem with fewer superblock backup copies
(saves space on large filesystems).
.RE
.TP
.B \-q
Quiet execution.  Useful if 
.B mke2fs
is run in a script.
.TP
.BI \-r " revision"
Set the filesystem revision for the new filesystem.  Note that 1.2
kernels only support revision 0 filesystems.  The default is to 
create revision 1 filesystems.
.TP
.B \-S
Write superblock and group descriptors only.  This is useful if all of
the superblock and backup superblocks are corrupted, and a last-ditch
recovery method is desired.  It causes 
.B mke2fs
to reinitialize the 
superblock and group descriptors, while not touching the inode table
and the block and inode bitmaps.  The
.B e2fsck
program should be run immediately after this option is used, and there
is no guarantee that any data will be salvageable.  It is critical to
specify the correct filesystem blocksize when using this option,
or there is no chance of recovery.
.\" .TP
.\" .BI \-t " test"
.\" Check the device for bad blocks before creating the file system
.\" using the specified test.
.TP
.BI \-T " fs-type"
Specify how the filesystem is going to be used, so that 
.B mke2fs 
can choose optimal filesystem parameters for that use.  The filesystem
types that are can be supported are defined in the configuration file 
.BR /etc/mke2fs.conf (5).
The default configuration file contains definitions for the filesystem
types: small, floppy, news, largefile, and largefile4.  
.TP
.B \-v
Verbose execution.
.TP
.B \-V
Print the version number of 
.B mke2fs
and exit.
.SH AUTHOR
This version of
.B mke2fs
has been written by Theodore Ts'o <tytso@mit.edu>.
.SH BUGS
.B mke2fs
accepts the
.B \-f
option but currently ignores it because the second
extended file system does not support fragments yet.
.br
There may be other ones.  Please, report them to the author.
.SH AVAILABILITY
.B mke2fs
is part of the e2fsprogs package and is available from 
http://e2fsprogs.sourceforge.net.
.SH SEE ALSO
.BR mke2fs.conf (5),
.BR badblocks (8),
.BR dumpe2fs (8),
.BR e2fsck (8),
.BR tune2fs (8)
