Installieren eines Minimalimage auf Hetzner-Servern mit Software-RAID

Das installimage-Script von Hetzner unterstützt bisher keine SW-RAIDs. Kein Problem, wir erstellen einfach vorher das Dateisystem und deaktivieren die entsprechenden Abschnitte in den Install-Scripten.

Diese Howto enthält außerdem viele nützliche Tipps zum Anlegen von Raids. Es sollte auch helfen, auf anderen Rechnern neue Installationen mit SW-RAID1 einzurichten (Abschnitt 1 und 4). Voraussetzung ist auf jeden Fall ein 2.6er Kernel oder neuer.

Alle Angaben ohne Gewähr und Garantie. Sie verlieren sämtliche Daten Ihrer Festplatte.

Getestet mit folgenden (Minimal)-Images: Suse-10.1-64Bit-SMP, Suse-10.0-64Bit-SMP, Debian-3.1-32Bit, Debian-3.1-64Bit-LAMP, Debian-3.1.-64Bit, Ubuntu-6.06.1-32Bit, Ubuntu-6.06.1-64Bit, Suse-10.0-32Bit

Wir freuen uns über Feedback. Diskussionen bitte im entsprechenden Hetzner-Forum unter Eintrag http://forum.hetzner.de/wbb2/thread.php?threadid=7029
Weitere funktionierende Installationen bitte melden an jan.kellermann --at_ werk21.de
Über Feedback freuen wir uns ebenso.

Schritte:

1. RAID und Dateisystem anlegen

2. Installationsscripte runterladen

3. Anpassen der Installationsscripte

4. Installieren des Images

5. Mögliche Probleme, Lösungen und Tipps

6. Mini-Howtos
  6.1 Raids in Rettungssystem mounten
  6.2 Lilo im Rettungssystem ausführen
  6.3 Neue Platte (im Rettungssystem) in Raid einhängen

7. Anwendungsberichte

Dank

Alles in allem 'ne schnelle Sache Dank des Hetzner-Scripts. Auch wenn das Howto lang aussieht - keine Angst. Wir haben uns bemüht, jeden Schritt zu erklären, daher die Länge.

[Anmerkung: Vielleicht könnte man einfach in das Hetzner-Script die Option "FS vorhanden" einbauen? Man müsste dann nur die Daten für fstab angeben.]

Wir stellen die Anleitung vollständig inkl. Erstellen der RAIDs zur Verfügung. Die Anleitung kann also einfach 1:1 umgesetzt werden..

Lets go!

Die Schritte 1 bis 4 sind natürlich im Rescue-System durchzuführen. Bei eventuelle Reboots während der Installation bitte darauf achten, das Rettungssystem erneut aktiviert zu haben. Siehe dazu auch im Hetzner-Wiki.

Nach Abschluss der Installation wird das System normal von Festplatte gebootet. Das Passwort ist dass das Passwort des zuletzt gestarteten Rettungssystems. Also fein merken :)

1. RAID und Dateisystem anlegen

1.1 Partitionierung bestimmen

Wir schlagen folgene Partionierung vor (und halten uns dabei (fast) an einen Vorschlag aus dem installimage-Script):

Nr. Mountpoint 64Bit 32Bit Dateisystem
PART 0 /boot 1 GB 1 GB Ext3
PART 1 swap 4 GB 2 GB Swap
PART 2 /tmp 5 GB 5 GB Ext3
PART 3 / 15 GB 15 GB Ext3
PART 4 /srv 100 GB 100 GB ReiserFS

Ob es wirklich sinnvoll ist, eine Swap-Partition im Raid anzulegen, wissen wir nicht. In einigen Howtos ist dies allerdings so vorgeschlagen worden. Feedback bitte ins Forum oder an uns.

1.2 Partionen anlegen

Hinweis: Wenn bereits vorher Partitionen auf der Platte waren, kann es sinnvoll sein, die Platte einmal zu löschen oder die Partitionstabelle zu löschen.

Per Hand anlegen

Das Anlegen kann mit cfdisk oder fdisk geschehen.

Wichtig: TYPE muss immer fd sein.

Automatisch nach Vorlage einrichten

Wer möchte, kann ansonsten auch folgende Datei in /tmp/parttab anlegen: (Die Platten müssen natürlich groß genug sein!)

