What is mini_fo?

mini_fo is a virtual kernel file system that can make read-only
file systems writable. This is done by redirecting modifying operations
to a writeable location called "storage directory", and leaving the
original data in the "base directory" untouched. When reading, the
file system merges the modifed and original data so that only the
newest versions will appear. This occurs transparently to the user,
who can access the data like on any other read-write file system.

Base and storage directories may be located on the same or on
different partitions and may be of different file system types. While
the storage directory obviously needs to be writable, the base may or
may not be writable, what doesn't matter as it will not be modified
anyway.

mini_fo was primarily developed for use in embedded systems and
therefore was designed to be lightweight in terms of module size, memory
usage and storage usage. Nevertheless it has proved useful for various
other projects (see below).

What is it good for?

The primary purpose of the mini_fo file system is to allow easy
software updates to embedded systems, that often store their root
filesystem in a read-only flash filesystem, but there are many
more:

sandboxing

simulation of software updates

testing weird programs

allow live-cds to permanently store information

test patches without messing up the original source tree

If you have any other ideas, please let me know!

Downloads

mini_fo is now available as a git repository or as a zipped tarball from the bottom of this page. Please note that the mini_fo cvs repository will no longer be updated.

Documentation

Instructions on building and using the mini_fo filesystem can be found in the README file located in the sources. If you are interested in the internals of mini_fo you might find this paper (actually my diploma thesis!) useful. If you still have questions, and didn't find an answer in the mini_fo FAQ, feel free to send me an e-mail (see contact).