Aufruf des autoupdater-Skripts

Hallo FreifunX,

ich kann nicht finden, durch welchen Mechanismus das autoupdater-Skript aufgerufen wird. Ich hatte vermutet, dass dies ein Cronjob sein müsste.

Das Verzeichnis /etc/crontabs/ enthält aber nur eine leere Datei namens „root“. Der Cron-Daemon wird allerdings gestartet: /usr/sbin/crond -f -c /etc/crontabs -l 5

Welchen Mechanismus gibt es also für den Aufruf des autoupdater-Skripts?

Glück Auf
und
Funk frei!

Tom

kuckstu hier

###

0 root@bisser-ref-1-R:~# find /* |grep autoupdater |grep micron
/usr/lib/micron.d/autoupdater

###

0 root@bisser-ref-1-R:~# cat /usr/lib/micron.d/autoupdater
36 4 * * * /usr/sbin/autoupdater
36 0-3,5-23 * * * /usr/sbin/autoupdater --fallback

micron.d ersetzt cron …

1 Like

Danke.
Dann muss ich da ggf. auch basteln :slight_smile:

So, nun habe ich in der Theorie schon mal gebastelt:

Das autoupdater-Script bekommt ein Delay von 3 Stunden zwischen Download und Sysupgrade eingebaut. Das wird effektiv, wenn man es mit der Option „-d“ aufruft. Der Parameter muss entsprechend auch in der micron.d-Datei für den autoupdater berücksichtigt werden.

Bevor wir das nun einbauen, suche ich noch nach Diensten, die man durch das autoupdater-Script vor dem Download herunterfahren und stoppen könnte, um temporär mehr Speicher zur Verfügung zu haben. Bei den WR841 wird das nämlich schon kritisch. Gefunden habe ich bisher nur den uhttpd . Der kommt dann nach dem Sysupgrade wieder hoch.

Hat jemand noch weitere Vorschläge?

Glück Auf
Tom

Das bedeutet du blockierst für diese Zeit eine, beispielsweise bei den 841ern, nicht unerhebliche Menge RAM, das erhöht signifikant die Gefahr eines reboots. Wenn du wie angedacht Dienste stoppst steigt die Gefahr von manuellen reboots durch die Betreiber.

Schau dir doch mal den Ansatz an, das Autoupdate auch als wlan Client zu ermöglichen.

https://github.com/FreifunkHochstift/ffho-packages/tree/master/ffho/ffho-autoupdater-wifi-fallback

Das bedeutet dann allerdings, dass die reinen mesh Knoten eine gewisse Zeit offline sind, daher halte ich es für angebracht dies mit einem offline ssid Skript zu koppeln

Das trifft nicht die Aufgabenstellung.

Wir hatten leider schon öfter ein Firmware-Upgrade, bei dem die unterschiedlichen Versionen nicht mehr gegeneinander meshen. Um dies abzufangen will ich mit der Maßnahme die Race-Condition auflösen. Erst holen sich alle Stationen das Upgrade-Image und nach ausreichend Zeit können sie dann im Inselbetrieb das Sysupgrade durchführen.

Ausfälle im Meshnet wären damit nur noch innerhalb der Delay-Time zu erwarten, also von 4:00 bis 07:00 Uhr. Aber dass ganze Perlenketten von nachgeschalteten Geräten (ohne VPN-Uplink) ausfallen und man dann hinterherflitzen muss - sie sind dann ja auch per SSH nicht mehr erreichbar - sollte damit weitestgehend unterbunden sein.

Es dürfen nur Dienste temporär abgeschaltet werden, die der Endnutzer nicht typisch benötigt. Da fällt mir leider nur der uhttpd ein.

Grüße
Tom

genau dafür wäre so ein fallback gut, ein knoten der kein internet mehr hat - weil kein mesh mehr möglich ist, versucht sich als client einzuloggen und sich ein update zu holen sofern möglich. - das klappt, wenn es klappt , sehr gut

1 Like

Ok,

lass ich mir nochmal durch den Kopf gehen, inwieweit das bei schwankenden Feldstärken noch sicher genug ist, nicht dass das Teil dann alle Nase lang ins Fallback geht. Ich lese erstmal.

Die Sache mit dem Speicher bleibt dann aber vermutlich trotzdem noch bei den RAM-schwachen Teilen?

Glück Auf
Tom

der derzeitige autoupdater-Vorgang beendet schon alle Dienste, die man nicht unbedingt braucht, das sieht man doch auch sehr deutlich wenn man ihn manuell aufruft und er das neue Update lädt.

Wäre ja sinnvoll. Kann ich jetzt aber nicht entdecken im Autoupdater-Skript. Wie lauten denn die Zeilen, die das tun (Anfang reicht mir, um es wiederzufinden…)?

Glück Auf
und
Funk frei!

Tom

Die Software versucht nur wenn keinerlei Verbindung besteht eine Verbindung als Client, da machst du also nix kaputt.

In Sachen Speicher ist es kein Problem, es werden etliche entbehrliche Dienste abgeschaltet und dann unmittelbar das Update ausgeführt.

Größtenteils würde dies durch diesen Patch eingeführt: