- 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
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:
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:
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:
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):
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.
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: