nephilim hat geschrieben:Ich verwende
After=network-online.target &
Wants=network-online.target weil ich das
hier gelesen habe:
Das finde ich ja mal richtig klasse. Jemand, der eine vorherige Antwort dergestalt weiterverwendet, um sich darüber weitergehend zu informieren, sich eigene Gedanken macht, selber aufgrund von Anregungen recheriert und versucht auf Verstehen basierend konstruktiv zu eigenen Lösungen zu kommen
Aber leider gerätst Du hier in eine Falle, die Du als Newbie unmöglich selber erkennen kannst. Zunächst mal liegt hier eine Verwechselung vor. Dein Link beschreibt die besondere Service-Unit '
systemd-networkd-wait-online.service'. Diese Unit funktioniert nach meinem Kenntnisstand aber nur, wenn Du das Netzwerk über '
systemd-networkd & systemd-resolved' startest und handhabst. Das ist aber bei einer frischen Debian-Installation so nicht gegeben. Stattdessen wird das Netzwerk traditionell über '/etc/init.d/networking' & '/etc/network/interfaces' & diverse runlevel-Links gestartet. Faktisch bedeutet das, dass diese Units vor diesem Hintergrund eben nicht funktionieren.
Der zweite Irrtum bezieht sich auf das, was Du tatsächlich in die Unit eingetragen hast, und zwar "
After=network-online.target &
Wants=network-online.target". Diese Einträge funktionieren zwar auch in dem traditionellen sysvinit-Modus, aber sie tun nicht das, was sie vom Namen vorgeben zu tun und auch nicht das, was Du erwartest.
Die Unit 'network-online.target' ist eine aktive Unit, die weitere Service-Starts verzögert, bis das Netzwerk
ausreichend etabliert ist. Die Besonderheit liegt hier beim Begriff "ausreichend".... was bedeutet das? Nun, ganz einfach, es bedeutet keine abschließend gültige Zustandsdefinition, sondern nur das, was für bestimmte Aufgaben als
ausreichend definiert wird. Es gibt also verschiedene Zustände von "ausreichend", je nach point of view.
Ausreichend für
- die Treiber ist, wenn der Kernel die Hardware erkannt hat
- die Netzwerkprotokolle ist, wenn der Treiber funktionsfähig ist und ein Networkmanager gestartet werden könnte
- den Networkmanager ist, wenn die NICs geöffnet werden können
- den DHCP-Client ist, wenn der Network-Manager die NICs geöffnet hat und nun eine IP bezogen werden kann
- für den User ist, wenn das Netz (Gateway ->Server und Internet) erreichbar ist
Also, die Aussagekraft von "network-online.target" ist abhängig von dem, der dieses Target anzieht.... und das entscheidet der selber. Das könnte also bedeuten:
- Der Start Networkmanager ist veranlasst (Service-Manager)
- Der Start Networkmanager war erfolgreich (Fork exited = 0) (Service-Manager)
- Der Networkmanager wurde erfolgreich gestartet und ist bereit (NWM)
- Das Netzwerk-Interface wurde erfogreich geöffnet (NWM)
- eine DHCP-Adresse wurde angefordert (DHCP)
- eine IP-Adresse ist vergeben (DHCP)
- eine IP-Adresse ist vergeben (NWM)
Darüber hinaus
- beliebige eigene Services können dieses Target nach eigenem Ermessen zu jeder Zeit anziehen
Insofern ist das für Deine Zwecke unbrauchbar. So, und an der Stelle kann man nur hoffen, dass jemand eingreift, wenn ich hier falsches oder unvollständiges erzählt habe.
Wenn Du das genauer wissen möchtest, such einfach mal nach "tcp/ip-referenzmodell". Da siehst Du die Ebenen, die ggf. als "ausreichend" jeweils für den Nachfolger denkbar wären. Wobei das natürlich für unsere Probleme jetzt so auch nicht ganz der Wahrheit entspricht, für uns greifen eher die "späteren" Ebenen, aber egal... was bleibt ist, der Zustand dieses Targets ist nicht vernünftig verwertbar. Und noch weniger auf einem PI, weil es gerade mit dem PI3 auch die Möglichkeit eines eher sehr langsamen Verbindungsaufbaus via internem WLAN-NIC gibt.
PS
Ich denke, diese Antwort macht deutlich, warum man Frage & Antwort nicht per PN abhandeln sollte.