Ideen zum Nachladen für 7050

Ich würde das bestimmt auch mal ausprobieren und wahrscheinlich auch nutzen. (Mache es ja momentan ähnlich aber per nfs bzw. cifs und nicht sehr ausgefeilt.)


Dirk
 
Ich hatte mir die Mod-Struktur näher angeschaut, und habe die Stelle gefunden, wo die Reihenfolge für Pakete festgelegt wird. Beim make wird aus dem make/paket/paket.mk den Eintrag in die .static generiert, wo vor dem Paket Sxx steht. Für syslog ist es z.B. S20, für callmonitor S30, für die meisten S40. Ich würde meinen Downloader zu S30 einstufen. Ist es richtig? Wer legt eigentlich diese Reihenfolge fest? Oder wird es irgendwie automatisch generiert?

MfG

Hermann

P.S.: Die 7050 läuft seit etwa 19 Stunden stabil
 
Ich hab keine Ahnung wer die Reihenfolge festlegt hat. Wahrscheinlich hat Daniel das Anfangs gemacht. Ich hab mich aber noch nie um diese Zahlen gekümmert. In deinem Fall ist das natürlich sehr wichtig. Deshalb würde ich eine "niedrige" Zahl vorschlagen.

MfG Oliver
 
ok. Wie werden denn diese Dateien in make Ordner heutzutage für neue Pakages erzeugt? Per Hand mit "aus einem ähnlichen paket copy"-ändern-paste? Oder wird es durch irgendwas generiert?
 
Mit "aus einem ähnlichen paket copy"-ändern-paste. Da bei jedem Paket was anders ist...

MfG Oliver
 
Die Nummern wurden einfach nach und nach eingefügt wie das ganze gewachsen ist, als eine Reihenfolge benötigt wurde.

Kann eventuell jemand im UNIX V Standard (wenn dann müßte es glaub ich da drinstehen) nachschauen, ob da die Vergabe der Nummern irgendwie geregelt wird? In den kommenden Generationen des Mods wird die Startreihefolge so beim Booten festgelegt: rc.S im SVN Repos. rc.avm ist dabei das frühere rc.S Skript. Ich hab dafür jetzt einfach S10 gewählt, da rc.avm den ganzen Bootvorgang der original Firmware enthält. darüber, ob S10 sinnvoll ist, kann gerne diskutiert werden. Das betrifft aber nur die neue Generation des ds-mod, die in Arbeit ist (da gibts zur Zeit aber noch andere Probleme, poste ich heute noch in einem extra Thread). Bei der jetztigen Version des ds-mod kannste dir einfach ne passende Nummer raussuchen.

Mfg
danisahne
 
Bei SCO gibt es Entwickler-Infos zu System V - ich mußte auch erst recherchieren. Habe in alle Bände der http://en.wikipedia.org/wiki/System_V_Interface_Definition geschaut, aber da fand ich nichts.

Weiß der Geier, wo das festgelegt ist. :noidea:

Wir verwenden solch eine Numerierung ja auch für diverse Patches, und da ist die Frage, ob es dafür irgendeinen Standard gibt, für mich auch offen.
 
Ich würd sagen wir machen das fast gleich wie OpenWRT. Das sieht für mich quasi wie eine Mischung aus UNIX V und rc.d von NetBSD aus. Runlevel brauchen wir ja nicht und der Umstand, dass die rc-Skripte in /etc/init.d/ sind kommt der bisherigen Struktur der Firmware entgegen:
  • rc-Skripte in /etc/init.d/
  • In /etc/rc.d/ sind S??-Symlinks auf die Skripte in /etc/init.d/
  • rc.S wird nach rc.avm verschoben
  • neues Skript rc.S startet Skripte in /etc/rc.d/ in nummerischer Reihenfolge
  • /etc/rc.d/S10avm ist immer ein Symlink auf /etc/init.d/rc.avm

Auf die Art und Weise können dann auch Startskripte ganz einfach vor dem ganzen AVM Zeugs ausgeführt werden, z.B. /etc/rc.d/S01mini_fo. Damit man auch einfach eigene Startskripte integrieren kann, werden die Symlinks in /etc/rc.d/ im TFFS gespeichert. Die Bedeutung der einzelnen Nummern legen wir dann selber fest, z.B. S30 Netzwerkdienste.

Sorry, das ganze schweift vom Thema ab. Vielleicht sollte hier weiterhin die "Ideen zum Nachladen für 7050" diskutiert werden.

Mfg
danisahne
 
