Not-Ausschalter für DS-Mod und debug.cfg

kriegaex

Aktives Mitglied
Mitglied seit
7 Nov 2006
Beiträge
2,927
Punkte für Reaktionen
3
Punkte
36
Vorwort

Es wurde ab und zu mal gewünscht, so eine Art Notbremse für die Ausführung des kompletten DS-Mods zu haben, falls man sich mal wieder verkonfiguriert hat. Durch diesen kleinen Patch (ab 15.3 dann bereits im DS-Mod enthalten) baut man sich zwei Schalter in die Firmware ein:

Patch

Code:
--- fwmod	(Revision 927)
+++ fwmod	(Arbeitskopie)
@@ -755,7 +755,10 @@
 		mkdir -p "${FILESYSTEM_MOD_DIR}/usr/lib"
 		cp "${ROOT_DIR}/usr/lib/lib"*.sh "${FILESYSTEM_MOD_DIR}/usr/lib/"
 
[COLOR="Red"]-		echo ". /etc/init.d/rc.mod 2>&1 | tee /var/log/mod.log" >> "${FILESYSTEM_MOD_DIR}/etc/init.d/rc.S"[/COLOR]
[COLOR="Blue"]+		# Emergency stop switch for execution of debug.cfg
+		sed -i -r 's#(\. /var/flash/debug\.cfg)#[ "$dbg_off" == "y" ] || \1#g' "${FILESYSTEM_MOD_DIR}/etc/init.d/rc.S"
+		# Emergency stop switch for execution of DS-Mod as a whole
+		echo '[ "$ds_off" == "y" ] || . /etc/init.d/rc.mod 2>&1 | tee /var/log/mod.log' >> "${FILESYSTEM_MOD_DIR}/etc/init.d/rc.S"[/COLOR]
 
 		MOD_CRON="${VARTAR_MOD_DIR}/var/spool/cron/crontabs"
 		MOD_ROOT="${VARTAR_MOD_DIR}/var/mod"

Schalter (de)aktivieren

Aktivieren kann man die Schalter, indem man in der Urlader-Umgebungsvariable kernel_args entsprechende Modifikationen vornimmt. Je nachdem, auf welchen Wegen man im Notfall noch an die Box heran kommt, kann man die Schalter auf folgende Weisen (de)aktivieren:
  • Interaktive Shell: Telnet, SSH, serielle Konsole.
  • Web-Shell: Rudi-Shell, Nano-Shell - letztere insbesondere auch in Fällen, wo sonst nicht mehr viel geht, aber die AVM-Weboberfläche noch startet. Daher empfehle ich, das entsprechende Add-On (ab 15.3 normales Paket) mit aufzunehmen in die Firmware, wenn man vorhat zu experimentieren mit neuen Sachen.
  • Urlader-FTP-Verbindung (früher mal ADAM, heute EVA genannt) - geht immer, auch wenn die Box nicht mehr hochfährt
  • Serielle Urlader-Verbindung - einfacher zu verwenden als Urlader-FTP, aber eben nur für Besitzer einer seriellen Konsole.

Shell-Befehle

Mit folgenden Befehlen kann über die interaktiven bzw. die Web-Shells die Ausführung von debug.cfg bzw. auch des gesamten DS-Mods gezielt (de)aktiviert werden:
Code:
[COLOR="DimGray"]# Load kernel_args API - always do this before using ka_* commands[/COLOR]
. /usr/bin/kernel_args

[COLOR="#696969"]# Display current value of bootloader variable 'kernel_args'[/COLOR]
ka_getArgs

[COLOR="#696969"]# Disable debug.cfg execution[/COLOR]
ka_setValue dbg_off y

[COLOR="#696969"]# Disable DS-Mod execution[/COLOR]
ka_setValue ds_off y

[COLOR="#696969"]# Enable debug.cfg execution[/COLOR]
ka_removeVariable dbg_off

[COLOR="#696969"]# Enable DS-Mod execution[/COLOR]
ka_removeVariable ds_off

Wichtig im Falle der Nano-Shell ist, daß das API geladen wird, bevor ein ka_*-Befehl ausgeführt wird. Das kann (und muß) man alles in eine Aufruf-Zeile schreiben, z.B. so:
Code:
[COLOR="DimGray"]# Deactivate both debug.cfg and DS-Mod, then print value for control[/COLOR]
http://fritz.box/cgi-bin/shell.cgi?. /usr/bin/kernel_args; ka_setValue dbg_off y; ka_setValue ds_off y; ka_getArgs

