Cromfs: Compressed ROM filesystem for Linux (user-space)

0. Contents

This is the documentation of cromfs-1.1.1.
   1. Purpose
   2. News
   3. Overview
   4. Limitations
   5. Comparing to other filesystems
   6. Getting started
   7. Tips
   8. Copying
   9. Requirements
   10. Downloading

1. Purpose

Cromfs is a compressed read-only filesystem for Linux. Cromfs is intended for permanently archiving gigabytes of big files that have lots of redundancy.

In terms of compression it is much similar to 7-zip files, except that practical realtime access (albeit much slower than on most other filesystems) can be provided for the whole archive contents; the user does not need to launch a program to decompress a single file, nor does he need to wait while the system decompresses 500 files from a 1000-file archive to get him the 1 file he wanted to open.

The creation of cromfs was inspired from Squashfs and Cramfs.

2. News

See the ChangeLog.

3. Overview

See the documentation of the cromfs format for technical details (also included in the source package as doc/FORMAT).

4. Limitations

Development status: Pre-beta. The Cromfs project has been created very recently and it hasn't been yet tested extensively. There is no warranty against data loss or anything else, so use at your own risk.

5. Comparing to other filesystems

This is all very biased, hypothetical, and by no means a scientific study, but here goes:
Feature Cromfs Cramfs Squashfs (3.0)
Compression unit adjustable (1 MB default) 4 kB adjustable (64 kB max)
Files are compressed together (up to block limit) individually individually
Maximum file size 16 EB (2^44 MB) 16 MB (2^4 MB) 16 EB (2^44 MB)
Duplicate whole file detection Yes No (but hardlinks are detected) Yes
Near-identical file detection Yes (identical blocks) No No
Compression method LZMA gzip gzip
Ownerships None (uses the mounter's uid and gid) uid,gid (but gid truncated to 8 bits) uid,gid
Timestamps mtime only None mtime only
Endianess-safety Works on little-endian only Safe, but not exchangeable Safe
Kernelspace/userspace User (fuse) Kernel Kernel
Appending to a previously created filesystem No No Yes
Supported inode types reg,dir,chrdev,blkdev,fifo,link,sock reg,dir,chrdev,blkdev,fifo,link,sock reg,dir,chrdev,blkdev,fifo,link,sock

6. Getting started

  1. Install the development requirements: make, gcc-c++ and fuse
    • Remember that for fuse to work, the kernel must also contain the fuse support. Do "modprobe fuse", and check if you have "/dev/fuse" and check if it works.
      • If an attempt to read from "/dev/fuse" (as root) gives "no such device", it does not work. If it gives "operation not permitted", it might work.
  2. Build "cromfs-driver" and "util/mkcromfs", i.e. command "make":
    $ make
  3. Create a sample filesystem:
    $ util/mkcromfs . sample.cromfs
  4. Mount the sample filesystem:
    $ mkdir sample
    $ ./cromfs-driver sample.cromfs sample &
  5. Observe the sample filesystem:
    $ cd sample
    $ ls -al
  6. Unmounting the filesystem:
    $ cd ..
    $ fusermount -u sample
    or, type "fg" and press ctrl-c to terminate the driver.

7. Tips

To improve the compression, try these tips: To improve the filesystem generation speed, try these tips: To control the memory usage, use these tips: To control the filesystem speed, use these tips:

8. Copying

cromfs has been written by Joel Yliluoma, a.k.a. Bisqwit,
and is distributed under the terms of the General Public License (GPL).
The LZMA code embedded within is licensed under LGPL.

Patches and other related material can be submitted by e-mail at:@Joelnu@dj Yliyeluomeoa <biwI1zhesqwigrjFdvdt@ikadKi.fi>

9. Requirements

10. Downloading

The official home page of cromfs is at http://iki.fi/bisqwit/source/cromfs.html.
Check there for new versions.

Generated from progdesc.php (last updated: Mon, 15 May 2006 00:19:15 +0300)
with docmaker.php (last updated: Sun, 12 Jun 2005 06:08:02 +0300)
at Mon, 15 May 2006 00:18:59 +0300