Cramfs Explained

Cramfs
Os:Linux

The compressed ROM/RAM file system (or cramfs) is a free (GPL'ed) read-only Linux file system designed for simplicity and space-efficiency. It is mainly used in embedded and small-footprint systems.

Unlike a compressed image of a conventional file system, a cramfs image can be used as it is, i.e. without first decompressing it. For this reason, some Linux distributions use cramfs for initrd images (Debian 3.1 in particular) and installation images (SUSE Linux in particular), where there are constraints on memory and image size.

In 2013, Linux maintainers indicated that cramfs was made obsolete by squashfs,[1] but the file system got rehabilitated in 2017 for use in low-memory devices where using squashfs may not be viable.[2]

Design

Files on cramfs file systems are zlib-compressed one page at a time to allow random read access. The metadata is not compressed, but is expressed in a terse representation that is more space-efficient than conventional file systems.

The file system is intentionally read-only to simplify its design; random write access for compressed files is difficult to implement. cramfs ships with a utility (mkcramfs) to pack files into new cramfs images.

File sizes are limited to less than 16MB.

Maximum file system size is a little under 272MB. (The last file on the file system must begin before the 256MB block, but can extend past it.)

See also

External links

Notes and References

  1. https://github.com/torvalds/linux/commit/54886a7153353ea2bf21ebfc1b8e030e71d151d7 github/torvalds/linux: cramfs: mark as obsolete
  2. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/fs/cramfs?id=8d59598c35dc1071e6c36f86c9a95f26dd08b4e5 cramfs: rehabilitate it