[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.
Action unknown: addtobook

Welcome to the Slackware Documentation Project

How To Sync Your System Time to Hardware Clock Consistently

Overview

If you are booting multiple Linux distributions on the same machine, you might face the problem of inconsistent time zone settings across distributions. For example, assume you are dual-booting two Linux distributions, Distro X and Distro Y. You have set your BIOS hardware clock to show the local time.

If Distro X is configured to read the hardware clock as local time, it will show the time correctly, but if Distro Y is configured to read the hardware clock as set to UTC, then it will show an incorrect time.

This HOWTO attempts to provide a simple and cross-distribution one-time solution to the issue, making sure all your distributions know that your hardware clock is set to the local time (or UTC if you prefer it).

The other solution to time management on a system is to synchronize your computer's clock with an NTP (Network Time Protocol) server.

Procedure to Synchronize the System Time to Hardware Clock

This is a one-time procedure to ensure that your hardware clock's time zone is correctly and consistently recognized by all the Linux installations you multiboot on a single machine.

Assuming you are dual-booting Distro X and Y, first boot into Distribution X. First check the hardware clock with the following command.

 hwclock --show    

If your hardware clock is not set to your local time, then you must set the system time to local time. As root,

Update via NTP: If you installed the ntp package you can:

   ntpdate pool.ntp.org

If you get the error “the NTP socket is in use, exiting”, you probably is already running the NTP daemon. In that case, as root, use:

   ntpdate -u pool.ntp.org

-or-
Manual update:

   date --set "5 Aug 2012 12:54 IST"

Obviously in the above command you must set your date, time and time zone correctly.

Now as root, synchronize the hardware clock to the current system time as local time.

 hwclock --systohc --localtime

Now the hardware clock is readjusted to the system time and both now point to the local time.

Obviously there are other ways to achieve the same effect, but this process is least likely to confuse as you set initial time inside the Operating System and then adjust the BIOS clock accordingly.

Now boot into Distro Y and follow the same steps as above. It doesn't matter that the hardware clock is now set correctly, you can still reset the clock once to make sure that every distribution you multi-boot recognizes the hardware clock as set to the local time.

Syncing to UTC instead of Local Time

Some people prefer setting their hardware clock to UTC (Universal Coordinated Time) instead of local time. If you want to set your hardware clock to UTC and adjust the date/time accordingly, use the above steps but simply change the hwclock command to

 hwclock --systohc --utc

while setting the hardware clock from your system time.

Be consistent in time settings across Operating Systems when you dual boot. If you use different settings in different Operating Systems, your local time will be messed up.

Sources

  • Originally written by Harishankar for the SlackDocs Wiki Project
  • Based on Harishankar's blog article here

 howtos:hardware:syncing_hardware_clock_and_system_local_time ()