Section: Maintenance Commands (8)
Updated: August 19, 2006
Return to Main Contents
genext2fs - ext2 filesystem generator for embedded systems
[ options ] [ output-image ]
genext2fs generates an ext2 filesystem
as a normal (non-root) user. It does not require you to mount
the image file to copy files on it, nor does it require that
you become the superuser to make device nodes.
The filesystem image is created in the file output-image. If not
specified, it is sent to stdout.
By default, the maximum number of inodes in the filesystem is the minimum
number required to accommodate the initial contents.
In this way, a minimal filesystem (typically read-only) can be created with
minimal free inodes.
If required, free inodes can be added by passing the relevant options.
The filesystem image size in blocks can be minimised by trial and error.
- -x, --starting-image image
Use this image as a starting point.
- -d, --root directory[:path]
Add the given directory and contents at a particular path (by default
- -D, --devtable spec-file[:path]
Use spec-file to specify inodes to be added, at the given
path (by default the root), including files, directories and
special files like devices.
If the specified files are already present in the image, their
ownership and permission modes will be adjusted accordingly.
Furthermore, you can use a single table entry to create many devices
with a range of minor numbers (see examples below).
All specified inodes receive the mtime of spec-file itself.
- -b, --size-in-blocks blocks
Size of the image in blocks.
- -N, --number-of-inodes inodes
Maximum number of inodes.
- -i, --bytes-per-inode ratio
Used to calculate the maximum number of inodes from the available blocks.
- -m, --reserved-percentage
Number of reserved blocks as a percentage of size. Reserving 0 blocks will prevent creation of the "lost+found" directory.
- -g, --block-map path
Generate a block map file for this path.
- -e, --fill-value value
Fill unallocated blocks with value.
- -z, --allow-holes
Make files with holes.
- -f, --faketime
Use a timestamp of 0 for inode and filesystem creation, instead of the present. Useful for testing.
- -q, --squash
Squash permissions and owners (same as -P -U).
- -U, --squash-uids
Squash ownership of inodes added using the -d option, making them all
owned by root:root.
- -P, --squash-perms
Squash permissions of inodes added using the -d option. Analogous to
- -v, --verbose
Print resulting filesystem structure.
- -V, --version
Print genext2fs version.
- -h, --help
genext2fs -b 1440 -d src /dev/fd0
All files in the
directory will be written to
as a new ext2 filesystem image. You can then mount the floppy as
genext2fs -b 1024 -d src -D device_table.txt flashdisk.img
This example builds a filesystem from all the files in
then device nodes are created based on the contents of the file
Entries in the device table take the form of:
<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
where name is the file name and type can be one of:
uid is the user id for the target file, gid is the group id for the
target file. The rest of the entries (major, minor, etc) apply only
to device special files.
f A regular file
c Character special device file
b Block special device file
p Fifo (named pipe)
An example device file follows:
# name type mode uid gid major minor start inc count
/dev d 755 0 0 - - - - -
/dev/mem c 640 0 0 1 1 0 0 -
/dev/tty c 666 0 0 5 0 0 0 -
/dev/tty c 666 0 0 4 0 0 1 6
/dev/loop b 640 0 0 7 0 0 1 2
/dev/hda b 640 0 0 3 0 0 0 -
/dev/hda b 640 0 0 3 1 1 1 16
/dev/log s 666 0 0 - - - - -
This device table creates the /dev directory, a character device
node /dev/mem (major 1, minor 1), and also creates /dev/tty,
/dev/tty[0-5], /dev/loop[0-1], /dev/hda, /dev/hda1 to /dev/hda15 and
This manual page was written by David Kimdon <email@example.com>,
for the Debian GNU/Linux system (but may be used by others).
Examples provided by Erik Andersen <firstname.lastname@example.org>.
- SEE ALSO
This document was created by
using the manual pages.
Time: 10:10:48 GMT, January 25, 2015