Squashfs mit LZMA bootet nicht

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
geko37
Einsteiger
Einsteiger
Beiträge: 133
Registriert: Sonntag 6. April 2003, 18:26

Squashfs mit LZMA bootet nicht

Beitrag von geko37 »

Habe mal versuch ein Image für die dbox2 mit lzma zu bauen nur leider ohne wirklichen erfolg ! die logos werden gefunden aber das wars schon!
mksquashfs2.2r2 gepatch mit lzma. Im kernel

CONFIG_SQUASHFS_LZMA=y
CONFIG_SQUASHFS_LZMA_LC=3
CONFIG_SQUASHFS_LZMA_LP=0
CONFIG_SQUASHFS_LZMA_PB=2

gesetzt.



laut bootlog:
------
I2C: ready
DRAM: 32 MB
FLASH: 8 MB
Scanning JFFS2 FS: .......... done.
FB: ready
LCD: ready
In: serial
Out: serial
Err: serial
Net: SCC ETHERNET

Options:
1: Console on null
2: Console on ttyS0
3: Console on framebuffer
Select option (1-3), other keys to stop autoboot: 0
### FS (squashfs) loading 'vmlinuz' to 0x100000
SQUASHFS error: reading inode block
### FS LOAD ERROR<0> for vmlinuz!
...............................................................
Un-Protected 63 sectors
## Booting image at 00100000 ...
Bad Magic Number
=>
----

habe folgende änderungen vorgenommen:

uboot.squashfs.dbox2.h
------------------------


#define CONFIG_FS ( CFG_FS_SQUASHFS | CFG_FS_JFFS2 )

#define CFG_FS_PART0_TYPE CFG_FS_SQUASHFS
#define CFG_FS_PART0_OFFSET 0x10020000
#define CFG_FS_PART0_SIZE 0x3c0000
#define CFG_FS_PART1_TYPE CFG_FS_JFFS2
#define CFG_FS_PART1_OFFSET 0x103E0000
#define CFG_FS_PART1_SIZE 0x400000

#define CONFIG_DBOX2_ENV_READ_FS "1:tuxbox/boot/boot.conf"

flashmanage.pl
------------------------

my %partdef =
(
0 => [ "root", 0, 0x3c0000 ],
1 => [ "var", 0x3c0000, 0x400000 ],
2 => [ "ppcboot", 0x7c0000, 0x20000 ],
);

sub part_read

dbox22-flash.c
---------------

/* partition_info gives details on the logical partitions that the split the
* single flash device into. If the size if zero we use up to the end of the
* device. */
static struct mtd_partition partition_info[]= {
{
.name = "BR bootloader",
.size = 128 * 1024,
.offset = 0,
.mask_flags = MTD_WRITEABLE
},
{
.name = "root (squashfs)",
.size = 3840 * 1024,
.offset = MTDPART_OFS_APPEND,
.mask_flags = 0
},
{
.name = "var (JFFS2)",
.size = 4096 * 1024,
.offset = MTDPART_OFS_APPEND,
.mask_flags = 0
},
{
.name = "FLFS (U-Boot)",
.size = 128 * 1024,
.offset = MTDPART_OFS_APPEND,
.mask_flags = 0
},
{
.name = "Flash without bootloader",
.size = MTDPART_SIZ_FULL,
.offset = 128 * 1024,
.mask_flags = 0
},
{
.name = "Complete Flash",
.size = MTDPART_SIZ_FULL,
.offset = 0,
.mask_flags = MTD_WRITEABLE
}
};

----------------------------------------------------------------------------
Carjay
Developer
Beiträge: 122
Registriert: Sonntag 23. April 2006, 12:37

Beitrag von Carjay »

U-Boot benutzt zum Laden vom Kernel seine eigene Squashfs-Implementierung, wenn dort noch der zlib-Algorithmus drin ist, dann geht das Dekomprimieren schief.

Du mußt den LZMA-Algorithmus nehmen und auch im U-Boot nachrüsten.

Von sich aus kann weder der Kernel noch der U-Boot Squashfs mit LZMA.

Mein Stand der Dinge ist, daß Philip Lougher den LZMA-Algorithmus zwar anerkennt, aber darauf hingewiesen hat, daß er die (gemeinsame) zlib-Kompression im Kernel verwendet und sich diese bislang nicht austauschen/erweitern läßt (da die Kernelmaintainer der Meinung waren, zlib ist akzeptiert, getestet und ausreichend). Daher finden sich nur Patches, die rigoros auf beiden Seiten den Algorithmus auswechseln und man somit inkompatible Kompressate erhält, die sich nicht direkt voneinander unterscheiden lassen.

Bei embedded Systemen ist dies natürlich kein großes Problem, da Kernel und Filesystem sich passend zueinander erstellen lassen. Man bekommt aber Probleme wenn man z.B. auf dem PC beide Arten mounten können wollte.

Ich habe das allerdings schon eine Weile nicht mehr verfolgt.
geko37
Einsteiger
Einsteiger
Beiträge: 133
Registriert: Sonntag 6. April 2003, 18:26

Beitrag von geko37 »

Carjay hat geschrieben:U-Boot benutzt zum Laden vom Kernel seine eigene Squashfs-Implementierung, wenn dort noch der zlib-Algorithmus drin ist, dann geht das Dekomprimieren schief.

Du mußt den LZMA-Algorithmus nehmen und auch im U-Boot nachrüsten.

Von sich aus kann weder der Kernel noch der U-Boot Squashfs mit LZMA.
Kannst du mir eventuell das etwas genauer erklären ?? Bzw. wo ich es nachrüste ?
verzweifelt
Einsteiger
Einsteiger
Beiträge: 159
Registriert: Dienstag 10. Januar 2006, 22:28

Beitrag von verzweifelt »

Mich würde dass auch sehr interessieren. Ich habe zwar eine mksquashfs auf lzma gepatched und kann damit lzma Images wie das JTG wieder packen, aber um eigene Images zu packen fehlt mir der Kernelpatch und die Änderungen in der U-Boot.

Ich habe ein wenig Angst dass ich mir das CDK zerstören könnte wenn ich da wild dran rumbastle und würde mich daher auch sehr freuen wenn vielleicht jemand schreiben könnte welche Änderungen (vor allem im U-Boot) nötig sind damit lzma richtig funktioniert.

Ich habe mir schon die Finger wund-gegoogelt aber nichts brauchbares gefunden.

Vielen Dank schon einmal im vorraus für eure Antworten.
verzweifelt
Einsteiger
Einsteiger
Beiträge: 159
Registriert: Dienstag 10. Januar 2006, 22:28

Beitrag von verzweifelt »

Ich konnte zwar den Kernel patchen aber beim U-boot komme ich nicht weiter. Kann mir da wirklich keiner helfen ?
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

du kannst den kernel auch mit dem uboot aus der var-partition laden.
Dazu musst du aber uboot entsprechend konfigurieren.