linux:~# vi /tmp/parttab

Für 64-Bit-Systeme (SWAP = 4GB): (z.B. DS 9000)

Für 32-Bit-Systeme (SWAP = 2GB): (z.B. DS 3000, 5000, 7000)

Und mit sfdisk importieren:

linux:~# sfdisk /dev/sda < /tmp/parttab
linux:~# sfdisk /dev/sdb < /tmp/parttab

Sie sollten nun den Rechner rebooten, um sicherzugehen, dass die neuen Partitionstabellen eingelesen werden.

1.3 RAIDS erstellen

Aus diesen Partionen setzen wir nun unser RAID zusammen. Je nach Betriebssystem und Leistung des Servers kann es zu Wartezeiten beim Anlegen oder im Anschluss an das Anlegen der RAIDs kommen.

linux:~# mdadm -Cv /dev/md0 -l1 -n2 /dev/sda1 /dev/sdb1
linux:~# mdadm -Cv /dev/md1 -l1 -n2 /dev/sda2 /dev/sdb2
linux:~# mdadm -Cv /dev/md2 -l1 -n2 /dev/sda3 /dev/sdb3
linux:~# mdadm -Cv /dev/md3 -l1 -n2 /dev/sda5 /dev/sdb5
linux:~# mdadm -Cv /dev/md4 -l1 -n2 /dev/sda6 /dev/sdb6

Tipp: Wer sich vertippt, kann mit

linux:~# mdadm --stop /dev/md<x>

die Partition wieder freigeben.

Ab jetzt sollten Sie keinen Neustart durchführen. Andernfalls müssen die Raids mit mdrun wieder gestartet werden.

1.4 RAIDS kontrollieren

Bevor wir weitermachen, müssen wir die Synchronisierung abwarten um sicherstellen, dass alle RAIDs fertig sind. Dazu rufen wir die Übersicht auf:

linux:~ cat /proc/mdstat

Das sollte nach erfolgreicher Synchronisierung in etwa so aussehen:

Personalities : [raid1]
md4 : active raid1 sdb6[1] sda6[0]
      58596992 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      1020032 blocks [2/2] [UU]

md2 : active raid1 sda3[0] sdb3[1]
      5124608 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      4096448 blocks [2/2] [UU]

md3 : active raid1 sda5[0] sdb5[1]
      10482304 blocks [2/2] [UU]

unused devices: <none>

Hinter jedem Raid muss ein [UU] stehen. Und es sollte keine Hinweise auf einen Synchronisierungs-Prozess (resync) geben. Sonst weiter warten.

Um nicht permanent den cat-Befehl aufrufen zu müssen, kann auch der watch-Befehl verwendet werden:

linux:~# watch cat /proc/mdstat

Diese Ansicht kann beendet werden mit <STRG>-C

Jetzt ist also genug Zeit, frischen Kaffee zu holen oder neue Zigaretten aus dem Automaten.

1.5 Dateisysteme erstellen

Nun müssen wir die Dateisysteme schreiben:

Die Befehle dazu nacheinander abarbeiten:

linux:~# mkfs.ext3 /dev/md0
linux:~# mkswap /dev/md1
linux:~# mkfs.ext3 /dev/md2
linux:~# mkfs.ext3 /dev/md3
linux:~# mkfs.reiserfs /dev/md4

1.6 Erstellen der fstab-Datei

Nun müssen wir das erschaffene Dateisystem noch in einer fstab-Datei abbilden. Diese müssen wir nach /tmp legen, damit das Installscript diese findet.

linux:~# vi /tmp/fstab

Wichtig: Am Ende darf keine Leerzeile sein!

Sollten Sie abweichende Partitionen oder Dateisysteme eingerichtet haben, muss die fstab entsprechend angepasst werden.

So, nun ist unser Dateisystem fertig. Weiter gehts!

2. Installationsscripte runterladen

Das Hetzner-Script /usr/sbin/installimage lädt weitere Scripte herunter und führt diese sofort aus. Da wir aber diese noch manipulieren wollen, müssen wir das Ausführen unterbinden.

linux:~# vi /usr/sbin/installimage

Letzte Zeile durch Einfügen eines # am Anfang deaktivieren:

/usr/sbin/startsetup

wird zu

# /usr/sbin/startsetup

