[Bug 1696500] [NEW] /var/log/wtmp is updated to 1970-01-01 before systemd-update-utmp.service (or fake-hwclock)

hackeron hackeron at gmail.com
Wed Jun 7 17:12:56 UTC 2017


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
Foundations Bugs, which is subscribed to systemd in 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)

Status in systemd package in Ubuntu:
  New

Bug description:
  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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1696500/+subscriptions



More information about the foundations-bugs mailing list