[obsolete] Outsourcer: Vorbereitungsskript für Downloader-CGI

hermann72pb

IPPF-Promi
Mitglied seit
6 Nov 2005
Beiträge
3,724
Punkte für Reaktionen
16
Punkte
38
Seit FREETZ r2605 wurde OUTSOURCER mit cuma's EXTERNAL zusammengeführt. Somit können die Dateien für den Downloader mit dem EXTERNAL-Skript automatisch generiert werden. Downloader MUSS als cgi-Paket angewählt werden, damit man im menuconfig unter EXTERNAL entsprechende Menüpunkte zu sehen bekommt.


Es wurde hier schon oft diskutiert, dass man das Erstellen von Images mit auslgelagerten Binaries und Libs automatisieren sollte, damit es etwas benutzerfreundlicher wird und nicht mit sehr viel Tiparbeit verbunden ist. Nun hatte ich mich die Tage hingesetzt und ein Skript dazu geschrieben. Das Ganze habe ich mehr oder weniger glücklich als "Outsourcer" getauft.
Zum Ausprobieren sollte man beide beigefügte Archive im mod-Hauptverzeichnis entpacken. Der Outsourcer legt sich unter "tools/outsourcer" ab. "fwmod_custom" wird nur gepatcht, damit outsourcer aufgerufen werden kann.
Der Outsourcer wird über config-Dateien im outsourcer-Verzeichnis geregelt. Im Archiv liegen zwei Beispiele (mc und OpenVPN), die nicht unbedingt bei jedem arbeiten werden und sollen daher auch nur als Beispiele betrachtet werden.
Der Outsourcer läuft zwischen STEP2 und STEP3 und packt in den configs festgelegte Dateien als "gz". Diese Dateien landen dann im Unterverzeichnis namens "outboard" (im mod-Hauptverzeichnis zu finden). Anstelle der Dateien werden dann automatisch symlinks angelegt. Im "outboard" ist dann auch die dazugehörige Downloader-Konfiguration als "downloader.conf" zu finden. Die Dateien in "outboard" sollen dann entsprechend auf eurem ftp- oder http-Server landen, von dem sie per Downloader nachher abgeholt werden.

Ich bitte diejenigen, die sich mit Downloader etwas auskennen, mein Skript zu testen und sich dazu zu äußern. Später dokumentiere ich es evtl. etwas ausführlicher. Jetzt habe ich leider keine Zeit dafür.

MfG
 

Anhänge

  • outsourcer.tar.bz2
    1.7 KB · Aufrufe: 169
  • fwmod_custom.bz2
    363 Bytes · Aufrufe: 163
Zuletzt bearbeitet:
Schönes Script. Funktioniert auch, so weit ich das sehen kann.

Als Erweiterung wäre für mich dabei interessant, das Ganze ohne das "gzippen" auf einen USB- oder NFS-Speichermeidum auslagern zu können, am besten auch ohne den downloader gleich mit zu nutzen.

*g* mri fallen dann noch so "Kleinigkeiten" wie
- automatisches Suchen und benutzen der Grossen Dateien (die man auslagern kann),
- direktes Kopieren auf entsprechendes Medium (klar, ein Mountpoint an der richtigen Stelle und das passiert tatsächlich so)
- direktes Hochladen via FTP/SCP mit vorher eingegebenen Logindaten

ein.

Klar, alles "Spielereien", die man nicht zwangsläufig braucht, da es mit simplen ein bis zweizeilern erledigt ist, aber wäre halt einfach etwas Schönes, das alles aus einem Script heruas erledigt zu haben.

Trotzdem vielen Dank, ich denke nämlich, dass so etwas tatsächlich fehlt und vielen hier die Arbeit enorm erleichtern wird.
 