Anmerkung: Da die Rettungskonsole als Read-Only gemounted ist, muss das Schreiben erzwungen werden. (also entweder :w! oder :x!)

Ausführen und laden der weiteren Installationsscripte:

linux:~# /usr/sbin/installimage

Nun müssen noch kleine Anpassungen an den Scripten gemacht werden. Weiter gehts!

3. Anpassen der Installationsscripte

Die Installationsscripte zerstören eigentlich das eingerichtete Dateisystem. Da wir aber wissen, dass wir bereits ein neues System eingerichtet haben und dieses leer ist, müssen wir dem Script dies abgewöhnen.

linux:~# vi /usr/sbin/setupscript

Auskommentieren der Zeilen ca. 112 bis 118 (Hilfe: Zur Zeile <xy> springen in vi mit :<xy>):

Und dahinter einfügen:

system("cp /tmp/fstab /tmp/fstab.".$pid);

Damit wird unsere generierte fstab-Datei kopiert, damit das Installscript diese auch findet.

Aus:

print "\n#~ deleting exisiting partitions..\t\t\t";
$tmp=HOS_del_parts($drive, 0);
HOS_check($tmp, 0);

print "\n#~ creating new partitions and fstab..\t\t\t";
$tmp=HOS_mk_parts($drive, $part_count, 0);
HOS_check($tmp, 0);

wird also:

# print "\n#~ deleting exisiting partitions..\t\t\t";
# $tmp=HOS_del_parts($drive, 0);
# HOS_check($tmp, 0);

# print "\n#~ creating new partitions and fstab..\t\t\t";
# $tmp=HOS_mk_parts($drive, $part_count, 0);
# HOS_check($tmp, 0);

system("cp /tmp/fstab /tmp/fstab.".$pid);

Das wars schon. Jetzt kommt die Installation!

4. Installieren des Systems

4.1 Standardimage einspielen

Wir haben ein RAID mit Dateisystem. Wir haben die Installationsscripte angepasst.
Nun kann's losgehen!

Aufrufen von

linux:~# /usr/sbin/startsetup

Nun das gewünschte System auswählen (siehe dazu auch im Hetzner-Wiki).

Die Konfigurations-Datei, die wir editieren müssen, können wir getrost ignorieren und gleich mit F10 weiter gehen.

Anschließend werden System und Kernel etc. installiert.

4.2 Systemanpassungen

Für die weiteren Arbeiten müssen wir erstmal unser neues System mounten und chrooten:

linux:~# mount /dev/md3 /mnt
linux:~# mount --bind /dev /mnt/dev/
linux:~# mount --bind /proc /mnt/proc/
linux:~# mount --bind /sys /mnt/sys/
linux:~# chroot /mnt /bin/bash
linux:~# mount -a
linux:~# umount /proc
linux:~# mount -tproc none /proc

Für Debian: mdadm installieren

Beim Debian-Image muss mdadm nachträglich installiert werden.

linux:~# aptitude install mdadm

Evtl. Fehlermeldungen bitte ignorieren bzw. Fragen bestätigen.

4.2.1 Boot-Image neu schreiben

Linux lädt zum Booten ein Image-File, in dem das Grundsystem enthalten ist. Wir müssen sicherstellen, dass dieses System auch unser Raid erkennt, also der Treiber raid1 enthalten ist.

Bei einigen neueren Images ist der Treiber enthalten. Wenn der Treiber raid1 bereits enthalten ist, brauch das Boot-Image nicht neu erstellt zu werden, der Abschnitt 4.2.1 kann dann im Weiteren übersprungen werden.

Suse:

Dazu ergänzen wir die /etc/sysconfig/kernel

linux:~# vi /etc/sysconfig/kernel

Ganz am Anfang ergänzen wir die Zeile

INITRD_MODULES="via82cxxx 3w_xxxx processor thermal fan reiserfs ext3 ext2 xfs sata_via sata_sil 3w_9xxx"

und fügen "raid1" an den Anfang ein:

INITRD_MODULES="raid1 via82cxxx 3w_xxxx processor thermal fan reiserfs ext3 ext2 xfs sata_via sata_sil 3w_9xxx"

Je nach Suse-Version kann diese Zeile auch anders aussehen.

Nun müssen wir lediglich das Boot-Image neu schreiben:

linux:~# mkinitrd
Debian:

