.titleBar { margin-bottom: 5px!important; }

[Frage] 7390 - NAND Flash als root benutzen?

Dieses Thema im Forum "Freetz" wurde erstellt von starmagoo, 17 Feb. 2012.

  1. starmagoo

    starmagoo Mitglied

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    281
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Wiesbaden
    Servus,

    kurz und knapp. :)

    Ist es Möglich den NAND Flash als root "/" zu benutzen?
    Der interne Flash ist ja dennoch recht klein und ich stoße immer wieder an die Grenzen...

    bzw. kann ich Teile des Root nach "/var/dev/nand" auslagern?
     
  2. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,779
    Zustimmungen:
    10
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Klar, kannst du Pakete mit external auf den NAND auslagern.

    Aus dem NAND booten hab ich noch nicht geschafft. Dabei gab es bei meinen Versuchen mehrere Hürden:
    1. Direktes Booten über die Kernelargs ging nicht, da AVM den root Parameter fest vorgibt
    2. Gepatchter Kernel und booten von NAND -> Problem im Fehlerfall, da man das nicht so einfach wieder abschalten kann (mit serieller Konsole jedoch kein Problem)
    3. häufige Abstürze (Ich vermute, dass es da noch Probleme mit dem Kernel gab, die inzwischen vielleicht auch behoben sind)

    Wäre aber auf alle Fälle ein Thema, das man nochmal angehen könnte...

    Gruß
    Oliver
     
  3. linuxkasten

    linuxkasten Aktives Mitglied

    Registriert seit:
    2 Feb. 2009
    Beiträge:
    889
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    zu 2.: könnte man das nicht irgendwie so lösen, dass man einstellt, dass abwechselnd vom NAND und dann wieder normal bootet?
    Das gibts für meine Dockstar, allerdings hat die uboot als Bootloader... keine Ahnung welcher in der 7390 steckt, habe keine.
     
  4. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,779
    Zustimmungen:
    10
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Das Problem mit dem Nand ist, dass man einen USB-Stick einfach abziehen kann was mit dem NAND nicht geht. Wir bräuchten also auf alle Fälle einen Mechanismus, der bei einem nicht abgeschlossenen NAND-Boot normal (ohne NAND-Root) bootet. Das ganze müsste in ein Skript, da wir kein uboot haben...

    Gruß
    Oliver
     
  5. starmagoo

    starmagoo Mitglied

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    281
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Wiesbaden
    USBroot ist doch im Prinzip aber nix anderes (bis auf den Hinweis mit dem abziehen des Sticks sollte mal was nicht gehen...). Oder irre ich mich da?

    Wie linuxkasten schrieb ist das bei einer DockStar super gelöst. ich vermute eine Bootloader ala uboot zu integrieren wird niht funktionieren...!?

    Klar ist das ein "geiles" Thema da man sich den Stick als "root" oder "external" schenken kann...

    Ich bin leider nicht so gut drin in der Materie das ich direkt was zum ansetzen hätte aber vielleicht schafft man es ja gemeinsam! :)

    @olistudent
    Mich würde da mal interessieren wie du deine Tests angestellt hast denn ich entnehme deinem Post das du es hin bekommen hast... nur eben bedingt (abstürze, fehlendes abfangen bei Bootschleife, etc...).

    :cool:
     
  6. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,779
    Zustimmungen:
    10
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Prinzipiell kann man die Bootpartition mit z.B. "root=/dev/mtdblock4" als cmdline-Argument angeben. AVM hat diesen Weg verbaut, da sie die root-Partition fest vorgeben. Nachdem man sich einen Kernel ohne diese Vorgabe gebaut hat kann man darüber umschalten von welcher Partition gebootet wird. Ohne serielle Konsole brauchst du aber gar nicht anfangen...

    Gruß
    Oliver
     
  7. starmagoo

    starmagoo Mitglied

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    281
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Wiesbaden
    Kannst du mir da genauer sagen was ich auswählen müsste?

    Ich vermute du meinst folgendes?

    http://www.wehavemorefun.de/fritzbox/Serielle_Konsole

    http://www.wehavemorefun.de/fritzbox/index.php/Bauanleitung_für_serielle_Konsole

    So was habe ich mir aus einem Handy Kabel für die Dockstar auch gebaut. Sollte ich demnach für die FB auch schaffen... :cool:
     
  8. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,779
    Zustimmungen:
    10
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Wenn es so einfach wäre...

    Der Kernel muss gepatched werden. So in die Richtung:
    Code:
    --- linux-2.6.28/arch/mips/fusiv/fusiv_mips32/fusiv_mtd.c.orig  2012-02-22 21:45:08.361141466 +0100
    +++ linux-2.6.28/arch/mips/fusiv/fusiv_mips32/fusiv_mtd.c       2012-02-22 21:46:43.129137241 +0100
    @@ -34,6 +34,7 @@
     
     #include <asm/setup.h>
     #include <asm/io.h>
    +#include <asm/prom.h>
     
     #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
     #define DO_MTD
    @@ -602,6 +603,7 @@
     void fusiv_mtd_add_notifier(struct mtd_info *mtd) {
     
         int i, index;
    +    char *cl;
     
         if(!mtd->name) {
             DEBUG_MTD("Leeres MTD �bergeben!");
    @@ -609,6 +611,11 @@
         }
         DEBUG_MTD("name %s" , mtd->name);
     
    +       cl = prom_getcmdline();
    +       if (strstr(cl, "root=") != NULL) {
    +               return;
    +       }
    +
         for (i = 0; i < sizeof(str_rootfs) / sizeof(char*) ; i++) {
             if (!strcmp(mtd->name, str_rootfs[i])) {
                 DEBUG_MTD("found %s", mtd->name);
    --- linux-2.6.28/arch/mips/fusiv/fusiv_mips32/prom.c.orig       2011-03-31 10:50:42.000000000 +0200
    +++ linux-2.6.28/arch/mips/fusiv/fusiv_mips32/prom.c    2012-02-22 21:36:23.153164882 +0100
    @@ -142,6 +142,10 @@
     }
     EXPORT_SYMBOL(board_memsize);
     
    +char* prom_getcmdline(void) {
    +    return &(arcs_cmdline[0]);
    +}
    +
     /*------------------------------------------------------------------------------------------*\
     \*------------------------------------------------------------------------------------------*/
     /*--- #define DEBUG_WLAN_DECT_CONFIG ---*/
    
    Gruß
    Oliver
     
  9. starmagoo

    starmagoo Mitglied

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    281
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Wiesbaden
    Ohje... :gruebel:

    Ich denke das wird zu hoch für mich. Ich will nicht sagen Böhmische Dörfer aber viel verstehe ich von "C" bzw. Programmieren allgemein nicht...

    Dachte ein auswählen diverser Optionen in "make kernel-menuconfig" würde hier reichen... :???:

    schade. Ich schaue dennoch mal drüber ob ich was herauslesen kann...
     
  10. linuxkasten

    linuxkasten Aktives Mitglied

    Registriert seit:
    2 Feb. 2009
    Beiträge:
    889
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Du musst hier nichts selbst programmieren oder den Code von Olistudent verstehen. Das ist ein Patch, den du anwenden musst.
     
  11. starmagoo

    starmagoo Mitglied

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    281
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Wiesbaden
    Das ist mir schon bewusst allerdings die Aussage "So in die Richtung" heißt für mich "das wäre ein Ansatz aber nix endgültig fertiges"! Bevor ich hier mir durch unwissenheit mein System zerschieße versuche ich es lieber mal zu verstehen! ;)

    Ohne die angesprochene Konsole lass ich sowieso vorerst die Finger davon...
     
  12. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,779
    Zustimmungen:
    10
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Ich habe den Patch nicht auf der Box getestet. Die Änderung hat aber kompiliert... (Vielleicht passt er, vielleicht hab ich was nicht beachtet...) :mrgreen:

    Gruß
    Oliver