romfs | download | related (boot) (embedded) (ports) | contact

What is romfs?

romfs is a space-efficient, small, read-only filesystem originally for Linux and used by some Linux based projects. It is a block-based filesystem, that means it makes use of block (or sector) accessible storage driver (like disks, CDs, ROM drives). It is part of stock Linux kernels since about version 2.1.21 (about January, 1997). All current (2.4--2.6) kernel sources contain support for romfs, but depending on the distributor, it might not have been compiled in.

A working Linux system requires the kernel, and at least some programs running, which obviously needs a filesystem too. Most Linux disk filesystems are designed to be high performance, supporting all POSIX features, sometimes elaborate recovery on crashes (journaling), and that usually makes them quite heavy-weight, and thus often inappropriate in some special purposes.

romfs makes two shortcuts: first, it's read-only, you can't simply use your disk if it's a romfs disk, you must build its image beforehand. Second, it stores only the absolute minimum required from a filing system. No modification dates, no unix permissions. These all might sound as large drawbacks, but they are usually not.

Development

You can browse the kernel code at any LXR site, see google:

The description of the filesystem layout is available at:

Contact information

Got questions? You can reach me at chexum+dev@gmail.com. I am Janos Farkas.

Related projects

There are at least two main uses where romfs, despite its limitations, is almost perfect.

romfs itself, although it may sound weird at first, cannot handle ROMs of any kind. It is just a file system, working over a block device. If you need to access a real ROM device, you need another driver to make your device appear as a disk.

An example driver for the 2.0 kernel versions can be found at:

Booting procedures with romfs

Some Linux distributions use romfs during booting, or initial setup time, the most prominent are some PPC and Sparc systems.

SILO (sparc-boot.org), the Sparc bootloader, also supports loading kernels from romfs boot disks. See also the SILO project page at freshmeat.

Embedded projects using romfs

uClinux, the microcontroller Linux, is a port of the kernel, and selected user-space programs to capable, embedded processors, like some smaller Motorola m68k, and ARM systems.

In turn, uClinux is used, or was mentioned as used by the following projects and companies:

KiSS, which became known from probably the first consumer DVD player supporting DivX. Some(?) of their players run Linux and have the firmware in romfs format. Now they are apparently a Cisco/Linksys venture.

Axis has developed an embedded chip for Linux (no less!) called ETRAX. It's not just a CPU, but a "system-on-a-chip solution", containing even I/O and Ethernet controllers. On the software front, they also seem to have a modified genromfs in a different way to support including device nodes in the image.

The following sites contain other information about Linux related embedded projects:

KallistiOS, a pseudo-microkernel operating system for gaming consoles (currently DreamCast and GameBoy Advance), also support romfs as a native filesystem.

See also for DreamCast development:

Ports of romfs

Vitaly A. Mamkin created a romfs driver to be used under RTEMS. It is available at http://www.sinor.ru/~mavir/soft/soft.html (Site seems disappeared when checked at end of 2002.)

Bo Branten has created a driver to access romfs format filesystems under Windows NT/2000. See his page for details.

Harald Welte has developed a (user-space) tool to extract files from romfs images, called romfsck, available from the above page.

romfs by any other name...

eCos from Red Hat, is an embedded, unix-like, fully customizable operating system kernel, which seems to have a component called ROMFS, presumably to access ROMs available in specific architectures, but it's obviously different from the one in the Linux kernel. How different? I just don't know.

Acorn, now mostly famous for its ARM architecture, had some machines with RISC OS, which included a ROMFS (ROM filing system) also, apparently a virtual filesystem to access ROMs of peripherals (podules?). Information is scarce, even at Google. The ARM range of processors was later bought by Intel, in the process of improving, renamed to StrongARM, later XScale, and some of them are now called PCA Application Processors.

Mirrors and distributions

Older releases of genromfs (0.1-0.3) are available at ftp://ftp.banki.hu/pub/Linux/local/, the old distribution site.


romfs | Powered by SourceForge | Valid XHTML 1.0!
2009-02-22 16:26:49Z
Google Farkas János
Opinions and shameless baits: DMCA * Scientology * Dianetics * koan19.net = koan19.org = koan19.com