= UnionFS =

Bei '''unionfs''' handelt es sich um ein Linux-Filesystem das dazu
dient, mehrere Filesysteme "übereinanderzulegen". Dabei kann man
mehrere Verzeichnisbäume kombinieren, von denen einige read-only
und andere read-write sein können. Ein gutes Beispiel ist eine
'''beschreibbare CD'''. Man mountet die eigentliche CD und legt ein
leeres Verzeichnis, das auf der Festplatte liegt, "darüber". Die
Kombination aus beiden wird nun mit unionfs gemountet. Sobald man
irgendetwas in das entstehende Verzeichnis hineinschreibt, wird
dieses auf die Festplatte geschrieben. Alles nicht geänderte wird
jedoch von der CD gelesen (und braucht auf der Festplatte keinen
Platz). UnionFS wird auch schon von einigen Live-CD Distributionen
in genau dieser Weise benutzt.

== Installation ''The Debian Way'' ==

=== Paketerstellung ===

Da '''unionfs''' noch nicht im Standard-Kernel enthalten ist, hat
der Liebe Gott vor das Glücksgefühl leider eine kurze
Installationsprozedur gesetzt. Dazu kommt, das das aktuelle unionfs
einen Kernel 2.6.11 benötigt. Um diesen zu installieren, muss man
auf einem Debian Sarge System Testing-Pakete mit einbinden (siehe
AptPaketverwaltung bzw. UnstablePaketeNutzen). Dann installiert man
mit folgendem Befehl die Kernel-Sourcen (die wir für die
Übersetzung des UnionFS-Kernelmodules benötigen), packt sie aus und
konfiguriert sie. ''Vorher ist es sinnvoll, den Kernel, für den man
das Paket erstellt, auch wirklich laufen zu haben, sonst sollte man
mit der Option '''--kvers-liste''' den Kernel angeben, für den man
übersetzen will.''

  aptitude install linux-image-2.6.12       (danach ggf. reboot)
  aptitude install linux-source-2.6.12
  cd /usr/src
  tar xjf linux-source-2.6.12.tar.bz2
  ln -s linux-source-2.6.12 linux
  cd linux
  cp /boot/config-2.6.12 .config
  make prepare

Dann startet man '''modules-assistant''' und geht die angebotenen
Menüpunkte der Reihe nach durch. In der langen Auswahlliste von
Debian unterstützter Module wählt man '''unionfs'''. Der Rest geht
so gut wie von alleine.

=== eigentliche Installation ===

Auf dem Rechner, auf dem man UnionFS benutzen will (das kann
natürlich der gleiche sein, auf dem compiliert wurde, muss aber
nicht), führt man nun folgendes aus:

  dpkg -i kernel-image-2.6.14lug_1.0_i386.deb
  dpkg -i unionfs-modules-2.6.14lug_1.0.14-1+1.0_i386.deb
  aptitude install unionfs-utils

== Konfiguration des Systems ==

Nun führt man eigentlich nur noch einen simplen Mount-Befehl aus
wie auf http://www.unionfs.org erklärt, z.B. so

  mount -t unionfs -o dirs=/var/cdbuffer=rw:/media/cdrom=ro none
/media/writablecd

und los gehts!

:: Beim Neubauen meines Routers nun eine kleine Änderung, es scheint, dass das angeben von rw nicht mehr notwendig ist, so lege ich den buffer nun über das filesystem

 mount -t unionfs -o dirs=/dev/shm:/var=ro none /var
 mount -t unionfs -o dirs=/dev/shm:/tmp=ro none /tmp
 mount -t unionfs -o dirs=/dev/shm:/opt=ro none /opt

== Links ==

* [http://www.fsl.cs.sunysb.edu/project-unionfs.html Homepage]
* [http://www.unionfs.org Einführung mit Praxisbeispiel]
* [http://aufs.sourceforge.net/ aufs (Another Union Filesystem)]
** [http://www.unixboard.de/wiki/index.php?title=AnotherUnifiedFileSystem_-_aufs Installationsanleitung aufs]

[{Tag Linux}]