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

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

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben:Die Frage ist nur, ob U-Boot bei gesetztem CONFIG_SQUASHFS_LZMA ein nicht-LZMA-Image booten kann.
Die schnellste Methode, das zu testen, ist beim build eines LZMA-Images die Datei
mksquashfs-lzma durch mksquashfs-nolzma zu ersetzen. Innerhalb des build-Prozesses
ist alles auf LZMA (U-Boot, Kernel) eingestellt, nur die Root-Partition selber ist
reines Squashfs, ohne LZMA.

Beim Booten erscheint das:

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
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' ***
=>
LZMA-U-Boot kann den Kernel also nicht aus einer Squashfs-Partition lesen.
Das Verschieben des Kernels in eine Cramfs-Partition oder nach /var übersteigt
leider meine Kenntnisse des Imagesaufbaus. Hast Du da Tipps für mich?
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 »

Beide Patches, Squashfs-3.0 und LZMA für Kernel 2.6, wurden ans aktuelle CVS angepasst.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

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

Beitrag von seife »

Sorry, ich bin ab übermorgen 3 Wochen im Urlaub und werde deshalb vorher nichts mehr (kaputt?)machen. Es ist also nicht so, dass ich an deiner Arbeit kein Interesse hätte, mir fehlt momentan schlicht die Zeit ;)
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 »

Hi
LZMA-U-Boot kann den Kernel also nicht aus einer Squashfs-Partition lesen.
Das Verschieben des Kernels in eine Cramfs-Partition oder nach /var übersteigt
leider meine Kenntnisse des Imagesaufbaus. Hast Du da Tipps für mich?
ich boote den Kernel aus einer JFFS2 Partition in einem SQUASHFS-LZMA Image die Boot Zeiten sind rasen schnell.
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

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

Beitrag von AudioSlyer »

Vielleicht wollt Ihr auch die JFFS2 Partition mit LZMA komprimieren.
https://www.dbox2world.selfip.com/board ... 8324fcfeff
Gruss
AS
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 »

AudioSlyer hat geschrieben:Vielleicht wollt Ihr auch die JFFS2 Partition mit LZMA komprimieren.
Das bringt im Fall des Kernel nichts, da dieser praktisch nicht komprimierbar ist.
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

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

Beitrag von AudioSlyer »

Den Kernel muss da ja auch nicht rein :wink:
doc
Contributor
Beiträge: 1623
Registriert: Donnerstag 10. Januar 2002, 20:03

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

Beitrag von doc »

Wieso soll der Kernel nicht komprimierbar sein?
Das komprimieren ist nicht das Problem, eher das schnelle Entpacken in einer akzeptablen Zeit. Auf anderen Embedded Systems wird dies produktiv genutzt. Allerdings haben diese Systeme auch genügend RAM und CPU Power um das so zu nutzen.

Im Fall für die dbox2 ist dies natürlich kein Thema. Hier dürfte das relativ langsame Lesen vom Flash mit der moderaten Taktfrequenz von 66MHz einher gehen. Und 32MB Ram lassen ja auch nur wenig Spielraum.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

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

Beitrag von Houdini »

AudioSlyer hat geschrieben:
Vielleicht wollt Ihr auch die JFFS2 Partition mit LZMA komprimieren.
Damit hatte ich mal angefangen, bin aber nicht fertiggeworden, danke für den link.
Das bringt im Fall des Kernel nichts, da dieser praktisch nicht komprimierbar ist.
bei jffs2 werden schon gepackte Dateien nicht mehr neu gepackt, das bringt somit nix

Ich hatte mal mit einem hochkomprimierten bz2 kernel im jffs2 experimentiert, das hat auch funktioniert ca. 100kb weniger im Flash
Das Entpacken des Kernels beim Starten hat dann ca 45 Sekunden gedauert...
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:die Boot Zeiten sind rasen schnell.
Kannst Du bitte die Bootzeiten mit und ohne besagtem Patch posten?
doc hat geschrieben:Wieso soll der Kernel nicht komprimierbar sein?
Entweder es ist so, oder ich mache was falsch.