Dazu ergänzen wir die /etc/mkinitrd/modules

linux:~# vi /etc/mkinitrd/modules

In den Abschnitt Filesystems fügen wir am Anfang raid1 ein.

Aus

# Filesystems
ext2
ext3
xfs
reiserfs

wird

# Filesystems
raid1
ext2
ext3
xfs
reiserfs

Nun müssen wir lediglich das Image neu schreiben. Bei Debian müssen wir dabei die Kernel-Version angeben. Dazu schauen wir in den Ordner /boot:

linux:~# ls /boot/initrd*

und sehen in etwa folgendes

/boot/initrd.img  /boot/initrd.img-2.6.8-3-k7

Die Versionsnummer ist in unserem Fall daher 2.6.8-3-k7

Der Aufruf lautet wie folgt:

linux:~# mkinitrd -o /boot/initrd.img-2.6.8-3-k7 2.6.8-3-k7

Hinweis: Die Nummer muss also zwei mal ersetzt werden.

Ubuntu:

Dazu ergänzen wir die /etc/mkinitramfs/modules

linux:~# vi /etc/mkinitramfs/modules

In den Abschnitt Filesystems fügen wir am Anfang raid1 ein.

Aus

# Filesystems
ext2
ext3
xfs
reiserfs

wird

# Filesystems
raid1
ext2
ext3
xfs
reiserfs

Nun müssen wir lediglich das Image neu schreiben. Bei Ubuntu müssen wir dabei die Kernel-Version angeben. Dazu schauen wir in den Ordner /boot:

linux:~# ls /boot/initrd*

und sehen in etwa folgendes

/boot/initrd.img  /boot/initrd.img-2.6.8-3-k7

Die Versionsnummer ist in unserem Fall daher 2.6.8-3-k7

Der Aufruf lautet wie folgt:

linux:~# mkinitramfs -o /boot/initrd.img-2.6.8-3-k7 2.6.8-3-k7

Hinweis: Die Nummer muss also zwei mal ersetzt werden.

4.2.2 Bootloader

Nun müssen wir noch den Bootloader lilo so konfigurieren, dass auch wirklich vom RAID gebootet wird.

linux:~# vi /etc/lilo.conf

Aus

boot = /dev/sda

wird

boot = /dev/md0

und dahinter fügen wir in einer neuen Zeile ein:

raid-extra-boot="/dev/sda,/dev/sdb"

Dann lassen wir lilo den Bootblock neu schreiben:

linux:~# lilo

Nun wird Ihr System in Zukunft vom Raid geladen. Die Bootinformationen sind auf beiden Platten drauf. Wenn also eine Platte ausfällt, kann das System problemlos gebootet werden.

4.2.3 Erstellen der mdadm.conf

Die mdadm.conf ist für die Zuordnung der RAIDs und die Überwachung zuständig. Wir können diese Conf-Datei halbautomatisch generieren lassen. Für Suse liegt sie in /etc/mdadm.conf, bei Debian liegt sie in /etc/mdadm/mdadm.conf

Suse:
linux:~# vi /etc/mdadm.conf

Nur eine Zeile sollte enthalten sein:

DEVICE /dev/sda* /dev/sdb*

Dann Ausführen des Befehls:

linux:~# mdadm --detail --scan >> /etc/mdadm.conf

Um im Fehlerfall per E-Mail benachrichtigt zu werde, müssen wir nun noch ans Ende der Datei eine Zeile einfügen:

linux:~# vi /etc/mdadm.conf

und ans Ende:

MAILADDR meine@emailadresse.de
Debian:
linux:~# vi /etc/mdadm/mdadm.conf

Nur eine Zeile sollte enthalten sein:

DEVICE /dev/sda* /dev/sdb*

Dann Ausführen des Befehls:

linux:~# mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Um im Fehlerfall per E-Mail benachrichtigt zu werde, müssen wir nun noch ans Ende der Datei eine Zeile einfügen:

linux:~# vi /etc/mdadm/mdadm.conf

und ans Ende:

MAILADDR meine@emailadresse.de

4.2.4 System neu starten

Das sollte es bereits gewesen sein. Wir sind fertig.

Wenn alles erledigt ist, das System neu starten:

linux:~# reboot

Nun sollte das System neu starten und Linux mit RAID1 starten.

