¿Cómo ejecutar fake-hwclock antes de que se actualice /var/log/wtmp?

¿Cómo ejecutar fake-hwclock antes de que se actualice /var/log/wtmp?

Tengo una raspberry pi y cada reinicio veo este resultado al final:

root@RaspberryPi:~# last | grep boot
reboot   system boot  4.4.0-1055-raspi Thu Jan  1 01:00   still running
reboot   system boot  4.4.0-1055-raspi Thu Jan  1 01:00   still running
reboot   system boot  4.4.0-1055-raspi Thu Jan  1 01:00 - 23:01 (17305+22:01)
reboot   system boot  4.4.0-1055-raspi Thu Jan  1 01:00 - 23:01 (17305+22:01)
reboot   system boot  4.4.0-1055-raspi Thu Jan  1 01:00 - 23:01 (17305+22:01)

Esto es a pesar de tener instalados tanto fake-hwclock como un RTC de hardware.

Actualmente, el servicio para fake-hwclock.service comienza antes que sysinit.target, así:

[Unit]
Before=sysinit.target

[Service]
ExecStart=/sbin/fake-hwclock load

[Install]
WantedBy=sysinit.target

¿Cómo hago para que se ejecute antes de que se actualice /var/log/wtmp?

Respuesta1

Creo que esto es un error en systemd-update-utmp. Vea mi comentario aquí:https://github.com/systemd/systemd/issues/6057#issuecomment-435247567

Una solución alternativa es ejecutar fake-hwclock en initramfs, antes de que pase el control a la instancia principal de systemd.

Respuesta2

Los registros de inicio de sesión de "reinicio" de wtmp son manejados por el servicio systemd-update-utmp. Debe comenzar antes del objetivo sysinit, lo que significa que antes de que se complete el inicio, este servicio se iniciará SI aún no se inició. No significa que systemd-timesyncd necesariamente se iniciará antes que systemd-update-utmp.

Probé en mi servidor Arch Linux y, sin embargo, consistentemente systemd-timesyncd siempre se ejecuta mucho antes que systemd-update-utmp. Por otro lado, casi siempre están a un pid de distancia entre sí.

Pero como no se ejecuta explícitamente después de NTP, supongo que esto debería considerarse un error.

Del manual del sistema:

"Después= es elinversode Antes=, es decir, mientras Después= garantiza que la unidad configurada se inicie después de que la unidad enumerada termine de iniciarse"

https://www.freedesktop.org/software/systemd/man/systemd.unit.html

Lo que debes hacer:

systemctl edit systemd-update-utmp

[Unit]
After=systemd-timesyncd.service
Wants=systemd-timesyncd.service

información relacionada