
私は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
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 が時間を提供しなければ、それは疑わしいと思います。