Wenn das System sauber hochgefahren ist, können Sie sich nun als root mit dem Passwort der letzten Rettungskonsole anmelden.

5. Mögliche Probleme, Lösungen und Tipps

Wir haben lange verschiedene Wege ausprobiert und dabei einige praktische Dinge kennengelernt.

5.1 Allgemein

Daten synchronisieren

linux:~# rsync -auHxv <QUELLE> <ZIEL>

Ganze Festplatte wirklich leeren

Diese Möglichkeit kann verwendet werden, wenn noch frühere Dateisysteme oder Raids von mdadm erkannt werden und man "auf Nummer sicher " gehen möchte.

linux:~# fdisk -l /dev/sd<x>
linux:~# dd if=/dev/zero of=/dev/sd<x> bs=10240

Hinweis: Dauert wirklich lange :)

Partitionstabelle löschen

Damit wird die Partitionstabelle der Festplatte <x> überschrieben.

linux:~# dd if=/dev/zero of=/dev/sd<x> count=1

5.2 Partitionieren

Partitionstaballe exportieren

linux:~# sfdisk -d /dev/sd<x> > /tmp/parttable.tmp

Partitionstabelle importieren

linux:~# sfdisk /dev/sd<x> < /tmp/parttable.tmp

5.3 Allgemeines zu RAIDs

Bestehende RAIDs starten

Wenn noch keine mdadm.conf-Datei existiert (wie in der Rettungskonsole) werden mit mdadm -A bestehende Arrays gestartet.

linux:~# mdadm -A -a /dev/md<x> /dev/sda<x> /dev/sdb<x>

Alle existierenden Raids können mit mdrun zusammen gestartet werden:

linux:~# mdrun

Wenn die Datei mdadm.conf nicht existiert, werden Raids u.U. mit falschen Nummern versehen.

Raid stoppen

linux:~# mdadm --stop /dev/md<x>

Platte in Raid als defekt ("failed") kennzeichnen

linux:~# mdadm -f /dev/md<x> /dev/sd<x><y>

Platte aus Raid entfernen

linux:~# mdadm -r /dev/md<x> /dev/sd<x><y>

Ggf. vorher Platte als defekt kennzeichnen.

Platte in Raid einhängen

linux:~# mdadm -a /dev/md<x> /dev/sd<x><y>

Die Platte wird sofort gegen das bestehende RAID synchronisiert, die Daten also gelöscht.

6. Mini-Howtos

Hier einige nützliche kleine Mini-Howtos. Die Angaben beziehen sich immer auf die o.g. Konfiguration und Partitionierung.

6.1 Raids in Rettungssystem mounten und chrooten

- Rettungssystem booten

- Raids starten:

rescue:~# mdrun

- Alternativ: Raid bilden mit mdadm -A:

Wenn mdrun fehlschlägt, können die Raids auch per Hand gestartet werden:

rescue:~# mdadm -A -a /dev/md0 /dev/sda1 /dev/sdb1
rescue:~# mdadm -A -a /dev/md1 /dev/sda2 /dev/sdb2
rescue:~# mdadm -A -a /dev/md2 /dev/sda3 /dev/sdb3
rescue:~# mdadm -A -a /dev/md3 /dev/sda5 /dev/sdb5
rescue:~# mdadm -A -a /dev/md4 /dev/sda6 /dev/sdb6
rescue:~# mdadm -A -a /dev/md4 /dev/sda6 /dev/sdb6

- mount ROOT-Partition nach /mnt

rescue:~# mount /dev/md3 /mnt

- Systembereiche mounten

rescue:~# mount --bind /dev /mnt/dev/
rescue:~# mount --bind /proc /mnt/proc/
rescue:~# mount --bind /sys /mnt/sys/

- Chrooten der Root-Partition:

rescue:~# chroot /mnt /bin/bash

- Restliche Raids und Platten mounten

rescue:~# mount -a

- /proc remounten

rescue:~# umount /proc
rescue:~# mount -tproc none /proc

6.2 Lilo im Rettungssystem ausführen

Es ist kein chroot notwendig, um lilo im Rettungssystem auszuführen:

- Rettungssystem booten

- Raids starten:

rescue:~# mdrun

- mount ROOT-Partition nach /mnt

rescue:~# mount /dev/md3 /mnt

- Systembereiche mounten

