LZMA-Unterstützung für Kernel 2.6

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

LZMA-Unterstützung für Kernel 2.6

Beitrag von rhabarber1848 »

Hi,

da mein Anliegen in diesem Thread OT war, nun ein neuer Thread :wink: Zitat:
seife hat geschrieben:
rhabarber1848 hat geschrieben:Ich versuche mich gerade daran, dem Kernel 2.6.23 LZMA-Unterstützung zu verpassen.
Hat da schon jemand in der Richtung gearbeitet?
Ja, aber der Kernel oopste immer beim mounten. Und da LZMA ein Ausbund an Hässlichkeit ist, habe ich mir das nicht genauer angeschaut.
Ich möchte gerne im Kernel 2.6 LZMA-Unterstützung drin haben, bringt Platzersparnis.

Ein Beispiel der erzielbaren Partitionsgrößen:
seife hat geschrieben:2.6: root-neutrino.squashfs 5337088
2.4: root-neutrino.squashfs 4456448

Wenn jemand die squashfs-lzma-Patches auf 2.6.23 portiert, dann wird das auch wesentlich kleiner, aber mir war der Code zu eklig
Ich möchte nun einen neuen Versuch dazu starten mit lzma457, der neue Patch ist vom März 2008,
vielleicht ist es jetzt einfacher geworden. Dieser Thread soll als Infosammelstelle zum Thema dienen.

@seife:
Hast Du noch den Patch von Deinem letzten Versuch? Ich würde mir den gerne
anschauen um zu sehen, ob ich mit meinen Bemühungen auf dem richtigen Weg bin.

Die Squashfs-LZMA-Dateien in boot/u-boot-tuxbox/fs/squashfs/ sind von 2006,
diese müssen sicherlich auch aktualisiert werden, oder?
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von seife »

rhabarber1848 hat geschrieben:@seife:
Hast Du noch den Patch von Deinem letzten Versuch? Ich würde mir den gerne
anschauen um zu sehen, ob ich mit meinen Bemühungen auf dem richtigen Weg bin.
linux-2.6.23-sqlzma.diff
Aber vorsicht: ich bin sicher auf dem falschen Weg, schliesslich funktionierts nicht ;)
Die Squashfs-LZMA-Dateien in boot/u-boot-tuxbox/fs/squashfs/ sind von 2006,
diese müssen sicherlich auch aktualisiert werden, oder?
Nein. Zumindest hat der u-boot sich nicht beschwert sondern den Kernel anstandslos geladen. Der Kernel bootete einwandfrei, bis er halt aus dem squashfs was lesen wollte...
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von rhabarber1848 »

seife hat geschrieben:
Die Squashfs-LZMA-Dateien in boot/u-boot-tuxbox/fs/squashfs/ sind von 2006,
diese müssen sicherlich auch aktualisiert werden, oder?
Nein. Zumindest hat der u-boot sich nicht beschwert sondern den Kernel anstandslos geladen.
Vielleicht hast Du mit einer älteren Version von Squashfs/LZMA gearbeitet?
Ich habe gerade diese Meldung von U-Boot (boot/u-boot-tuxbox/fs/squashfs/squashfs.c) erhalten:

Code: Alles auswählen

Options:
  1: console on ttyCPM0 (2.6)
  2: console on fb0
  3: console on ttyS0 (2.4)
Select option (1-3), other keys to stop autoboot:  0
### FS (squashfs) loading 'vmlinuz' to 0x200000
SQUASHFS error: no squashfs_magic: 71736873
### FS LOAD ERROR<0> for vmlinuz!
............................................................... done
Un-Protected 63 sectors
## Booting image at 00200000 ...
u-boot: Bad Magic Number *** THIS IS NOT THE FAMOUS dbox2 'Bad Magic' ***
=>
mksquashfs schreibt, dass es ein Image Version 3.1 erstellt. Bisher war es wohl Version 3.0?
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben:Die Squashfs-LZMA-Dateien in boot/u-boot-tuxbox/fs/squashfs/ sind von 2006,
diese müssen sicherlich auch aktualisiert werden, oder?
Vielleicht auch nicht:
http://www.jackthegrabber.de/viewtopic. ... 9679#89679
Denn wenn dein kernel mit im Root liegt und dieser Bereich mit LZMA gepackt ist, muss das Ubbot ebenfalls LZMA enthalten( wie das geht habe ich auch noch nicht herausgefunden). Ansonsten gehts über Umwege!
Kernel in eine eigene Partition packen und normal packen. Dann denn root mit lzma und den var wieder normal. Somit haste dann 3 Partitionen bzw. vier.
Uboot+kernel+Root(lzma)+Var
U-Boot versteht mittlerweile zwar LZMA, aber wahrscheinlich nur eine ältere Version.

