u-boot1.1.2 squashfs2.1r2

Diskussionen um Bootloader, Kernel, Busybox
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

u-boot1.1.2 squashfs2.1r2

Beitrag von Innuendo »

tach ihrs,

mit dem cvs update stand 2802 21 uhr auf u-boot1.1.2 und squashfs2.1r2 hab ich ein problem:
Creating 6 MTD partitions on "D-Box 2 flash memory":
0x00000000-0x00020000 : "BR bootloader"
0x00020000-0x004a0000 : "root (squashfs)"
0x004a0000-0x007e0000 : "var (jffs2)"
0x007e0000-0x00800000 : "flfs (u-boot)"
0x00020000-0x00800000 : "flash without bootloader"
0x00000000-0x00800000 : "complete flash"
Linux video capture interface: v1.00
mice: PS/2 mouse device common for all mice
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 2048 bind 4096)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
SQUASHFS error: zlib_fs returned unexpected result 0xfffffffd
SQUASHFS error: Unable to read cache block [448fd1:1276]
SQUASHFS error: Unable to read inode [448fd1:1276]
SQUASHFS error: Root inode create failed
Kernel panic: VFS: Unable to mount root fs on 1f:01
<0>Rebooting in 180 seconds..
mksquashfs ist aktualisiert.
kann mir einer weiterhelfen oder gabs noch irgendwas zu beachten (was ich dann offensichtlich übersehen hab)?

regards
Innu
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

Verwendest Du beim mksquashfs die Option "--always-use-fragments"? Genau damit bin ich hier auch auf die Schn^WNase gefallen.

mksquashfs nur mit der Option "-be" für BigEndian aufrufen und schon gehts - ist wohl ein bug im kernel-patch oder beim mksquashfs.
There are 10 types of people in the world: those who know binary and those who don't
e46ti
Interessierter
Interessierter
Beiträge: 74
Registriert: Montag 14. Februar 2005, 10:10

Beitrag von e46ti »

@dieMade,

was willst Du damit sagen?? Ich glaube nicht das dies ein bug ist?
Also bei mir geht das ohne Probleme...

e46ti
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

e46ti:

Ich habe grad eben ein Image mit der Option "--always-use-fragments" gebaut (was unter 2.0 immer funktioniert hat) und hatte den gleichen Effekt wie Innuendo. Ohne diese Option mounted der Kernel das rootfs wunderbar.

Da drängt sich mir doch der Verdacht auf, daß entweder die Tools oder der Kernel-Patch eine Macke haben oder wie würdest Du das interpretieren?
There are 10 types of people in the world: those who know binary and those who don't
e46ti
Interessierter
Interessierter
Beiträge: 74
Registriert: Montag 14. Februar 2005, 10:10

Beitrag von e46ti »

@dieMade

wie gesagt, das kann ich so nicht bestätigen. Ich bau meine images immer mit diesem Parameter.
Hast Du mal probiert, das von Dir so erstellte squashfs auf Deinem PC zu mounten?

e46ti
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

Nein, ich habe keinen squashfs-support im Kernel.
There are 10 types of people in the world: those who know binary and those who don't
e46ti
Interessierter
Interessierter
Beiträge: 74
Registriert: Montag 14. Februar 2005, 10:10

Beitrag von e46ti »

@dieMade,

solltest Du dir einrichten, ist bei solchen Sachen echt hilfreich...

e46ti

PS: Um da weiterzukommen vielleicht einfach mal in der squashfs_fs.h
ganz oben #define SQUASHFS_TRACE 1 setzen und dann einen Blick auf das log werfen...
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

DieMade hat geschrieben:Verwendest Du beim mksquashfs die Option "--always-use-fragments"? Genau damit bin ich hier auch auf die Schn^WNase gefallen.

mksquashfs nur mit der Option "-be" für BigEndian aufrufen und schon gehts - ist wohl ein bug im kernel-patch oder beim mksquashfs.
die option alway-use-frag habe ich nicht verwendet.
aber ich hab heut morgen ein lauffähiges image erstellen können, nachdem ich -check_data weggelassen habe.
hatte mit den optionen -be (-noappend) -check_data bisher keine probleme.