[COLOR="#696969"]# The same as above, URL-encoded[/COLOR]
http://fritz.box/cgi-bin/shell.cgi?.%20/usr/bin/kernel_args;%20ka_setValue%20dbg_off%20y;%20ka_setValue%20ds_off%20y;%20ka_getArgs

Urlader-Befehle

Entsprechend sind über eine serielle oder FTP-Urlader-Verbindung entsprechende Werte mittels SETENV zu setzen, also z.B. von der seriellen Konsole aus (FTP geht ein bißchen anders - bitte im Forum recherchieren oder probieren):
Code:
[COLOR="#696969"]# Deactivate debug.cfg only[/COLOR]
setenv kernel_args dbg_off=y

[COLOR="#696969"]# Deactivate DS-Mod only[/COLOR]
setenv kernel_args ds_off=y

[COLOR="#696969"]# Deactivate both debug.cfg and DS-Mod[/COLOR]
setenv kernel_args dbg_off=y ds_off=y

[COLOR="#696969"]# (Re)activate full boot process[/COLOR]
unsetenv kernel_args

[COLOR="DimGray"]# Print current bootloader environment (command unavailable via FTP)[/COLOR]
printenv

DS-Mod-Fehlkonfiguration reparieren

Wenn man den DS-Mod deaktiviert hat und irgendwelche Einstellungen bereinigen möchte, muß man die Einstellungen (/var/flash/ds_mod) manuell laden, entpacken (Tar-Archiv), modifizieren, neu packen und zurück schreiben ins TFFS. Das hier im Detail zu beschreiben, würde ein wenig den Rahmen sprengen und ist sowieso nur etwas für Leute, die sich ein bißchen auskennen an der UNIX-Kommandozeile.

Viel Spaß bei den nächsten "Notbremsungen" wünscht Euch

Edit: Oliver sagt mir gerade, daß die Kernel-Module und ein paar andere Sachen zu dem Zeitpunkt, wo der Schalter für den DS-Mod greift, schon geladen sind, nur die Pakete noch nicht gestartet werden. Ich hatte da nicht genau geschaut und nur schnell mal die Idee von meiner To-Do-Liste "weggehackt". Der Patch ist ja auch schon sehr nützlich, nur vielleicht noch nicht ganz optimal, evtl. aktualisiere ich den Patch später nochmal. Andererseits wäre es auch praktisch, wenn die Einstellungen geladen würden, man sie also leicht editieren und mit modsave speichern könnte ohne manuelles (Ent)packen, aber einfach keine Binaries geladen/gestartet würden. Das kriege ich heute nacht, wenn die Box nicht mehr gebraucht wird, wohl auch noch irgendwie hin.
 
Zuletzt bearbeitet:
Wäre vielleicht auch noch ein Schalter sinnvoll, der alles wieder auf Defaults stellt? Im Endeffeket tauchen hier oft genug Probleme auf, die nur durch eine falsche Einstellung selbstverschuldet wurde, sei es das starten von VPN ohne zu wissen, ob es funktioniert und ähnliches, irgendwelche Netzwerkktunnel, die untergebracht aber nie geprüft wurden, Nameserver und DHCP-Einstellungen.....
Das Ganze dann mit einem Werksreset der Box verbunden, tffs-Partitionen löschen oder ähnliches.
Ich weiss, würde das Ganze für viele zu einfach machen, aber im Hinblick auf den zugänglichen svn in kommender Zeit wäre da vielleicht tatsächlich noch Bedarf.

Wbei der "Notaus" ja schon vieles davon abdecken würde, denn das meiste wäre auf diese Art und Weise ja schon erreicht. dsmod startet nicht mehr.
 
Es gibt bereits das Skript moduninstall, das man aufrufen und danach den Stecker ziehen kann. Das setzt alles zurück beim nächsten Start. Wie man einen AVM-Werksreset macht, sollte auch bekannt sein, das wurde oft genug besprochen. Der Wert von kernel_args darf leider nicht länger als 64 Zeichen sein, und er wird bereits für zwei Debugging-Hilfen (dmesg-Log, inotify-tools-Log) verwendet. Ich werde nicht für alles Vorstellbare Schalterchen einbauen.

P.S.: Wer eine Notbremse zieht und dann nicht weiß, wie er die Zugtür auf kriegt oder das Sicherheitsfenster mit dem Hämmerchen einschlägt, muß halt warten, bis die Rettungskräfte kommen...
 
Es gibt bereits das Skript moduninstall, das man aufrufen und danach den Stecker ziehen kann.

