Hi!
Bei meinen Versuchen ubifs auf dem block2mtd device zum Laufen zu bekommen (um ohne nandsim module ubifs images mounten und/oder entpacken zu können und letzendlich auch mit rambo direkt von einem ubifs image file booten zu können so wie man das jetzt schon mit jffs2 kann) bin ich nach langem Probieren endlich drauf gekommen warum das nicht geht:
im block2mtd.c steht:
dev->mtd.writesize = 1;
Der Code stimmt zwar prinzipiell weil man auf ein File im Prinzip auch 1 byte schreiben kann, NUR das ubifs errechnet dann seinen Startpunkt für die Data Blöcke falsch wenn das zurückkommt (auf der 7020hd mit 4160 statt 8192, also nach den ersten 2 reservierten Blöcken). Damit funktioniert das ubiattach aber dann nicht wenn man das ubifs image über einen loop mount dem block2mtd Treiber unterjubelt und im dmesg steht dann eben das die erwartete datasize 8192 wäre und 4160 gefunden wurde.
Ändert man das im block2mtd.c auf den selben Wert der auch beim -O verwendet wird (also 4096 bei der 7020hd) und baut sich damit einen neuen Kernel dann funktioniert es.
dev->mtd.writesize = 4096;
Wäre es daher möglich in die block2mtd.c für die jeweilige box den richtigen Wert reinzumachen (also 4096/2048/512) oder besser das so zu implementieren das der Wert je nach Flashtype mit dem gebaut wird richtig gesetzt wird?
Ich bräuchte diese Änderung mölichst rasch, weil wie schon gesagt gibt es sonst auf den boxen erstmal nur die Möglichkeit images mit nandsim zu entpacken und das wäre doof wenn das block2mtd eh in jedem Kernel drinnen ist und nur so eine Kleingkeit fehlt damit es auch für ubifs benutzbar ist. Ohne eine einfache Entpackungsmöglichkeit gibt es sonst auch erstmal kein einfaches Image Entpacken fürs Multibooten, weil ich mag das nicht 2x implementieren.
Und mit rambo von block2mtd bei einem ubifs image zu booten geht sonst auch erstmal nicht, und gerade auf den kleinen boxen wo es sonst ubifs nur mit Mühen gibt wäre es schade wenn es daran scheitern würde.
Danke!
LG
gutemine