vlt hilft das einem dev bei zeiten beim kontrollieren.

regards
Innu
e46ti
Interessierter
Interessierter
Beiträge: 74
Registriert: Montag 14. Februar 2005, 10:10

Beitrag von e46ti »

@Innuendo,

das mit -check_data kann ich bestätigen!!!

e46ti
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

Ups, die Option hatte ich auch gleich mit rausgefeuert. Also ziehe ich meinen Beitrag zurück und behaupte das komplette Gegenteil ;)
There are 10 types of people in the world: those who know binary and those who don't
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

DieMade hat geschrieben:Ups, die Option hatte ich auch gleich mit rausgefeuert. Also ziehe ich meinen Beitrag zurück und behaupte das komplette Gegenteil ;)
so einfach geht das nicht
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

e46ti hat geschrieben:@Innuendo,

das mit -check_data kann ich bestätigen!!!

e46ti
vlt kann mogway (?) mit der info nochmal über den squash-patch drübergucken

Innu
e46ti
Interessierter
Interessierter
Beiträge: 74
Registriert: Montag 14. Februar 2005, 10:10

Beitrag von e46ti »

@Innuendo

Code: Alles auswählen

ar  1 15:01:46 localhost kernel: loop: loaded (max 8 devices)
Mar  1 15:01:46 localhost kernel: SQUASHFS: Mounting a different endian SQUASHFS filesystem on loop(7,0)
Mar  1 15:01:46 localhost kernel: SQUASHFS error: zlib_fs returned unexpected result 0xfffffffd
Mar  1 15:01:46 localhost kernel: SQUASHFS error: Unable to read cache block [64c596:19d4]
Mar  1 15:01:46 localhost kernel: SQUASHFS error: Unable to read inode [64c596:19d4]
Mar  1 15:01:46 localhost kernel: SQUASHFS error: Root inode create failed
Ich denke, das ist ein offset Problem...

e46ti
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

So, 2.6.10 mit squashfs2.1-r2 gepatcht und versucht, ein mit -check-data erstelltes sqfs zu mounten:
SQUASHFS: Mounting a different endian SQUASHFS filesystem on loop0
SQUASHFS error: zlib_fs returned unexpected result 0xfffffffd
SQUASHFS error: Unable to read cache block [5d77d8:1496]
SQUASHFS error: Unable to read inode [5d77d8:1496]
SQUASHFS error: Root inode create failed
Ist also ein genereller Bug.

Edit: zu langsam....ich werd alt ;)
e46ti
Interessierter
Interessierter
Beiträge: 74
Registriert: Montag 14. Februar 2005, 10:10

Beitrag von e46ti »

@dieMade,

ich schau mal....

e46ti
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

Ich hab nen Bugreport auf der Projektseite erstellt, mal gucken.
There are 10 types of people in the world: those who know binary and those who don't
e46ti
Interessierter
Interessierter
Beiträge: 74
Registriert: Montag 14. Februar 2005, 10:10

Beitrag von e46ti »

@all
hier mal ausführliche logs über den bug:

Code: Alles auswählen

*** with parameter -check_data ***

SQUASHFS: Entered squashfs_read_superblock
SQUASHFS: Block @ 0x0, uncompressed size 63
SQUASHFS: Mounting a different endian SQUASHFS filesystem on loop(7,0)
SQUASHFS: Found valid superblock on loop(7,0)
SQUASHFS: Inodes are compressed
SQUASHFS: Data is compressed
SQUASHFS: Check data is  present in the filesystem
SQUASHFS: Filesystem size 6611834 bytes
SQUASHFS: Block size 131072
SQUASHFS: Number of inodes 677
SQUASHFS: Number of fragments 65
SQUASHFS: Number of uids 1
SQUASHFS: Number of gids 0
SQUASHFS: sBlk->inode_table_start 64baf1
SQUASHFS: sBlk->directory_table_start 64cdca
SQUASHFS: sBlk->fragment_table_start 64e372
SQUASHFS: sBlk->uid_start 64e376
SQUASHFS: Block @ 0x64e376, uncompressed size 4
SQUASHFS: Block @ 0x64e372, uncompressed size 4
SQUASHFS: Entered squashfs_iget
SQUASHFS: Entered squashfs_get_cached_block [64c596:19d4]
SQUASHFS: Block @ 0x64c596, compressed size 2097
SQUASHFS error: zlib_fs returned unexpected result 0xfffffffd
SQUASHFS error: Unable to read cache block [64c596:19d4]
SQUASHFS error: Unable to read inode [64c596:19d4]
SQUASHFS error: Root inode create failed

