[gelöst] writesize =1 ist 'falsch' im block2mtd.c für ubifs

  • 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

    5 Mal editiert, zuletzt von Lost in Translation ()

  • Ich habe daran noch ein bisschen getestet, weil ich vergessen hatte das ich ja auch images für andere boxen auf einer box entpacken will.


    Nachdem man dem Block2mtd Treiber aber nur die Erasesize als Parameter übergeben kann ist das hardcoded nicht so einfach zu machen weil ich eigentlich je nach auszupackendem image anderen Wert brauche und nicht nur je box auf der es läuft. Ich muss mir wohl noch überlegen ob ich den code vom block2mtd so anpasse das man einen neben Pfad und Eraseblocksize auch noch die writesize übergeben kann.

  • OK, im Anhang ist der writesize patch fürs block2mtd.


    Einfach das root.ubifs image mit losetup zum /dev/loop1 mappen (oder jedem anderen freien Loopdevice) und dann dem block2mtd unterjubeln.


    Damit kann man jetzt also den emulierten block2mtd 'Flash' auf einer 7020hd so schalten das man ein ubifs image einer 500hd mounten kann:


    echo "/dev/loop1,0x4000,0x200" > /sys/module/block2mtd/parameters/block2mtd


    Für eine image einer 7020hd wäre es dann das:


    echo "/dev/loop1,0x40000,0x1000" > /sys/module/block2mtd/parameters/block2mtd


    Und für eine 8000er Image wäre es dann das:


    echo "/dev/loop1,0x20000,0x800" > /sys/module/block2mtd/parameters/block2mtd


    Der Patch erlaubt also enfach nach der eraseblocksize auch eine writesize als zusätzlichen Parameter anzugeben damit das ubifs damit glücklich ist.


    Gibt man nichts an wird wieder 1 verwendet so wie ohne Patch.


    Fehlt nur mehr das Testen und einchecken :smiling_face:


    Bitte, Bitte, Bitte


    LG
    gutemine

    • Offizieller Beitrag

    Hi,


    das gefällt mir so auch besser :winking_face:


    Ich weiss nur nicht wann ich dazu komme nen kernel update zu machen...


    Hmm du sprachst auch noch von einem change mitdem man über die cmdline die ubifs compression setzen kann.. ich hab da keinen gefunden.. kannste den auch noch anhängen? dann kann ich beides auf einmal machen.


    cu

  • Schön langsam ist das wie beim Pilzesuchen im Wald.


    Bitte auch noch diesen kleinen Patch von hier in den ubifs Treiber machen der der wenn das ubi device read only ist (aus welchem Grund auch immer) verhindert das dann das attach beim ersten boot fehlschlägt wegen dem autorisize flag.


    http://lists.infradead.org/pip…d/2012-August/043548.html


    Sind eh nur ein handvoll Zeilen, aber damit wird dann wenigstens das ubi volume attached und halt nur read only gemountet, womit die box wenigstens weiterbootet.


    Außerdem kann ich sonst auf der 8k nicht mit dem blockt2mtd Patch von weiter oben das image auslesen, weil der block2mtd keine Subpages kann, was eben in diesem Fall auch zu read only access führt, was aber wenn es nur ums image auslesen geht nicht stört, da ich dafür sowieso nur read only mounte.


    LG
    gutemine

  • damit man den block2mtd driver auch mehrmals benutzen kann sollten muss es auch eine Möglichkeit geben die devices wieder loszuwerden. Normal geht das mit rmmod, aber nachdem bei uns der block2mtd Treiber fix im Kernel ist funktioniert das ja nicht.


    Daher brauchen wir auch noch dern block2mtd remove patch von hier:


    http://lists.infradead.org/pip…/2008-February/020587.htm


    Ich habe den Patch aktualisiert und bereinigt um die Dinge die nicht mehr nötig sind - siehe Anhang.


    Mit so einen echo wird man dann ein device wieder los:


    echo "/dev/loop1,remove" > /sys/module/block2mtd/parameters/block2mtd


    Damit kann man den Zyklus mit loop mount mtd device anlegen und ubiattach und mounten unmounten ubidetach und mtd löschen und loopmount löschen mehrmal hintereinander machen.


    Ich hoffe das ist jetzt der letzte Patch der noch nötig war!


    Sobald das alles im OE ist könnt Ihr dann das nifdump 0.9 binary testen das auch ubifs images entpacken kann und dann gibt es auch ein neues rambo um die kleinen boxen mit ubifs und 256MB 'Flash' von USB oder SATA zu booten.


    LG
    gutemine

  • Ich habe jetzt mit den hier im Thread geposteten Patches das nfidump so angepasst, dass man damit auch ubifs 'Entpacken' kann, und das geht auch mehrmals hintereinander.


    OoZooN macht jetzt dankenswerterweise die ganzen Patches inklusive des initramfs Patch in sein Image damit wir keine Zeit verlieren es auch zu testen, aber wie schon gesagt solange die hier genannten block2mtd Patches nicht im OE sind ist es mühsam das ganze zu benutzen weil es durch die Kernelabhängigkeit nur mit einem Image im Flash geht oder die Leute den kernel von Hand tauschen müssen.


    Nachdem ich eh der einzige bin der den block2mtd Treiber wirklich benutzt kann auch kein Kolateralschaden durch die Patches entstehen :smiling_face:


    LG
    gutemine

  • die images sind jetzt verfügbar ...

    mfg


    OoZooN


    Support für OoZooN Images gibt es auf forum.oozoon.de , nicht hier!


    Two Beer or not two Beer, thats the Question


    Aktuelle Nachrichten rund um OoZooN-Images gibt es auf Twitter

  • Danke, mal sehen ob das alles auch problemlos läuft, aber ich denke schon soweit ich das bis jetzt testen konnte.


    Ubifs ohne den nandsim entpacken zu können ist schon ein nettes Feature, auch wenn es mich viel Zeit gekostet hat das zum Laufen zu bringen.

  • hab Hier mal ein Log anbei.


    crash Log entfernt.

    DM 8000sss Merlin
    DM 800 SE OoZooN
    DM 7020i Gemini 4.7
    Spiegel- LAMINAS OFC-1200 am Motor
    Motor-Interstar GI-50-120
    LNB-Sharp BS1R8EL 100W/85cm WISI auf 19,2E Profi Class Multischalter 5/8 PIU-4 Inverto Quattro Black Ultra IDLB-QUTL40
    IPad 3, IMac 21,5 Zoll, Iphone 4s.

    Einmal editiert, zuletzt von Mostfass1 ()

  • Ich denke crashes zum OoZooN Image sind im OoZoon Board besser aufgehoben und das ist ein Crash im C++ Teil vom enigma2 der hat mit den Patches ziemlich sicher nichts zu tun.


    Im Moment benutze ich ja auch schon das aktuelle OoZoon mit ubifs auf 7020hd und 8000 und das läuft eigentlich wie es sollte.

    Einmal editiert, zuletzt von Lost in Translation ()

  • Weil es nichts mit diesem Thema zu tun hat, habe ich die crash Log entfernt.

    DM 8000sss Merlin
    DM 800 SE OoZooN
    DM 7020i Gemini 4.7
    Spiegel- LAMINAS OFC-1200 am Motor
    Motor-Interstar GI-50-120
    LNB-Sharp BS1R8EL 100W/85cm WISI auf 19,2E Profi Class Multischalter 5/8 PIU-4 Inverto Quattro Black Ultra IDLB-QUTL40
    IPad 3, IMac 21,5 Zoll, Iphone 4s.

  • Danke, geht lieber Dumbo und Barry Allen testen, weil ich muss wissen ob das ubifs nfi images extrahieren mit nfidump 0.9 und den Patches aus diesem Thread jetzt klaglos funktioniert, und der beste Test ist immer noch wenn möglichst viele Leute es auch benutzen.


    Dumbo und BA Probleme aber bitte auch nicht hier einkippen, sondern im Dumbo oder BA Thread (und der ist nicht hier im Board).


    Hier geht es eigentlich nur darum die ubifs Probleme des block2mtd drivers zu fixen, und von meiner Seite sieht das erstmal gut aus, bis auf das Subpages Problem bei der 8000, aber das stört beim extrahieren nicht weil sowieso nur read only mount nötig ist.

    Einmal editiert, zuletzt von Lost in Translation ()

  • Noch ein abschließendes Feedback:


    Nachdeem schon massig Leute OoZooN's Images mit den hier genannten Patches im block2mtd Treiber runtergeladen haben und das aktuelle nfidump binary damit auch problemlos nfi images mit ubifs entpacken kann (ist jetzt im BA und im Dumbo dafür bereits drinnen) würde ich bitten die Patches ins OE 2.0 reinzumachen, weil solange nicht alle Kernel (und damit die Images) das können komme ich sonst nicht weiter.


    LG
    gutemine