[im OE noch ungelöst] mtd-utils im OE sind leider unbrauchbar für Sicherungen auf der Dreambox

  • wenn ich mich recht erinnere wird nur der xz compression patch fürs mkfs.ubifs.c angewandt, aber die beiden Patches sollten sich nicht wehtun.


    Aber wie schon gesagt, es wäre besser wenn das OE bereits die ganz aktuellen sourcen verwenden würde. Aber ich schaue mal wegen dem mkfs.jffs2.c, weil da ist die chance höher das der Patch funktioniert, weil der ist dort auch schon so alt.

  • Ich habe mir mal das mkfs.jffs2.c angeschaut - da ist im OE der --ignore patch schon drinnen - Glück gehabt, der einzige Unterschied ist das mein Patch gegen die aktuellen sourcen geht, aber da sich beim jffs2 kaum was getan hat denke ich kann man das so lassen.


    Das Einzige was da bei mir anders ist das ich die minilzo.c benutze um dem lzo support zu kriegen und dabei nicht gegen die liblzo gelinked zu sein und die deswegen nicht in die Dependencies machen zu müssen.


    Code
    ldd mkfs.jffs2 
    libz.so.1 => /lib/mipsel-linux-gnu/libz.so.1 (0x77ec0000)
    libc.so.6 => /lib/mipsel-linux-gnu/libc.so.6 (0x77d38000)
    /lib/ld.so.1 (0x55550000)
    mkfs.jffs2 -L
    mkfs.jffs2: error!: 
    lzo priority:80 enabled
    zlib priority:60 enabled
    rtime priority:50 enabled


    Weil im OE wird das binary derzeit glaube ich ohne den lzo support gebaut und wenn man die libary als dependency dazu braucht verschwendet das unnötig Platz.


    Ich compiliere das dann so damit es ein möglichst kleines binary gibt:

    Code
    gcc -Os  -fdata-sections -ffunction-sections -o mkfs.jffs2 mkfs.jffs2.c 
    compr.c compr_rtime.c compr_zlib.c compr_lzo.c rbtree.c minilzo.c  
    lib/libcrc32.o -I include -lz -Wl,--gc-sections
    strip  mkfs.jffs2


    Damit bleibt eigentlich an Patches nur das Equivalent des --ignore über für das mkfs.ubifs:


    Code
    --z, --exclude=PATH   	exclude PATH from output relative to the root


    Also warten wir mal ob wir die anderen Patches inklusive Push auf das aktuelle 1.5.* der mtd-utils bekommen, dann poste ich auch meinen Patch fürs mkfs.jffs2 und wir wären fertig mit dem Frühjahsrputz bei den mtd-utils für die Dreamboxen.

  • Ich war mal Optimist und habe meinen mkfs.ubifs patch einfach mit den altem mkfs.ubifs.c aus dem OE probiert.



    Ist also gar nicht so schlimm wie ich dachte, weil die 2 Fehler sind nur so wie beim mkfs.jffs2 auch das Problem das der command line options string sich natürlich geändert hat und das zweite meine Anpassungen in der make_path routine.


    Ersteres wäre leicht von Hand anpassbar im Patch und für zweiteres könnte ich statt für die exclude paths die normale make_path routine zu pimpen auch eine eigene make_exclude_path routine machen, dann würde es auch mit dem alten code gehen.


    Trotzdem wäre es nicht gescheit es noch in die alten sourcen von den mtd-utils 1.4.9 reinzumachen, weil eben die command line options sich teilweise geändert haben und dann erst wieder die Optionen unterschiedlich wären.


    Damit hätten wir aber jetzt eigentlich alles beisammen um es auch ins OE 2.0 für die Dreamboxen zu machen, nur ist das nicht meine Entscheidung es auch zu tun, ich kann nur nochmals Bitte, Bitte sagen :smiling_face_with_sunglasses:


    LG
    gutemine

  • OK. ich habe den Patch nochmals umgeschrieben damit auch mit dem alten mkfs.ubifs.c nur mehr die Anpassung des optstring um die zusätzlivche z option failed, was aber leicht von Hand im Patchfile gefixed werden kann wenn DMM unbedingt bei den alten mtd-utils 1.4.9 bleiben will:



    Der entsprechende Patch für die -z Option des mkfs.ubifs.c ist im Anhang.


    Und ja ich compiliere es noch gegen die lib*.a damit es möglichst klein bleibt und man die libraries nicht als dependency braucht:


    Code
    gcc -Os -fdata-sections -ffunction-sections -o mkfs.ubifs mkfs.ubifs.o crc16.o lpt.o compr.o devtable.o hashtable/hashtable.o hashtable/hashtable_itr.o ../lib/libcrc32.o ../ubi-utils/libubi.a /usr/lib/liblzo2.a -lm -luuid -lz ./liblzma.a -Wl,--gc-sections
    + strip mkfs.ubifs


    Womit ich jetzt nur freudvoll darauf warte das die 4 Patches eingechecked werden und im Idealfall die Build rezepte angepasst, damit man die vorhandenen mtd-utils binaries und das buildimage auf der Box zum Sichern verwenden kann :grinning_squinting_face:


    Wobei mir der Umstieg auf die neueren Sourcen wie schon erklärt noch lieber wäre :grinning_squinting_face: :grinning_squinting_face:


    BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE BITTE :grinning_squinting_face: :grinning_squinting_face: :grinning_squinting_face:


    LG
    gutemine

  • Als 'PoC' gibt es jetzt auch schon den aktuellen nfibackup kit für die Dreamboxen wo alle binaries aus dem aktuellen Snapshot der mtd-utils und des buildimage mit den hier geposteten Patches drinnen sind.


    Damit man sieht das es damit klaglos geht auf der Dreambox ein Image in ein nfi zu sichern, z.B das aktuelle Image im Flash:


    Code
    nfibackup / /media/hdd/backup


    WENN die ganzen patches im OE wären wurde ich ALLE binaries bis auf das nfidump selbst aus dem ipk rausschmeissen und nur mehr Dependencies zu den Paketen aus dem OE setzen so wie es eigentlich sein SOLLTE.

    2 Mal editiert, zuletzt von Lost in Translation ()

  • Der --ignore Patch ist zwar im OE schon drinnnen, aber eben nur für den alten Releasestand.


    Im Anhang habe ich ihn noch gediffed geten den aktuellen mkfs.jffs2.c code aus einem aktuellen snapshot der mtd-utils.


    Mit den Patches die ich also jetzt alle gepostet habe kann man sich in 5min wenn man sich die aktuellen mtd-utils als snapshot zieht auch alle nötigen binaries auf dem Linux PC bauen.


    Gerade ausprobiert damit ich auch den versprochenen nfibackup kit für den Linux PC machen kann.


    LG
    gutemine

  • Nachdem OoZooN's Board wieder funktioniert habe ich die nfidump kits hier entfernt.


    Bei OoZooN im nfiBACKUP Thread gibt es jetzt auch schon nfiBACKUP kit für den Linux PC, wo auch die aktuellen Binaries mit den Patches aus diesem Thread drinnen sind.


    Damit kann man zusammen mit dem nfidump für den Linux PC mit Drag und Drop jedes aktuelle Dreambox nfi Image aus- und auch wieder einpacken.


    Und wenn Ihr brav testet und die Patches im OE landen mache ich auch eine Windows Version :grinning_squinting_face:


    LG
    gutemine

  • Und wenn Ihr brav testet und die Patches im OE landen mache ich auch eine Windows Version :grinning_squinting_face:


    Brav wart Ihr zwar nicht, aber bei OoZooN gibt es jetzt auch die Windows Version vom nfidump und vom nfibackup zum Testen.


    Damit wäre der PoC das die Patches es wirklich wert sind sie rein zu machen erstmal abgeschlossen.

    • Offizieller Beitrag

    Ich habe das Thema kurz überflogen und erst mal eine Frage dazu: Ich verstehe den Sinn der Änderung an buildimage nicht ganz. Wieso soll man ein nfi-Image erzeugen können, das sich nicht flashen lässt? Wäre es da nicht besser und einfacher, z.B. einen Tarball oder ein cpio-Archiv als Backup zu erzeugen?


    In jedem Fall würde ich den Patch so wie gezeigt nicht übernehmen. WENN, dann nur mit einem Kommandozeilenschalter.

  • für viele user wäre es doch viel einfacher eine nfi erzeugen zu können wie bei dflash, was denn auch einfach über browser zu flashen ist.
    das gab es ja schon zur db2 zeiten im image, es gibt ja genus sachen unter softwareaktualisierung nur eben kein komplettes auslesen des flashes! Dflash ist eigentlich schon ok, nur ohne gm zu nah zu treten ist es manchmal sehr schwer verständnis für ihn zu haben!

  • Ich habe das Thema kurz überflogen und erst mal eine Frage dazu: Ich verstehe den Sinn der Änderung an buildimage nicht ganz. Wieso soll man ein nfi-Image erzeugen können, das sich nicht flashen lässt? Wäre es da nicht besser und einfacher, z.B. einen Tarball oder ein cpio-Archiv als Backup zu erzeugen?


    In jedem Fall würde ich den Patch so wie gezeigt nicht übernehmen. WENN, dann nur mit einem Kommandozeilenschalter.

    Wenn man auf der Box sichert und eine Flash Erweiterung benutzt ODER das Image von einem USB device bootet ist das Limit eines nfi backups auf die echte Flashgröße der Box eben NICHT ein echtes Limit.


    Aiusserdem müsste das buildimage dann ehrlicherweise bereits bei 128MB verweigern ein Image zu erstellen weil das Bios dann sowieso das image nicht flashen kann.


    Meinem nfiwrite binary und den damit bestückten Recovery sticks sind diese 128MB aber egal, also wäre für mich auch in diesem Fall maximal ein Warnung sinnvoll.


    Ich kann auch gerne eine wi Option reinmachen mit der man eben aus dem error ein warning macht, aber ich brauche die eben nicht, weil es sollte ausreichen wenn man für den benutzer ein Warning ausgibt und das image trotzdem erstellt.


    Meinem nfidump ist es dann z.B.auch egal ob das image beim Auspacken auf USB gräßer als der Flash ist-


    Letztendlich ist es dem User ja lieber er hat wenigstens eine Sicherung und es ist meines Erachtens sinnvoller auch für größere Images das selbe Format zu benutzen als einmal ein tar bal und einmal ein nfi zu machen.


    Im Normalfall sollte die Grenze wenn echter Flash gesichert wird ja eh nicht erreicht werden, also wo ist das Problem da nur zu warnen statt abzubrechen ?


    Wenn ich Flasherweierungen und Multibooten anbiete und damit auch so grosse nfi Images sinnvoll und benutzerfreundlich benutzen kann dann will ich mir nicht stäendig das buildimage patchen müssen um es sinnvoll benutzen zu können. Gerade nachdem es jetzt wegen dem loader ipk standardmässig sowieso in jedem Image ist finde ich es halt bitter wenn ich dan nein eigenes mitliefernb muss das unnötig Platz kostet.


    Aber wie schon gesagt, wenn Ihr eine Opton haben wollt kann ich gerne einen Patch damit machen, wobei meines Erachtens die Optionen vom Buildimage jetzt schon nicht sehr ausgegoren und benutzerfreundlich sind womit jede weitere Option das nur noch schlimmer machen würde.


    Das Buildimage und die mkfs.* mit allen Optionen für alle boxen richtig aufzurufen sind nicht umsonst der größte Hemmschuh für ordentliche Backup Plugins, das sollte man meines Erachtens nicht noch komplizierter machen.


    Und ich habe angeboten die sourcen vom nfibuild.c zu posten das auf Dreambox, Linux UND Windows PC ein Dreambox Image als nfi packen kann, nur das ist ein Geben und Nehmen und bis jetzt sind meine kleinen Wünsche noch unterfüllt :kissing_face:


    PS: Mir fäll es auch manchmal schwer für manche User Verständnis zu haben :grinning_squinting_face:


    LG
    gutemine

    3 Mal editiert, zuletzt von Lost in Translation ()

    • Offizieller Beitrag

    Wenn man auf der Box sichert und eine Flash Erweiterung benutzt ODER das Image von einem USB device bootet ist das Limit eines nfi backups auf die echte Flashgröße der Box eben NICHT ein echtes Limit.

    Die Flashgröße ist bei buildimage kein Limit, sondern die Partitionsgröße, die man als Parameter übergibt.

    Aiusserdem müsste das buildimage dann ehrlicherweise bereits bei 128MB verweigern ein Image zu erstellen weil das Bios dann sowieso das image nicht flashen kann.

    Wenn man die entsprechenden Parameter übergibt, dann tut es das.


    Letztendlich ist es dem User ja lieber er hat wenigstens eine Sicherung und es ist meines Erachtens sinnvoller auch für größere Images das selbe Format zu benutzen als einmal ein tar bal und einmal ein nfi zu machen.

    NFI ist ein spezialisiertes, nicht standardisiertes Format. NFI steht für "NAND Flash Image" und ist nicht für andere Zwecke vorgesehen. Es dient dazu, dem Bootloader Anweisungen zu geben, was wie ins (NAND-)Flash geschrieben werden soll.


    Dieses Format für USB-Sticks und sonstige Speicher zu verwenden ist bestenfalls Zweckentfremdung. Natürlich ist es schön, wenn man NFI entpacken kann, um den Inhalt auf Sticks zu speichern, und dagegen ist garnichts einzuwenden. Aber es spricht absolut nichts dafür, ein NFI zu erzeugen, wenn man das Resultat nicht mit dem Bootloader flashen kann. Das stiftet Verwirrung, sobald ein versuchter Flashvorgang fehlschlägt.

    Im Normalfall sollte die Grenze wenn echter Flash gesichert wird ja eh nicht erreicht werden, also wo ist das Problem da nur zu warnen statt abzubrechen ?

    Im Normalfall wird ein Image vom OE erzeugt, und es ist an der Stelle äußerst sinnvoll, dass buildimage mit einer Fehlermeldung abbricht, da das erzeugte Image nicht lauffähig wäre.

    Wenn ich Flasherweierungen und Multibooten anbiete und damit auch so grosse nfi Images sinnvoll und benutzerfreundlich benutzen kann dann will ich mir nicht stäendig das buildimage patchen müssen um es sinnvoll benutzen zu können. Gerade nachdem es jetzt wegen dem loader ipk standardmässig sowieso in jedem Image ist finde ich es halt bitter wenn ich dan nein eigenes mitliefernb muss das unnötig Platz kostet.

    Neben buildimage ist tar ist übrigens auch standardmäßig im Image.

    Aber wie schon gesagt, wenn Ihr eine Opton haben wollt kann ich gerne einen Patch damit machen, wobei meines Erachtens die Optionen vom Buildimage jetzt schon nicht sehr ausgegoren und benutzerfreundlich sind womit jede weitere Option das nur noch schlimmer machen würde.


    Das Buildimage und die mkfs.* mit allen Optionen für alle boxen richtig aufzurufen sind nicht umsonst der größte Hemmschuh für ordentliche Backup Plugins, das sollte man meines Erachtens nicht noch komplizierter machen.

    Dass zusätzliche Optionen nicht der Einfachheit dienlich sind ist auch meine Meinung.


    Im Übrigen finde ich es schade, dass Dein neuer Patch ganz offensichtlich nicht getestet wurde.

  • Danke fürs Feedback.


    Im Prinzip gebe ich dir ja bei den meisten Sachen Recht, nur die Macht des Faktischen was die User wollen ist leider stärker gewesen.


    Ich habe schon jahrelang sowohl Sicherungen als tar als auch als nfi Image in vielen meiner Tools, du brauchst nicht mal raten was immer verwendet wurde und was davon ignoriert wurde.


    Und nein mit dem busybox tar wirst du zum Sichern auf der box auch nicht immer glücklich werden, weil das z.B. bei sehr langen filenamen schon recht eng wird wenn man die root mit bind mounts wo hinmountet um die ganzen mountpoints los zu werden oder aus einem imagedirectory eines Multiboot tools gesichert wird und damit der Pfad noch länger wird. Nicht umsonst verwende ich dann mein selbst compiliertes volles tar binary für diese Form der Sicherungen.


    Den Patch hattae ich noch mit -i als neue Option getestet und dann nur mehr von Hand auf -w editiert (weil -i oft für info verwendet wird oder für -image stehen könnte, um endlich den imagenamen anzugeben statt mit > xxx.nfi arbeiten zu müssen, was eigentlich auch nicht so wirklich hübsch ist)
    Dabei habe ich eine Zeile übersehen, jetzt sollte er aber stimmen, danke für den Hinweis.


    LG
    gutemine

    4 Mal editiert, zuletzt von Lost in Translation ()

  • OK, dann lösen wir das eben ... anders.


    Danke für den Fisch.


    LG
    gutemine

  • @gutemine


    ich habe die patchs mit dem aktuellen git mtd-utils_1.50 getestet und die funktionieren problemlos. (mkfs.jffs2 patch wird nicht gebraucht da es schon in 1.50 eingecheckt ist)
    buildimage patch auch ok.
    Ich werde sie in meinem image feed übernehmen.


    Vielen Dank.

  • Dann schreibe ich dir hier auch was ich bei OoZooN im Board geschrieben habe:


    Einmal editiert, zuletzt von Lost in Translation ()