*** without parameter -check_data

SQUASHFS: Entered squashfs_read_superblock
SQUASHFS: Block @ 0x0, uncompressed size 63
SQUASHFS: Mounting a different endian SQUASHFS filesystem on loop(7,0)
SQUASHFS: Found valid superblock on loop(7,0)
SQUASHFS: Inodes are compressed
SQUASHFS: Data is compressed
SQUASHFS: Check data is not present in the filesystem
SQUASHFS: Filesystem size 6611830 bytes
SQUASHFS: Block size 131072
SQUASHFS: Number of inodes 677
SQUASHFS: Number of fragments 65
SQUASHFS: Number of uids 1
SQUASHFS: Number of gids 0
SQUASHFS: sBlk->inode_table_start 64baf1
SQUASHFS: sBlk->directory_table_start 64cdc8
SQUASHFS: sBlk->fragment_table_start 64e36e
SQUASHFS: sBlk->uid_start 64e372
SQUASHFS: Block @ 0x64e372, uncompressed size 4
SQUASHFS: Block @ 0x64e36e, uncompressed size 4
SQUASHFS: Entered squashfs_iget
SQUASHFS: Entered squashfs_get_cached_block [64c595:19d4]
SQUASHFS: Block @ 0x64c595, compressed size 2097
SQUASHFS: Read cache block [64c595:19d4]
SQUASHFS: Entered squashfs_get_cached_block [64c595:19d4]
SQUASHFS: Directory inode aa4:19d4, start_block 0, offset 1f50
SQUASHFS: Leaving squashfs_read_super
e46ti

PS: Der Fehler steckt im kernel patch....
e46ti
Interessierter
Interessierter
Beiträge: 74
Registriert: Montag 14. Februar 2005, 10:10

Beitrag von e46ti »

@all

ich hatte ja schon weiter oben die Vermutung geäußert, daß der bug mit der offset Ermittelung zusammenhängt.

Code: Alles auswählen

--- inode.c.org	2004-12-30 19:19:16.000000000 +0100
+++ inode.c	2005-03-03 09:26:03.000000000 +0100
@@ -157,14 +157,14 @@
 			brelse(bh);
 			if(!(bh = sb_bread(s, ++(*cur_index))))
 				return NULL;
-			offset = 0;
-		}
+			*offset = 0;
+			}
 		if(*((unsigned char *) (bh->b_data + *offset)) != SQUASHFS_MARKER_BYTE) {
 			ERROR("Metadata block marker corrupt @ %x\n", *cur_index);
 			brelse(bh);
 			return NULL;
 		}
-		*offset ++;
+		*offset += 1;
 	}
 
 	return bh;
Hiermit sollte es jetzt auch mit -check_data gehen...

e46ti

PS: Sich durch die squashfs sourcen zu hangeln, war eine gute Übung um meine c++ Kenntnisse zu vertiefen :D
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

e46ti :

Magst Du das als Kommentar/Anregung zum Author schicken? Ich finde es immer eine gute Idee, die Ursprungsprojekte an Verbesserungen/Fixes teilhaben zu lassen :)
There are 10 types of people in the world: those who know binary and those who don't
e46ti
Interessierter
Interessierter
Beiträge: 74
Registriert: Montag 14. Februar 2005, 10:10

Beitrag von e46ti »

@dieMade

ja das kann ich machen.

Ich fände es aber gut, wenn das hier vorher nochmal jemand testet, ob es jetzt wirklich immer geht.

e46ti

Nachtrag: Funktioniert und ist erledigt...