Als Erweiterung wäre für mich dabei interessant, das Ganze ohne das "gzippen" auf einen USB- oder NFS-Speichermeidum auslagern zu können, am besten auch ohne den downloader gleich mit zu nutzen.
Dafür gibt es ab 15.3 USB-Root oder NFS-Root
- automatisches Suchen und benutzen der Grossen Dateien (die man auslagern kann),
- direktes Kopieren auf entsprechendes Medium (klar, ein Mountpoint an der richtigen Stelle und das passiert tatsächlich so)
- direktes Hochladen via FTP/SCP mit vorher eingegebenen Logindaten
1. Nein. Man kann es nicht automatisieren. Man muss es mit einem gewissen Menschenverstand tun. Sonst lagert er dir Telefon-Dämon aus (ist doch auch groß), was nicht so vernünftig wäre..
2. Es ist eher als Vorbereitungsprogram für Downloader gedacht, nicht für NFS- oder USB-Root. Deswegen nein.
3. Das hatte ich mir angedacht, aber nicht realisiert. Es muss auch hier gut überlegt werden, ob man es automatisch tut. Möglich wäre es aber sicherlich. Mal sehen, vielleicht als Option.

Sonst danke für die Rückmeldung.

MfG
 
Hintergründe, wieso man gesunden Menschenverstand braucht, stehen teilweise im Wiki, und ein Analyse-Hilfsmittel können die Inotify-Tools sein.

Edit 09.01.2007, 22:15: Damit es nicht wieder Fragen dazu gibt: Ich habe diverse Beiträge hier gelöscht, und zwar weil sie OT waren (eigene von mir waren auch dabei) und ihren Zweck erfüllt hatten. Ich wurde ja auch gebeten, sie zu löschen und entspreche dem gern.
 
Zuletzt bearbeitet:
wenn der outsourcer korrekt integriert ist und man anschließend eine modifizierte Firmware bauen möchte, ruft man den build Prozess dann mit make auf oder mit einer anderen Anweisung auf?
 
ja, einfaches make genügt, weil "fwmod_custom" so verändert wird, dass der Outsourcer automatisch beim make zwischen STEP2 und STEP3 aufgerufen wird. Den Outsourcer hatte ich extra etwas gesprächiger gemacht, sodass dir seine Meldungen auf keinen Fall entgangen werden sollen. Du wirst sie auch dann sehen, wenn die Konfiguration komplett leer ist.
Poste bitte nachher hier deine Konfigurationen, wenn es geklappt hat.

MfG
 
hat alles uper geklappt. Tolles Script. Kann man das denn nicht standardmäßig in freetz mit aufnehmen?
 
Wenn jemand, der sich etwas mehr mit menuconfig auskennt und dort irgendwo so ein Schalter aufbauen würde... Ansonsten war die Resonanz dafür etwas mäßig. Sozusagen Nischenanwendung.

Poste doch deine configs zum Outsourcer. Würde sicherlich einige interessieren.

MfG
 
wahrscheinlich, wird das Potential von deinem Script (noch nicht) erkannt.
Ich kann das Script nur jedem empfehlen, weil es bei gleichbleibenden Vorgängen, d.h. wenn lediglich eine neue AVM-Verson eingepflegt wird, das Outsourcen ungemein erleichert, weil der Outsorucer-Aufwand beim zweiten identischen Packen auf Null reduziert wird.

Klasse!

Anbei meine "bescheidene" Config.

packages.conf
Code:
# outsourcer active packages for ds-mod make routine

tor
#mc
#openvpn
# testpackage1
# testpackage2

tor.conf
Code:
/usr/lib/libcrypto.so.0.9.8 /mod/lib
/usr/sbin/tor /mod/sbin
 
Ich finde die Idee einer "Outsourcing-Hilfe" für den Downloader im Grunde nicht schlecht und hätte es mir auch schon angeschaut, wenn ich mehr Zeit hätte. Ihr merkt ja, daß ich nichts mehr einchecke - sorry.

Weshalb die Resonanz evtl. gering ist, kann ich mir dadurch erklären, daß seit der Freigabe von Freetz für Boxen mit USB-Host inzwischen USB-Root das Mittel der Wahl ist:
  • keine Pakete im RAM,
  • unbegrenzter und persistent beschreibbarer Speicher,
  • dazu noch einfache Paket-Updates vom PC aus über einfaches Dateikopieren und ohne Flash-Vorgang, solange der Kernel nicht getauscht werden muß.
