Frage zum auslesen und erstellen eines root-squashfs.img

Wie blitze ich ein Bild - Permanent Outgoing Incomes
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Frage zum auslesen und erstellen eines root-squashfs.img

Beitrag von Nico 77 »

Kann mir mal jemand folgendes erklären und zwar erstelle ich mir ein root-squashfs-neutrino.img also die root Partition.

Diese ist bei mir ca. 5,53 MB (5.799.936 Bytes) groß, lese ich dieses root-squashfs nun aus der Box aus weil ich ein überarbeitetes root flashen will hat das alte nun eine viel größere Größe 6,00 MB (6.291.456 Bytes)!?
Nachtvogel
Tuxboxer
Tuxboxer
Beiträge: 4391
Registriert: Freitag 21. Mai 2004, 17:16

Beitrag von Nachtvogel »

Hallo!

Das Image ist in Partitionen unterteilt die eine bestimmte feste Größe haben.
Wenn Du eine Partition ausliest, wird die komplette Größe ausgelesen, diese entspricht aber nicht dem Füllstand.
Das Image das du erstellst, hat nicht die volle Partitions Größe, diese Größe entspricht dem Füllstand.
Ich hoffe ich hab das so einigermaßen verständlich erklärt :wink:

Gruß Nachtvogel
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Hmm, nö nicht so ganz verstanden. :)

Also wenn ich root mtd2 mit Linux compiliere dann ist es derzeit 5,53 MB (5.799.936 Bytes) groß.
Lese ich diese root mtd2 aus der Box aus dann ist es 6,00 MB (6.291.456 Bytes) groß.

Da in beiden das gleiche drin ist und auhc nicht veränderbar sollte beim auslesen doch auch wieder das gleiche rauskommen, wo habe ich da den Denkfehler!?
Nachtvogel
Tuxboxer
Tuxboxer
Beiträge: 4391
Registriert: Freitag 21. Mai 2004, 17:16

Beitrag von Nachtvogel »

Die Partitionsgröße ist auf 6MB festgelegt.
Bein auslesen werden diese 6MB auch ausgelesen egal ob die echte Größe nur 5,53MB hat, der Rest wird einfach mit "nichts" aufgefüllt.
So als ob Du eine Flasche aus einem Kasten holst und die Flasche nur ¾ voll ist.

Gruß Nachtvogel
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Wo wird diese denn festgelegt? Ich meine damals bei Cramfs wäre das immer richtig gewesen.

Die Maximalgröße meines root ist 6.144.000 bytes.

Code: Alles auswählen

static struct mtd_partition partition_info[]= {
	{
	.name		= "BR bootloader",
	.size		= 128 * 1024, 
	.offset		= 0,                  
	.mask_flags	= MTD_WRITEABLE
	},
	{
	.name		= "FLFS (U-Boot)",
	.size		= 128 * 1024, 
	.offset		= MTDPART_OFS_APPEND, 
	.mask_flags	= 0
	},
	{
	.name		= "root (Squashfs)",
	.size		= 6144 * 1024, 
	.offset		= MTDPART_OFS_APPEND, 
	.mask_flags	= 0
	},
	{
	.name		= "var (JFFS2)",
	.size		= 1792 * 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
	}
};

Code: Alles auswählen

#define	CFG_FS_PART0_TYPE	CFG_FS_SQUASHFS
#define	CFG_FS_PART0_OFFSET	0x10040000
#define	CFG_FS_PART0_SIZE	0x600000
#define	CFG_FS_PART1_TYPE	CFG_FS_JFFS2
#define	CFG_FS_PART1_OFFSET	0x10640000
#define	CFG_FS_PART1_SIZE	0x1c0000

Code: Alles auswählen

