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

Alternative fuer USB-Root auf dem Stick

Dieses Thema im Forum "Freetz" wurde erstellt von abraXxl, 10 Apr. 2008.

  1. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 abraXxl, 10 Apr. 2008
    Zuletzt bearbeitet: 31 Okt. 2011
    Hallo !

    Die bereits bestehende Variante USB-Root auf Stick funktioniert, wie im Thread festgehalten, nicht zuverlässig auf einigen Boxen z.B. Speedport w900v.

    Der USB-AHCI Hostkontrollertreiber (Modul) scheint - obwohl nicht im Modul vermerkt - Abhängigkeiten mit dem tiatm(dsl), ubik2 und dem CAPI Treiber zu haben, bzw. das Piglet-Modul initialisiert die USB-Logik nicht richtig. Wenn die ISDN bzw DSL-Dardware nicht initaliesiert ist, werden die USB-Geräte nicht vom HostController konfiguriert.

    Hier nun die Lösung "USB-Root on demand" via Freetz-Feature "run autorun.sh on mount".
    1. Freetzen mit "automount filesystems" und "run autorun.sh on mount".
    2. Flashen
    3. autorun.sh auf den Stick kopieren.
    4. Rootfs auf dem Stick anlegen und im neuen Rootfs ein /rom anlegen
    5. Einen Link anlegen auf dem Stick, der rootfs heisst und relativ vom Root des Sticks auf das Verzeichnis fuer das neue Rootfs
    6. Box entweder mit Stick hochfahren oder ohne.
      Der Stick kann auch nach dem Booten dann eingesteckt werden.

    Noch ein paar Pros/Contras zum USB-Root Script:
    Pro:
    • Hardware schon komplett initialisiert. _Fast_ alles weitere kann nun nun via Asterisk gemacht werden, wie z.B. AB.
    • Ermöglicht mit obigen Punkt ein alternatives Linux aufzuspielen wie Debian/Mipsel oder OpenWrt (zumindest das Rootfs) ohne Features einzubüssen.

    Contra:
    • Geht nicht auf Boxen ohne USB.
    • Längere Boot-Zeit. (Sollte Egal sien idR läuft so'ne Box dauerhaft.

    OpenWrt News:
    Es läuft siehe Signatur.
    telefond, voipd, ctlmr, wpa_authenticator laufen unter OpenWrt mit uclibc 0.9.2[89] jetzt mit etwas mehr wie 30 Tagen uptime. multi und dsld nicht notwendig da OpenWrt die Configuration der Netzwerkinterfaces übernimmt. QoS macht iptables mit OpenWrt und Kernel Boardmitteln. br2864ctl, pppd, iptables + openswan ersetzen AVM Software. Webinterface durch ctlmgr/httpd combo ersetzt. NFS und Samba + Sehr viel software aus der Openwrt-software Blibliothek.

    Debian News:
    Etch Mipsel bootet. AVM Software läuft nicht, da Debian nicht uclibc nutzt sondern glibc.

    have more fun

    -- 08-08-05 Neue Version des Skriptes welches ohne umkonfiguriertes Busybox mi Readlink auskommt
     

    Anhänge:

  2. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Ähm ja. Schön wenn das funktioniert. Ich versteh fast nix von dem Skript. :-(
    Woher kannst du so gut Shell Scripten?

    MfG Oliver
     
  3. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi !

    Es ist auch nur ein Proof of Concept. Es noch nicht fue rmeinen Geschmack ausreichend kommentiert. Und nach johnbock (siehe hier) schlechter sh-style. Es gibt noch ein Paar Todos: darunter ist Kommentieren, Coding-Style anpassen und noch mehr vom alten Rootfs umounten. Im Moment bleibt fast der komplette Baum des alten Roots unter /initrd gemountet. :(


    Das ist kein guter Style, in Debian würde man solche Scripte/Programmierer zum Teufel jagen. Ich war nur etwas angnervt, dass die Hardware vom Speedport so komisches Verhalten zeigt.

    Noch ein paar Pros/Contras zum USB-Root Script:
    Pro:
    • Hardware schon komplett initialisiert, und fuer nur POTS/ISDN/DECT Telefonie ohne Voip braucht man keine AVM Software mehr. Alles weitere muss nun via Asterisk gemacht werden, wie z.B. AB.
    • Ermöglicht mit obigen Punkt ein vernünftiges Unix/Aufzuspielen wie Debian/Mipsel oder OpenWrt (zumindest das Rootfs) ohne Features einzubüssen.

    Contra:
    • Zum Umkonfigurieren der POTS/ISDN/DECT Telefonie muss man einmal das alte WebInterface ohne USB-Root on Demand nutzen. Oder man Benutzt halt ein Feature-Rich Freetz Image als rootfs.
    • Geht nicht auf Boxen ohne USB.
    • Längere Boot-Zeit. (Sollte Egal sien idR läuft so'ne Box dauerhaft.

    Zum letzten Punkt:
    Unix-Admin und Student da lernt man sowas und hat Zeit ;).

    Ich würde mich freuen wenn das jemand ausprobiert. Sollte eigentlich auf allen USB-Boxen mit Freetz und Busybox ab 1.8 laufen. (Ich nutze das re-exec Feature vom Busyboxs init.)

    mfg
    PS: Ich hätte Patches für Freetz (/etc/init.d/rc.S) damit man das Rootds auf dem Stick nicht modifizieren muss nachtraeglich. Kann ich die irgendwie einchecken? Email/SVN?
     
  4. Silent-Tears

    Silent-Tears IPPF-Promi

    Registriert seit:
    3 Aug. 2007
    Beiträge:
    7,456
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BI
    Du kansnt hier ein patchfile anhängen zum aktuellen trunk z.b., oder aber ein Ticket eröffnen und das im Trac anhängen.
     
  5. cuma

    cuma Aktives Mitglied

    Registriert seit:
    16 Dez. 2006
    Beiträge:
    2,735
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Das Skript ist wirklich krass geschrieben, ich blick da nicht durch.
    @Silent-Tears: Die Datei kommt nicht ins Image sondern auf eine Partition an USB
     
  6. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi !

    So das Skript ist jetzt kommentiert.
    Ich habe die Datein im Hauptbeitrag aktualisiert.

    cya
     
  7. coolphoenix

    coolphoenix Mitglied

    Registriert seit:
    21 Juli 2005
    Beiträge:
    234
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #7 coolphoenix, 15 Mai 2008
    Zuletzt bearbeitet: 15 Mai 2008
    coole sache, funktioniert auf anhieb!

    aber: ich habe immer 100% cpu-auslastung durch "[avm_dect_thread]". das ist etwas... störend :)

    ist das schon mal jemandem aufgefallen?

    oder könnte das an meinem rootfs sein? (ist zugegebenermaßen recht vollgepumpt mit sachen *g*), edit: auch ein fast unmodifiziertes image gibt mir 100% cpu-auslastung... (100% sys)

    edit2: ich habe soeben gemerkt: ein "kill" auf die pid des o.g. programms bringt die 100% cpu-auslastung. das scheint also irgendwie abzustürzen.
     
  8. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi !

    Auf welcher Hardware setzt du das Script ein?

    Das heisst aus irgendeinem Grund bekommt dieser Prozess ein Kill.
    Das scheint jedoch ein Kernel-Thread zu sein, der sollte kein kill bekommen, da ich /proc/<pid>/exe überprüfe, und kernel threads kein Executable haben.

    Hast du readlink im Busybox drin?

    cya
     
  9. coolphoenix

    coolphoenix Mitglied

    Registriert seit:
    21 Juli 2005
    Beiträge:
    234
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ich denke schon, dass ich readlink drin habe (ist busybox 1.10.2).

    ich habe den killteil des scripts mal durchlaufen lassen und statt des kills nur ein echo des befehls eingegeben. und dort erscheint tatsächlich immer die pid des prozesses.

    ich habe dann noch versucht, das script so anzupassen, dass halt die pid geskippt wird (der prozess hat immer die gleich pid: [ $pid -eq 317 ] && continue), das hat auch geklappt, zumindest wurde bei dem echo der prozess nicht gelistet.

    nach ausführen der autorun.sh (mit der modifikation) gab's aber leider immer noch das gleich problem... vllt hat sich während des ausführens die pid vom prozess geändert, sodass mein kleiner hack da nichts mehr gebracht hat.

    ich benutze die aktuelle firmware für die 7270: FRITZ.Box_Fon_WLAN_7270.54.04.57.image (meine sig werde ich noch updaten...)
     
  10. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Du kannst es überprüfen mit
    Code:
    make busybox-menuconfig
    Was sagt
    Code:
    ls -la /proc/317 
    Koennte auch sein das ein weitere Prozess das verursacht.

    cya
     
  11. coolphoenix

    coolphoenix Mitglied

    Registriert seit:
    21 Juli 2005
    Beiträge:
    234
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ich habe mein system nun soweit, dass ich es mit usb-root zum laufen bekommen habe (allerdings der gleiche rootfs usw). nun hat der prozess eine andere pid, deswegen:

    Code:
    # ls -la /proc/471/
    dr-xr-xr-x    4 root     root            0 May 16 17:51 .
    dr-xr-xr-x   80 root     root            0 Jan  1  2000 ..
    -r--------    1 root     root            0 May 16 17:51 auxv
    -r--r--r--    1 root     root            0 May 16 17:51 cmdline
    lrwxrwxrwx    1 root     root            0 May 16 17:51 cwd -> /
    -r--------    1 root     root            0 May 16 17:51 environ
    lrwxrwxrwx    1 root     root            0 May 16 17:51 exels: /proc/471/exe: cannot read link (not a symlink?)
    
    dr-x------    2 root     root            0 May 16 17:51 fd
    -r--r--r--    1 root     root            0 May 16 17:51 maps
    -rw-------    1 root     root            0 May 16 17:51 mem
    -r--r--r--    1 root     root            0 May 16 17:51 mounts
    -r--------    1 root     root            0 May 16 17:51 mountstats
    -rw-r--r--    1 root     root            0 May 16 17:51 oom_adj
    -r--r--r--    1 root     root            0 May 16 17:51 oom_score
    lrwxrwxrwx    1 root     root            0 May 16 17:51 root -> /
    -r--r--r--    1 root     root            0 May 16 17:51 schedstat
    -r--r--r--    1 root     root            0 May 16 17:51 smaps
    -r--r--r--    1 root     root            0 May 16 17:51 stat
    -r--r--r--    1 root     root            0 May 16 17:51 statm
    -r--r--r--    1 root     root            0 May 16 17:51 status
    dr-xr-xr-x    3 root     root            0 May 16 17:51 task
    -r--r--r--    1 root     root            0 May 16 17:51 wchan
    der fehler bei dem "exe" war aber auch ohne usb-root so da, da bin ich mir sicher.


    aber! du hast reacht, readlink war anscheinend nicht an, zumindest gibt mir ein "make busybox-menuconfig" das aus (dort ist readlink nicht aktiviert). lag also der fehler vermutlich daran! nur komischerweise kann meine busybox andere links übersetzen, den in /proc aber nicht...
     
  12. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi !

    Kernel threads haben keine Programm, zu dem es auf dem Dateisystem einen passenden Inode geben würde. Daher schlägt ls als auch readlink fehl. Mein script nutzt dies.

    readlink an sich ist eine Funktion in der uclibc. busybox ls nutzt dies um Links umzusetzten.
    Der Readlink-Befehl an sich ist nur eine Anwendung des Readlink-Calls.

    cya

    PS: Habe im Hauptbeitrag den Tipp mit Readlink eingebaut.
     
  13. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi !

    Neue Skriptversion.
    Im Leitartikes Pros und Contras, sowie Vorraussetzungen upgedated.
     
  14. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Neu Skriptversion im Hauptbeitrag,
     
  15. henfri

    henfri Mitglied

    Registriert seit:
    21 Sep. 2005
    Beiträge:
    419
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    kann sich hier die Festplatte nach dem Boot schlafen legen, oder finden regelmäßig Zugriffe statt (ich möchte nur Freetz einsetzen und mein Flash der Fritzbox ist zu klein)

    Gruß,
    Hendrik
     
  16. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi !

    Nein leider auch hier nicht.

    cya
     
  17. Loomes

    Loomes Neuer User

    Registriert seit:
    17 Jan. 2007
    Beiträge:
    109
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hmm ich habe das gestern mal bei mir probiert. Mit mässigem Erfolg muss ich sagen.

    Mein Vorgehen:
    - Image mit aktuellem Freetz SVN Trunk erstellt für die 7170. Labor 11945
    - Dieses Image mit speed2fritz vom 29.08 startklar gemacht für den W900V
    - Image erstmal geflasht.....läuft vernünftig.

    So nachdem ich dann das mit USB-Root selbst durchhatte und nach etlichem lesen gemerkt habe das es nich geht auf dem 900er :mad:
    habe ich noch dieses Archiv hier getestet http://www.ip-phone-forum.de/showpost.php?p=1074446&postcount=4 aber das scheint auch outdatet zu sein
    wollte ich es also mit dem autorun testen.

    - Stick vorbereitet unter debian testing, sda1=swap sda2=ext2 sda3=vfat
    - Alle Daten aus dem FBDIR von speed2fritz nach Anleitung nach sda2 kopiert und rechte gesetzt und das rom dir angelegt. autorun.sh noch dazu.

    So wenn ich nun den Stick anstecke am Router startet er wie er soll die autorun.sh, dann sehe ich noch wie er versucht einige Sachen zu killen und dann schmeißt er mich auch aus der Telnet session raus. Dann geht der Router offline....der USB Stick blinkt immer fleissig. Kurze Zeit später rebootet der Router dann einfach.
    Liegt es an der Labor AiO Firmware? Am sp2Fritz? An der autorun.sh? Oder bin ich einfach nur zu blöd und mache irgendwas falsch?

    Am liebsten wäre mir ein Boot direkt von USB per init=. Wenn ich all das was ich gestern gelesen habe richtig verstanden habe scheitert es doch wohl "nur" daran das einige Treiber erst geladen werden müssen beim 900er damit er den Stick erkennt? Und genau das sollte ja das angepasste usbroot aus dem Link oben machen?!?
     
  18. Silent-Tears

    Silent-Tears IPPF-Promi

    Registriert seit:
    3 Aug. 2007
    Beiträge:
    7,456
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BI
    Wieso doppelt? Freetz kann mit der Alien-Option direkt ein passendes Image erstellen. Funktioniert bei mir.

    Am besten einfach ausprobieren und uns partizipieren lassen :)

    Das aus dem Link ist kein komplettes USB-Root, wie du dir das vorstellst.
     
  19. Loomes

    Loomes Neuer User

    Registriert seit:
    17 Jan. 2007
    Beiträge:
    109
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Jo ich weiss das freetz direkt für den 900er z.B. bauen kann, ich bevorzuge aber den anderen Weg :)
    Sicher werde ich das als nächstes erstmal mit der letzten Final für den 7170 testen ob es damit funktioniert. Aber kann ja durchaus sein das diese Erkentniss schon vor mir jemand erlangt hat! Der Tag hat ja leider nur 24h und arbeiten muss man zwischendrinn ja auch noch :))
     
  20. abraXxl

    abraXxl Mitglied

    Registriert seit:
    9 Jan. 2007
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi !

    Das Problem ist das nicht nur an den Treibern zu hängen scheint, wenn man die nötigen insmods/modprobes auf der Kommandozeile via serieller Console eingibt bei (init=/bin/sh) stockt nach insmod Piglet die serielle Console.
    Nur noch Kernel Messages werden angezeigt.
    Ich habe leider noch nicht herausgefunden was die AVM-Soft irgendwo macht damit USB und Serielle Console nach dem Laden der Module wieder und endlich funktionieren.

    rootfs Symlink angelgt? Ich vermute mal ja.

    Warum dein rootfs dann rebootet erschliest sich mir nicht?
    Wie Silent-Tears schon sagt probiere aus, ob das mit einem Alien-Freetz fuer den W900V funktioniert.
    Wenn das nicht funzt brauchen wir mehr Details. Serielles Bootlog, Pakete im Freetz, ...

    Das war ein Anfang hat aber nie richtig funktioniert.
    Weshalb diese Lösung entwickelt worden ist.

    cya