Sie sind nicht angemeldet.

1

29.10.2016, 13:22

ntpdate wird beim boot nicht gestartet

Hallo,

bin mir nicht sicher, unter welcher Rubrik diese Frage am besten gehört. Bei Bedarf bitte verschieben.

Mein Problem:
ntpdate wird beim boot nicht vom systemd gestartet. Nach dem Bootvorgang, kann ich den Dienst manuell starten. Da gibts keine Probleme. Aber ich will, dass es automatisch beim Boot gestartet wird. Problem besteht schon seit ein paar Jahren!

Dieses Problem habe ich jedoch nicht auf allen Gentoo-Installationen. Mit meinem NAS (Gentoo) funktioniert es problemlos. Finde aber nicht heraus, woran es liegt.

Hat jemand eine Idee, warum der Dienst nicht gestartet wird?

(Ich hatte mal den DNS im Visier und habe die IP Adressen der Server direkt in meine /etc/hosts eingetragen. Dann meckert er aber, dass diese Server nicht erreichbar sind).

Diese Hintergrund-Infos kann ich schon mal bringen:

Quellcode

1
2
3
hafgan # systemctl --failed
  UNIT        	LOAD   ACTIVE SUB	DESCRIPTION
● ntpdate.service loaded failed failed Set time via NTP using ntpdate


