Wie wäre es denn (solange Freetz-NG seine Dienste nicht ordentlich in jeweils eigene Service-Files zerlegt, die Abhängigkeiten entsprechend beschreibt und generell den
supervisor zum Starten der Dienste, die sich aus Zusatzpaketen ergeben, nutzt - was ja die beste Lösung wäre), wenn beim Starten des
dnsmasq der
multid angehalten und im Anschluß neu gestartet wird?
Die Auswirkungen auf den
multid, wenn der (DNS-)Port bereits in Benutzung ist, habe ich hier irgendwo mal gezeigt (Stichworte
aicmd und
multid sollten zum erwähnten Beitrag führen) und solange man kein "Gespann" aus
multid und
dnsmasq für die Auflösung betreiben will (was ja ohnehin nur mit Kopfständen gelingen würde), schaltet der
multid dann eben lediglich die DNS-Funktionen ab und gut ist's.
Vermutlich ist das auch der Gedanke hinter dem zweiten Punkt in #2 ... nach meiner Erfahrung würde das so auch funktionieren, wobei man das Stoppen des
multid wohl am besten über den Parameter
-s macht, denn das (originale) Service-File enthält keinen
ExecStop-Eintrag (obwohl auch
ExecStop und sogar
ExecStopPost wohl implementiert sind) und beim Starten dann aber wieder auf
svctl zurückgreift, denn nur so erhält dann auch der supervisor wieder Kenntnis davon, daß der
multid.service wieder läuft und er ihn mit der neuen PID in seine Liste der Abhängigkeiten zwischen den Services einbauen kann.
Das ganze Geraffel in
rc.multid ist "Freetz-spezifisch" ... bei AVM gibt/gab es da gar kein eigenes
rc-File, das war alles in
rc.net enthalten.
Am einfachsten sind zwei zusätzliche Zeilen in der
rc.dnsmasq in den Funktionen
start (zum Anhalten des
multid) und
startdaemon_post (
https://github.com/Freetz-NG/freetz.../dnsmasq/files/root/etc/init.d/rc.dnsmasq#L25 - zum erneuten Starten des
multid), wobei man den ganzen Kram mit dem Ändern des Verhaltens des
multid (inkl. Wrapper) besser gleich ganz wegläßt als Patch.
Erst wenn man das alles noch mit Abfragen spicken will, ob das auch die richtige FRITZ!OS-Version und die passende Freetz-NG-Konfiguration ist, wird das aufwändiger und braucht mehr als die erwähnten zwei Änderungen in dieser einen Datei.
Allerdings wäre es natürlich auch denkbar, den Start des
dnsmasq selbst wieder über eine Service-Datei zu organisieren ... dann ist es noch viel einfacher dafür zu sorgen, daß der
multid erst NACH dem
dnsmasq gestartet wird ... nur paßt das dann - je nach Situation - nicht mehr zur sehr späten Initialisierung von Freetz-NG als "mod"-Paket und erst recht nicht dazu, wenn die Initialisierung von
external-Paketen erst "ganz weit hinten" im Ablauf erfolgt und man den
dnsmasq möglichst auch noch ausgelagert hat.
Die einzige, wirklich "saubere" Lösung wäre es hier sicherlich, den Start der ganzen Freetz-NG-Pakete ebenfalls auf die Möglichkeiten des parallelen Starts der Dienste umzustellen, was ja dank des
supervisor mittlerweile möglich ist - da lassen sich sogar die Starts von Freetz-NG-Paketen und von AVM-Daemons so weit miteinander verzahnen, daß einiges an Kopfständen vermeidbar ist, wozu einen zuvor der sehr späte Start von Freetz-NG (und das dann auch noch alles "seriell" und schön der Reihe nach) gezwungen hat.
Mit dem
supervisor ist es aber eben gar nicht mehr erforderlich, daß ein einmal gestarteter Service sich auch so schnell wie möglich initialisiert und danach die Steuerung wieder zurückgibt, damit der Startvorgang weitergehen kann ... da das alles parallelisiert ist, kann so ein Service (zum Beispiel für einen NTP-Client) auch einfach so lange warten, bis dann mal eine DSL-Synchronisation stattgefunden hat und die Uhrzeit irgendwie gesetzt wurde. Das behindert keinen einzigen anderen Service ... es sei denn, der wäre AUCH auf eine korrekt gesetzte Uhrzeit angewiesen und daher in seinem Service-File mittels
After=<any_service> als abhängig von einem vorher zu startenden Service markiert.
Man braucht also einfach nur ein passendes Service-File erstellen und das in
/lib/systemd/system werfen ... den Rest der ganzen Starterei übernimmt dann der
supervisor und wenn man sich nicht anders zu helfen weiß (AVM macht das auch so, daß von Version zu Version immer mehr Dienste auf dieses Startprinzip umgestellt werden), dann führt man eben bei Service-Start einfach das (alte)
rc-File aus.
AVM hat mittlerweile auch das WLAN vom LAN getrennt und startet das WLAN als gesonderten Service (
wifi.service) NACHDEM der Rest des Netzwerks bereits gestartet wurde (
After=network.target). Mit einiger Wahrscheinlichkeit hängt auch ein Problem mit "unvollständiger Bindung" des
dnsmasq an ein Interface bzw. das Fehlen des WLANs in der LAN-Bridge (falls das so sein sollte) mit dieser geänderten Reihenfolge zusammen ... ich kann derzeit nicht mal sicher sagen, WANN denn nun die Freetz-NG-Initialisierung beginnt (die dann ihrerseits ja erst wieder den
dnsmasq startet), denn ein Service, von dessen Initialisierung der Freetz-NG-Start abhängig ist (
https://github.com/Freetz-NG/freetz...5/patches/scripts/115-systemd-services.sh#L21) existiert in dieser Form in FRITZ!OS 07.50 gar nicht mehr (es gibt schlicht keinen
net.service mehr) und ob das jetzt am Ende heißt, daß der
supervisor diese Abhängigkeit dann ignoriert und die Freetz-NG-Initialisierung zu früh startet (nämlich bevor noch das Netzwerk initialisiert wurde) oder sie wieder GANZ ANS ENDE verschiebt, kann man nur raten (solange man die Implementierung dieses offensichtlichen
systemd-Abkömmlings nicht kennt) oder man muß es eben Schritt für Schritt ausprobieren (und dazu aber auch erst einmal ein Freetz-NG auf einem Gerät haben).