Linux aus den Quellen selber bauen mit LFS 6.3

Aus LinuxUser 01/2008

Linux aus den Quellen selber bauen mit LFS 6.3

Von Grund auf

Mit Linux From Scratch bauen Sie ein handoptimiertes System direkt aus den Quellen und erhalten obendrein einmalige Einblicke in die internen Abläufe eines Linux-Systems.

Jeder Linux-Distributor kocht sein eigenes Süppchen. Die Zutaten hierzu sind nicht immer ganz ersichtlich. Selbst Minimalsysteme der Distributionen enthalten oft viele Komponenten, die Sie niemals benötigen. Möchten Sie wirklich die Kontrolle darüber haben, was auf Ihrem Linux-System läuft, bauen Sie es sich von Grund auf selbst. Das Projekt Linux From Scratch liefert dazu die richtige Anleitung. Dahinter verbirgt sich ein Dokument, das alle notwendigen Handgriffe erklärt.

Ein eigenes Linux Paket für Paket einschließlich Kernel und Shell komplett selbst aufzubauen, bietet nicht nur den Vorteil, dass Sie anschließend ein sehr schlankes und schnelles System erhalten. Sie gewinnen auch einen tiefen Einblick in den Aufbau und das Zusammenspiel aller Komponenten von Linux.

Arbeiten Sie das How-to “Linux From Scratch”, das auch in Deutsch vorliegt, ganz einfach Schritt für Schritt durch. Seien Sie jedoch gewarnt: Auf diese Weise erstellen Sie das System sicher nicht in fünf Minuten. Es läuft eher auf einige Tage oder Wochen hinaus. Der Aufwand lohnt sich dennoch für jeden, der einen tiefen Blick hinter die Kulissen werfen beziehungsweise volle Kontrolle über die installierten Komponenten des Systems haben möchte. Im Laufe der Arbeitsschritte erkennen und verstehen Sie viele interessante Zusammenhänge und Konzepte. Dies hilft Ihnen im täglichen Umgang mit Linux.

Handwerkszeug ordnen

Das Handbuch “Linux From Scratch” laden Sie entweder von der Website des Projekts [1] als englisches Original oder in der deutschen Version von Thomas Reitelbach [2] als PDF, Textdatei oder in der HTML-Version herunter. Möchten Sie Ihr eigenes Linux erstellen, benötigen Sie zumindest solide Grundkenntnisse der Shell. Sie sollten wissen, wie Sie Dateien und Ordner erstellen, kopieren, verschieben und löschen. Grundkenntnisse über die Installation und den Einsatz von Linux-Software erweisen sich ebenfalls als hilfreich. Für den notwendigen Background empfiehlt sich auf das “Software-Building-HOWTO” [3], der “Linux Users’ Guide” [4] und “The Essential Pre-Reading Hint” [5].

Sie erstellen das neue System innerhalb eines bestehenden Linux-Systems, dem Host-System. Das How-to definiert die Mindestanforderungen, die allerdings jede halbwegs aktuelle Distribution erfüllt. Vergleichen Sie diese aber in jedem Fall noch einmal mit Ihrem Host-System, um sicherzugehen. Im How-to finden Sie ein Shellskript, das diese Aufgabe elegant erledigt.

Möchten Sie kein eigenes Host-System erstellen, nutzen Sie stattdessen die LFS-Live-CD [6], die alle notwendigen Werkzeuge mitbringt. Zudem finden sich alle benötigten Quellpakete bereits auf der Disk. Allerdings arbeitet es sich mit der Live-CD nicht besonders komfortabel, und die Dokumentation liegt nur in Englisch vor. Eine Alternative hierzu bietet beispielsweise Knoppix. Dieser Artikel gibt im weiteren Verlauf Hinweise dazu, wie Sie mit der Live-CD arbeiten.

Noch ein wichtiger Punkt zum Einsatz des LFS-Buches: Konsultieren Sie in jedem Fall vorher die Errata-Webseite [7], um gegebenenfalls gefundene Fehler zu vermeiden. Zum Redaktionsschluss lag für die aktuelle Version 6.3 allerdings noch keine Errata-Liste vor.

Ein kurzer Überblick

Bevor Sie den Kochlöffel schwingen, um Ihr eigenes Linux-Süppchen zu kochen, lohnt es sich, einen kurzen Blick auf den Ablauf zu werfen. Zunächst legen Sie eine Partition an, laden gegebenenfalls die notwendigen Pakete herunter und kompilieren die temporären Werkzeuge, die Sie zum Erstellen des Linux-Systems benötigen. Diese Entwicklungssoftware nennt sich Toolchain. In ihr entsteht das neue Linux-System. Sie benötigen die Toolchain, um sich bezüglich der Abhängigkeiten der Pakete vom Host-System zu lösen.

Haben Sie die Basis des LFS-Systems erst einmal aufgebaut, wechseln Sie per Chroot in die neue Umgebung, um weitere Pakete zu installieren. Anschließend folgen die Bootskripte, der Kernel sowie der Bootloader. Schließlich starten Sie den Computer mit dem neuen LFS-System.

Los geht’s

Laden Sie zunächst die Live-CD in der aktuellen Version (zurzeit 6.3-r2130) herunter und brennen Sie das Image auf eine CD-ROM. Am einfachsten geht es, wenn Sie sich den Text ausdrucken, um die Punkte schrittweise abzuarbeiten. Starten Sie Ihr Host-System mit der Live-CD. Die Quellen finden Sie unter /lfs-sources. Freundlicherweise liefert die CD die aktuelle Ausgabe der LFS-Dokumentation unter /usr/share/LFS-BOOK-6.3-HTML mit – allerdings wie schon erwähnt in Englisch. Wie bei allen Projekten sollten Sie sich die Datei README.txt ansehen. Anschließend schreiten Sie zur Tat.

Abbildung 1: Die LFS-Live-CD hat alles an Bord, was Sie zum Erstellen Ihres eigenen Linux-Systems benötigen.

Abbildung 1: Die LFS-Live-CD hat alles an Bord, was Sie zum Erstellen Ihres eigenen Linux-Systems benötigen.

Eine Partition erstellen

Sie benötigen für die LFS-Installation eine eigene Partition, die Sie über ein Partitionierungstool der Wahl, etwa mit Cfdisk, als native Linux-Partition erstellen. Für die Minimalinstallation sollten Sie mindestens 1,3 GByte Platz einplanen. Für die Nachinstallation müssen Sie – abhängig vom Umfang der gewünschten Anwendungen – rund 2 bis 4 GByte ansetzen. Zwar benötigt die eigentliche Installation später wesentlich weniger Platz, aber der Installationsvorgang belegt während des Kompilierens reichlich temporären Speicherplatz. Es empfiehlt sich zudem, eine Swap-Partition anzulegen.

Abbildung 2: Mit Cfdisk beschreiben Sie die Partitionstabelle mit einer nativen Linux- und einer Swap-Partition.

Abbildung 2: Mit Cfdisk beschreiben Sie die Partitionstabelle mit einer nativen Linux- und einer Swap-Partition.

Nach dem Erstellen der Partition erzeugen Sie darauf ein Ext3-Dateisystem. Angenommen, die Partition sei /dev/hda1, so lautet der Befehl mke2fs -jv /dev/hda1. Die Dokumentation empfiehlt übrigens, das in den LFS-Quellen genannte Originalpaket E2fsprogs statt der distributionseigenen Tools zu verwenden, da diese oft inkompatible Zusatzfunktionen enthalten. Aufgrund der vielen Fallstricke beim Aufbau einer LFS-Installation sollten Sie die Vorgaben des LFS-Buches so exakt wie möglich befolgen – für Nutzer der Live-CD spielt das in diesem Fall natürlich keine Rolle.

Die neu erstellte Partition nennen wir der Einfachheit halber LFS-Partition. Haben Sie eine weitere Partition (zum Beispiel /dev/hda2) als Swap-Bereich erstellt, initialisieren Sie diese mit mkswap /dev/hda2. Anschließend hängen Sie die Hauptpartition ein. Es bietet sich an, sie unter /mnt/lfs zu mounten. Da dieser Pfad immer wieder zum Einsatz kommt, speichern Sie ihn in einer Variablen. Anschließend erstellen Sie das Verzeichnis. Zum Schluss aktivieren Sie eine eventuell vorhandene Swap-Partition (Listing 1).

