-
A ramdisk root file system is stored compressed (i.e. ramdisk.gz) in on-board flash or on an ATA flash card. It is copied to RAM by the bootloader and uncompressed by the kernel.
Since the file system is in RAM, it is fast and can be mounted rw (read/write) but changes are not preserved after a reboot. The compressed image will remain unchanged and provide the same environment each time the system starts. For this reason, a ramdisk ensures repeatability between reboots even when the file system has been filled, corrupted, or otherwise damaged. Files that must created or modified with changes preserved can be stored in a separate file system that is mounted after the system starts.
A ramdisk is completely uncompressed in RAM and will take up as much space in RAM as the size of the filesystem (used + free). It is not suitable for large filesystems or for applications that need a lot of available RAM.
-
CRAMFS is a compressed, read-only file system that is stored in flash memory. The file system is mounted during start up and the contents are uncompressed as needed.
The compression ratio for a CRAMFS file system is better than for a JFFS2 file system so more content can be stored in a given amount of flash memory. Unlike a ramdisk, no RAM is used to hold the CRAMFS file system so more RAM is available for the kernel and user programs. Since the file system remains compressed and stored in flash memory, it is slower than a ramdisk.
Since CRAMFS is read only, it provides the same environment each time the system starts. When a CRAMFS file system is used, usually a ramfs file system is also mounted during startup to hold writable directories like /tmp and /var. Like a ramdisk, CRAMFS ensures repeatability between reboots and cannot be corrupted.
-
JFFS2 stands for journalling flash files system, version 2. JFFS2 was specifically designed for embedded applications requiring persistant storage in flash memory. It can be mounted rw (read/write) and changes
are preserved after a reboot.
JFFS2 is compressed, but not as much as CRAMFS. As with CRAMFS, no RAM is used to hold the JFFS2 file system so more RAM is available for the kernel and user programs than with a ramdisk but also like CRAMFS, the file system is compressed and stored in flash memory, so it is slower than a ramdisk.
By design, JFFS2 avoids writing to the same block of flash repeatedly when other blocks are available. This preserves the life of the flash memory.
Since JFFS2 is writable, it is often the only file system used. Conversely, JFFS2 is sometimes used with a ramdisk or CRAMFS when persistent writable storage is not desired for every file. Because JFFS2 is persistent, care must be taken to avoid rebooting or powering down the system when files are in an inconsistent state. (Use 'sync' to ensure that all file changes are committed to permanent storage and 'shutdown, halt, or reboot' to prepare the system for a planned reset or power cycle.)
-
This is a complete GNU/Linux distribution, similar to a typical workstation installation. Because of its size, a hard drive (such as an Hitachi Microdrive
(TM) or USB hard drive) or an NFS server is required for this file system.
(An ATA flash card is not suitable for this root file system.)
This root filesystem provides everything found in the ramdisk and JFFS2 root filesystems, but also contains most, if not all, of the tools familiar to Desktop GNU/Linux developers. This filesystem includes the gcc and g++ compilers, the gdb debugger, plus development libraries and editors (emacs, vi, etc.) ready to use for native development work.
In addition to what is provided with this root filesystem, Debian provides many thousands of optional packages that can be downloaded, installed and configured with a simple command. These packages include additional development tools, applications, libraries, etc. Developers can build and test their applications on the target system which accelerates development and debugging.