7050 zu eng: DS-Mod-Teile manuell auf externe Platte auslagern

udosw schrieb:
Dafür habe ich mir ein kleines Script geschrieben, was die Dateien verschiebt, die notwendigen symlinks setzt und den Step 3 aufruft

Die Idee hatte ich für den Downloader auch. Denn auch dort muss man diese Schritte per Hand machen. Bei den Binaries geht es noch. Schwieriger wird es, wenn man es für jede einzelne Lib macht. Das blöde daran ist, man muss es nicht nur jedes mal bei der Versionswechsel vom mod machen, sondern nach jedem "make" zumindest in die Verzeichnisse nachschauen. Wenn man sowas in standard-"make" einbauen könnte, wäre es ganz gut. Vorschlag wäre:
"make" schaut vor dem STEP3 im Hauptverzeichnis nach einer bestimmten config-Datei, namens (als Beispiel) rmbinlib.conf. Existiert diese Datei nicht (Normalfall), so läuft make weiter. Andererfalls wird ein skript rmlibbin (ähnlich dem oben vorgeschlagenen) abgearbeitet. Dieser Skript schaut in die Datei rmbinlib.conf rein und arbeitet sie Zeile für Zeile ab. Die conf-Datei kann z.B. folgendermassen aufgebaut werden:
Code:
verzeichnis_fuer_binaries_libs='...'
# Liste der auszulagernden Dateien
originaldatei_mit_rel_pfad pfad_neu attribute
Und wenn Bedarf besteht, kann man die Downloader-CGI so modifizieren, dass sie nicht nur die Sachen ins RAM packt, sondern irgendwas startet. Ich bin da recht offen, jeder kann da was ändern. Die Startreiehnfolge kann man in gewissen Grenzen steuern.
Ich selbst bin momentan so busy und komme leider gar nicht dazu.

MfG
 
hermann72pb schrieb:
Vorschlag wäre:
"make" schaut vor dem STEP3 im Hauptverzeichnis nach einer bestimmten config-Datei, namens (als Beispiel) rmbinlib.conf. ...
Das ist eine interessante Idee, aber nur recht eingeschränkt nutzbar. Um beliebige Manipulationen an der Stelle zu erlauben, könnte man auch gleich ein Shell Skript aufrufen, in dem der Anwender beliebige Änderungen ausführen kann.

Wenn man sich das fwmod-Skript anschaut, sieht man, daß das schon existiert und das Skript fwmod_custom schon aufgerufen wird, sofern es vorhanden ist.
 
ok, dann sollte man das oben vorgeschlagene Skript zunächst mal in diesem fwmod_custom implementieren, dann etwas veralgemeinern (dass es die conf-Datei benutzt). Und wenn es richtig läuft und gefragt wird, dann kann man es als extra-Skript einbauen, damit man fwmod_custom für andere Experimente frei hält.

MfG
 
kriegaex schrieb:
Für NFS-Root brauchst Du die üblichen drei Kernelmodule (nfs, sunrpc, lockd) und insbesondere das entsprechende Init-Skript (und das ist etwas tricky), außerdem, warum auch immer, Replace Kernel, weil es, je nach Box, entweder Kernel Oops oder Kernel Panic beim NFS-Mount gibt (getestet auf W701V und 7170).

Ich habe übrigens vor, aus einer Rohversion eines weiteren Skripts von Oliver auch ein Paket für ein USB-Root zu machen.

Oliver ist noch einen Schritt weiter, denn er bootet auch schon den Kernel von extern via initramfs (und danach dann NFS- oder USB-Root), so daß die Partitionen auf der Box selbst gar nicht mehr benutzt werden, also auch kein pivot_root usw. Kernel und Dateisystem auf der Box sind dann nur noch Fallbacks, falls z.B. das NFS-Share nicht da oder der USB-Datenträger ausgesteckt ist. Auch dafür könnte man ein Paket basteln, aber das ist dann doch eher was für Entwickler, die nicht nur mal eben schnell am Dateisystem was ändern wollen - dafür reichen NFS/USB-Roots aus - sondern auch einen Kernel tauschen wollen, ohne neu flashen zu müssen.
Das alles ist ja sooo coool :D, was sich in den letzten Monaten noch so getan hat. Ist irgendwie genau das, was ich mit meinem NAS (auf dem auch schon längst nicht mehr die Bufallo-Firmware, sondern Gentoo läuft) machen will, einfach in der Fritzbox ein über NFS gemountetes System betreiben, da kann wirklich viel experimentiert werden...
 
