- Mitglied seit
- 10 Mai 2006
- Beiträge
- 15,275
- Punkte für Reaktionen
- 1,751
- Punkte
- 113
Der schon etwas ältere Patch zum Entpacken des neuen SquashFS4 von AVM funktioniert in der Form, wie ich ihn im Freetz-Ticket 2691 hinterlegt habe, nicht mehr, wenn man ihn im Freetz für die Benutzung auf der Box selbst übersetzen lassen will.
Das "originale" SquashFS4 kennt die Form, die AVM dort verwendet, nicht. Der entscheidende Unterschied ist die Art und Weise, wie die Daten intern dargestellt werden in Abhängigkeit von der Prozessorarchitektur ("little endian" vs. "big endian", genaueres dazu liefert bei Interesse bestimmt die Wikipedia) und weil da schon mal große Verwirrung entstehen kann, wenn ein auf der einen Architektur erstelltes Image auf einer anderen Architektur be-/verarbeitet werden soll, hat man mit dem Erscheinen von SquashFS4 diese Unterscheidung im offiziellen Linux-Kernel eigentlich aufgegeben und nutzt dort nur noch das LE-Format. Nicht so aber bei AVM, da hat man sich dazu entschlossen, diesen Unterschied weiterzuführen und damit lassen sich diese Images nicht mit den Standard-Tools bearbeiten, die man bei jeder Linux-Distribution "dabei hat".
Da nun auch noch x86-Systeme (also "normale PCs") genau LE-basiert speichern, während der VR9 der 7490 das BE-Format bevorzugt (einige Prozessoren können auch - je nach Einstellungen - beides, allerdings meist nur das gesamte System und nicht einzelne Prozesse), hat man beim "Nacherfinden" der AVM-Änderungen nur die Wahl zwischen Pest (Anpassen des alten SquashFS3 an die neuen 4er-Strukturen) und Cholera (Anpassen von SquashFS4 an BE-Speicherung). Da parallel auch noch das Kompressionsverfahren ein anderes ist (LZMA2 auf der Basis der "XZ Utils" - http://tukaani.org/xz), bin ich den zweiten Weg gegangen, da er weniger Änderungen erfordert.
Aber die fehlende Unterstützung von BE-Formaten generell im SquashFS4 macht es wesentlich aufwändiger, wenn man aus einem einzigen Quelltext eine Version erzeugen will, die auf einer LE-Maschine arbeitet und aus demselben Quelltext - nur mit anderen Optionen übersetzt - eine weitere Version für BE-Architekturen erzeugen will. Zwar kriegt man das mit jeder Menge "bedingter Übersetzung" sicherlich auch vereinheitlicht, darunter leidet dann aber wieder die Lesbarkeit und so habe ich mich entschlossen, neben der im Freetz bereitgestellten Version für x86-Maschinen (bzw. generell LE-Hosts) noch eine weitere Version für BE zu erstellen, die eben u.a. dann benötigt wird, wenn man ein solches Image auf der FRITZ!Box 7490 selbst entpacken will ... was ja auch von einer älteren Version mit Telnetzugang (also bis inkl. 06.24) aus möglich ist, da kann man das sehr sinnvoll nutzen um sich "sein eigenes System" zu basteln, wie ich in den nächsten Tagen noch zeigen will.
Da auf einer FRITZ!Box dann auch noch die passende Bibliothek mit LZMA2-Unterstützung bereitgestellt werden muß (was bei einer x86-Maschine in der Regel die Paketverwaltung schon übernimmt), sind es für einen Freetz-Trunk am Ende zwei zusätzliche Pakete, wobei die LZMA2-Bibliothek nicht direkt installiert wird, sondern nur zum (statischen) Linken benötigt wird.
Die Version für einen Freetz-Trunk (auch diese kann im Moment nur entpacken, ob das Packen überhaupt benötigt wird, ist für mich persönlich sogar noch vollkommen offen) habe ich unter der URL
http://yourfritz.de/7490/unsquashfs4_avm.tar.gz
als Archiv bereitgestellt, dieses kann man in der Wurzel des Trunk-Verzeichnisses entpacken (die erste enthaltene Ebene ist "make"). Nach einem anschließenden "make oldconfig" sollte dann das Paket aktiv sein (da es ja ein Extra-Patch ist, wird als Standard für die Auswahl gleich "y" angenommen) und nach einem "make" sollte dann im fertigen Image zusätzlich eine Datei /usr/sbin/unsquashfs4 enthalten sein. Die Fähigkeiten dieses Programms wurden dabei bewußt so stark beschnitten, daß es nur noch für BE-Images mit xz-Komprimierung taugt und auch nur genau für SquashFS4. Aller Ballast, der da das Entpacken von älteren Images mit diesem Programm unterstützen sollte, ist - soweit das ohne tiefgreifene Änderungen möglich war - konsequent gestrichen worden.
Diese Datei kann man natürlich auch einzeln auf seine 7490 kopieren ... und nur für diesen Fall habe ich - entgegen meiner eigenen Überzeugung, daß jeder selbst aus den Quellen seine eigenen Programme übersetzen sollte - zusätzlich noch ein fertiges Binary (für gcc 4.8 und uClibc-0.9.33.2, das sollte sowohl unter 06.2x als auch unter 06.35 selbst laufen können) unter der URL http://yourfritz.de/7490/unsquashfs4 abgelegt. Ich übernehme für die Integrität des Binaries keinerlei Garantie, genauso wenig wie für die korrekte Funktion. Das steht alles unter GPLv2, damit sollte alles Wichtige gesagt sein - die Quellen (bzw. die Anpassungen der originalen Quellen - aka Patches) sind verfügbar, s.o.
Parallel habe ich auch noch ein x86-Binary dort abgelegt, unter der URL http://yourfritz.de/7490/unsquashfs4_avm_x86 - wer will, darf auch dieses laden, es basiert auf meinem Patch aus dem o.a. Freetz-Ticket.
Mit diesen Tools kann man dann - wenn man schon keinen Telnet-Zugang zur Box mehr hat zum Stöbern - auch mal einen Blick in die "Innereien" der neuen Version erhaschen, zumindest auf einer x86-Maschine oder eben sogar auf der 7490 selbst, in einer älteren Firmware-Version.
Wie man jetzt an das Dateisystem der 7490 in einem Update-Image herankommt, habe ich hier schon mal angetextet ... eine ausführlichere Abhandlung, was man - bis zur Unterstützung des 03.10.73er-Kernels in Freetz, die vermutlich noch etwas auf sich warten lassen wird - in der Zwischenzeit schon damit anfangen könnte, kommt Stück für Stück in den nächsten Tagen.
Ich habe das auch hier in das Freetz-Unterforum gepackt, weil es ja ein Patch für einen Freetz-Trunk ist ... ansonsten hat es mit Freetz erst einmal wenig zu tun (gehört eher nach "Modifikationen" allgemein), deshalb stelle ich es auch nicht ins Freetz-Trac. Wenn es jemand dort aufnehmen möchte ... kein Problem.
Das "originale" SquashFS4 kennt die Form, die AVM dort verwendet, nicht. Der entscheidende Unterschied ist die Art und Weise, wie die Daten intern dargestellt werden in Abhängigkeit von der Prozessorarchitektur ("little endian" vs. "big endian", genaueres dazu liefert bei Interesse bestimmt die Wikipedia) und weil da schon mal große Verwirrung entstehen kann, wenn ein auf der einen Architektur erstelltes Image auf einer anderen Architektur be-/verarbeitet werden soll, hat man mit dem Erscheinen von SquashFS4 diese Unterscheidung im offiziellen Linux-Kernel eigentlich aufgegeben und nutzt dort nur noch das LE-Format. Nicht so aber bei AVM, da hat man sich dazu entschlossen, diesen Unterschied weiterzuführen und damit lassen sich diese Images nicht mit den Standard-Tools bearbeiten, die man bei jeder Linux-Distribution "dabei hat".
Da nun auch noch x86-Systeme (also "normale PCs") genau LE-basiert speichern, während der VR9 der 7490 das BE-Format bevorzugt (einige Prozessoren können auch - je nach Einstellungen - beides, allerdings meist nur das gesamte System und nicht einzelne Prozesse), hat man beim "Nacherfinden" der AVM-Änderungen nur die Wahl zwischen Pest (Anpassen des alten SquashFS3 an die neuen 4er-Strukturen) und Cholera (Anpassen von SquashFS4 an BE-Speicherung). Da parallel auch noch das Kompressionsverfahren ein anderes ist (LZMA2 auf der Basis der "XZ Utils" - http://tukaani.org/xz), bin ich den zweiten Weg gegangen, da er weniger Änderungen erfordert.
Aber die fehlende Unterstützung von BE-Formaten generell im SquashFS4 macht es wesentlich aufwändiger, wenn man aus einem einzigen Quelltext eine Version erzeugen will, die auf einer LE-Maschine arbeitet und aus demselben Quelltext - nur mit anderen Optionen übersetzt - eine weitere Version für BE-Architekturen erzeugen will. Zwar kriegt man das mit jeder Menge "bedingter Übersetzung" sicherlich auch vereinheitlicht, darunter leidet dann aber wieder die Lesbarkeit und so habe ich mich entschlossen, neben der im Freetz bereitgestellten Version für x86-Maschinen (bzw. generell LE-Hosts) noch eine weitere Version für BE zu erstellen, die eben u.a. dann benötigt wird, wenn man ein solches Image auf der FRITZ!Box 7490 selbst entpacken will ... was ja auch von einer älteren Version mit Telnetzugang (also bis inkl. 06.24) aus möglich ist, da kann man das sehr sinnvoll nutzen um sich "sein eigenes System" zu basteln, wie ich in den nächsten Tagen noch zeigen will.
Da auf einer FRITZ!Box dann auch noch die passende Bibliothek mit LZMA2-Unterstützung bereitgestellt werden muß (was bei einer x86-Maschine in der Regel die Paketverwaltung schon übernimmt), sind es für einen Freetz-Trunk am Ende zwei zusätzliche Pakete, wobei die LZMA2-Bibliothek nicht direkt installiert wird, sondern nur zum (statischen) Linken benötigt wird.
Die Version für einen Freetz-Trunk (auch diese kann im Moment nur entpacken, ob das Packen überhaupt benötigt wird, ist für mich persönlich sogar noch vollkommen offen) habe ich unter der URL
http://yourfritz.de/7490/unsquashfs4_avm.tar.gz
als Archiv bereitgestellt, dieses kann man in der Wurzel des Trunk-Verzeichnisses entpacken (die erste enthaltene Ebene ist "make"). Nach einem anschließenden "make oldconfig" sollte dann das Paket aktiv sein (da es ja ein Extra-Patch ist, wird als Standard für die Auswahl gleich "y" angenommen) und nach einem "make" sollte dann im fertigen Image zusätzlich eine Datei /usr/sbin/unsquashfs4 enthalten sein. Die Fähigkeiten dieses Programms wurden dabei bewußt so stark beschnitten, daß es nur noch für BE-Images mit xz-Komprimierung taugt und auch nur genau für SquashFS4. Aller Ballast, der da das Entpacken von älteren Images mit diesem Programm unterstützen sollte, ist - soweit das ohne tiefgreifene Änderungen möglich war - konsequent gestrichen worden.
Diese Datei kann man natürlich auch einzeln auf seine 7490 kopieren ... und nur für diesen Fall habe ich - entgegen meiner eigenen Überzeugung, daß jeder selbst aus den Quellen seine eigenen Programme übersetzen sollte - zusätzlich noch ein fertiges Binary (für gcc 4.8 und uClibc-0.9.33.2, das sollte sowohl unter 06.2x als auch unter 06.35 selbst laufen können) unter der URL http://yourfritz.de/7490/unsquashfs4 abgelegt. Ich übernehme für die Integrität des Binaries keinerlei Garantie, genauso wenig wie für die korrekte Funktion. Das steht alles unter GPLv2, damit sollte alles Wichtige gesagt sein - die Quellen (bzw. die Anpassungen der originalen Quellen - aka Patches) sind verfügbar, s.o.
Parallel habe ich auch noch ein x86-Binary dort abgelegt, unter der URL http://yourfritz.de/7490/unsquashfs4_avm_x86 - wer will, darf auch dieses laden, es basiert auf meinem Patch aus dem o.a. Freetz-Ticket.
Mit diesen Tools kann man dann - wenn man schon keinen Telnet-Zugang zur Box mehr hat zum Stöbern - auch mal einen Blick in die "Innereien" der neuen Version erhaschen, zumindest auf einer x86-Maschine oder eben sogar auf der 7490 selbst, in einer älteren Firmware-Version.
Wie man jetzt an das Dateisystem der 7490 in einem Update-Image herankommt, habe ich hier schon mal angetextet ... eine ausführlichere Abhandlung, was man - bis zur Unterstützung des 03.10.73er-Kernels in Freetz, die vermutlich noch etwas auf sich warten lassen wird - in der Zwischenzeit schon damit anfangen könnte, kommt Stück für Stück in den nächsten Tagen.
Ich habe das auch hier in das Freetz-Unterforum gepackt, weil es ja ein Patch für einen Freetz-Trunk ist ... ansonsten hat es mit Freetz erst einmal wenig zu tun (gehört eher nach "Modifikationen" allgemein), deshalb stelle ich es auch nicht ins Freetz-Trac. Wenn es jemand dort aufnehmen möchte ... kein Problem.
Zuletzt bearbeitet: