genext2fs - ext2 filesystem generator for embedded systems
genext2fs [ 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 the root).
-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
-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
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.
Make files with holes.
Use a timestamp of 0 for inode and filesystem creation, instead
of the present. Useful for testing.
Squash permissions and owners (same as -P -U).
Squash ownership of inodes added using the -d option, making
them all owned by root:root.
Squash permissions of inodes added using the -d option.
Analogous to "umask 077".
Print resulting filesystem structure.
Print genext2fs version.
genext2fs -b 1440 -d src /dev/fd0
All files in the src directory will be written to /dev/fd0 as a new
ext2 filesystem image. You can then mount the floppy as usual.
genext2fs -b 1024 -d src -D device_table.txt flashdisk.img
This example builds a filesystem from all the files in src, then device
nodes are created based on the contents of the file device_table.txt.
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:
f A regular file
c Character special device file
b Block special device file
p Fifo (named pipe)
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.
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 /dev/log socket.
mkfs(8), genromfs(8), mkisofs(8), mkfs.jffs2(1)
This manual page was written by David Kimdon <firstname.lastname@example.org>, for
the Debian GNU/Linux system (but may be used by others). Examples
provided by Erik Andersen <email@example.com>.
August 19, 2006