Danke für ausführliche Erklärung!
Nun habe ich eine andere Frage. Die Konfiguration wird ja unter ds-mod in xx.cfg Dateien gespeichert. Ich hatte mir die Erzeugung dieser Datei bei anderen Paketen abgeschaut. Nun kommt das Problem mit mehrzeiligen Argumenten. Bei mir sieht es dann folgendermassen aus:
Code:
export DOWNLOADER_ENABLED='yes'
export DOWNLOADER_FILES='dnsmasq 755 /mod/sbin
dropbearmulti 755 /mod/sbin
libcrypto.so.0.9.8 755 /mod/lib
liblzo2.so.2.0.0 755 /mod/lib
libssl.so.0.9.8 755 /mod/lib
mc.bin 755 /mod/bin
openvpn 755 /mod/sbin'
export DOWNLOADER_NREP='5'
export DOWNLOADER_SRVDIR='/fritzbox/kernel26'
export DOWNLOADER_SRVPRFX='ftp://'
Gefallen hat mir es nicht. Aber genau so behandelt dnsmasq auch mehrere dns-Bereiche. Komischer (oder besser gesagt glücklicher) weise wird das Ganze ziemlich korrekt behandelt, sowohl im Skript bei der Anbindung, als auch beim Packen/Entpacken im mod. Verbreche ich da was, oder ist es ok so?

MfG

Hermann
 
Ist okay, mußt nur aufpassen, daß Du die Variable nachher richtig in Deinen Skripten behandelst, denn
Code:
$ echo "$DOWNLOADER_FILES"
dnsmasq 755 /mod/sbin
dropbearmulti 755 /mod/sbin
libcrypto.so.0.9.8 755 /mod/lib
liblzo2.so.2.0.0 755 /mod/lib
libssl.so.0.9.8 755 /mod/lib
mc.bin 755 /mod/bin
openvpn 755 /mod/sbin

# ABER:

$ echo $DOWNLOADER_FILES
dnsmasq 755 /mod/sbin dropbearmulti 755 /mod/sbin libcrypto.so.0.9.8 755 /mod/lib liblzo2.so.2.0.0 755 /mod/lib libssl.so.0.9.8 755 /mod/lib mc.bin 755 /mod/bin openvpn 755 /mod/sbin
 
Es wird schon passend behandelt mit grep. Hab ich irgendwo abgeschaut. Diese abgeschaute while-Schleife hat mir als nicht-Programmierer Paar Stunden Zeit gekostet, bis ich kapiert hatte, dass die Variablen aus dem Kindprozess (welches dann dieses while ist) nicht zum Elternprozess zurückgegeben werden. Da ich dieses verankerte grep-while Construct nicht auflösen wollte (und konnte), bin ich zu einem nicht so ganz sauberen Trick gegriefen mit /var/tmp

Wenn es jemanden interessiert hier ist Fragment vom rc.downloader:
Code:
DAEMON=downloader
ERRFILE=/var/tmp/downerr
...
...
start() {
	if test -e $ERRFILE ; then
		rm $ERRFILE > /dev/null 2>&1
	fi
	if [ "$DOWNLOADER_ENABLED" = "yes" ]; then
		echo "Starting $DAEMON..."
		echo "$DOWNLOADER_FILES" | grep -v "^#" | while read -r downfile; do
			[ -n "$downfile" ]
			echo -n "Download: $downfile..."
			downloader $downfile > /dev/null 2>&1
 			errors=$?
			if [ "$errors" -eq 0 ]; then
				echo 'done.'
			else
				echo 'failed.'
				echo $ERRORVAL > $ERRFILE
			fi
		done
		if test -e $ERRFILE ; then
			rm $ERRFILE > /dev/null 2>&1
			echo "Download failed."
			exit $ERRORVAL
		else
			echo "Download completed."
		fi
	else
		echo "$DAEMON is disabled"
	fi

}

Ich bin gerade dabei make-Files anzupassen und Pakage zusammen zu setzen. Darf ich denn in downloader.mk folgendes schreiben:
Code:
DOWNLOADER_PKG_SITE:=http://dsmod.3dfxatwork.de
Wer macht die Eingangsprüfung für Pakete? An wenn soll ich es schicken?

MfG

Hermann
 
Ich schlage vor, Du bietest Dein Paket oder Add-On zunächst hier im Forum zum Download an. Wir schauen mal, wie es angenommen wird und ob die Tests der anderen Benutzer positiv verlaufen. Dann schnappt sich ggf. irgendwann jemand das Teil und integriert es in den Mod.

Was Deine DOWNLOADER_PKG_SITE betrifft, kannst Du entweder das Package auf einem eigenen Server anbieten und den hinein schreiben oder es mitliefern, damit man es sich manuell nach dl kopieren kann. Wenn die Datei dort vorhanden ist, wird der Download ja nicht getriggert.
 
Downloader paket im separaten Thread

ok, Downloader Paket habe ich erstmal in einem separaten Thread
http://www.ip-phone-forum.de/showthread.php?t=134934
als Addon ausgelegt. Es ist zwar als addon nicht alles möglich, aber zum Testen reicht es ja. Ansonsten werde ich es erstmal nur hier im Forum auslegen nicht auf einem separaten Server. Wenn es Resonanz findet, sehen wir weiter...

Die Diskussion zum Paket und Verbesserungsvorschläge bitte dann im entsprechenden Thread. Hier sollen dann weiter Ideen diskutiert werden, denn Downloader löst nicht alle Probleme.

MfG
 
Zuletzt bearbeitet:
dnsmasq Doppelstart?

Ich lade dnsmasq mit meinem Downloader ins RAM und lasse von dort starten. Funktioniert soweit gut bis auf eine Kleinigkeit. Ich habe gemerkt, dass dnsmasq beim Start zwei Mal aufgerufen wird (s. Bild). Beim ersten Aufruf ist das Paket noch nicht runtergeladen. Als Folge kommt die Fehlermeldung in mod_net.log. Beim zweiten Aufruf ist alles in Ordnung.
Ich hatte versucht der Sache nachzukommen, bin aber dadurch nicht viel schlauer geworden. Kann bitte jemand in 2-3 Sätzen den Sinn der Sache erläutern und abschätzen, ob der erste Fehlstart fatale Folgen haben kann.
Was ich in meiner Suche festgestellt hatte:
dnsmasq und multid sind bei der Box wie Zwillingsbrüder. Einerseits wird im multid-Skript rc.dnsmasq aufgerufen. Andererseits wird in rc.dnsmasq Tausend mal überprüft, ob multid bereits läuft. Wo genau und auf welche Weise multid oder dnsmasq vor meinem Downloader aufgerufen werden, konnte ich leider nicht finden.

MfG
 

Anhänge

  • dnsmasq-failed.jpg
    dnsmasq-failed.jpg
    86.1 KB · Aufrufe: 15
Dnsmasq muss vor multid gestartet werden, so dass das Binden des Ports 53 gelingt. multid stört sich anscheinend nicht daran, dass es danach den Port nicht mehr binden kann. Um ein unnötiges Beenden und anschließendes Starten von multid (siehe rc.dnsmasq) zu verhindern wird dnsmasq - wenn vorhanden - direkt vor multid gestartet.

Ich habe nirgends gesehen, dass man beim multid den DNS-Server abstellen kann, deshalb der Hack mit dem Starten von dnsmasq vor multid.

Mfg
danisahne
 
Die seltsam innige Beziehung von multid und dnsmasq

Lieber Hermann, Folgendes habe ich mir auch erst mal angelesen, ich hoffe, es korrekt wiederzugeben:
  • Das AVM-Skript /etc/initd.d/rc.net startet die Netzwerkdienste und somit auch multid, welcher u.a. auch für DynDNS und DHCP zuständig ist.
  • Für beides wird auch Dnsmasq verwendet, daher muß dafür gesorgt werden, daß multid vom System nicht (bzw. nicht als erstes) gestartet wird, sondern stattdessen Dnsmasq.
  • Um dies zu erreichen, wird rc.net gepatcht, siehe patches/<modellnr.>/100-rc.net-dnsmasq.patch.
  • Der Patch setzt im wesentlichen den Pfad so, daß anstatt /sbin/multid vorher ein Wrapper-Skript gleichen Namens (multid) gefunden und aufgerufen wird (kann man sich anschauen unter packages/dnsmasq-2.38/root/usr/lib/dnsmasq/bin/multid).
  • Das Wrapper-Skript startet und stoppt anstatt multid einfach Dnsmasq, indem es dessen Init-Skript aufruft.
Das ist also die Erklärung dafür, daß Dnsmasq so früh aufgerufen wird: Es passiert indirekt bereits in rc.net, und dieses Skript wird weit vor den Skripten des DS-Mod aufgerufen. Da Du Dnsmasq aber zu jenem Zeitpunkt noch gar nicht nachgeladen hast, kann es auch nicht gefunden werden, mal ganz davon abgesehen, daß der Mod noch nicht initialisiert ist. Der Wrapper muß trotzdem installiert werden, denn auch im laufenden Betrieb soll ja später statt multid immer Dnsmasq getriggert werden, wenn jemand rc.net aufruft. Später, während der normalen Mod-Initialisierung, kommt Dnsmasq dann ja regulär nochmal dran, und dann klappt es auch, weil es bereits nachgeladen ist und die Konfigurationsdaten initialisiert sind.

Alle Klarheiten beseitigt?

Edit: Daniel war etwas schneller, das hat sich überschnitten.
 
Stimmt fast alles, bis auf die Tatsache, dass der multid danach schon noch gestartet wird (sonst würde z.B. kein DynDNS mehr gehen).

Mfg
danisahne
 
Das beweist nochmal wie robust die box mit ds-mod ist...
Was ich noch bemerkt habe: Netzwerksymbol (LAN) von XP zeigt jetzt eine Weile "eingeschränkte Konnektivität" nach dem Reboot der Box, was früher nicht der Fall war. Hängt bestimmt damit zusammen, dass DNS und DHCP beim "ersten Durchlauf" scheitern. Im "zweiten Durchlauf" wird allerdings alles nachgeholt und der PC bekommt auch seine IP.
Fazit: Es ist zwar nicht schön, aber nicht tragisch und erstmal kein Grund, um die Startreihenfolge vom Downloader hochzustufen. Ich bleibe erstmal weiterhin bei S30 (nach dem callmonitor, vor den restlichen Paketen) und untersuche weiter die Stabilität der Pakete im RAM.

MfG
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,159
Beiträge
2,247,074
Mitglieder
373,678
Neuestes Mitglied
brainkennedy
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.