Da hatte ich grad gestern noch eine Box hier, bei der auch das nicht ging, denn die Box war nicht mehr zu connecten ausser über EVA und CLEAR_ENV und die serielle Console.

Von daher kam ich auf diese Idee, aber gut. Ein Vorschlag war es, mehr nicht.
 
Dann hast Du entweder etwas falsch gemacht (z.B. nach Aufruf des Skripts nochmal über Web-UI zwischengespeicherte Werte gespeichert) oder ein Problem, das auch mit der Standardkonfiguration der Pakete zu Fehlern führt, weil sich eine bestimmte Konstellation von Paketen "beißt". Das herauszufinden, sollte außerhalb dieses Themas stattfinden.

Ich habe auch schon min. 5x den Code gepostet, mit dem man das Flash komplett per Shell löschen kann, also ohne Urlader-Verbindung via Konsole oder FTP.
 
Aber das "Notaus" würde dir ja in der Situation helfen, wenn es an "vergurkten" Configs liegt. Danach solltest du wieder auf die Box können und die "Rettung" starten, ggf. Löschen von /mod/etc/conf oder so ...
Denn es geht ja nur darum, eine Box, die wegen "falscher Konfig" nicht so startet, dass man sie noch ansprechen kann, ohne Recover wieder zum Laufen zu bekommen.


Jörg
 
Dann hast Du entweder etwas falsch gemacht (z.B. nach Aufruf des Skripts nochmal über Web-UI zwischengespeicherte Werte gespeichert)

Nein, diese Box war nicht zu erreichen. Kein Web-UI, kein ssh, kein Telnet, kein Telefonreset, war auch nicht meine, sondern eine "zerflashte"

Somit blieb nur EVA und die Console.
 
Ja, so ist das eben oft: Statt ein neues Feature mal auszuprobieren und zu schauen, wie weit man damit kommt (in diesem Fall sehr weit), wird gleich weiter theoretisiert, was man sich als nächstes wünschen könnte. Es heißt "Not-Aus", nicht "Luxus-Aus". Das erinnert mich an die Diskussionen, welche Gimmicks man noch in die Rudi(mentär)-Shell einbauen könnte, damit sie hinterheit keine Rudi-, sondern eine Komfort-Shell ist.

Wer eine idiotensichere Firmware nur mit Klicki-Bunti möchte, nimmt bitte einfach die von AVM. Dafür ist sie da. Ich bewundere AVM auch dafür, das so hinzukriegen. Die T-Com-Firmware auf der W701V einer Bekannten läuft übrigens ununterbrochen seit fast einen halben Jahr!!!! Das kann und sollte man vom DS-Mod nicht erwarten.
 
... läuft übrigens ununterbrochen seit fast einen halben Jahr!!!! Das kann und sollte man vom DS-Mod nicht erwarten.
Doch, außer bei uns "Spielkindern" kann man das wohl. Ich habe schon mehrere ds-mod Kisten bei Bekannten installiert, die z.T. schon ein Jahr lang problemlos laufen (dementsprechend natürlich auch nicht mit dem neusten ds-mod ;-), aber mit openvpn/dropbear, was meine Zeiten des "vor Ort Support" drastisch rediziert hat... )
Solange es nicht die neusten "testing" features sind, kann ich an der Stabilität des ds-mod eigentlich nichts aussetzen. Wie du schon sagst, den Anspruch sollte man nicht haben, aber funktionieren wird es nach meiner Erfahrung in vielen Fällen problemlos (manchmal sogar besser als mit den verfügbaren AVM-Versionen).

Jörg
 
Heißt durchlaufen Uptime oder, daß zwischendurch mal ein Reboot kommt und dann alles wieder geht? Ich habe schon auch Uptimes von 14 Tagen und mehr gehabt, bevor ich dann wieder an der Box herumgespielt habe und zum Testen was Neues drauf geflasht habe...
 
Die eine Box hatte letztens eine Uptime > 1 Jahr (noch ein ds-0.2.9) ist/wurde aber irgendwann neu gestartet, daher (gerade geschaut) nur 25 Tage...

Ich muss aber auch bei mir sagen, dass ich meine eigene Box eigentlich nur zum Updaten reboote oder wenn ich meine Konfig "verbogen" habe. Einzige Ausnahme waren einmal "callmonitor"-Probleme. Gut, ich nutze natürlich nicht alle Pakete und es mag Unterscheide geben, aber die "Herzstücke" (die busybox, httpd, rudi-Shell und so) sind m.E. durchaus sehr stabil.

Jörg
 
Das macht doch auch ein bißchen kollektiv stolz. :D
 
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.