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

Probleme beim Auslagern von Apps auf USB Stick

Dieses Thema im Forum "Freetz" wurde erstellt von qqq2001, 21 Feb. 2009.

  1. qqq2001

    qqq2001 Neuer User

    Registriert seit:
    29 Nov. 2008
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi,

    also ich benutze schon seit einiger Zeit freetz und bin sehr zufrieden damit. Allerdings habe ich bis jetzt immer alles in den kleinen 4 MB Speicher meiner FB3170 gepackt. Nun wollte ich den nächsten Schritt machen und einiges auslagern. Davor sei gesagt, dass ich wirklich praktisch keine Ahnung von Linux (mal abgesehen von cat, vi, cd, rm, mkdir etc :D) habe und mich nur an den Anleitungen hier entlang hangele.

    Ich wollte jedenfalls nicht das ganze System auf den USB Stick auslagern (per USBroot), weil ich diesen oft abziehe um ihn mit Daten (für den FTP Server) füttere, da die Übertragungsraten per LAN über die fritzbox viel zu langsam sind.

    Ich bin dann beim Suchen hier im Forum auf das hier gestoßen:
    http://www.ip-phone-forum.de/showthread.php?t=136974

    Habe also nach Anleitung ein paar Pakete mehr als sonst reingepackt. MC, Streamripper und testweise auch mal Apache mit PHP. (zusätzlich praktisch alle Patches ausgewählt um Platz zu sparen)

    Nach make erscheint Meldung zu groß (627kb zu groß um genau zu sein). Ich gehe also in build/modified/filesystem/usr und ziehe mir paar Dateien raus.

    Ich habe genommen. dropbearmulti (242 kb), privoxy (283kb) und mc.bin (624kb).

    Jetzt sollte man doch meinen, dass alle diese entfernten Dateien zusammen reichen um die 627kb des zu großen Images zu kompensieren... aber nein:

    immer noch 218 kb zu groß..... habe dann noch die 170kb große streamripper Datei rausgezogen ... nun ist das Image noch 156kb zu groß...

    Sprich obwohl ich praktisch alle Pakete, die ich überhaupt ausgewählt habe rausgezogen habe ist es noch zu groß. (Habe nur dnsmasq draufbelassen, da es als DHCP Server wohl nicht richtig läuft, wenn es ausgelagert ist)

    Apache und PHP habe ich erstmal liegen lassen, da diese ja eh außerhalb des builds gelagert werden.

    Jedenfalls stehe ich nun vor dem Problem, was ich noch auslagern kann? Oder mache ich irgend etwas falsch?

    Kann ich vom Ordner lib noch was auslagern?

    Da ist z.B. ne Datei "libglib-2.0.so.0.1200.13", welche mit 565kb mein Problem lösen könnte.

    Oder ist das nicht empfehlenswert?
     
  2. sf3978

    sf3978 IPPF-Promi

    Registriert seit:
    2 Dez. 2007
    Beiträge:
    7,667
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Deine Box kenne ich nicht. Aber unter www.freetz.org/wiki/packages kannst Du schauen welche Pakete (auf Boxen auf denen das funktioniert) auslagerungsfähig sind.
     
  3. qqq2001

    qqq2001 Neuer User

    Registriert seit:
    29 Nov. 2008
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
  4. sf3978

    sf3978 IPPF-Promi

    Registriert seit:
    2 Dez. 2007
    Beiträge:
    7,667
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    OK, ich glaube das ist ein Missverständnis meinerseits. Du meinst mit Auslagern was anderes, als ich verstanden habe. Sorry.
     
  5. cando

    cando Aktives Mitglied

    Registriert seit:
    28 Nov. 2008
    Beiträge:
    1,080
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Vielleicht hilft ein

    make distclean

    vor dem eigendlichen

    make


    um die Abhängigkeiten der Bibliotheken zu bereinigen und die ausgelagerten Pakete komplett herauszubekommen...
     
  6. hermann72pb

    hermann72pb IPPF-Promi

    Registriert seit:
    6 Nov. 2005
    Beiträge:
    3,564
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    @sf3978: er ist grundsätzlich anders vorgegangen und kennt anscheinend kein external noch.
    @qqq2001: Dein Stichwort lautet "external". Damit kannst du alles von "make" automatisch machen lassen. Bei den Bibliotheken sollte man etwas vorsichtiger sein. Klar, kann man sie auch versuchen auszulagern. Es konnte aber zu Problemen kommen, wenn die Bibliothek relativ früh beim Start der Box bereits angesprochen wird und in diesem Moment noch nicht ansprechbar ist, weil entweder sie noch per downloader nicht runtergeladen ist (Boxen ohne USB-Host) oder USB-Stick noch nicht gemountet ist (USB-Auslagerung mit external).

    MfG
     
  7. qqq2001

    qqq2001 Neuer User

    Registriert seit:
    29 Nov. 2008
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Nach dem make distclean waren irgendwie alle Einstellungen weg. Unter make menuconfig war danach alles wieder auf Standard o_O

    Ich nutze außerdem kein make nach dem rausziehen der Dateien...nur einmal make menuconfig am Anfang, dann make, dann ziehe ich die Dateien raus und dann führe ich:

    ./fwmod -p -d build dl/fritz.box_wlan_3170.49.04.58.image
    bzw:
    ./fwmod -p -d build dl/fw/fritz.box_wlan_3170.49.04.58.image

    aus... ist das so ok? Oder mittlerweile "veraltet" ? Wie gesagt ich habs nach dieser Anleitung in:
    http://www.ip-phone-forum.de/showthread.php?t=136974

    versucht.

    Mmh ich kann bei make menuconfig einfach nichts finden zu external? Wo finde ich das denn da? Habe hier im Forum auch nur was dazu gefunden, wie ich die 2 Dateien (image und external) auf die Box aufspiele, nicht aber wie ich dieses External überhaupt handhabe.

    Und bringt mir dieses external eigentlich was? Wenn praktisch alle meine Programm gar kein Häkchen bei "ex" auf der Packages-Seite haben?
     
  8. hermann72pb

    hermann72pb IPPF-Promi

    Registriert seit:
    6 Nov. 2005
    Beiträge:
    3,564
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Du musst schon in menuconfig "show expert options" oder wie es immer heißt aktivieren. Und dann unter sonstigen Einstellungen "external" finden. Ich weiß aber nicht, ob es bereits der Bestandteil von stabile-Version ist. Sonst musst du trunk nehmen.

    Auf die Frage, ob external was bringt, sage ich JA! Sonst hätte es cuma nicht gemacht und sonst hätte ich mein "outsourcer" nicht aufgegeben. Bei "external" kannst du auch Sachen auslagern, die nicht vorkonfiguriert wurden. Dann musst du halt die Dateinamen selbst eintragen. Aber die Möglichkeit ist auf jeden Fall gegeben.

    Und wenn du etwas schaffst auszulagern, was noch keiner ausgelagert hat, dann melde es einfach hier, bei cuma oder bei einem der Entwickler, der svn-Schreibrechte hat, dann wird es irgendwann mal eingebaut. Melden am besten in Form von diffs auf aktuelle Trunkversion, dann wird es auch angenommen.

    MfG
     
  9. qqq2001

    qqq2001 Neuer User

    Registriert seit:
    29 Nov. 2008
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hab auf deine Anregung mal trunk ausprobiert und siehe da, da gibts external. Umkehrschluss: in der Final ist es noch nicht drin :|

    Bei der Trunk steht dabei das wäre nur was für Experten?! Sollte ich als Newbie das wirklich ausprobieren? Nicht, dass ich mir nachher alles zerschieße.

    Und wenn ich es "riskiere"... gibts irgendwo ne Anleitung wie ich das mit nicht vorkonfigurierten Apps handhabe? Denn im menuconfig kann ich nur privoxy auswählen als einziges aller meiner Programme.
     
  10. hermann72pb

    hermann72pb IPPF-Promi

    Registriert seit:
    6 Nov. 2005
    Beiträge:
    3,564
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Die Box kannst da immer noch recovern, schlimmeres kann dir nicht passieren. Klar, es erfordert ein gewisses IQ, wenn man external einsetzen will, aber wenn du dich schon durch die outsourcer-threads und Anleitung durchgekämpft hast, bist du kein Anfänger auf der Front.
    Einige Faustregeln:
    1. Versuch es möglich zu vermeiden Bibliotheken auszulagern. Wenn es geht, baue ein statisches Binary und lagere es komplett aus. Es geht dann nicht so oft in die Hose.
    2. Lagere nur unkritische Sachen aus, die möglichst spät beim Systemstart hochgeladen werden. Es macht z.B. keinen Sinn ein ext2-modul auszulagern (womöglich noch auf eine ext2-partition), denn es wird relativ früh beim Boot-Prozess benötigt und das fehlen des Moduls kann fatale folgen haben.
    3. Lagere nicht tausende Pakete aus. Du bekommst irgendwann mal Probleme mit RAM. Die Box ist schließlich nicht aus Gummi und dehnt sich nicht aus.

    Ansonsten frag einfach hier konkret nach und verrate uns doch, was du alles vor hast auszulagern, wo noch keiner hier auf die Idee gekommen ist es auszulagern. Meiner Meinung nach sind ziemlich viele von der gänglichen Paketen bereits "externalized".

    MfG
     
  11. qqq2001

    qqq2001 Neuer User

    Registriert seit:
    29 Nov. 2008
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    So, habe external mal in meine Image integriert und auf die Box geflasht (noch ohne zusätzliche Apps).

    Habe aber noch ein paar Fragen dazu:
    Wenn ich external wie gerade beschrieben über menuconfig reinpacke, erhalte ich ja eine image und eine (leere) external datei.

    Wenn ich nun aber z.B. mc auswähle (sowohl unter packages als auch unter external), kommt die Meldung image too big. Wieso? Sollte er nicht mc in die external Datei packen, so dass die image Datei Ihre normale Größe beibehält? Oder lagert external nur Teile der Apps aus, so dass der restliche Teil immer noch reicht im meine Image Datei zum "überlaufen" zu bringen?

    Ach so... schon mal für die Zukunft... ich flashe die external Datei (wenn es denn geklappt hat mit dem erstellen) vor der Image Datei, oder? Habe dazu hier im Forum widersprüchliche Angaben gefunden...

    Macht es eigentlich einen Unterschied, ob ich die Firmware (*.image) über das original WI oder über das Freetz WI flashe?
     
  12. hermann72pb

    hermann72pb IPPF-Promi

    Registriert seit:
    6 Nov. 2005
    Beiträge:
    3,564
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    #12 hermann72pb, 21 Feb. 2009
    Zuletzt bearbeitet: 21 Feb. 2009
    Schon mal gut, dass du step-by-step vorgehst.
    Woher soll menuconfig wissen, dass du MC auslagern willst? Dafür musst du nach der Auswahl aller gewünschten Pakete in das external menu rein, da wo du external aktiviert hast. Dann erscheinen dort auch die vordefinierten Sachen, die man auch auslagern kann. Sie musst du dann entsprechend aktivieren, sonst packt external erstmal nichts in die xx.external-Datei.
    Man kann es auch nicht eindeutig sagen. Einerseits wäre es besser die ausgelagerten Dateien bereits auf dem Stick zu haben, wenn die Box nach dem Update bootet, andererseits, wenn du die Dateien auf einer laufenden Box updatest, kann es sie auch zum Absturz bringen. Deswegen sollte man möglichst wenig kritische Sachen auslagern. In deinem Beispiel mit dem MC spielt es eigentlich keine Rolle.
    Im Prinzip macht es wenig unterschied. Freetz-GUI-Update ist aber etwas komfortabler und gesprächiger. Daher würde ich es eher empfehlen. Dort kannst du auch entscheiden, wann die Box rebootet und das Image geflasht wird, bei AVM passiert es automatisch. Im Hintergrund laufen aber beim Update dieselben Skripte. AVM-Update lässt sich schlecht debuggen im Fehlerfall.

    Edit: Hab gerade kapiert, dass du MC auch im external-menu auswählst. Normalerweise packt external dann mc.bin in xx.external rein. Beim make kurz vor dem Ende von step3 solltest du auch meldungen von external sehen. Wenn es bei dir nicht passiert, dann ist irgendwas schief gelaufen. Vieleicht kommt es durch die Mischung zwischen stabile/trunk zu Problemen. Man sollte trunk am Besten frisch auschecken und damit von vorne anfangen als über stabile "drüberbügeln". Unabhängig davon poste mal bitte deine .config

    MfG
     
  13. qqq2001

    qqq2001 Neuer User

    Registriert seit:
    29 Nov. 2008
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #13 qqq2001, 21 Feb. 2009
    Zuletzt bearbeitet: 21 Feb. 2009
    Ich kann wie gesagt leider nicht sehen, ob er sie in die external reinpackt, weil er ja dann mit der "too big" Meldung abbricht.

    Aber ja: Kurz vor Step 3 steht: processing external /usr/bin/mc.bin ... moved & linked

    Scheint also wirklich an den anderen Komponenten von MC zu liegen, dass er abbricht.

    Mmh. Ich habe einen Ordner freetz-1.0.2 und einen freetz-trunk... das sollte doch dann eigentlich vollständig getrennt sein, oder?

    Habe ich angehangen. (das ist die, wo ich MC mit drin habe)

    //edit:

    so, ich habe mal einen Vergleich gemacht: Mit dropbear privoxy und co schaffe ich nen image mit 6kb freiem Platz. Wenn ich privoxy auslagere per external habe ich 92kb frei. Es funktioniert also. Im external finde ich dann auch die ausgelagerte privoxy Datei.

    Wollte die Dateien dann mal flashen... leider habe ich festgestellt, dass die Box mit der Trunk external Version meinen USB Stick nicht mehr unter ftp/uStor01 mountet, sondern unter
    /var/media/ftp/uStorro2/1us/usb/001/0021 ?
    ist das normal? Naja jedenfalls habe ich die external in den neuen Pfad geladen und in ftp nen Link auf den neuen Pfad erstellt. Jetzt läuft es erstmal.

    Leider gibt es für dropbear, streamripper und co keine vorgefertigten External Scripte. Daher wäre es vielleicht interessant zu wissen, wie man sowas am besten angeht.

    Ich werde es erstmal mit "own files" rumspielen, ob ich es damit hinkriege.
     

    Anhänge:

  14. hermann72pb

    hermann72pb IPPF-Promi

    Registriert seit:
    6 Nov. 2005
    Beiträge:
    3,564
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Code:
    /var/media/ftp/uStorro2/1us/usb/001/0021
    
    ist meiner Meinung nach nicht normal. Es sei denn in der letzten trunk-Version wurde etwas kräftig geändert.

    Ich weiß zwar nicht, welchen Monster du da ausgewählt hast, denn normalerweise solltest du bei allen patches, die du da mitnimmst kräftig Platz gewinnen. Einige Bemerkungen zu deiner .config:

    1. Ich rate dir wenigstens ext2 ins Image mitzunehmen. Du hast da z.B. usbroot mitausgewählt. D.h. du wagst es evtl. zu benutzen. Wie willst du denn USBROOT auf einer nichtlinuxfähiger Partition nutzen? Das geht bestimmt in die Hose. ext2 gibt es nämlich nicht mehr von AVM aus gratis dazu, die muss man nun einbauen.

    2. Brauchst du bei mc wirklich die ganze Hilfe? Sie wird nämlich nicht ausgelagert. external ist in erster Linie dafür konzipiert einige einzelne Dateien auszulagern und keine kompletten Pakete. Und soweit ich weiß wird bei mc lediglich mc.bin ausgelagert und nichts mehr. Hilfe beansprucht aber schon einiges.

    3. dropbear wäre das Letzte, was ich auslagern werde. Man braucht es permanent auf der Box meiner Meinung nach. Obwohl es sich eigentlich gut für die Auslagerung eignen sollte.

    @Entwickler: Wir sollen ernsthaft darüber nachdenken Einiges vom AVM-Kram zu externalisieren und USB-Stick zu einem möglichst frühen Zeitpunkt zu mounten. Wie funktioniert es eigentlich mit dem mounten beim USB-Root? Kann man dieses "Frühmounten" auch zwecks external ähnlich wie beim USB-Root realisieren?

    MfG
     
  15. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Code:
    /var/media/ftp/uStorro2/1us/usb/001/0021
    Ich hab sowas schonmal gesehen. Wahrscheinlich stimmt da was mit unseren Patches nicht. Ich würde mal tippen, dass der Stick read only gemountet wird. Daher kommt wohl das ro, dass da zu viel ist.

    MfG Oliver
     
  16. qqq2001

    qqq2001 Neuer User

    Registriert seit:
    29 Nov. 2008
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Auf meiner 3170 sind nur 4MB Speicher. Ich musste schon immer praktisch alle Patches auswählen, damit überhaupt dropbear, dnsmasq und privoxy drauf passten.

    USB root hatte ich noch drauf, weil ich es mal überlegt hatte zu benutzen. Da ich den Stick aber gerne noch abziehen können möchte (um ihn mit Daten zu füllen) bin ich ja jetzt umgeschwenkt auf external ;)

    Ne, wahrscheinlich nicht. Ich hab einfach nur MC ausgewählt ohne mir über die Unterpunkte Gedanken zu machen. Auch weil ich zuerst davon ausgegangen bin, dass external automatisch das ganze Paket auslagert. Nun wo ich da schlauer habe ich die hilfe abgewählt. Ist aber leider immer noch zu groß.

    Ich dachte das entscheidene ist, dass die Sachen eben nicht früh beim Start gebraucht werden. Daher werde ich mit dropbear einfach mal rumprobieren. Wenn er nach dem Start einwandfrei vom USB Stick geladen wird, sollte es ja in Ordnung sein.

    Mmh ich kann auf dem Stick ganz normal schreiben, trotz des ungewöhnlichen Pfads. Ist wie gesagt auch erst seit der Trunk mit External. Bei der 1.0.2 war alles in Ordnung (und da hatte ich die selben Patches ausgewählt).

    Ich habe übrigens mal nen bissche mit "own files" rumprobiert. Das klappt super mit dem Auslagern.

    Nur was mir seltsam erscheint: Ich habe freetz gerade trotz einiger Pakete bei 200kb freiem Platz (weil paar Sachen ausgelagert)

    Nun wähle ich z.B. streamripper zusätzlich aus. Habe mal unter freetz-trunk/packages geguckt... er besteht nur aus einer Datei.

    Diese lagere ich per own files aus, was auch klappt laut dem Log. Trotz sagt er mir nun "too big" (-83kb).

    Erstens ist die streamripper Datei nur 123kb groß... sprich selbst ohne external müsste es passen und zweitens sollte doch mit external alles erst recht funktionieren und weiterhin 200kb frei sein.

    Wenn ich nach dem abwählen von streamripper "make config-clean-deps" mache, erscheinen da unter abgewählt einige Libs... sprich streamripper scheint doch aus mehr als der einen Datei zu bestehen... nur wo kommen die her? Und wie kann ich jemals streamripper auslagern, wenn das Hauptplatzproblem nicht bei streamripper selbst und nicht bei den Libaries liegt, welche ich ja eher nicht auslagern möchte??
     
  17. hermann72pb

    hermann72pb IPPF-Promi

    Registriert seit:
    6 Nov. 2005
    Beiträge:
    3,564
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Mit dem streamripper da musst du einfach nachforschen. Und bei den Sachen, die schon "externalized" sind ist die Tendenz so, dass höchstens 2-3 Dateien pro Paket überhaupt ausgelagert werden. Manchmal kann man Bibliotheken auslagern. In den meisten Fällen reicht es vollkommend aus. Das war auch der ursprungliche Gedanke von external. Das was du willst, geht eher in die Richtung Pakete komplett auszulagern. Und dabei muss man schon etwas anders vorgehen.

    Zu den Größen brauchst du dich nicht wundern. Erstens werden die ganzen Dateien im Image sehr stark komprimiert, sodass die 123kB überhaupt nichts heißen. Im Image belegt diese Datei vielleicht 70kB, wenn überhaupt. Zweitens, beim Dateisystem im Image gibt es eine bestimmte Blockgröße. Und sie liegt -glaube ich- bei 64kB. D.h. Imagegröße kann nur in 64kB-Schritten verändert werden. Die Größe ist schon so ausgewählt, weil es dabei irgendein Optimum zwischen Komprimierung und Performance liegt. Du kannst zwar die Blockgröße selbst definieren, ich würde aber davon abraten.

    MfG