Fixing dual boot problems with Linux and Windows

Linux – Windows dual boot patches

I primarily use Linux, but some applications still require Windows (and games also run best on Windows). When the same computer is set up with a dual boot system, with both Linux and Windows, it runs pretty well, but some tweaks need to be made to keep it running smoothly. That’s what I’m writing about in this post. This is demonstrated using a Windows 10 and Linux Mint combination, but principle is the same for most Ubuntu based Linux distributions.

Contents:

  1. Installing Linux and Windows dual boot system
  2. Enabling writing to Windows partitions from Linux
  3. Stopping the time from changing when switching from Linux to Windows and back


1. Installing Linux and Windows dual boot system

When doing the installation, it is important to first install Windows, then Linux. Otherwise, dual boot menu might not work properly. The root of the problem is that, while Linux recognises windows boot records and partitions, Windows is completely oblivious of Linux.


2. Enabling writing to Windows partitions from Linux

When Windows 10 does a shut down, it leaves the computer in a sort of a “hybrid sleep” state, to call it that way. It is interesting that during a restart it doesn’t do that! However, when you do a shut down, Windows writes some contents of RAM to the disk and keeps the disk partitions in a sort of a “locked state” – in order to make the next boot a bit less slow.

Because of this, when you do a shut down, Linux won’t be able to write to Windows partitions. It will only be able to read the files from them. Which is impractical if you wish to copy files from Linux so they are accessible when you boot Windows. Here’s how to fix that, it is very simple:

Log into Windows with administrator privileges. Open “Control Panel” -> “Power Options”, or use search bar to type “Power Options”. Once you have opened power options, see picture 1:

Chose Additiona power settings
Chose Additiona power settings
Picture 1


Then do as shown in picture 2:

Click on the option pointed by the arrow
Click on the option pointed by the arrow
Picture 2


On the next screen, click on: “Change settings that are currently unavailable”.

Not very intuitive, but it is what it is - do as the arrow says
Not very intuitive, but it is what it is – do as the arrow says
Picture 3


Final step is clearing (unchecking) the option “Turn on fast startup (recommended)”, as shown in picture 4:

Clearing (unchecking) "Turn on fast startup (recommended)" is what fixes the problems
Clearing (unchecking) “Turn on fast startup (recommended)” is what fixes the problems.
Choose other options as you like.
Picture 4


3. Stopping the time from changing when switching from Linux to Windows and back

Your computer’s motherboard has a small battery that, among other things, serves to keep the clock running even when the computer is turned off. This helps so you don’t have to set the time and date whenever you turn on the computer (either “manually”, or by synchronizing over the Internet). What is the problem with dual boot systems?

Linux understands that the motherboard time is kept in UTC time. While Windows understands it’s written in local time. I’ll explain before providing a solution, for those interested in why and how the problem appears:

Novi Sad (where I live) currently has time that is UTC+1 hour. I boot Windows and set correct time to 13:00. Windows sets the motherboard clock to 13:00. Then I boot Linux. Linux “knows” that my time zone is UTC+1, so it reads the motherboard time, which is now say 13:05, then, since it assumes it is written in UTC (which is more logical, but I won’t get into that now) – and it shows 14:05 in the system.

If I now set correct time in Linux, say 13:10, it will write 12:10 on the motherboard clock, since it uses UTC.

You understand that this makes an error either way – whichever system is used to set correct time, the other one will show the wrong time. Unless you are in UTC+-0 time zone, that is your local time is UTC time.

The solution is to either make Windows write time in UTC format, or to make Linux use local time. Now, since Windows 10 is so brilliantly designed and created operating system, I fear touching anything during the brief moments when it works more or less as it should. So I chose to play with Linux – it’s easier and more carefree.

Anyway, log into Linux. Open command prompt (CTRL + ALT + T). You can check the current setup of time recording using the command:

timedatectl

Last line shown is the time saving format. By default, it is:

RTC in local TZ: no

Use the following command to make Linux store time in local format, instead of UTC:

timedatectl set-local-rtc 1 --adjust-system-clock

After this, if you run “timedatectl” again, you will see the following list, with the warning that the time recording format is not chosen wisely (because… Microsoft…):

Display of the time format and saving data
Display of the time format and saving data
Picture 5

If you ever get completely rid of Windows and wish to revert time saving format to UTC, it is done using the following command:

timedatectl set-local-rtc 0 --adjust-system-clock


That’s it. If I remember some other tweaks, I’ll add them to this post.

Share...

Leave a Comment

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.