EDIT: Eine weitere Möglichkeit:
http://forum.tuxbox-cvs.sourceforge.net ... 22#p305822
Houdini hat geschrieben:du kannst den kernel auch mit dem uboot aus der var-partition laden.
Dazu musst du aber uboot entsprechend konfigurieren.
Damit könnte root entsprechend kleiner sein, hat jemand einen Tipp, wie das o.g. zu machen wäre?
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von seife »

Im u-boot hatte ich, wenn ich mich recht erinnere, einfach das lzma-config-flag auf 1 gesetzt, wie es auch bei kernel 2.4 ist. Der Kernel wurde dann geladen.

Also u-boot macht keinerlei Problem. Die Kernel-unterstützung war das Problem.
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von mohousch »

SQUASHFS error: no squashfs_magic: 71736873
block magic bit stimmt nicht mehr mit der von mksquashfs, das kernel Patch ist für squashfs3.1 und hoher
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von rhabarber1848 »

mohousch hat geschrieben:
SQUASHFS error: no squashfs_magic: 71736873
block magic bit stimmt nicht mehr mit der von mksquashfs, das kernel Patch ist für squashfs3.1 und hoher
Schon komisch, in boot/u-boot-tuxbox/include/squashfs/squashfs_fs.h

Code: Alles auswählen

#define SQUASHFS_MAGIC                  0x73717368
Die Bytes sind paarweise vertauscht, woran kann das liegen?

Ich habe mksquashfs aus den neuesten Sourcen neu gebaut:

Code: Alles auswählen

+       gunzip -cd ../Archive/squashfs3.3.tar.gz | TAPE=- tar -x && \
+       bunzip2 -cd ../Archive/lzma457.tar.bz2 | TAPE=- tar -x && \
+       bunzip2 -cd ../Archive/sqlzma3.3-457-2.tar.bz2 | TAPE=- tar -x && \
Zur Zeit lasse ich gerade einen neuen Build laufen, vielleicht ist irgendwas
mit der Endianness durcheinander geraten.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von Houdini »

wie lautet denn dein mksquashfs Aufruf?
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von rhabarber1848 »

Houdini hat geschrieben:wie lautet denn dein mksquashfs Aufruf?
unverändert so wie im CVS, mit Parameter "-be" für big endian.

Die "verdrehte" Magic ist übrigens nicht falsch, sondern in sqmagic.h definiert:

Code: Alles auswählen

#define SQUASHFS_MAGIC_LZMA             0x71736873
#define SQUASHFS_MAGIC_LZMA_SWAP        0x73687371
@seife: Dein Patch bezieht sich nur auf den Kernel, hast Du das Image mit
Hilfe der vom CDK kompilierten mksquashfs gebaut, basierend auf Squashfs 3.0?

In meinem Patch habe ich Squashfs 3.3, sqlzma3.3-457-2 und lzma457 benutzt,
auch zum Kompilieren von mksquashfs. Diese Version erstellt Images mit
Magic 71736873 (SQUASHFS_MAGIC_LZMA), was U-Boot wiederum nicht akzeptiert.

U-Boot arbeitet mit folgenden Werten:

Code: Alles auswählen

# grep "MAJOR\|MINOR\|MAGIC" boot/u-boot-tuxbox/include/squashfs/squashfs_fs.h
#define SQUASHFS_MAJOR                  3
#define SQUASHFS_MINOR                  0
#define SQUASHFS_MAGIC                  0x73717368
#define SQUASHFS_MAGIC_SWAP             0x68737173
Ich habe dann versucht, Squashfs 3.2-r2 zum Laufen zu bekommen (Kernelmodul + mksquashfs),
allerdings werden die Images auch wieder mit SQUASHFS_MAGIC_LZMA, was U-Boot nicht versteht.