Listing 1
# export LFS=/mnt/lfs
# mkdir -pv $LFS
# mount -v -t ext3 /dev/hda1 $LFS
# swapon -v /dev/hda2

Pakete und Patches

Das LFS-Buch beschreibt in Kapitel 3 alle für eine Minimalinstallation erforderlichen Pakete und Patches. Für die ersten Gehversuche empfehlen die Buchautoren, sich an bekanntermaßen funktionierende Paketversionen zu halten. Nutzen Sie die LFS-Live-CD, brauchen Sie sich darum keine Gedanken zu machen. Anderenfalls finden Sie zu den jeweiligen Paketen eine Downloadadresse. Zum Speichern der Pakete erstellen Sie ein neues Verzeichnis, das Sie gleich mit den passenden Rechten versehen. Der zweite Befehl fügt neben Schreibrechten für alle das Sticky-Bit durch +t hinzu.

# mkdir -v $LFS/sources
# chmod -v a+wt $LFS/sources

Nutzen Sie die Live-CD, so kopieren Sie mit cp /lfs-sources/* $LFS/sources die gesamten Archive in das neu erstellte Verzeichnis. Anderenfalls sollten Sie dieses Verzeichnis direkt als Downloadverzeichnis nutzen.

Vorbereitungsarbeiten

Die oben genannte Toolchain benötigt ein eigenes Verzeichnis $LFS/tools, dass Sie nun mit mkdir -v $LFS/tools erstellen. An dieser Stelle legen Sie nun noch mit ln -sv $LFS/tools / einen symbolischen Link an, der als /tools auf $LFS/tools zeigt. Die seltsam anmutende Syntax ist tatsächlich korrekt. Der Vorteil liegt darin, dass die Toolchain nun immer auf /tools referenzieren kann – egal ob im Host-System oder später in der LFS-Partition, die Sie über Chroot zum temporären Wurzelverzeichnis machen.

Das Kompilieren von Quellcode-Paketen sollte immer über einen nicht privilegierten Benutzer erfolgen, da Sie ansonsten das Host-System leicht beschädigen könnten. Hierzu legen Sie einen Benutzer lfs an, der auf die beiden Verzeichnisse $LFS/sources und $LFS/tools vollen Zugriff erhält. Anschließend wechseln Sie für die weiteren Schritte über su in diesen Account. Die Befehle geben Sie wie folgt ein:

# groupadd lfs
# useradd -s /bin/bash -g lfs -m -k /dev/null lfs
# passwd lfs
# chown -v lfs $LFS/tools
# chown -v lfs $LFS/sources
# su - lfs

Erläuterungen zu den Schaltern des Befehls Useradd finden Sie in der LFS-Dokumentation (Kapitel 4.3) oder in der Manpage des Tools. Im nächsten Schritt sorgen Sie für eine Benutzerumgebung, die keine potentiell gefährlichen Umgebungsvariablen enthält. Das erreichen Sie, indem die benutzerspezifische Datei ~/.bash_profile ausschließlich die Zeile

exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash

enthält. Hierdurch definieren Sie lediglich die Variablen HOME, TERM und PS1 und starten eine neue Bash. Diese liest als Nicht-Login-Shell die Datei ~/.bashrc ein, die Sie nun mit folgendem (ausschließlichen) Inhalt befüllen:

set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH

Auch hier sorgen die Zeilen für eine möglichst reines Environment für den Benutzer lfs. Das LFS-Buch erläutert alle Optionen im Detail. Anschließend lesen Sie das neue Profil als Benutzer lfs durch den Befehl source ~/.bashrc ein. Nun ist das Host-System bereit für die Toolchain.

Toolchain erstellen

Als nächstes erstellen Sie ein temporäres Minimal-Linux, um darin das eigentliche LFS-System aufzubauen. Auf diese Weise machen Sie sich vom Host-System unabhängig. Kapitel 5.1 des LFS-Buches bietet eine Übersicht, die aufgrund der angedeuteten Komplexität der Vorgänge unter Umständen eher abschreckend wirkt – aber lassen Sie sich dadurch nicht entmutigen. In den nachfolgenden Abschnitten des Buches finden Sie detaillierte Angaben zu jedem einzelnen Schritt.

Versuchen Sie an dieser Stelle noch nicht, jeden einzelnen Satz bis ins Detail zu verstehen. Werfen Sie lieber noch mal einen Blick in das Buch, nachdem Sie die ersten Schritte vollzogen haben – vermutlich erscheinen die Aussagen nun bereits in einem anderen Licht. Um das relativ komplizierte Prozedere im Ganzen zu durchschauen, lohnt es sich – je nach Vorkenntnissen – die Schritte eventuell mehrere Male abzuarbeiten.

Stellen Sie sicher, dass die Variable $LFS auf das LFS-Verzeichnis zeigt. Außerdem müssen Sie die Plattform Ihres Host-Systems, Ziel-Triplet genannt, kennen. In der Regel lautet das i686-pc-linux-gnu für einen aktuellen PC. Sehr wichtig für den weiteren Verlauf ist der dynamische Linker. Bei den meisten Systemen lautet er ld-linux.so.2. Sie ermitteln ihn durch den Befehl readelf -l /bin/ls | grep interpreter.

Als nächstes entpacken, übersetzen und installieren Sie nun die zahlreichen Basis- und Hilfspakete. Um welche es sich dabei handelt und in welcher Reihenfolge Sie vorgehen sollten, gibt das LFS-Buch in Kapitel 5 vor.

Abbildung 3: Das Erstellen der autarken Installationsumgebung erfolgt in mehreren Schritten.

Abbildung 3: Das Erstellen der autarken Installationsumgebung erfolgt in mehreren Schritten.

Die Anleitung geht davon aus, dass Sie das jeweilige Quellcode-Paket in $LFS/sources mit dem Befehl tar -xjf Paketname entpackt haben und in das Paketverzeichnis $LFS/sources/Paketname gewechselt sind. Die Anleitung nennt die Pfadangaben zum Teil relativ, also beispielsweise mkdir -v ../gcc-build, so dass es wichtig ist, in welchem Verzeichnis Sie sich gerade befinden.

Das Übersetzen einiger Pakete dauert ziemlich lange, daher empfiehlt sich an dieser Stelle eine Tasse – oder besser Kanne – Kaffee oder Tee zu holen. In Kapitel 5 finden Sie übrigens noch keine detaillierten Angaben zu den Inhalten der Pakete. Möchten Sie bereits jetzt genau wissen, was Sie sich hier auf Ihren Computer holen, lesen Sie dies im Kapitel 6 nach.

Zum Erstellen der Toolchain installieren Sie zunächst wichtige Entwicklungswerkzeuge (beispielsweise Compiler, Linker, Assembler) durch die Pakete Binutils und GCC, die C-Standardbibliothek Glibc sowie das Kernel-API. Um sich vom Host-System abzukoppeln, linken Sie anschließend alle Programme gegen die neuen Bibliotheken. Im Anschluss installieren Sie einige Pakete, die Sie benötigen, um die Testsuites von GCC und Binutils zu nutzen. Durch Eingabe des Befehls make check prüfen Sie später, ob das Übersetzen der Quellen sauber durchgelaufen ist und das jeweilige Programm funktioniert.

Bevor Sie fortfahren, installieren Sie nun den GCC und die Binutils ein zweites Mal, damit auch diese Tools den neuen Linker und die neuen Bibliotheken nutzen. Hierzu spielen Sie mittels des Patch-Befehls einen Codeflicken für das GCC-Paket ein. Patches enthalten in der Regel Fehlerbereinigungen und kleinere Anpassungen, die ein Entwickler bereitstellt, solange er noch keine neuere Version des Pakets ausliefern möchte. Sie sind für verschiedene Pakete im weiteren Verlauf der Installation notwendig.

Im weiteren Verlauf installieren Sie eine Basisumgebung, die neben der Bash gängige Werkzeuge, wie Tar, Gzip, Find oder Grep enthält. Dieser Part bietet eine gute Übersicht darüber, was in einem Minimalsystem an Basistools enthalten ist.

Speicherplatz optimieren

Haben Sie die Pakete aus Kapitel 5 installiert, verfügen Sie nun über eine vom Host-System abgekoppelte Arbeitsumgebung. Diese nutzen Sie im nächsten Schritt zum Erstellen des eigentlichen LFS-Systems. Vorher steht es Ihnen allerdings frei, einige Speicheroptimierungen vorzunehmen. Entfernen Sie zum Beispiel über die Befehle strip --strip-debug /tools/lib/* und strip --strip-unneeded /tools/{,s}bin/* die überflüssigen Debug-Symbole aus den ausführbaren Dateien und Bibliotheken, so gewinnen Sie bereits 70 MByte Speicherplatz. Weitere 20 MByte holen Sie heraus, wenn Sie die Dokumentation mit rm -rf /tools/{info,man} entfernen.

Als letzten Schritt beim Erstellen der Toolchain ändern Sie mit chown -R root:root $LFS/tools den Besitzer der Toolchain. Haben Sie bisher alle Arbeiten als Benutzer lfs vorgenommen, sollten Sie ab sofort als root arbeiten.

LFS-Basissystems installieren

Nun endlich installieren Sie das eigentliche LFS-System, wie es später als Produktivsystem laufen soll. Kapitel 6 des LFS-Buches erklärt, wie das funktioniert. Zunächst erstellen Sie mit mkdir -pv $LFS/{dev,proc,sys} die Verzeichnisse, in die Sie die notwendigen virtuellen Kernel-Dateisysteme mounten. Außerdem benötigt Udev die Gerätedateien /dev/console und /dev/null, die Sie durch die folgenden Befehle anlegen:

# mknod -m 600 $LFS/dev/console c 5 1
# mknod -m 666 $LFS/dev/null c 1 3

Zum Erstellen der Gerätedateien in /dev bedienen Sie sich der Option --bind des Mount-Befehls, um das vorhandene Verzeichnis /dev des Host-Systems über den Befehl mount -v --bind /dev $LFS/dev nochmals einzubinden. Details hierzu finden sich im Kapitel 6.2.2. Darüber hinaus hängen Sie noch die virtuellen Kernel-Dateisysteme über die folgenden Befehle ein:

# mount -vt devpts devpts $LFS/dev/pts
# mount -vt tmpfs shm $LFS/dev/shm
# mount -vt proc proc $LFS/proc
# mount -vt sysfs sysfs $LFS/sys

Nun steht alles bereit, um die neue Arbeitsumgebung zu nutzen. Mit Chroot legen Sie temporär ein beliebiges Verzeichnis im Dateisystem als virtuelles Wurzelverzeichnis fest. Haben Sie alle Schritte dem Beispiel entsprechend vorgenommen, wählen Sie /mnt/lfs als Chroot-Environment. Den exakten Befehl finden Sie in Listing 2.

Listing 2
chroot "$LFS" /tools/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /tools/bin/bash --login +h

Damit haben Sie gleich die richtigen Parameter für Ihre neue Umgebung definiert. Im Anschluss erstellen Sie gemäß den Angaben im Kapitels 6.5 die (FHS-konforme) Ordnerstruktur des neuen LFS-Systems.

Nun erzeugen Sie einige notwendige Dateien (siehe Kapitel 6.6) wie zum Beispiel /etc/mtab, /etc/passwd, /etc/group sowie einige symbolische Links auf verschiedene Programme, die anderen Tools an bestimmten Stellen im Dateisystem erwarten. Anschließend geht es an die Installation der einzelnen Pakete, die wiederum in der gewohnten Art vor sich geht.

Haben Sie alle Pakete installiert, nutzen Sie als nächstes die Gelegenheit, um überflüssige Debugging-Symbole aus alle Binaries zu entfernen (Kapitel 6.59). So sparen Sie rund 90 MByte Platz. Anschließend heißt es Abschied nehmen von der temporären Arbeitsumgebung (der Toolchain), die sich im Verzeichnis /tools befindet. Dies geschieht durch einen geänderten Chroot-Befehl, den Sie ab sofort eingeben, um in die neue Chroot-Umgebung zu wechseln (Listing 3). Anschließend dürfen Sie das Verzeichnis /tools löschen.

Listing 3
chroot "$LFS" /usr/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login

Bootskripte einrichten

Das Paket lfs-bootscripts-6.3 enthält diverse Skripte zum Starten und Stoppen des Systems beim Booten und Herunterfahren. Einige Dinge erfordern vermutlich Anpassungen an das individuelle System, das meiste ist direkt lauffähig. Die Lektüre des Kapitels 7 insgesamt lohnt sich in jedem Fall, wenn Sie sich für die Zusammenhänge zentraler Kernkomponenten Ihres Linux-Systems interessieren. Scheuen Sie nicht der Mühe, die fehlenden notwendigen Konfigurationsdateien (etwa für das Netzwerk) zu erstellen. Der Lerneffekt ist immens.

Start frei!

Das Kapitel 8 beginnt mit dem Einrichten der Datei /etc/fstab, die festlegt, wo, in welcher Reihenfolge und mit welchen Optionen das System die Partitionen einhängt. Haben Sie die Datei entsprechend editiert, installieren Sie das Herzstück eines jeden Linux-Systems – den Kernel. Danach fehlt nur noch ein Bootloader wie beispielsweise Grub. Wie Sie diesen konfigurieren, erläutert Kapitel 8.4. Ob Sie es glauben oder nicht: Sie sind nun tatsächlich fertig, und nach einigen kleinen Aufräumarbeiten (Kapitel 9.3) starten Sie Ihr neues LFS-System.

Und jetzt?

Mit LFS haben Sie nun zunächst ein minimales Basissystem erstellt, das bis jetzt noch wenige Programme und Funktionen mitbringt. Außer einigen Standardwerkzeugen bietet es noch nicht viel. Das Teilprojekt BLFS (siehe Kasten “BLFS, ALFS und HLFS”) zeigt Ihnen, wie Sie viele weitere Anwendungen auf Ihrem LFS-System installieren, so dass am Ende ein komplett individuelles, auf Ihre Bedürfnisse zugeschnittenes Linux-System entsteht.

Sie können sich nun Gedanken machen, nach welchem Konzept Sie Ihr Paketmanagement betreiben möchten – Anregungen liefert Kapitel 6.3 des LFS-Buches. Wer sein System weiter absichern möchte, wirft einen Blick in die HLFS-Dokumentation, ebenfalls auf der Website des Projekts vorhanden.

BLFS, ALFS und HLFS

BLFS (Beyond LFS) ist eine weiterführende Anleitung des LFS-Projekts und beschreibt die Installation weiterführender Komponenten, wie zum Beispiel des Desktops (KDE oder Gnome) oder von Server-Diensten. Das Projekt ALFS (Automated LFS) versucht, die komplizierte und langwierige Installation eines LFS-Basissystems durch Automatisieren zu vereinfachen.

HLFS (Hardened LFS) hat zum Ziel, ein LFS-System zu härten, also abzusichern, und befindet sich noch in der Entwicklung. Das Teilprojekt CLFS (Cross LFS) beschäftigt sich dagegen mit dem Portieren von LFS auf verschiedene Plattformen.

Glossar

Sticky-Bit

Das Bit bewirkt, dass immer nur der Besitzer einer Datei die Datei löschen, unabhängig davon, wer in dem entsprechenden Verzeichnis ebenfalls Schreibrechte hat.

Linker

Bindet die dynamisch gelinkten Programme mit den entsprechenden Bibliotheksdateien zum Zeitpunkt des Aufrufs des jeweiligen Programms. Programmbibliotheken enthalten Routinen, die sich zum Einsatz in verschiedenen Programmen eignen. Der Vorteil liegt darin in der Platzersparnis und besseren Wartbarkeit.

Udev

Seit Version 2.6 verwendet der Kernel Udev zum dynamischen Verwalten der Gerätedateien. Es löst das ältere Devfs-Dateisystem ab, welches bis Kernel 2.4 im Einsatz war. Kapitel 7.4 des LFS-Buches enthält eine ausführliche Einführung in das Thema.

FHS

FHS steht für File System Hierarchy Standard und beschreibt eine Richtlinie für den Aufbau eines Linux-Dateisystems [8].

LinuxUser 01/2008 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben