Arch Linuxを実行するODROID-C2システムがあります。を実行すると、journalctl -b
最初は時間が間違っていることがわかります。
-- 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@
後で開始中に時間が更新されます。
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. 質問:最初からタイミングが(ほぼ)正確であればいいです。 ODROID-C2でこれを行う方法はありますか?私が知っているので、この機能が動作するにはバッテリーが必要ですが、ODROID-C2にはバッテリーがないようです。 修正する:明らかにこれは簡単なことではありません。
しかもタイマーなどがめちゃくちゃになることがあるので時間を修正した後にのみサービスを開始したいと思います。これを達成するために、次のことができることを読んでいます。
- ランニング:
systemctl enable systemd-time-wait-sync.service
- Put:
After=time-sync.target
サービスファイルに入れます。
2. 質問:そうですか?
私はそれが起こっているとは思わないので混乱しています。次のサービスファイルがあります。
[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
ただし、次の内容を読むことができます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.
明らかに、時間が正しい時間に更新される前でした。
3. 質問:どのようにさらにデバッグできますか?
答え1
BIOSクロックがなければ不可能かもしれません。私はODROID-C2に慣れていませんが、他の組み込みデバイスで作業したことがあります。
カーネルが起動するとすぐにシステムがロギングを開始するため、Journalctl出力には正しい時刻が得られるまでシステムハードウェアクロックから取得されたすべての日付スタンプが含まれます。端末にバッテリーがないため、日付を保存できません。ネットワークが復元され、NTPサーバーから時刻を取得するまで、システムに問題が発生します。
他の方法があるかもしれませんが、ハードウェアの初期化中にBIOSが時間を提供しないようです。