Für Geräte ohne USB-Host bietet sich mit gleichen Vorteilen NFS-Root an, welches lediglich den Nachteil hat, daß der NFS-Mount immer verfügbar sein sollte, und zwar per Ethernet (ist skript-seitig nicht für WLAN konzipiert momentan).
 
wenn man zu USB-Root ein Tutorial einsehen könnte, würde sich so denke ich, der ein oder andere dieses Themas auch annehmen.
 
wenn man zu USB-Root ein Tutorial einsehen könnte, würde sich so denke ich, der ein oder andere dieses Themas auch annehmen.

Hast du dir das USBroot-Script mal angeguckt? Da steht doch tatsächlich alles drin, was mach braucht. (Ich glaub bist auf ein lesbares rechtetaugliches Filesystem), und wie man das aktiviert steht da auch.

Und Kopieren sollte dann dohc zu den Grundvorraussetzungen gehören.

LG

c.
 
Mini-HowTo: USB-Root einrichten

(Sorry, off-topic, aber weil schon gefragt wurde...)

Das ist schnell erklärt: USB-Medium oder Partition darauf mit ext2 formatieren und am PC unter Linux mounten, Daten aus build/modified/filesystem oder aus entpackter Firmware inklusive aller Berechtigungen dorthin kopieren und anschließend noch Besitzer auf root:root setzen, in etwa so:
Code:
cp -a build/modified/filesystem/* my_ext2_target_dir
sudo chown -R 0:0 my_ext2_target_dir/*
Danach sauber den Mount wieder aushängen, Platte oder Stick ab- und an Fritz!Box anstöpseln, dort mit
Code:
cat /proc/partitions
schauen, unter welchem Device-Namen die ext2-Partition angezeigt wird und schließlich mittels rc.usbroot die Box einrichten (Hilfe gibt's mit der Option "-?"). Beispiel:
Code:
# Partition und Verzeichnis konfigurieren
/etc/init.d/rc.usbroot store /dev/sda1:/usbroot
# USB-Root einschalten
/etc/init.d/rc.usbroot on
Falls sich die Dateien nicht in einem Unterverzeichnis (hier im Beispiel "/usbroot") der Partition befinden, sondern im Wurzelverzeichnis "/", würde es eben heißen:
Code:
/etc/init.d/rc.usbroot store /dev/sda1:/
Auch sda1 ist nur ein Beispiel, es kommt darauf an, was in /proc/partitions steht.

Nach einem Neustart sollte es funktionieren. Die Beschreibung ersetzt keine ordentliche Wiki-Seite, aber mehr Zeit habe ich wirklich nicht.

@Silent-Tears: Daß xsapling nicht zu den Leuten gehört, die sich Hilfeseiten oder den Inhalt von Skripten ansehen, dürfte ja nichts Neues sein. Er möchte lieber alles vorgekaut bekommen und fragt auch immer so "höflich" danach.
 
Eine Ergänzung wäre aber noch sinnvoll, und zwar eine Option, um beim Erstellen der Firmware eine Art "Boot-Image" zu erstellen, das als NFS-Root oder USB-Root verwendet werden kann.

Diese Option sollte bewirken, daß unter build/modified/filesystem das komplette Dateisystem erstellt wird, daß nachher über NFS oder USB verwendet wird. Dieses Dateisystem ist normalerweise so groß, daß es nicht ins Flash paßt. Daher sollte dann automatisch aus diesem Dateisystem nur das "notwendige" (ein noch genauer zu definierender Begriff) in ein Boot-Image kopiert werden, daß dann zusammen mit dem Kernel ins Flash der Box gehört. Auch wenn man mit externem Root-System seltener ein Flash-Update braucht, manchmal will man doch einen neuen Kernel oder hat Änderungen an den Start-Skripten, die ein Update nötig machen. Dann kann man entweder Pakete abwählen, bis es ins Flash paßt, oder es wird eben automatisch gemacht.
 
Das Script in Verbindung mit dem Downloader hat endlich meiner 7050 Stunnel beigebracht. Danke für die Arbeit !
 
Zuletzt bearbeitet:
Ralf, Änderungen an den Startskripten sollten eben kein Update notwendig machen - man editiert sie einfach, wie man das von einer beschreibbaren Partition so gewöhnt ist. Aber die Idee, auch das Weglöschen zum Booten nicht notwendiger Komponenten noch zu automatisieren, ist gut. Es gibt leider nur keine Patentlösung dafür. Minimal ist sehr wenig nötig zum Booten, da wäre der meiste Speicherplatz noch frei. Aber ich persönlich mag bei USB-Root trotzdem möglichst viel im Flash-Image, denn dann kann ich in dem Fall, daß das Medium nicht eingesteckt ist, trotzdem noch sinnvoll mit der Box arbeiten. Und was ich weglasse, ist sehr individuell und wird nach Lust und Laune entschieden. Andererseits - wenn man schon USB-Root nutzt, sollte man den Stick auch dran lassen. Ich hatte zuletzt 70 Tage Uptime mit USB-Root, und die wurde nur unterbrochen durch einen stadtweiten Stromausfall. Bei NFS-Root ist hingegen das Risiko der Nichtverfügbarkeit schon bedeutend höher - jeder kann mal über ein Kabel stolpern oder den PC abends herunterfahren, welcher den NFS-Server spielt.
 
Mit den Start-Skripten meinte ich hier die, die NFS oder USB mounten. die sollten sich allerdings nicht so häufig ändern. Aber auch ein Kernel Update kann mal notwendig werden.

Ansonsten war es einfach eine Idee. Vielleicht läßt sich das Grundgerüst vom Outsourcer dafür verwenden. Ansonsten kann man es auch mit zwei verschiedenen Config-Dateien machen.
 
hallo,

ich habe ds-mod 5.2 (inkl. patches) compiliert und auf meine 7050 geflashed. leider passt da ja kaum was drauf :mad:, also habe ich noch die downloader-cgi (V0.2) und outsourcer installiert.

ich bekomme allerdings immer am ende die fehlermeldung 'kernel image is too big...'

vielleicht bin ich ja auch nur zu bloed (oder habe zu wenig linux-kenntnisse), aber so wie ich das verstehe duerfte ich doch die meldung 'too big...' gar nicht bekommen, denn der outsourcer soll ja eigentlich nur 'outsourcen', d.h. symlinks anlegen und die binaries auslagern... und vorher war das image ja auch nicht zu gross...

mache ich etwas falsch oder ist das normal :confused:

bin fuer jede hilfe dankbar!
 
Zuletzt bearbeitet:
dann musst du eben noch mehr als nur tor und die dazugehörige lib auslagern. Denn der Outsourcer lagert nur das aus, was ihm aufgetragen wurde. Der Outsourcer hat jedoch keine Automatik um zu erkennen, wieviel er auslagern muss, damit die Firmware ohne die Fehlermeldung "Firmware zu groß" erstellt wird.

Ich denke diese Hintergrundinformation sollte dir weiterhelfen.
 
danke, 'im prinzip' hat mir diese antwort geholfen, aber eigentlich koennen symlinks doch nicht so gross sein... ich habe doch nur tor hinzugefuegt und vorher hat es gepasst... (ich habe keine weiteren packages ausgewaehlt und auch ansonsten ist meine .config minimalistisch) merkwuerdig...

ok, ich checke das nochmal...

ich habe zu deiner config oben noch libssl zum outsourcen hinzugefuegt, aber scheinbar hat tor noch mehr abhaengigkeiten, denn mein image ist immernoch 'too big...' - was muss ich noch outsourcen, damit es klappt bzw. was gehoert denn noch alles zu tor? (es kann ja eigentlich nur daran liegen)
 
Zuletzt bearbeitet:

Neueste Beiträge

Statistik des Forums

Themen
244,695
Beiträge
2,216,691
Mitglieder
371,315
Neuestes Mitglied
jack-mack
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.