Public bug reported: I have a raspberry pi with fake-hwclock installed and it seems the documented behaviour doesn't work E.g. from /lib/systemd/system/systemd- timesyncd.service, specifically: "ensure [clock] monotonically advances even if the system lacks a battery-buffered RTC chip" - this doesn't actually happen.
I have tried editing /lib/systemd/system/fake-hwclock.service to have: [Unit] Description=Restore / save the current clock Documentation=man:fake-hwclock(8) DefaultDependencies=no Before=systemd-update-utmp.service sysinit.target Conflicts=shutdown.target I also tried to edit /lib/systemd/system/systemd-update-utmp.service to have: [Unit] Description=Update UTMP about System Boot/Shutdown Documentation=man:systemd-update-utmp.service(8) man:utmp(5) DefaultDependencies=no RequiresMountsFor=/var/log/wtmp Conflicts=shutdown.target # After=systemd-remount-fs.service systemd-tmpfiles-setup.service auditd.service fake-hwclock.service After=systemd-timesyncd.service fake-hwclock.service time-sync.target Before=sysinit.target shutdown.target [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=/sbin/fake-hwclock load ExecStart=/lib/systemd/systemd-update-utmp reboot ExecStop=/lib/systemd/systemd-update-utmp shutdown However on reboot, the wtmp file is still being updated before systemd- update-utmp.service and fake-hwclock: $ last reboot | head -n 3 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 - 22:04 (17316+21:04) reboot system boot 4.4.0-1055-raspi Thu Jan 1 01:00 - 22:04 (17316+21:04) Looking at the journalctl I can see the time is already set and /var/log/wtmp is already updated to 1970 before any of the above can run: $ sudo journalctl -u systemd-update-utmp -- Logs begin at Wed 2017-06-07 17:18:08 IST, end at Wed 2017-06-07 17:19:05 IST. -- Jun 07 17:18:14 TimeBox systemd[1]: Starting Update UTMP about System Boot/Shutdown... Jun 07 17:18:14 TimeBox fake-hwclock[823]: Current system time: 2017-06-07 16:18:14 Jun 07 17:18:14 TimeBox fake-hwclock[823]: fake-hwclock saved clock information is in the past: 2017-06-07 16:18:08 Jun 07 17:18:14 TimeBox fake-hwclock[823]: To set system time to this saved clock anyway, use "force" Jun 07 17:18:14 TimeBox systemd[1]: Started Update UTMP about System Boot/Shutdown. So the "Update UTMP about System Boot/Shutdown." doesn't work, the time is already set to 1 Jan 1970 by something else. How do I run a service/command before /var/log/wtmp is touched and set to 1 Jan 1970? - It seems the documented behaviour/methods do not work. I'm using Ubuntu 16.04 with systemd 229-4ubuntu17 ** Affects: systemd (Ubuntu) Importance: Undecided Status: New ** Tags: fakehw-clock raspberrypi rtc systemd ** Description changed: I have a raspberry pi with fake-hwclock installed and it seems the documented behaviour doesn't work E.g. from /lib/systemd/system/systemd- timesyncd.service, specifically: "ensure [clock] monotonically advances even if the system lacks a battery-buffered RTC chip" - this doesn't actually happen. I have tried editing /lib/systemd/system/fake-hwclock.service to have: - [Unit] - Description=Restore / save the current clock - Documentation=man:fake-hwclock(8) - DefaultDependencies=no - Before=systemd-update-utmp.service sysinit.target - Conflicts=shutdown.target + [Unit] + Description=Restore / save the current clock + Documentation=man:fake-hwclock(8) + DefaultDependencies=no + Before=systemd-update-utmp.service sysinit.target + Conflicts=shutdown.target + + I also tried to edit /lib/systemd/system/systemd-update-utmp.service to have: - [Unit] - Description=Update UTMP about System Boot/Shutdown - Documentation=man:systemd-update-utmp.service(8) man:utmp(5) - DefaultDependencies=no - RequiresMountsFor=/var/log/wtmp - Conflicts=shutdown.target - # After=systemd-remount-fs.service systemd-tmpfiles-setup.service auditd.service fake-hwclock.service - After=systemd-timesyncd.service fake-hwclock.service time-sync.target - Before=sysinit.target shutdown.target + [Unit] + Description=Update UTMP about System Boot/Shutdown + Documentation=man:systemd-update-utmp.service(8) man:utmp(5) + DefaultDependencies=no + RequiresMountsFor=/var/log/wtmp + Conflicts=shutdown.target + # After=systemd-remount-fs.service systemd-tmpfiles-setup.service auditd.service fake-hwclock.service + After=systemd-timesyncd.service fake-hwclock.service time-sync.target + Before=sysinit.target shutdown.target - [Service] - Type=oneshot - RemainAfterExit=yes - ExecStartPre=/sbin/fake-hwclock load - ExecStart=/lib/systemd/systemd-update-utmp reboot - ExecStop=/lib/systemd/systemd-update-utmp shutdown - However on reboot, the wtmp file is still being updated before systemd-update-utmp.service and fake-hwclock: + [Service] + Type=oneshot + RemainAfterExit=yes + ExecStartPre=/sbin/fake-hwclock load + ExecStart=/lib/systemd/systemd-update-utmp reboot + ExecStop=/lib/systemd/systemd-update-utmp shutdown - $ last reboot | head -n 3 - 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 - 22:04 (17316+21:04) - reboot system boot 4.4.0-1055-raspi Thu Jan 1 01:00 - 22:04 (17316+21:04) - Looking at the journalctl I can see the time is already set and /var/log/wtmp is already updated to 1970 before any of the above can run: + However on reboot, the wtmp file is still being updated before systemd- + update-utmp.service and fake-hwclock: - $ sudo journalctl -u systemd-update-utmp - -- Logs begin at Wed 2017-06-07 17:18:08 IST, end at Wed 2017-06-07 17:19:05 IST. -- - Jun 07 17:18:14 TimeBox systemd[1]: Starting Update UTMP about System Boot/Shutdown... - Jun 07 17:18:14 TimeBox fake-hwclock[823]: Current system time: 2017-06-07 16:18:14 - Jun 07 17:18:14 TimeBox fake-hwclock[823]: fake-hwclock saved clock information is in the past: 2017-06-07 16:18:08 - Jun 07 17:18:14 TimeBox fake-hwclock[823]: To set system time to this saved clock anyway, use "force" - Jun 07 17:18:14 TimeBox systemd[1]: Started Update UTMP about System Boot/Shutdown. - So the "Update UTMP about System Boot/Shutdown." doesn't work, the time is already set to 1 Jan 1970 by something else. + $ last reboot | head -n 3 + 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 - 22:04 (17316+21:04) + reboot system boot 4.4.0-1055-raspi Thu Jan 1 01:00 - 22:04 (17316+21:04) + + Looking at the journalctl I can see the time is already set and + /var/log/wtmp is already updated to 1970 before any of the above can + run: + + $ sudo journalctl -u systemd-update-utmp + -- Logs begin at Wed 2017-06-07 17:18:08 IST, end at Wed 2017-06-07 17:19:05 IST. -- + Jun 07 17:18:14 TimeBox systemd[1]: Starting Update UTMP about System Boot/Shutdown... + Jun 07 17:18:14 TimeBox fake-hwclock[823]: Current system time: 2017-06-07 16:18:14 + Jun 07 17:18:14 TimeBox fake-hwclock[823]: fake-hwclock saved clock information is in the past: 2017-06-07 16:18:08 + Jun 07 17:18:14 TimeBox fake-hwclock[823]: To set system time to this saved clock anyway, use "force" + Jun 07 17:18:14 TimeBox systemd[1]: Started Update UTMP about System Boot/Shutdown. + + So the "Update UTMP about System Boot/Shutdown." doesn't work, the time + is already set to 1 Jan 1970 by something else. How do I run a service/command before /var/log/wtmp is touched and set to 1 Jan 1970? - It seems the documented behaviour/methods do not work. I'm using Ubuntu 16.04 with systemd 229-4ubuntu17 ** Tags added: raspberrypi ** Tags added: fakehw-clock rtc systemd -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1696500 Title: /var/log/wtmp is updated to 1970-01-01 before systemd-update- utmp.service (or fake-hwclock) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1696500/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs