---
name: "makefs"
section: "8"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "freebsd", "openbsd"]
url: "https://new.carta.tech/makefs"
---

# makefs(8)

create a file system image from a directory tree

## NAME

**makefs** – create a file system image from a directory tree

## SYNOPSIS

**makefs** \[**-b** *free-blocks*\] \[**-f** *free-files*\] \[**-M** *minimum-size*\] \[**-m** *maximum-size*\] \[**-O** *offset*\] \[**-o** *fs-options*\] \[**-S** *sector-size*\] \[**-s** *image-size*\] \[**-T** *timestamp*\] \[**-t** *fs-type*\] *image-file* *directory*

## DESCRIPTION

The utility **makefs** creates a file system image into *image-file* from the directory tree *directory*. No special devices or privileges are required to perform this task.

The options are as follows:

- **-b** *free-blocks*

  Ensure that a minimum of *free-blocks* exist in the image. An optional ‘%’ suffix may be provided to indicate that *free-blocks* indicates a percentage of the calculated image size.

- **-f** *free-files*

  Ensure that a minimum of *free-files* (inodes) exist in the image. An optional ‘%’ suffix may be provided to indicate that *free-files* indicates a percentage of the calculated image size.

- **-M** *minimum-size*

  Set the minimum size of the file system image to *minimum-size*.

- **-m** *maximum-size*

  Set the maximum size of the file system image to *maximum-size*. An error will be raised if the target file system needs to be larger than this to accommodate the provided directory tree.

- **-O** *offset*

  Instead of creating the file system at the beginning of the file, start at offset. Valid only for **ffs** and **msdos**.

- **-o** *fs-options*

  Set file system specific options. *fs-options* is a comma separated list of options. Valid file system specific options are detailed below.

- **-S** *sector-size*

  Set the file system sector size to *sector-size*. Defaults to 512.

- **-s** *image-size*

  Set the size of the file system image to *image-size*.

- **-T** *timestamp*

  Specify a timestamp to be set for all file system files and directories created so that repeatable builds are possible. The *timestamp* is an integer value interpreted as the number of seconds from the Epoch.

- **-t** *fs-type*

  Create an *fs-type* file system image. The following file system types are supported:

  - **cd9660**

    ISO 9660 file system.

  - **ffs**

    BSD Fast File System (the default).

  - **msdos**

    FAT12, FAT16, or FAT32 file system.

Sizes are specified as a decimal number of bytes and may use a multiplier, as documented in scan\_scaled(3). Two or more numbers may be separated by an ‘x’ to indicate a product.

### ffs options

**ffs** images have ffs-specific optional parameters that may be provided. Each of the options consists of a keyword, an equal sign (‘=’), and a value. The following keywords are supported:

- **avgfilesize**

  Expected average file size.

- **avgfpdir**

  Expected number of files per directory.

- **bsize**

  Block size.

- **density**

  Bytes per inode.

- **disklabel**

  Name of a disk described in [disktab(5)](/disktab/5.md). A disklabel with the information will be written at a machine dependent location in the image. The size of the file system image, the sector size and the **bsize** and **fsize** parameters are inferred from the disklabel.

- **extent**

  Maximum extent size.

- **fsize**

  Fragment size.

- **label**

  Label name of the image.

- **maxbpcg**

  Maximum total number of blocks in a cylinder group.

- **maxbpg**

  Maximum blocks per file in a cylinder group.

- **minfree**

  Minimum % free.

- **optimization**

  Optimization preference: one of ‘space’ (default) or ‘time’.

- **rdroot**

  A disklabel appropriate for a ramdisk will be built and written at a machine dependent location in the image. The filesystem will be described by a FS\_BSDFFS partition ‘a’, with defaults offset=0, fsize=512, bsize=4096, minfree=0 and density=4096.

- **version**

  UFS version. 1 for FFS (default) or 2 for UFS2.

### cd9660 options

**cd9660** images have ISO9660-specific optional parameters that may be provided. The arguments consist of a keyword and, optionally, an equal sign (‘=’), and a value. The following keywords are supported:

- **allow-deep-trees**

  Allow the directory structure to exceed the maximum specified in the spec.

- **allow-multidot**

  Allow multiple dots in a filename.

- **applicationid**

  Application ID of the image.

- **boot-load-segment**

  Set load segment for the boot image.

- **bootimage**

  Filename of a boot image in the format “sysid;filename”, where “sysid” is one of ‘i386’, ‘macppc’, ‘powerpc’, or ‘efi’.

- **generic-bootimage**

  Load a generic boot image into the first 32K of the CD9660 image.

- **hard-disk-boot**

  Boot image is a hard disk image.

- **isolevel**

  ISO Level.

- **label**

  Label name of the image.

- **no-boot**

  Boot image is not bootable.

- **no-emul-boot**

  Boot image is a “no emulation” ElTorito image.

- **no-trailing-padding**

  Do not pad the image (apparently Linux needs the padding).

- **omit-trailing-period**

  Omit trailing periods in filenames.

- **preparer**

  Preparer ID of the image.

- **publisher**

  Publisher ID of the image.

- **rockridge**

  Use RockRidge extensions (for longer filenames, etc.).

- **volumeid**

  Volume set identifier of the image.

### msdos options

**msdos** images have MS-DOS-specific optional parameters that may be provided. The arguments consist of a keyword, an equal sign (‘=’), and a value. The following keywords are supported:

- **backup\_sector**

  Location of the backup boot sector.

- **block\_size**

  Block size.

- **bootstrap**

  Bootstrap file.

- **bytes\_per\_sector**

  Bytes per sector.

- **create\_size**

  Create file size.

- **directory\_entries**

  Directory entries.

- **drive\_heads**

  Drive heads.

- **fat\_type**

  FAT type (12, 16, or 32).

- **floppy**

  Preset drive parameters for standard format floppy disks (160, 180, 320, 360, 640, 720, 1200, 1232, 1440, or 2880).

- **hidden\_sectors**

  Hidden sectors.

- **info\_sector**

  Location of the info sector.

- **media\_descriptor**

  Media descriptor.

- **num\_FAT**

  Number of FATs.

- **OEM\_string**

  OEM string.

- **offset**

  Offset in device.

- **reserved\_sectors**

  Reserved sectors.

- **sectors\_per\_cluster**

  Sectors per cluster.

- **sectors\_per\_fat**

  Sectors per FAT.

- **sectors\_per\_track**

  Sectors per track.

- **size**

  File System size.

- **volume\_id**

  Volume ID.

- **volume\_label**

  Volume Label.

## SEE ALSO

scan\_scaled(3), [installboot(8)](/installboot/8.md), [newfs(8)](/newfs/8.md)

## HISTORY

The **makefs** utility appeared in NetBSD 1.6.

## AUTHORS

Luke Mewburn ⟨lukem@NetBSD.org⟩ (original program), Daniel Watt, Walter Deignan, Ryan Gabrys, Alan Perez-Rathke, Ram Vedam (cd9660 support), and Christos Zoulas (msdos support).
