mkfs - make a file system


mkfs [-Ldot] [-B blocksize] [-i inodes] [-b blocks] special prototype


Make a listing on standard output
Use mod time of mkfs binary for all files
Use a drive other than 0 or 1 (safety precaution)
Do not test if file system fits on the medium
Make a version 1 file system (for backward compatibility)
Number of i-nodes (files)
Filesystem block size (in bytes)
Filesystem size (in blocks)


mkfs /dev/fd1 proto
# Make a file system on /dev/fd1
mkfs -b 360 /dev/fd1
# Make empty 360 block file system
mkfs /dev/fd1 360
# Alternate way to specify the size


Mkfs builds a file system and copies specified files to it. The prototype file tells which directories and files to copy to it. If the prototype file cannot be opened, and its name is just a string of digits, an empty file system will be made with the specified number of blocks. A sample prototype file follows. The text following the # sign in the example below is comment. In real prototype files, comments are not allowed.

  boot                        # boot block file (ignored)
  360 63                           # blocks and i-nodes
  d--755 1 1                       # root directory
     bin   d--755 2 1         # bin dir: mode (755), uid (2), gid (1)
       sh  ---755 2 1 /user/bin/shell   # shell has mode rwxr-xr-x
       mv  -u-755 2 1 /user/bin/mv # u = SETUID bit
       login                  -ug755 2 1 /user/bin/login# SETUID and SETGID
     $                        # end of /bin
     dev   d--755 2 1         # special files: tty (char), fd0 (block)
       tty c--777 2 1 4 0     # uid=2, gid=1, major=4, minor=0
       fd0 b--644 2 1 2 0 360 # uid, gid, major, minor, blocks
     $                        # end of /dev
     user  d--755 12 1        # user dir: mode (755), uid (12), gid (1)
       ast d--755 12 1        # /user/ast
       $                      # /user/ast is empty
     $                        # end of /user
  $                           # end of root directory

The first entry on each line (except the first 3 and the $ lines, which terminate directories) is the name the file or directory will get on the new file system. Next comes its mode, with the first character being -dbc for regular files, directories, block special files and character special files, respectively. The next two characters are used to specify the SETUID and SETGID bits, as shown above. The last three characters of the mode are the rwx protection bits.

Following the mode are the uid and gid. For special files, the major and minor devices are needed.

The maximum size of a file system is 1 Gb for a version 2 file system, and 64 Mb for a version 1 file system. Alas the 8086 fsck runs out of memory on a V2 file system larger than 128 Mb, so for the 8086 version of MINIX 3 you have to limit yourself to file systems of that size.


mkproto(1) fsck(1) mount(1)