Statusbericht:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
hafgan # systemctl status ntpdate
● ntpdate.service - Set time via NTP using ntpdate
   Loaded: loaded (/usr/lib64/systemd/system/ntpdate.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/ntpdate.service.d
       	└─00gentoo.conf
   Active: failed (Result: exit-code) since Sa 2016-10-29 12:58:35 CEST; 10min ago
  Process: 493 ExecStart=/usr/sbin/ntpdate -b -u $SERVER (code=exited, status=1/FAILURE)
 Main PID: 493 (code=exited, status=1/FAILURE)

Okt 29 12:58:35 wega systemd[1]: Starting Set time via NTP using ntpdate...
Okt 29 12:58:35 wega ntpdate[493]: Exiting, name server cannot be used: Temporary failure in name resolution (-3)29 Oct 12:58:35 ntpdate[493]: name server cannot be used: Temporary failure in name resolution (-3)
Okt 29 12:58:35 wega systemd[1]: ntpdate.service: Main process exited, code=exited, status=1/FAILURE
Okt 29 12:58:35 wega systemd[1]: Failed to start Set time via NTP using ntpdate.
Okt 29 12:58:35 wega systemd[1]: ntpdate.service: Unit entered failed state.
Okt 29 12:58:35 wega systemd[1]: ntpdate.service: Failed with result 'exit-code'.


Manuelles Starten funktioniert:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
hafgan # systemctl start ntpdate
hafgan # systemctl status ntpdate
● ntpdate.service - Set time via NTP using ntpdate
   Loaded: loaded (/usr/lib64/systemd/system/ntpdate.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/ntpdate.service.d
       	└─00gentoo.conf
   Active: active (exited) since Sa 2016-10-29 13:14:04 CEST; 5s ago
  Process: 1677 ExecStart=/usr/sbin/ntpdate -b -u $SERVER (code=exited, status=0/SUCCESS)
 Main PID: 1677 (code=exited, status=0/SUCCESS)

Okt 29 13:10:22 wega systemd[1]: Starting Set time via NTP using ntpdate...
Okt 29 13:14:04 wega ntpdate[1677]: 29 Oct 13:14:04 ntpdate[1677]: step time server 131.188.3.221 offset 212.725721 sec
Okt 29 13:14:04 wega systemd[1]: Started Set time via NTP using ntpdate.

2

29.10.2016, 14:47

ich habe aktuell ähnliche Probleme mit dem ntp-client unter openrc und bin mir auch noch nicht ganz sicher woran es wirklich liegt.
Wahrscheinlich ist es aber so, dass ntp syncen will bevor eine Netzwerkverbindung besteht und evtl. deshalb der Dienst nicht gestartet wird.
Was mich nur wundert ist, dass systemd da beim Boot-Vorgang keinen "stop-job" produziert ?(

Jedenfalls habe ich diesen Forenbeitrag gefunden, evtl. hilft er Dir ja weiter.

3

29.10.2016, 15:51

Hi SW,

danke für den Link. Ich glaube langsam, dass es nichts mit systemd, oder mit dhcpcd.

Ich nutze networkmanager und habe damit das gleiche Problem. In dem Link, den Du hinzugefügt hast, treten ja auch die Fehler mit openRC und systemd auf. Außerdem habe ich auf meinem NAS auch kein dhcpcd sondern networkmanager. Also geht es nicht mit/ohne systemd und nicht/ohne dhcpcd.

Ich habe den Hinweis ausprobiert und den Dienst 'NetworkManager-wait-online.service' hinzugefügt. ==> Nützt auch nichts.

Den weiteren Hinweis, etwas dem Startskript hinzuzufügen, damit er aufs Netzwerk wartet habe ich auch gemacht und nützt auch nichts, wobei ich nicht weiss ob ich das wirklich richtig gemacht habe. (Oben oder unten hin, oder in einem extra file...). Aber habe da eh meine Bedenken, denn dann müsste es ja überall fehlen und dürfte nirgendwo gehen. (Tut es aber auf meinem NAS).

Seltsam, warum klappst nicht?

hafgan

4

30.10.2016, 11:21

Hi hafgan

Wenn du systemd nutzt, was spricht gegen timesync. Wenn du nur die Uhr stellen möchtest sollte das reichen. Hier mal der Link zum arch-wiki.
https://wiki.archlinux.org/index.php/systemd-timesyncd
Intel Core2 Quad CPU @ 2.40GHz mit Gentoo/Gnome3

Eigenes Gentoo System auf CD oder USB

5

30.10.2016, 11:41

Ja, das all-bekannte Problem. Systemd (und OpenRC genauso) wissen nicht wann das System tatsächlich online ist oder nicht. Daher versuchen sie den NTP Client zu früh zu starten, das klappt nicht da die NTP-Server noch nicht erreichbar sind, also ist der Servie ntpdate nicht gestartet. Manuell geht es dann später da das System vollständig im Netz ist.
Für Systemd gibt es den network-online.target. Was dieser tut weiss ich nicht, aber auch bei mir nicht das was er soll. Daher hatte ich die Abhängigkeiten direkt im Service-File angepasst:

Quellcode

1
2
3
4
5
6
# cat /etc/systemd/system/ntpdate.service.d/01dependency.conf 
[Unit]
#Requires=dhcpcd.service
After=dhcpcd.service
#Requires=network-online.target
#After=network-online.target
Bei mir wartet der ntpsate also nicht mehr auf den nicht funktionierendes network-online.target sondern direkt auf den dhcpcd.service. Bei mir ist das System online sobald der dhcpcd.service fertig ist. Mit einem Networkmanager geht es etwas anders, da muss der Networkmanager sagen wann das System online ist btw. die abhängigen Services starten. Bei Networkmanager+OpenRC ging es über einen Dispatcher-Script. Networkmanager+Systemd - hab nie ausprobiert, möglicherweise geht da network-online.target? An sonsten ist basteln angesagt.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

6

01.11.2016, 14:11

Oh weh! Danke für alle die hier helfen!
Ist ja alles nicht so wichtig. Wollte es mal angehen. Wenn ich das von Zeit zu Zeit mal manuell ausführe geht die Welt nicht unter. Dachte ich hab da vielleicht was einfaches übersehen.

Schönen Feiertag!
hafgan

7

06.04.2017, 19:52

Eine Methode die funktionieren sollte unabhängig ob systemd oder openrc verwendet wird, ist folgende
ntp mit Networkmanager

das script ist für openrc, muss also für systemd noch angepasst werden aber geht sicher

zudem muss beachtet werden, dass gegebenenfalls entweder eth0 gegen enp.... ersetzt werden muss, oder als boot parameter net.ifnames=0 gesetzt werden muss damit die schnittstelle auch wirklich eth0 heisst
was auch wichtig ist dass der ntp Dienst NICHT direct aktiviert wird mit dieser methode sondern nur über dieses script, das heisst der start und stop von ntp wird dem dispatcher des Networkmanagers überlassen. Ich verwende diese methode seit langem und es funktioniert einwandfrei