Hier ist ein 2.4er-Kernel:
-rw-r--r-- 1 root root 669835 4. Aug 21:48 vmlinuz
der mit bzip2 komprimiert wird:
# bzip2 -9zvv vmlinuz
vmlinuz:
block 1: crc = 0x75133db7, combined CRC = 0x75133db7, size = 669810
final combined CRC = 0x75133db7
0.996:1, 8.034 bits/byte, -0.43% saved, 669835 in, 672714 out.
# ls -la
-rw-r--r-- 1 root root 672714 4. Aug 21:48 vmlinuz.bz2
Die Datei ist sogar größer geworden... gzip und zip sind auch nicht besser:
-rw-r--r-- 1 root root 669692 4. Aug 21:48 vmlinuz.gz
-rw-r--r-- 1 root root 669812 5. Aug 13:55 vmlinuz.zip
seife bestätigt übrigens meine Beobachtungen:
seife hat geschrieben:Wirklich komprimieren lässt sich das Kernel-image eh nicht.
Mir gefällt übrigens die /var-Idee von seife besser, damit wird Platz gespart:
Man könnte ja den Kernel in eine extra cramfs-Partition machen (das verschenkt allerdings Platz, weil die Partition immer etwas grösser sein wird, als unbedingt notwendig), oder gleich nach /var, das dann entsprechend grösser wäre.
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:ich boote den Kernel aus einer JFFS2 Partition in einem SQUASHFS-LZMA Image die Boot Zeiten sind rasen schnell.
Mit dem Einverständnis von mohousch habe ich hier den Patch hochgeladen: kernel_jffs.diff

Der Patch ist z.Zt. nur für Kernel 2.4 und arbeitet mit einer festen Partitionsgröße
für die jffs-Partition. Leider kann ich keinen Zeitvorteil beim Booten entdecken.

Sinn und Zweck dieses Patches ist allerdings, den Kernel unabhängig davon zu machen,
ob ein Squashfs-komprimiertes root-Dateisystem zusätzlich mit LZMA komprimiert
wurde oder nicht: http://forum.tuxbox-cvs.sourceforge.net ... 35#p358935
seife hat geschrieben:Wenn ich die Patches so sehe, müsste es auch gehen, zur Laufzeit zu entscheiden ob LZMA oder nicht. Das hätte den Vorteil, dass der Kernel beide Versionen verarbeiten könnte und nur noch das mksquashfs angepasst werden müsste...
...dummerweise werde ich in absehbarer Zeit nicht dazu kommen, das auszuprobieren... :(
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:"make clean" ist weiterhin erforderlich, da eine Änderung des LZMA-Configure-Parameters die Neukompilierung des Kernels und Uboots erfordert.
... oder Kernel und Uboot werden in cdkflash/ in unterschiedliche Dateien/Verzeichnisse gepackt.
Hier gibt es einen Patch zum Testen, der --enable-lzma/--disable-lzma überflüssig macht: EDIT: Patch ist im CVS

Die aktuellen make targets flash-$gui-squashfs-* kompilieren weiterhin ein Squashfs-LZMA-
Image, da --enable-lzma der Default ist, Beispiele:
neutrino-squashfs.img1x
neutrino-squashfs.img2x
Die neuen make targets flash-$gui-squashfs_nolzma-* kompilieren Squashfs-
Images ohne LZMA, Beispiele:
@seife: Das wäre für Dich wichtig ;)
neutrino-squashfs_nolzma.img1x
neutrino-squashfs_nolzma.img2x
Beide make targets können im gleichen Kompilierverzeichnis nacheinander aufgerufen werden.

Bitte beachten, dass sich die customization-Skript-Dateinamen für die nolzma targets ändern:
customizations/neutrino-squashfs_nolzma.img2x-local.sh
customizations/neutrino-squashfs_nolzma.img1x-local.sh
customizations/root-squashfs_nolzma-local.sh
customizations/root-neutrino-squashfs_nolzma-local.sh
customizations/root-neutrino.squashfs_nolzma-local.sh
Zuletzt geändert von rhabarber1848 am Samstag 4. Juli 2009, 17:50, insgesamt 1-mal geändert.
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:Hier gibt es einen Patch zum Testen, der --enable-lzma/--disable-lzma überflüssig macht
committed
http://article.gmane.org/gmane.comp.vid ... ox.scm/770
http://article.gmane.org/gmane.comp.vid ... ox.scm/771