Iniciar a unidade após a atualização da hora do sistema

Iniciar a unidade após a atualização da hora do sistema

Eu tenho uma máquina ODROID-C2 na qual estou executando o Arch Linux. Quando executo journalctl -b, posso ver que inicialmente a hora está errada:

-- 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@

Posteriormente, durante o processo de inicialização, a hora é atualizada:

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. Pergunta:Eu gostaria que o tempo estivesse (quase) correto desde o início. Existe alguma maneira de fazer isso com um ODROID-C2? Entendo que é necessária uma bateria para que isso funcione e não acho que um ODROID-C2 tenha isso. Atualizar:Aparentemente, isso não é algo que possa ser feito facilmente.

Mais importante ainda, quero ter certeza de que os serviços só serão iniciados quando o horário for corrigido, pois isso pode confundir os temporizadores, etc. Li que o seguinte pode ser feito para conseguir isso:

  1. Correr:systemctl enable systemd-time-wait-sync.service
  2. Coloque: After=time-sync.targetno arquivo de serviço.

2. Pergunta:Isso está correto?

Estou muito confuso porque não acho que seja isso que esteja acontecendo. Eu tenho o seguinte arquivo de serviço:

[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

Mas posso ler o seguinte para 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.

o que é claramente antes de a hora ser atualizada para a hora correta.

3. Pergunta:Como posso depurar ainda mais isso?

Responder1

Isso pode não ser algo que você possa fazer sem o relógio do BIOS. Não estou familiarizado com o ODROID-C2, mas trabalhei em alguns outros dispositivos incorporados.

Como o sistema começará a registrar assim que o kernel for ativado, a saída do journalctl terá carimbos de data de tudo o que obtiver do relógio do hardware do sistema até que possa corrigir a hora. Como o seu dispositivo não possui bateria, ele não pode persistir a data. Seu sistema passará por momentos difíceis até que a rede seja ativada e obtenha tempo do servidor NTP.

Pode haver outra maneira, mas duvido que o BIOS não forneça tempo na inicialização do hardware.

informação relacionada