5 tweaks I make to make Windows play nicer in a Linux dual-boot setup

1 month ago 2

Dual-booting is fun and surprisingly easy. I have managed to dual-boot Linux and Windows on a fairly old PC and haven’t faced many issues. However, the experience is not always smooth. I often find that the two operating systems try to override each other. Sometimes, I do not get the option to boot into Linux, as Windows takes the liberty of starting up on its own. Other times, Linux does the same.

I have found that certain system-level adjustments can greatly improve stability and interoperability between the two. Although I use NixOS, the principles discussed here apply broadly to other Linux distributions.

Hyprland Arch Linux on Framework laptop

Related

5 useful Linux tools that would never make sense on Windows

The Linux ecosystem is home to a host of neat services, many of which are impractical on a Windows machine

5 Consistent system clock setting

Both OSes can show time inconsistently

If you dual-boot Windows with any Linux distribution, you might have noticed a time difference between the two operating systems. When you use Linux, it shows the correct time, but when you boot into Windows, it shows the wrong time. It is the opposite in some cases, where Linux shows the wrong time and Windows displays it correctly.

This can be confusing, especially since you are connected to the internet and your date and time settings are set to update automatically. The issue comes from how each operating system handles the hardware clock. By default, Linux assumes the real-time clock is set to UTC, while Windows usually treats it as local time. This mismatch often causes the system clock to shift when switching between the two, which can lead to problems for time-sensitive applications and logs.

One way to fix this is to make both operating systems use the same time standard. For example, you can configure Windows to use UTC like Linux does. Another option is to ensure that both Linux and Windows are set to automatically synchronize the date, time, and time zone using the internet.

4 Disable Windows Fast Startup

So that Windows always performs a full shutdown

Windows "Fast Startup" is a feature that uses partial hibernation during shutdown. When this is enabled, Windows leaves the filesystem in a hibernated state. Linux detects this state and refuses to mount NTFS partitions to avoid potential risks, since the drive was not cleanly unmounted.

To prevent this issue, I disabled Fast Startup so that Windows always performs a full shutdown and unmounts its drives properly. This keeps the filesystem consistent and avoids the risk of data corruption when Linux later accesses the same disk.

It is natively supported by both OSes

When I need a shared data partition between Windows and Linux, I format it as NTFS. NTFS supports journaling and is natively supported by both operating systems, which helps maintain file system integrity even during unexpected shutdowns or crashes. In comparison, exFAT does not have journaling and is more prone to corruption in those situations.

By using NTFS, you can safely read and write data from either system without worrying about one causing damage to the file system. I also avoid using Windows-only features like BitLocker encryption on that partition to ensure smooth access from both environments.

2 Align firmware boot mode

It simplifies the boot process

Screenshot showing nixos console

I install and boot both Windows and Linux in the same firmware mode, preferably UEFI on modern systems. Running one operating system in UEFI mode and the other in legacy BIOS mode can lead to complications and is often unreliable. Using the same mode simplifies the boot process and allows the system firmware to switch between operating systems without additional issues.

I configure both to use UEFI so that secure boot, EFI system partitions, and boot entries are handled consistently. This allows for cleaner integration with modern boot managers like GRUB or systemd-boot, and it enables features like faster boot times and support for drives larger than 2 TB with the GPT partition scheme. UEFI also stores boot entries directly in firmware, which makes switching between operating systems or managing boot priorities easier through the firmware menu.

1 Isolate the Linux bootloader

So Windows updates don't ruin things

A screenshot of the GNU GRUB screen showing the option to try or install Ubuntu

Windows tends to assume it is the most important and sometimes the only operating system on the machine, which becomes clear when it sometimes prevents you from booting into Linux. Windows updates or firmware changes can also overwrite UEFI settings and remove boot entries for other operating systems. This is a known issue, as Windows updates have a history of clearing non-Windows bootloaders and often removing the GRUB menu in the process.

To protect my Linux installation, I either use a separate EFI partition or make sure it has its own distinct boot entry in the firmware. I also avoid placing Linux’s bootloader in the same EFI path as Windows, which helps reduce the chances of it being overwritten.

Dual-booting has its flaws

If you'd rather not commit to a dual-boot setup, you can still run Linux alongside Windows using a virtual machine. In fact, using a VM might be the more practical option for systems with only a single disk. That said, there are a few drawbacks worth considering before setting up a dual-boot system.

Running VS Code on Ubuntu

Related

6 reasons why Linux is better than ever

Linux has become a lot more user-friendly over the last couple of years

Read Entire Article