rescue:~# mount --bind /dev /mnt/dev/
rescue:~# mount --bind /proc /mnt/proc/
rescue:~# mount --bind /sys /mnt/sys/

- /boot mounten

rescue:~# mount /dev/md0 /mnt/boot

- Ggf. editieren von lilo.conf

rescue:~# vi /mnt/etc/lilo.conf

- Lilo ausführen und Bootloader schreiben

rescue:~# lilo -r /mnt

6.3 Neue Platte (im Rettungssystem) in Raid einhängen

Zum Einhängen einer neuen Platte ist nicht unbedingt ein Rettungssystem notwendig. Wenn jedoch eine hohe Last auf dem System liegt, spricht dies dafür, solche Arbeiten im Rettungssystem durchzuführen. Wenn der Server schnell wieder online sein soll, kann es auch im laufenden Betrieb passieren.

Achtung: Wenn eine Partition erst einmal eingehängt ist, sollte auf jeden Fall das Synchronisieren vollständig abgewartet werden. Andernfalls kann es nach einem Neustart vorkommen, dass die unvollständige Partition gegen die vollständige Partition synchronisiert - und dabei alle noch nicht synchronisierten Daten löscht...

Mit Rettungssystem

- Rettungssystem booten

- Partitionstabellen auf neue Platte kopieren (siehe hier)

- Raid bilden mit missing, wobei die neu zu integrierende Platte durch "missing" ersetzt wird:

rescue:~# mdadm -Cv /dev/md<x> -l1 -n2 missing /dev/sd<x><y>

- Neue Platte hotadden

rescue:~# mdadm -a /dev/md<x> /dev/sd<x><y>

- warten. WIRKLICH warten bis gesynct. (siehe RAIDs kontrollieren)

- Nun das Raid auflösen und alle Raids neu bilden

rescue:~# mdadm --stop /dev/md<x>
rescue:~# mdrun

- mount ROOT-Partition nach /mnt

rescue:~# mount /dev/md3 /mnt

- Systembereiche mounten

rescue:~# mount --bind /dev /mnt/dev/
rescue:~# mount --bind /proc /mnt/proc/
rescue:~# mount --bind /sys /mnt/sys/

- /boot mounten

rescue:~# mount /dev/md0 /mnt/boot

- Neuschreiben des Bootloaders

rescue:~# lilo  r /mnt

- System neu starten

rescue:~# reboot

Ohne Rettungssystem

Das Raid sollte nach dem Systemboot geladen sein, jedoch nur mit einer Platte.

- Partitionstabellen auf neue Platte kopieren (siehe hier)

- Neue Platte hotadden

rescue:~# mdadm -a /dev/md<x> /dev/sd<x><y>

- warten. WIRKLICH warten bis gesynct. (siehe RAIDs kontrollieren)

- Neuschreiben des Bootloaders

rescue:~# lilo  r /mnt

7. Anwendungsberichte

Im Folgenden Kommentare und Anwendungsberichte.

Debian-3.1-64Bit Minimalsystem:


Dank

Dank an die beiden guten Howtos von Andre Holzer und Transtronics. Vielen Dank an Florian Wicke für das Script installimage und die Pflege der Distributions-Images. Und natürlich Hetzner und vielen Forum-Schreibern. Praktisch sind übrigens die ERIC-II- und LARA-Konsolen von Hetzner. Vielen Dank für die Wochenend-Nutzung von LARA!

Dank an die Forenbeiträge und E-Mails von Peeper, Squaregarden, gummibaerchen, trx, ridcully, crush, Stephan Lichtenhagen


Erstellt 30.07.2006 von Jan Kellermann (jan.kellermann --at_ werk21.de) und Carsten Mehle (mail --at_ cmehle.de)

Ergänzt 11.08.2006: Redaktionell und "Löschen der Partitionstabelle" (Thx @Florian Wicke again)

Ergänzt 14.08.2006: Einfügen von linux:~# mount --bind /sys /mnt/sys/ in 4.2, 6.1, 6.2 und 6.3

Ergänzt 14.09.2006: Ausgestest mit Ubuntu (Danke an Martin Turba und crush). Abschnitt 4.2.1 um Ubuntu ergänzt.

Ergänzt 19.09.2006: E-Mail-Benachrichtigung in 4.2.3