Ich bin bisher noch gar nicht soweit gekommen, dass U-Boot den Kernel aus dem Image
heraus starten konnte... :(

Hat noch jemand eine Idee?
Müssen die Versionen von mksquashfs und das Kernelmodul nicht zusammen passen?
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von mohousch »

@rhabarber1848 kam leider nicht zum was zu testen, habe aber mitgelesen in der squashfs3.1 und höher der Block-Size ist 131072 (was doppelt so gross als in squashfs3.0) sprich ein kompletten Sector des Flashes

squashfs3.1

Code: Alles auswählen

/* default size of data blocks */
#define SQUASHFS_FILE_SIZE		131072
#define SQUASHFS_FILE_LOG		17

#define SQUASHFS_FILE_MAX_SIZE		1048576
squashfs3.0

Code: Alles auswählen

/* default size of data blocks */
#define SQUASHFS_FILE_SIZE		65536
#define SQUASHFS_FILE_LOG		16

#define SQUASHFS_FILE_MAX_SIZE		65536
vielleicht ist leichter wenn Du mit der squashfs3.0 weiter machst und ein passendes kernel dafür machst.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von seife »

rhabarber1848 hat geschrieben:@seife: Dein Patch bezieht sich nur auf den Kernel, hast Du das Image mit
Hilfe der vom CDK kompilierten mksquashfs gebaut, basierend auf Squashfs 3.0?
Wenn ich mich nicht komplett falsch erinnere: Ja.
Ich habe im U-Boot config.h einfach das #define für lzma angemacht (wie beim 2.4er kernel) und die mksquashfs auch einfach wie für den 2.4er gebaut.
Und u-boot hat den kernel geladen.

Mit dem Kernelmodul wirst du nicht weit kommen, es sei denn du willst auch noch eine initrd basteln... Ansonsten brauchst du squashfs fest im Kernel, da ja das root-FS davon booten soll.
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von mohousch »

könnte leider keine Diff erstellen <beim auspacken des linux habe mein gepachten linux überschrieben :dash: :dash: >

versuche es mit dem Dateien http://rapidshare.com/files/121558124/l ... 3-lzma.zip
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von rhabarber1848 »

seife hat geschrieben:Mit dem Kernelmodul wirst du nicht weit kommen, es sei denn du willst auch noch eine initrd basteln... Ansonsten brauchst du squashfs fest im Kernel, da ja das root-FS davon booten soll.
Keine Sorge
CONFIG_SQUASHFS=y
ist gesetzt, ich habe mich nur etwas ungenau ausgedrückt, Kernelmodul = Kerneltreiber
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von mohousch »

Edit:nutze den Patch weiter unten

hoffe das es durch läuft :)
Zuletzt geändert von mohousch am Freitag 13. Juni 2008, 16:22, insgesamt 2-mal geändert.
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von PT-1 »

mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von mohousch »

so jetzt habe ich ein lauffähiges linux-2.6.23-squashfs3.0-lzma Image, allerdings nicht mit dem o.g Patch nach zig Patching den Tool mksquashfs und den U-boot hat immer kernel Ooops gegeben. also wieder zu squashfs3.0 (hoffe Seife hat nichts dagegen :) ) damit braucht man auch nur ein mksquashfs-Tool und 2.4 Kernel ist sowieso ab 3.1 nicht mehr unterstützt d.h habe noch Aenderungen in den hostapps.mk genmacht, folgende Patche sind nötig:

Edit:Patch weiter unten

PS:Sorry für mein Deutsch.
Zuletzt geändert von mohousch am Freitag 13. Juni 2008, 16:23, insgesamt 2-mal geändert.
Hollo
Einsteiger
Einsteiger
Beiträge: 226
Registriert: Mittwoch 22. August 2001, 00:00

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von Hollo »

thX mohousch

werde ich mal antesten :D
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von rhabarber1848 »

mohousch hat geschrieben:so jetzt habe ich ein lauffähiges linux-2.6.23-squashfs3.0-lzma Image
Ich auch, sieht gut aus. Ich werde noch ein wenig testen und dann Images und einen
aktualisierten Patch rausbringen.
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von mohousch »

so letzte Patch, squashfs Magic mit dem für 2.4 geglichen <keine Konflikte mit mksquashfs für 2.4>

http://rapidshare.com/files/121885281/l ... 2008.patch
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von rhabarber1848 »

mohousch hat geschrieben:so letzte Patch, squashfs Magic mit dem für 2.4 geglichen <keine Konflikte mit mksquashfs für 2.4>
Sieht sehr gut aus, cdk/Patches/linux-2.6.23-squashfs3.3.patch kann
noch aus dem CVS gelöscht werden, ist nicht mehr nötig.

Zwei Testbuilds mit identischen ./configure-Parametern erzeugten folgende root-Images:

Code: Alles auswählen

kernel 26 lzma      6156288 root-neutrino.squashfs
kernel 26 ohne lzma 7421952 root-neutrino.squashfs
Boot-Test steht noch aus, jetzt läuft Fußball :wink:
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von Rebel1 »

