Installation: hardware clock vs system time and zone

I am trying to do a fresh install of Leap 15.1 with a working internet connection. According to openSUSE Leap 15.1 Startup:Clock and Time Zone, it is best to set the hardware clock (CMOS clock) to UTC on a single boot system.

Okay, so in BIOS Setup, the clock was set to local time. Since my time zone is currently UTC-4 (EDT), I advanced the hardware clock 4 hours to be the correct UTC time. After rebooting I went back in to Setup to verify that the change stuck. It did.

I then proceeded with the installation up to “Clock and Time Zone”. Just prior to arriving here, YaST gave a message, “Synchronizing with NTP server…”

My correct local time zone is displayed, Eastern (New York), and the time shown is the correct local time (system time?). “Hardware Clock Set to UTC” is not ticked. When I tick that checkbox to indicate that the CMOS clock is set to UTC, the time displayed is incorrectly 4 hours behind the current local time.

This is confusing. What should I do here?
Choose a UTC time zone?
Go into Other Settings and Manually set the clock to the correct time: local or UTC?
With “Hardware Clock Set to UTC” ticked, clicking the Synchronize Now button in Other Settings does not produce the correct current (local?) time. So, I don’t have much confidence that allowing NTP synchronization will set the time correctly. What exactly, by the way, would it be setting: hardware time, or system time, or both?

At this point if I Abort the installation, reboot, and go back into BIOS Setup, the clock has been reset to local time not UTC. If “it is strongly recommended to always set the hardware clock to UTC”, why is the installation process setting that clock to local time?

It doesn’t seem like setting the time should be this difficult. Am I making it so unnecessarily? What am I missing?

It is not completely clear what you are asking. So I will, instead, describe what I do.

I always use UTC. Where I have Windows, there is a registry entry you can set so that Windows uses UTC. I set that. That Windows setting didn’t quite work correctly with WinXP, but has worked more-or-less correctly with more recent Windows (but I have not tried Windows 10).

When I am installing openSUSE, I check the box to use UTC. Then installer itself defaults to UTC if there is no Windows found. But it defaults to using local time if it discovers a Windows system on the disk.

In my experience, the installer often gets it wrong. I tell it to use UTC. But it sets the hardware clock to local time anyway (and maybe to EST which isn’t even the right time zone). But it usually fixes that on the first boot. If I don’t want the installer to get it wrong, then I can unplug the network cable before I boot the installer. When I do that, it does not try to set the hardware clock, and it takes my word for it that the hardware clock us using UTC. Also, it does not setup an NTP service in that case. But, most of the time, I just leave the network connected for install.

I did pepper my post with quite a few various questions here and there; mostly out of sheer confusion.

I think my biggest question was why the process was almost forcing the use of local time, even in CMOS, instead of UTC. And, I think you answered that with:

I am attempting to install over an existing Windows system. I had configured Partitioning to delete the Windows partitions, but apparently Clock and Time Zone didn’t care about that.

So here’s what I did. I used the Rescue System option on the installation media to get to a command shell. Then, using fdisk, I blew away the Windows partitions. After restarting the installation, I again came to Clock and Time Zone. The correct local time was displayed and, this time, “Hardware Clock Set to UTC” was ticked. Perfect.

Thank you!

Distilling what @nrickert posted, for both Windows and openSUSE when you install using UTC time, the system uses that as the base time, and then makes adjustments for where you are… You shouldn’t make that adjustment yourself. The adjustment the system makes will be based on the time zone you configure.

And,
Typically if you set your OS (whatever it is, whether it’s MSWindows or openSUSE) to use your machine’s internal CMOS clock,** you should disable NTP**… The whole purpose is to rely on your system’s internal clock instead of any outside authority, and this is a possible setting only if you are logging in locally to your machine and your machine isn’t a member of network security like LDAP or AD. If for instance you are in a company network where their is company network security and you logon to a Domain on your network enabling SingleSignOn to network resources, then all the machines in your network have to point to a common Time authority to synchronize.

HTH,
TSU

When you check the box to set the Hardware Clock to UTC, that means that at shutdown the hardware clock is set using UTC. Thus NOT at the moment you click that box.

The hardware clock is then used very early in the boot to set the system time, where that time from the hardware clock is interpreted as being UTC. Later during the startup of the system it will be corrected by NTP.

So there was no need whatsover to set your hardware clock to something before instlaling openSUSE. You just configure the timezone with the installer, check the box and after your first shutdown the hardare clock shloud be OK for every new boot with a system that thinks the hardware clock is in UTC.

BTW, in Unix/Linux, your system always uses UTC at the system (kernel) level. You will normaly never see it, because it is translated to the timezone you configured (on in- and output).

Yes, that would do it. That way the installer is not confused by the presence of Windows.

So then “Hardware Clock Set to UTC” does not mean that the click is set to UTC as it sounds, but that it will be set to UTC? If that is so, then I think it should be phrased, “Set Hardware Clock to UTC” to be less confusing.

If there is no need to set the hardware clock prior to installation, then perhaps SDB:Configuring the clock should be modified to remove or edit, “The safest way is to set the CMOS clock to UTC before beginning the installation process.”

Thank you for the clarifications. If I am understanding what you have stated, had I checked the box to set the hardware clock to UTC and continued on with installation even though the local time was incorrect, at shutdown the correct UTC time would have been written to CMOS and at reboot, the system time and localized time would be correct.

I do not think many people bother about this subject, or certainly do not read that SDB before installing openSUSE. While I admire those that try to understand as much as possible about Linux before they install it, OTOH it can lead to too much worrying, specialy as the installer tries to make the best of it even if one does not understand very much. You just install it and somewhere at the beginning it asks to correct the time if needed (often it is not) and where you live, so it can connect that time to a time zone.

Then there is that one box to check or not. That box would not be there at all when there weren’t people that feel need to multi-boot with MS Windows. Until recently, MS Windos had no idea how to handle time zones. Thus there was only one time in MS Windows. And that of course was the time the user had set and thus was local time. So at shutdown of MS Windows the system clock local time was stored to the hardware clock for retrieval at next boot.

Now you will understand what happens when you multi boot and thus store and retrieve clock time from a system to the hardware clock and back and thoses systems do store something different. You understand it: a mess.

So what happened? Linux adapted to MS Windows (nobody expected it being the other way around) and gave to those people that multi boot with MS Windows the option to store/retrieve local time also for Linux. Thus you only need to choose for local time when you multi-boot with MS Windows.

But, it seems that in the mean time MS Windows also saw the light (or at least some of it) of how the world works with time zones and it can store/retrieve UTC. I do know next to nothing about MS Windows. Thus, if you want to multi-boot with it, you have to find out if your MS Windows can store/retrieve UTC and, when needed, how to configure it to do so.

Hi
Find a tool that will tell you the time in your locale for UTC, set the BIOS (hardwareclock) time to this. In windows you need to do a registry tweak to tell it real time is UTC, in openSUSE in YaST date/time set your locale and ensure the check box is checked for Hardware is UTC time.

You can then decide to use chronyd (aka ntpd) and configure the system to use this for syncing the time to either a pool or defined time servers.

That is what I did during the install. That is, except for tweaking the Windows registry since I am not using Windows but was attempting to install replacing Windows telling Partitioning to delete the Windows partitions. When I checked the box for “Hardware Clock Set to UTC”, the installer showed the incorrect time.

The installer showing the incorrect time, and not knowing why or what I should do at that point to avoid creating the type of mess to which you referred, is what prompted me to do research on “Clock and Time Zone” which led me to that SDB (SDB:Configuring the clock). If it is indeed true that had I checked the box to set the hardware clock to UTC and continued on with installation even though the local time was incorrect, at shutdown the correct UTC time would have been written to CMOS and at reboot the system time and localized time would be correct, then:

  1. This information would be very helpful at Clock and Time Zone for those who are hesitant to continue on with an installation given an indication that something might be wrong so as to avoid creating a mess, and
  2. The option should be worded “Set Hardware Clock to UTC” to indicate its true function instead of being interpreted as meaning that the hardware clock IS
    set to UTC.

In addition, the info from @nrickert quoted below and the info presented by @malcolmlewis on how to deal with time on dual-boot system would also be helpful on the openSUSE Leap 15.1 Start-Up page.

I thank you all for the detailed info and explanations. Hopefully, they will also help others who may find themselves faced with the same issue as I was.

Hi
The installer hasn’t set the time you selected at that point, when you move to the next step in the install process keep an eye on the time/date and you will see it change, or select the more options and check.

systemd is your friend:

erlangen:~ # timedatectl
               Local time: Tue 2019-10-29 09:36:24 CET
           Universal time: Tue 2019-10-29 08:36:24 UTC
                 RTC time: Tue 2019-10-29 08:36:24
                Time zone: Europe/Berlin (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
erlangen:~ # 

See: System time - ArchWiki