
Ich habe eine ODROID-C2-Maschine, auf der ich Arch Linux verwende. Wenn ich ausführe journalctl -b
, sehe ich, dass die Zeit zunächst falsch ist:
-- Logs begin at Thu 2020-02-13 20:01:10 GMT, end at Fri 2020-03-20 17:20:14 GMT. --
Feb 13 20:01:15 moby kernel: Initializing cgroup subsys cpuset
Feb 13 20:01:15 moby kernel: Initializing cgroup subsys cpu
Feb 13 20:01:15 moby kernel: Initializing cgroup subsys cpuacct
Feb 13 20:01:15 moby kernel: Linux version 3.16.81-1-ARCH (builduser@
Später beim Bootvorgang wird die Uhrzeit aktualisiert:
Feb 13 20:01:26 moby dbus-daemon[246]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.0' (uid=981 pid=203 comm="/usr/lib/systemd/systemd-networkd ")
Feb 13 20:01:26 moby systemd[1]: Starting Hostname Service...
Mar 20 17:12:59 moby systemd-timesyncd[234]: Initial synchronization to time server 85.199.214.99:123 (0.arch.pool.ntp.org).
Mar 20 17:13:02 moby kernel: audit_printk_skb: 36 callbacks suppressed
1. Frage:Ich möchte, dass die Zeit von Anfang an (fast) richtig ist. Gibt es eine Möglichkeit, dies mit einem ODROID-C2 zu tun? Meines Wissens ist dafür eine Batterie erforderlich, und ich glaube nicht, dass ein ODROID-C2 eine hat. Aktualisieren:Offensichtlich ist das nicht so einfach zu bewerkstelligen.
Am wichtigsten ist mir, dass Dienste erst gestartet werden, wenn die Zeit korrigiert wurde, da dies zu Verwirrungen bei Timern usw. führen kann. Ich habe gelesen, dass man dies möglicherweise folgendermaßen erreichen kann:
- Laufen:
systemctl enable systemd-time-wait-sync.service
- Fügen Sie Folgendes
After=time-sync.target
in die Servicedatei ein:
2. Frage:Ist das korrekt?
Ich bin sehr verwirrt, weil ich nicht glaube, dass dies der Fall ist. Ich habe die folgende Servicedatei:
[Unit]
Description=Run check-updates.service every Friday at 8pm
After=time-sync.target
[Timer]
OnCalendar=Fri 20:00
Persistent=true
[Install]
WantedBy=timers.target
Aber ich kann folgendes lesen für journalctl -b
:
Feb 13 20:01:25 moby systemd[262]: check-updates.timer: Not using persistent file timestamp Fri 2020-03-20 17:01:56 GMT as it is in the future.
Feb 13 20:01:25 moby systemd[262]: Started Run check-updates.service every Friday at 8pm.
Dies geschah eindeutig, bevor die Zeit auf die richtige Zeit aktualisiert wurde.
3. Frage:Wie kann ich dies weiter debuggen?
Antwort1
Dies ist möglicherweise nicht ohne BIOS-Uhr möglich. Ich kenne ODROID-C2 nicht, habe aber an einigen anderen eingebetteten Geräten gearbeitet.
Da das System mit der Protokollierung beginnt, sobald der Kernel hochfährt, enthält die Ausgabe von journalctl Datumsstempel von dem, was es von der Hardwareuhr des Systems erhält, bis die Zeit korrigiert werden kann. Da Ihr Gerät keine Batterie hat, kann es das Datum nicht speichern. Ihr System wird schlechte Zeiten haben, bis das Netzwerk hochfährt und die Zeit vom NTP-Server erhält.
Es gibt vielleicht einen anderen Weg, aber ich bezweifle das, wenn das BIOS bei der Hardwareinitialisierung keine Zeit bereitstellt.