-
Hallo, Ich bin mir nicht sicher was genau der Verursacher dieses Problems sein könnte. Ich würde trotzdem mal nachfragen wollen, ob jemand ein ähnliches Problem hat bzw. dieses nachstellen kann. Daten zur Box/Firmware:
Es gibt einige Einstellungen, wenn ich diese ändere, dann verliere ich die Internetverbindung. Und diese kommt dann auch nicht automatisch zurück. Ein Beispiel wäre folgendes:
Schaue ich nun in die Logs, sieht man folgendes: dmesg
syslog
Man sieht, dass hier, aus irgendeinem Grund, der
Normalerweise sollte es da noch eine Zeile mit Starte ich den Daemon, manuell, via obigem Befehl ( Ich behelfe mir aktuell so, dass ich einen Cronjob gebaut habe, der im Notfall eingreifen kann. */1 * * * * if [[ "$(cat /proc/uptime 2>/dev/null | awk '{print $1}' | sed 's/\..*$//g')" -gt 900 && "$(cat /proc/$(cat /var/run/dsld.pid 2>/dev/null)/comm 2>/dev/null)" != "dsld" ]]; then /usr/bin/logger -t dsld_watchdog "dsld not running. Restarting ..."; /sbin/dsld -i -n; fi |
Beta Was this translation helpful? Give feedback.
Replies: 21 comments 62 replies
-
Seit einigen FOS-Versionen trennt hierbei AVM die Internetverbindung, um sie dann hier (andere Box, älteres freetz-NG) gab es wohl schon einmal |
Beta Was this translation helpful? Give feedback.
-
Mir ist auch schon mal aufgefallen dass ein AVM-Daemon wie dsld/multid/ctlmht gecrasht ist. Dabei muss man unterscheiden
AVM hat neuerdings auch einen systemd-Billigversion namens supervisor (svctl) in Verwendung. Evtl könnte man dort die Library gleich angeben. Allerdings darf man den daemon dann nur noch mit svctl bedienen und nie wieder über die Console/Scripte .. oder man macht dass auch noch einen Wrapper zusätzlich - der supvervisor müsste dann aber die Binary direkt und nicht den Wrapper verwenden libctlmgr wird in 7.5x nicht mehr genutzt da ein Weg gefunden wurde wie Benutzer trotz AVMs eigenwilliger bearbeitung der Benutzerdateien erhalten bleiben Wie dem auch sein, das müsste man mal alles untersuchen und ausprobieren. Dazu hab ich weder Lust noch die passenden Geräte Ausserdem hat das ständige Internet-rein-raus Spiel geendet seit ich nicht mehr bei der Telekom bin. |
Beta Was this translation helpful? Give feedback.
-
Mangels Zeit, nur ein ganz kurzer Zwischenbericht:
alles soweit i.O., auch beim: aber dann:
bei: Das würde ja bedeuten, daß das Problem zwischen dem Freetz ng-22345M-5765c2121 und Freetz ng-23167M-866f568de steckt?! Unabhängig davon: |
Beta Was this translation helpful? Give feedback.
-
Ehe wir uns da ev. falsch verstehen: |
Beta Was this translation helpful? Give feedback.
-
Was, für mich, auch funktioniert, ist, wenn ich die Änderung in der Bitte aber beachten, dass ich das bisher alles nur am Live-System, mit Hilfe von Bind-Mounts überschrieben und ausgetestet habe. Einen Boot würden diese Änderungen nicht überstehen und deshalb habe ich's bisher noch nicht getestet, wenn das System frisch gebootet ist. Gab es einen Grund für die
Oder etwas anschaulicher:
BTW: Das Ändern der Stealth Config sorgt dafür, dass folgendes ausgeführt wird. Man sieht es ganz kurz, wenn man schnell genug mit ps danach sucht, sobald man im WebIF auf "Übernehmen" klickt.
|
Beta Was this translation helpful? Give feedback.
-
OK, meine neuesten Erkenntnisse:
Das Problem ist jetzt folgendes: Warum der supervisor aber annimmt, dass da noch was läuft obwohl Script als auch Daemon, nicht mehr laufen, ist mir allerdings auch ein Rätsel. |
Beta Was this translation helpful? Give feedback.
-
Ich versuche gerade noch herauszufinden, wie mit einer Serial Verbindung an die Box komme. Leider habe ich keine Ahnung von Elektrotechnik. So wie es aussieht, benötige ich hierfür eine UART Schnittstelle, die ich irgendwie mit diesen vier "Löchern" auf dem Board verbinde. Habt ihr einen Tipp was ich da kaufen müsste? Nach Möglichkeit etwas, wo ich nicht Löten muss, weil dann muss ich erst einen Lehrgang machen und mir Equipment kaufen :-D |
Beta Was this translation helpful? Give feedback.
-
Das ist "normal". Bei älteren Docsis ist es im kernel komplett ausgeschaltet (security through obscurity) und nicht aktivierbar ausser durch eigenen kernel. Es gibt dazu einen Patch: https://github.com/Freetz-NG/freetz-ng/blob/master/patches/scripts/180-patch_printk.sh |
Beta Was this translation helpful? Give feedback.
-
Ich habe hier meinen ersten Entwurf fertiggestellt. Aktuell nur auf der Testbox ohne Internetanbindung getestet. Produktiver Test und auch Langzeittest stünde noch aus. Aber ich kann damit erfolgreich booten und supervisor verhält sich auch korrekt damit. Voraussetzung "freetzlogd" via:McBane87@f19c5f9 Warum ein extra Logging Daemon? Der bisherige Ansatz mit dem Ein zweiter Versuch war dann, einen weiteren Ich brauchte also etwas, was keine Subshell, über die gesamte Laufzeit, generiert. Das einzige was mir da einfiel, war ein "billiges" loggen in eine Datei. Jetzt hätte dieser Ansatz aber deine Bemühungen (Einfärben von Keywords, mehrere Ziele, etc) zunichte gemacht. Deshalb habe ich mich für eine spezielle FIFO-Pipe, als Ziel-Datei, entschieden. Diese kann dann ein Daemon (freetzlogd), in Dauerschleife, beobachten, auslesen und den Text/Input, ähnlich der Einen Nachteil hat dieser Ansatz aber: Wenn ein Script oder Binary etwas an diese Pipe schickt, dann muss unbedingt etwas auf der anderen Seite zuhören. Wenn das nicht der Fall ist, blockiert das Script und wartet so lange bis jemand die Pipe ausgelesen hat. Deshalb ist es sehr wichtig, dass der freetzlogd immer aktiv ist und auch vor allen Daemons startet, die dessen Pipes nutzen. Anpassungen für Supervisor Jetzt zu dem eigentlichen Ansatz, der dafür sorgt, dass sich alles, in Zusammenhang mit dem supervisor, korrekt verhält. Nachteil dieser Lösung. Jeglicher Code, der nach dem Übrigens: Was sonst noch? Ich war bemüht die Init-Scripte, so gut wie möglich, kompatibel mit allem zu halten, was schon da ist. Man sollte deshalb, weiterhin, manuell oder via WebIF, Außerdem kann ich nicht zu 100% garantieren, dass das alles mit alten Versionen, ohne Supervisor, korrekt funktioniert. Ich war zwar bemüht das kompatibel zu halten, aber hab da nix zum Testen. |
Beta Was this translation helpful? Give feedback.
-
Ich bin nicht dazu gekommen mir alles im Detail anzuschauen, sorry. Grundsätzlich seh ich einen log-daemon skeptisch. Der müsste mit allen SV laufen, auch auf Boxen ohne und auch auf den aller ersten mit kernle 2.6.13. Di haben noch andere Busybox usw. Und Hardware um das zu testen hätte ich auch nicht mehr.
Ist dir die Startreihenfolge klar? Es wird zuerst alles von AVM gestartet, und (mit oder ohne SV) ziehnlich als letztes Freetz "mod". Es gab da auch eine zeit lange Timingprobleme mit avms watchdog der jedes Problem durch einen reboot löset, zb wenn der Systemstart zu lange dauert. Ich könnte aktuell mit einer 7490 an einer deaktivierten vdsl Leitung testen, die bekommt nur ipv4 und man kann nur die Leitungs-ID Seite öffnen. Beim herumkonfigurieren am dsl:
Das "dsld -s" steht für "stoppen" was ich hier nicht erwartet hätte aus /bin/sh /etc/init.d/rc.net
Funktioniert dieses "reload" überhaupt mit den Wrapper Scripten? Ich hab nicht weiter gesucht |
Beta Was this translation helpful? Give feedback.
-
Ja, verstehe ich schon. Ich finde die Lösung auch nicht Ideal. mir war halt bloß nix besseres eingefallen, was die ursprüngliche Logging Logik beibehalten würde. Man könnte natürlich den Logging Daemon bzw. das Pipe-File, weglassen und stattdessen alles direkt an eine Log Funktion schicken. Eben bloß nix mit Subprozessen über die gesamt Scriptlaufzeit machen. Also quasi sowas, das beendet sich ja dann sofort nach dem Aufruf wieder und sollte somit keinen Zombie erzeugen:
Das bedeutet dann aber auch, dass, zum einen keine halben Zeilen, wie Oder man schickt alles direkt ins Logfile, mit
Die Reihenfolge bei
Das sorgt dafür, dass der Daemon vor dem
Es wird also die
Das
Na klar, dein (?) Wrapper macht doch aus dem
Ja, der Bug ist mit meinem Ansatz, also wenn das korrekt mit supervisor gestartet wird, weg. |
Beta Was this translation helpful? Give feedback.
-
Es könnte reichen diese Zeile wieder zu löschen, wenn nicht: suchen :)
Achso :) Ich hab mit den commit länger angeschaut. Nur mit lesen ist es etwas schwer zu verstehen. Mit der Idee für einem Service zum zum loggen kann ich micht nicht so anfreunden. Ich mag für die ganzen alten FOS nichts testen, da das lief sollte es so bleiben. |
Beta Was this translation helpful? Give feedback.
-
Ich hätte dann hier einen neuen Vorschlag: McBane87@6860e1c
Ich habe hier noch eine alte 7570 rumliegen. Achtung Verwechslungsgefahr: Die aktuelle Generation fängt auch mit 75xx an, aber AVM hat auch schon vor 10 Jahren eine ihrer Boxen 7570 genannt. Und eben diese Box hat u.a.:
Damit habe ich meine obigen Änderungen ebenfalls getestet und es funktioniert damit auch.
Da, im Original, das Logging via Pipe ( |
Beta Was this translation helpful? Give feedback.
-
Und wie würde sich der Fehler dann darstellen? Kommt der Crash sofort, oder muss man irgendwas bestimmtes machen, damit es crasht? |
Beta Was this translation helpful? Give feedback.
-
Jup, deine exec-Benutzung und so wenig wie möglich Änderungen!
Das meinte ich ja viel weiter oben mit "ohne logging" .. einfach nur die Behebung des Problems. Denn um so mehr man ändert um so wahrscheinlicher ist ein Problem das man neu einbaut und das man dann irgend wann suchen muss.
Oh, ich hatte mir nur die verlinkten Commits angeschaut :)
Das ist halt die Sache mit Änderungen an Scripten für alte FOS Versionen die nicht mehr oft genutzt werden... Die Bedingung
trifft nur zu wenn man rc.dsld selbst aufruft und dies rückgängig macht?
Was mit Freetz sonst immer gepatcht ist? Also eigentlich auch nicht nötig? |
Beta Was this translation helpful? Give feedback.
-
Ich hab deine Sachen übernommen, ohne Logs. Auf die Idee die PID zu ersetzen wäre ich nicht gekommen. libctlmgr hab ich ausprobiert, sie verursacht keine (sichbaren) Crashes, aber /tmp hat trotzdem nicht die richtigen Berechtigungen |
Beta Was this translation helpful? Give feedback.
-
Zu libctlmgr #970 |
Beta Was this translation helpful? Give feedback.
-
Sorry für die verspätete Antwort.
Ja, das hatte ich schon gesehen. Aber alles danach landet doch nirgends mehr? Oder landet das alles trotzdem im Syslog, obwohl du danach nicht an
Die Frage hatte ich mir auch gestellt und hab keine zuverlässige Antwort dafür. Hatte mich einfach aus dem Bauch heraus trotzdem dazu entschieden, das zu prüfen. Aber du hast schon recht. Das wird letztlich im Hintergrund gemacht und der Check könnte dann zu früh oder zu spät sein.
Scheint mir alles korrekt auszusehen :-) |
Beta Was this translation helpful? Give feedback.
-
alt = ohne supervisor? Also vor FOS 7.2?
Halt das was avm dorthin loggt, Im schlimmsten Fall, falls der Daemon nicht startet sieht man dort als letztes den Watchdog das System rebooten. Oder wie beim ctlmgr den crash wegen der inkompatiblen(?) libctlmgt. Ich glaube über die FOS Versionen hinweg haben sich auch die Parameter des svctl verändert, evtl geht dieses testen ob ein Service läuft gar nicht mit alten Versionen. Ich habs nicht getestet und einfach weggelassen...
Nochmals danke! |
Beta Was this translation helpful? Give feedback.
-
Oh! Stimmt hatte ich übersehen.
OK, verstehe :-)
Gern. Hilft ja auch mir :-D |
Beta Was this translation helpful? Give feedback.
-
Wow! |
Beta Was this translation helpful? Give feedback.
Ich hab deine Sachen übernommen, ohne Logs. Auf die Idee die PID zu ersetzen wäre ich nicht gekommen. libctlmgr hab ich ausprobiert, sie verursacht keine (sichbaren) Crashes, aber /tmp hat trotzdem nicht die richtigen Berechtigungen