mohousch hat geschrieben:so letzte Patch, squashfs Magic mit dem für 2.4 geglichen <keine Konflikte mit mksquashfs für 2.4>

http://rapidshare.com/files/121885281/l ... 2008.patch
Hi,
ich habe deinen Patch mittlerweile auch getestet und das Image bootet auch ohne Probleme, bis jetzt kann ich auch keine unangenehmen Nebenwirkungen feststellen.

Gruss,
René
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von Rebel1 »

Was mir beim 2.6er aufgefallen ist, vielleicht kann ja seife was damit anfangen.
In meinem Kernellog kommt immer wieder.

Code: Alles auswählen

[22827.032424] avia_gt_dmx: queue 3 overflow (count: 1)
[22828.209985] avia_gt_dmx: queue_data_move: 4136 bytes requested, 0 available
[22837.935705] avia_gt_dmx: queue_data_move: 3948 bytes requested, 0 available
[22856.027471] avia_gt_dmx: queue_data_move: 4136 bytes requested, 0 available
[22856.047889] avia_gt_dmx: queue_data_move: 188 bytes requested, 0 available
[25493.536297] avia_gt_dmx: queue_data_move: 4136 bytes requested, 0 available
[25547.891162] avia_gt_dmx: queue_data_move: 4136 bytes requested, 0 available
[25877.800612] avia_gt_dmx: queue_data_move: 4136 bytes requested, 0 available
[26053.417472] avia_gt_dmx: queue_data_move: 4136 bytes requested, 0 available
[26056.013121] avia_gt_dmx: queue_data_move: 4136 bytes requested, 0 available
[26140.646872] avia_gt_dmx: queue_data_move: 4136 bytes requested, 0 available
[26979.905781] avia_gt_dmx: queue_data_move: 3948 bytes requested, 0 available
[26979.905961] avia_gt_dmx: queue_data_move: 188 bytes requested, 0 available
[27028.999902] avia_gt_dmx: queue_data_move: 4136 bytes requested, 0 available
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von mb405 »

also ich hab grad mal ein image erstellt und alles ist einwandfrei durchgelaufen
im log kommt das und dann ist ruhe :(

Code: Alles auswählen

check 'neutrino-squashfs.img1x' for bad magic bytes.
No bad magic bytes found
...
check 'neutrino-squashfs.img2x' for bad magic bytes.
No bad magic bytes found
..

Code: Alles auswählen

...
Flash-FS bootstrap loader (v1.5)

Found Flash-FS superblock version 3.1
Found file /root/platform/philips-dbox2/kernel/os in Flash-FS
debug: Got Block #0040

will verify ELF image, start= 0x800000, size= 163252
verify sig: 262
Branching to 0x40000


U-Boot 1.2.0 (Tuxbox) (Jun 13 2008 - 13:10:14)

CPU:   PPC823ZTnnB2 at 65.900 MHz: 2 kB I-Cache 1 kB D-Cache
Board: DBOX2, Philips, BMon V1.0
       Watchdog enabled
I2C:   ready
DRAM:  32 MB
FLASH:  8 MB
Scanning JFFS2 FS: . done.
find_inode failed for name=boot.conf
load: Failed to find inode
FB:    ready
LCD:   ready
In:    serial
Out:   serial
Err:   serial
Net:   SCC ETHERNET

Options:
  1: console on ttyCPM0 (2.6)
  2: console on fb0
  3: console on ttyS0 (2.4)
Select option (1-3), other keys to stop autoboot:  0
### FS (squashfs) loading 'vmlinuz' to 0x200000
lzma_fs returned unexpected result 0x1
lzma_fs returned unexpected result 0x1
SQUASHFS error: reading inode block
### FS LOAD ERROR<0> for vmlinuz!
............................................................... done
Un-Protected 63 sectors
## Booting image at 00200000 ...
u-boot: Bad Magic Number *** THIS IS NOT THE FAMOUS dbox2 'Bad Magic' ***
=>
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von mb405 »

so ich hab noch 4x image neu erstellt, und bei allen 4x kam meldung, das 2x image bad ist.
das 1x ist in ordnung. sehr seltsam.
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Re: LZMA-Unterstützung für Kernel 2.6

Beitrag von Rebel1 »

Hi,
du hast aber hoffentlich nur den Patch hier http://rapidshare.com/files/121885281/l ... 2008.patch alleine auf das CVS angewendet. Denn wenn du mohousch vorige Patches auch noch mit drin hast, stimmt die Squashfs Magic nicht.