my %partdef =
(
  0 => [ "ppcboot", 0,     0x20000 ],
  1 => [ "root", 0x20000, 0x600000 ],
  2 => [ "var", 0x620000, 0x1c0000 ],
);
Ist normal alles richtig(denke ich). :D
Zuletzt geändert von Nico 77 am Sonntag 11. September 2005, 20:16, insgesamt 2-mal geändert.
Nachtvogel
Tuxboxer
Tuxboxer
Beiträge: 4391
Registriert: Freitag 21. Mai 2004, 17:16

Beitrag von Nachtvogel »

Wo das fest gelegt wird kann ich Dir nicht sagen, da müßte jetzt mal ein Image Team Mitglied herhalten :wink:

Gruß Nachtvogel
Bild
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Hmm, also der Bootlog sagt mir:

Creating 6 MTD partitions on "D-Box 2 flash memory":
0x00000000-0x00020000 : "BR bootloader"
0x00020000-0x00040000 : "FLFS (U-Boot)"
0x00040000-0x00640000 : "root (Squashfs)"
0x00640000-0x00800000 : "var (JFFS2)"
0x00020000-0x00800000 : "Flash without bootloader"
0x00000000-0x00800000 : "Complete Flash"

Wenn ich allerdings cat /proc/mtd aufrufe kommt dieses!?

dev: size erasesize name
mtd0: 00020000 00004000 "BR bootloader"
mtd1: 00020000 00020000 "FLFS (U-Boot)"
mtd2: 00600000 00020000 "root (Squashfs)"
mtd3: 001c0000 00020000 "var (JFFS2)"
mtd4: 007e0000 00020000 "Flash without bootloader"
mtd5: 00800000 00020000 "Complete Flash"

Jemand eine Idee wo da der Fehler liegt?
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Auch wenn ich hier anscheinend alleine Schreibe, habe das ganze jetzt mal beim JTG geschaut.

5,68 MB (5.963.776 Bytes) snapshot.cramfs
6,37 MB (6.684.672 Bytes) mtd2.img
5,68 MB (5.963.776 Bytes) mtd2.img mit newtuxboxflashtool geöffnet und wieder gespeichert.

Also scheint hier ein Fehler in Neutrino vorzuliegen, kann da mal jemand was zu sagen?
Nachtvogel
Tuxboxer
Tuxboxer
Beiträge: 4391
Registriert: Freitag 21. Mai 2004, 17:16

Beitrag von Nachtvogel »

Nico 77, hab ich das richtig verstanden?
Du hast das mtd2.img mit dem NewTuxFlash Tool geöffnet (6.684.672 Bytes) und wieder ohne
Änderung gespeichert, danach hatte es 5.963.776 Bytes?
Oder war es anders herum?
Bild
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Jo ohne Änderung.
Nachtvogel
Tuxboxer
Tuxboxer
Beiträge: 4391
Registriert: Freitag 21. Mai 2004, 17:16

Beitrag von Nachtvogel »

Also ist das Image kleiner geworden, wenn ich das richtig verstanden hab?
Das ist aber normal.
Beim auslesen wird die komplette Größe der Partition ausgelesen, das bedeutet nicht daß die Partition voll sein muß.
Der Rest der fehlt, wird mit Leerbits aufgefüllt.
Das NewTuxFlash Tool entfernt diese Leerbits beim abspeichern wieder, deshalb wird das Image auch kleiner.

Gruß Nachtvogel
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Ne da ist nichts kleiner geworden, aber ich habs jetzt. :D

6.684.672 Bytes sind 6.528 Kilobyte.

Somit passt es bei mir doch, 6.291.456 Bytes = 6.144 Kilobyte.
Dachte zuerst immer die 6.144 bzw 6.528 wären auch Byteangaben...

Thx. :wink:
Nachtvogel
Tuxboxer
Tuxboxer
Beiträge: 4391
Registriert: Freitag 21. Mai 2004, 17:16

Beitrag von Nachtvogel »

Hab ich Dir jetzt irgendwie geholfen :gruebel:
Bild
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Jo habe die komplette Größe wie beschrieben in KBytes umgerechnet und schon passt das.

Für mich sahen 6.291.456 Bytes einfach zu groß aus. ;)