Paketverwaltung für Freetz
Der folgende Beitrag beschreibt die Grundlagen, die notwendig sind, um mit Freetz Pakete nach dem Flashvorgang installieren zu können. Grundlage dafür sind ein transluzentes Dateisystem (mini_fo) und ein Paketverwaltungssystem (ipkg, opkg). Diese Erweiterung bietet gegenüber dem mitkompilieren der Pakete beim Image-Build folgende Vorteile:
- Für jedes FritzBox-Modell existiert pro AVM Image-Version ein Basis-Image, das nur geringfügige Änderungen gegenüber dem originalen AVM-Image enthält (Stabilität)
- Weitere Pakete können zur Laufzeit hinzugefügt werden. Alle dazugehörigen Modifikationen am Dateisystem werden dabei extern gespeichert (z.B. auf einem USB-Stick)
- Treten Probleme im Betrieb auf, kann durch das Entfernen des USB-Sticks und anschließendem Reboot das Basis-Image verwendet werden.
- Die benötigten Erweiterungen bzw. Pakete müssen beim Erstellen des Images nicht kompiliert werden. Sie können nach dem Flashen des Images von einem Paket-Repository im Internet geladen werden
- Im Idealfall wird bei einem Firmware-Update (z.B. bei einer neuen Version des AVM-Images) nur das Basis-Image aktualisiert. Die bereits installierten Erweiterungen können, falls die Abhängigkeiten zum Basisystem nicht zu groß sind, mit dem neuen Image weiterverwendet werden
- das Verzeichnis /etc kann wie unter Linux üblich als Konfigurationsverzeichnis verwendet werden.
Erweiterung des Dateisystems
Transluzente Dateisystems
Transluzente Dateisysteme (TFS) ermöglichen den schreibenden Zugriff auf Read-Only-Dateisysteme (ROFS). Dazu wird das TFS über das ROFS gelegt. Lesezugriffe auf bereits existierende Dateien werden an das ROFS weitergeleitet, Modifikationen werden abgefangen und in einen zusätzlichen Speicher geschrieben. Alle Lese- und Schreibzugriffe auf das Dateisystem sind für den Benutzer bzw. die Anwendungen transparent.
Anbindung externer Medien
Als Speicherort für die Änderungen am Dateisystem kann je nach FritzBox-Modell entweder ein über USB angeschlossenes Medium (USB-Stick, Festplatte) oder der interne Speicher der FritzBox verwendet werden. Um das Rechtesystem von Linux auf dem beschreibbaren Dateisystem abbilden zu können, muss ein Dateisystem wie ext2 oder ext3 verwendet werden (SquashFS scheidet aus, da es ein Read-Only-Dateisystem ist). Aufgrund der niedrigen Speicherpreise sollte es kein Problem mehr sein, den ganzen USB-Stick für das TFS zu verwenden. Man könnte alternativ auch eine Image-Datei auf einem mit FAT formatierten USB-Stick anlegen, die wiederum mit ext2/3 formatiert wird. Um diese Datei einzubinden, müsste jedoch zunächst der USB-Stick ins Dateisystem eingebunden werden um anschließend auf die Image-Datei zugreifen zu können. Dieser Vorgang würde die automatische Einbindung des TFS komplizierter machen und wird zunächst vernachlässigt.
Integration in den Bootvorgang
Das externe Dateisystem sollte baldmöglichst nach dem Start des Kernels eingehängt werden, damit auch Änderungen bzw. Erweiterungen an den Init-Skripten, die durch installierte Pakete erzeugt werden, beim Startvorgang berücksichtigt werden. (Inittab????). Das Integrationsskript prüft zunächst, ob ein USB-Stick mit einem der unterstützten Dateisysteme angeschlossen ist und bindet ihn ein, falls verfügbar. Ist kein USB-Stick vorhanden, wird das Basissystem ohne TFS gestartet. (Man sollte vielleicht noch überprüfen, ob bestimmte "Markierungen" im Dateisystem des USB-Sticks vorhanden sind, um sichzerzustellen, dass der richtige USB-Stick verwendet wird).
Paketverwaltung
Unterstützung mehrerer Architekturen
Erstellung von Paketen
Bereitstellung der Pakete
Installation von Paketen
Links
Ein Beispiel zur Verwendung von mini_fo mit Freetz
Diskussionsthread über Opkg und mini_fo im IP Phone Forum
Ein weiterer Diskussionsthread über Opkg und mini_fo im IP Phone Forum
Debian New Maintainers' Guide
Kommentare
Comment by oliver on Mi 26 Jan 2011 11:44:01 CET
Zu dem Punkt Integration in den Bootvorgang: Das frühe Mounten eines USB-Sticks ist nicht so einfach, da der Vorgang boxspezifisch ist. Das mounten von mini_fo dagegen funktioniert für alle Boxen gleich. Daher würde es die Sache sehr erleichtern, wenn wir erstmal mit mini_fo und jffs2 auskämen. Praktikabel ist das natürlich nur für die 16 MB Flash Boxen. Ich nehme an, dass man mit unionfs den USB-Stick später auch noch irgendwie einbinden könnte? Es müsste dann bei der Installation der dynamischen Pakete irgendwo vermerkt werden, ob sie im ersten (jffs2) oder zweiten (usb) Schritt gestartet werden sollen.
Das ganze hätte natürlich den Nachteil, dass man keine Änderungen oder Erweiterungen an den Init-Skripten machen kann. Da die Pakete erst nach Abschluss des Bootvorgangs verfügbar wären. Andererseits haben wir mit external ja schon ein Grundgerüst, wie das dynamisch (Stick rein/raus) funktioniert.
Comment by hippie2000 on Di 01 Mär 2011 23:51:14 CET
Siehe auch