All tech enthusiasts run at least two operating systems from the same PC. Whether you are using your laptop for gaming or educational purposes, it is convenient to run an additional OS for various reasons. An example is installing Ubuntu Linux on a Windows PC. This step has helped me to keep going when either of the OS gets corrupted and cannot boot.
There are, however, many reasons as to why you may want to install Linux on any PC or Mac. The availability of free (open source and freedom of use and modification license) software is what draws many developers, students, entrepreneurs, and computer geeks to Linux. You can even have a Linux distro on your computer to show your friends how “techy” you are.
Installing a second OS on a laptop is easy and convenient for accomplishing many tasks without having to buy a second machine. The “problem” comes when you try to switch between Linux and Windows on your machine and discover that each time you switch the clock is reading different time from the other OS.
The only people who will have the clock read the correct time are those who use the UTC+0 (GMT) timezone. The reason is that Linux and Windows use different ways to store the time on your machine. For this reason, you should not worry about adjusting the time every time you boot the other OS. You need to update one clock to sync with the other for a smooth experience.
What Causes the Time Difference?
Your computer uses two clocks. The Hardware Clock runs on the motherboard and the time memory relies on the CMOS battery. When you install Windows on your system, it uses the BIOS Clock to set the time on your machine. This is the time you will see every time you boot into Windows for your daily activities.
Every time you set the time on Windows, it will update the CMOS clock to read the time you enter on the system. If you want to be sure you are setting the time correctly, you can update it from the BIOS settings.
On a Linux machine, however, the time reads differently. When you decide to Multiboot or Dual Boot Ubuntu with Windows 10, you will bring a different case on the system. During the installation process, you will see a point where you are supposed to enter your timezone. You need to enter your correct timezone to have the correct time reading on your PC.
The timezone you use during installation creates a time “offset” which Ubuntu will use to update the system clock. On Ubuntu, the clock that displays the time runs on the software, and it updates it using the hardware clock and the offset according to your timezone. That is why the time may read differently from the time on Windows.
How to Merge the Clocks on Windows and Linux
To correct the time on your machine, you need to adjust the clock settings either on Linux or Windows. In Ubuntu, the process is easy. On the other hand, Windows makes the process more complicated than helping you solve the issue.
You can edit the registry so that Windows saves the time in UTC to merge with your Linux clock. The problem you will encounter is that the Windows clock server does not support the editing, and it will update your clock to the wrong time.
Third-party apps on Windows also assume that your clock is in local time. Editing the registry to read the CMOS clock time in UTC will break the apps because that is a part they do not understand. In the event, they will pick the wrong time and may fail to run.
So, what are the options?
1. (Unrecommended) – Make Windows Use UTC Timezone
As I mentioned earlier, it is not recommendable to follow this route. But, let us see how you can achieve the time sync on Windows 10.
The first thing you will need to do is disable online time synchronization on Windows. Doing so will prevent the system from updating the wrong time on your machine.
On your Windows 10 computer, go to the settings app and open the “Time and language” settings. Disable the “set time automatically” feature. For Windows 7 users, you should right-click on the clock displaying on the computer’s taskbar.
Click on the “Adjust date/time” menu and, on the window that pops up, click on the tab labeled “Internet time”. Next, click on the “Change Settings” button and disable the synchronization option. Click the “OK” button to save the settings.
The next step is editing the registry. Remember that the registry is not an ordinary file you can edit anyhow. Make a mistake and your system will be unusable. Now that you are scared enough, I know you will follow the steps accurately.
Create a backup of your computer and the registry before you begin editing. Click on the “Start” button and type “regedit” Click on the entry with the Windows registry icon. On Windows 7, click the start button and then the “Run” program. You can as well simultaneously press the Windows + R keys. Type “regedit” in the box and hit “Enter”.
Accept the UAC prompt and continue to the editor. On the navigation pane, find the key:
You can copy and paste the shortcut on the address bar of the editor. It works both on Windows 7 and 10.
You now need to right-click on the “TimeZoneInformation” key and select “New” from the context menu. Then select the “DWORD (32-bit) Value” entry and name it “RealTimeIsUniversal”.
Now double-click your new entry value to change the value data. Enter 1 in the “data” column and click “ok” to save. After saving your changes, close the registry editor.
Your machine will now store time in UTC like Linux. But in case you want to undo the changes, delete the key you created.
2. Recommended – Make Linux Use Local Time
The easiest way to get around the time setting hassle is to change Linux to use the local time. Microsoft Blog elaborates why it is important to keep the local time on your BIOS. The simple reason is to set up time once and forget regardless of which OS you boot. It favors people who prefer setting up the time on the BIOS.
To follow suit, we need to update Ubuntu to use the local time. In this way, your machine will read the same clock on both OSes you boot. Now, let us update Linux to read the CMOS clock in local timezone (without ever minding about residence).
Depending on your Linux distro, the procedure might vary. The easiest way is to find out if your OS has systemd. It works out of the box on Ubuntu, Fedora, Red Hat, Mint, Debian, and other major distros. You might want to install the software on your computer if it is not part of the OS installation CD.
To set the clock to use the local time, open the Terminal emulator (CTRL+ALT+T). Now paste the code in Terminal and hit “Return” (Enter) key.
timedatectl set-local-rtc 1 --adjust-system-clock
Now you have succeeded in setting the BIOS clock time as our local time on Linux. When multibooting more than one Linux OS, you need to carry out the same procedure on all the distros.
timedatectl will help you to verify if the settings were successfully saved. It should show you the local timezone, the universal timezone, and the real-time clock (RTC). Usually, the RTC reads time in UTC, but after the update, it uses the local time.
You will see a warning that RTC in local time is not fully supported. When changing the time zones, you may find your computer reading the wrong time. And, if you are in a “Timesaving” region during Summer, local time may not update it correctly.
But you should not worry. Since you are dual booting, Windows will fix the time differences accurately on the CMOS clock.
Whenever you feel like you want to change the settings so that Linux can use UTC for the clock, you can always revert the settings. The command to run is:
timedatectl set-local-rtc 0 --adjust-system-clock
After running the command, your PC will read the system clock in UTC and apply the offset accurately for the local time. I prefer it like this when I want to appear in a different timezone while working. The method keeps me on track with my client’s time.