Lösung: Alles Weitere wird von Platte gestartet ...

So, ich habe jetzt (eine für mich brauchbare) automatische Lösung gebaut.:D Voraussetzungen: Ein Linux-System, auf dem der ds_mod gebaut wird, das System ist entweder gleich dasselbe, wo nachher die FB ihre externe Platte mountet oder hat zugriff auf diesen Mountpunkt.
  1. Man baut einen kleinen Referenz-ds-mod mit cifsmount (evtl. auch NFS, nicht getestet) der auf die Box passt. Ich habe da sogar noch den AVM-UPNP-Daemon mit drin, passt auf die 7050).
  2. Nach Testen des Images verschiebt man das build/modified/filesystem-Verzeichnis, z.B. nach KLEIN/modified/filesystem.
  3. Nun nochmal make menuconfig starten und nach Herzenslust Pakete auswählen ... ;)
  4. In der fwmod_custom sorgt man dafür, dass bei unter all() folgender Code aufgerufen wird:
Code:
#!/bin/bash

MOD=/usr/src/ds26-15.2/build/modified/filesystem
STD=/usr/src/ds26-15.2/KLEIN/modified/filesystem
EXT=/fbf

cd $MOD
  
for FILE in $(find -type f -not -path '*etc*' -size +1k -printf "%P\n"); do
  if ! [ -e $STD/$FILE ]
  then
    DIR=$(dirname $FILE) 
    sudo mkdir -p $EXT/$DIR
    sudo cp -f  $MOD/$FILE $EXT/$FILE
         rm -f  $MOD/$FILE 
         ln -fs /var$EXT/$FILE $FILE
  fi  
done

# Softlinks
cd $MOD/usr/lib
ln -fs /var/fbf/usr/lib/asterisk

cd $MOD/etc
ln -fs /var/fbf/etc/asterisk

cd /usr/src/ds26-15.2
5. make aufrufen und freuen ...

Dabei ist
  • MOD: Das fs vom gerade gebauten ds-mod
  • STD: Das 'kleine' Standard-FS vom ersten Test
  • EXT: Das Verzeichnis auf der externen Platte, wo die ausgelagerten Dateien für die FB hinkommen. Bei mir ist dieses Verzeichnis in der FB selber mit /var/fbf gemountet.
Das Script guckt nun einfach bei allen Dateien im MOD, die größer als 1KB sind, nach, ob diese im STD bereits existieren. Wenn das nicht der Fall ist, wird die Datei auf die externe Platte geschoben und ein SymLink gesetzt. (Ja, statt cp und rm kann man auch mv verwenden, da hatte ich nur Probleme mit den Mount-Berechtigungen. Das sudo ist bei ). Dateien unter 'etc' werden aber nicht verschoben.

Die beiden Softlinks am Ende sind noch für meinen Asterisk on FBF. In der rc.custom mache ich noch folgendes:
Code:
cd /var/mod
rmdir bin
ln -s /var/fbf/mod/bin
rmdir lib
ln -s /var/fbf/mod/lib
rmdir sbin
ln -s /var/fbf/mod/sbin
da einige Libraries und der Asterisk im mod-Verzeichnis der Platte liegen.

Diese Lösung funktioniert ohne den von mir vor kurzem beschrieben Patch der rc.cifsmount. Dafür war die Ausnahme beim etc-Verzeichnis nötig.

Cifsmount wird ja ziemlich früh durchgeführt und danach werden alle weiteren Pakete von der Festplatte aus gestartet. Ich konnte hiermit neben dropbear noch dnsmasq, opentpd, syslog und netsmnp einbauen, daran war vorher nicht zu denken.

Udo
 
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.