CramFS
# CramFS

Das CramFS (Compressed ROM File System, alternativ: cram a filesystem onto a small ROM) ist ein freies und unter der GPL stehendes Read-only-Dateisystem mit integrierter Datenkompression unter Linux. Es wird hauptsächlich bei eingebetteten Systemen eingesetzt, weshalb ein Hauptaugenmerk auf die Einfachheit und die Effizienz des benötigten Speicherplatzes gelegt wurde.
Im Gegensatz zu einem komprimierten konventionellen Dateisystem muss ein CramFS nicht erst entpackt, sondern es kann direkt darauf zugegriffen werden. Aus diesem Grund verwenden manche Linux-Distributionen das CramFS als Dateisystem für initiale Ramdisks (Debian) oder als Installations-Abbilder (SuSE bis openSUSE 10.2), da diese einigen Einschränkungen bezüglich ihrer Größe unterliegen. Auch in eingebetteten Systemen wie beispielsweise WLAN-Routern wird CramFS eingesetzt.

## Technik

Dateien im CramFS sind mit der zlib komprimiert. Die Metainformationen dieser Dateien sind unkomprimiert, werden jedoch in einer knapperen Struktur repräsentiert als in konventionellen Dateisystemen. Da ein schreibender Zugriff auf ein komprimiertes Dateisystem nicht einfach zu realisieren ist, kann auf CramFS nur lesend zugegriffen werden.

### Bearbeitung

Um ein CramFS-Dateisystem zu erstellen und Dateien darin aufzunehmen, werden standardmäßig Werkzeuge wie mkcramfs mitgeliefert. Für eine Bearbeitung unter Linux muss der Inhalt in ein Verzeichnis kopiert werden. Danach kann aus dem Verzeichnis ein neues Image erstellt werden. Unter Windows gibt es Tools zur direkten Bearbeitung. Eines davon ist newtuxflashtools.zip.

### Technische Charakteristika

CramFS hat einige Einschränkungen wie beispielsweise:
* Dateigrößen sind auf 16 Mebibyte beschränkt
* Die maximale Größe eines Dateisystems liegt bei etwas über 256 Mebibyte. Die letzte Datei auf dem Dateisystem muss vor dem Ende des 256-MiB-Blocks beginnen, kann aber darüber hinaus reichen.

## Alternativen

SquashFS ist ein 2002 veröffentlichtes komprimiertes Dateisystem, was gegenüber CramFS unter anderem eine effektivere Kompression bietet und mit größeren Dateien zurechtkommt, allerdings mehr Arbeitsspeicher benötigt.