How to Install Windows From Linux: A Complete Guide

Installing Windows on a machine that's already running Linux is more straightforward than most people expect — but the path you take depends heavily on your hardware, your goals, and how comfortable you are working outside a graphical interface.

Why You Might Need to Do This

There are several common scenarios where this comes up. You might be dual-booting and want to add Windows alongside your existing Linux install. You might be replacing Linux entirely. Or you might be setting up a machine for someone else and only have a Linux system available to create the installation media. Each scenario involves slightly different considerations, but the core process overlaps significantly.

What You'll Need Before You Start

Regardless of your approach, a few things are non-negotiable:

  • A Windows ISO file — downloaded directly from Microsoft's website. These are legal to download; you only need a valid license key to activate Windows after installation.
  • A USB drive — at least 8 GB for Windows 10 or 11. The drive will be fully erased during the process.
  • A target machine — either the same Linux machine or a separate computer you're installing Windows on.
  • Basic knowledge of your target machine's firmware — specifically whether it uses UEFI or legacy BIOS, and whether Secure Boot is enabled.

Creating a Bootable Windows USB From Linux

This is the step that trips people up most often. On Windows, tools like Rufus handle everything automatically. On Linux, you have a few reliable options.

Using WoeUSB

WoeUSB is the most purpose-built tool for this task on Linux. It's designed specifically to create bootable Windows USB drives and handles the NTFS formatting and bootloader setup that Windows requires. You can install it through your distribution's package manager or build it from source.

Once installed, the command-line usage is straightforward:

sudo woeusb --device /path/to/windows.iso /dev/sdX 

Replace /dev/sdX with your actual USB device identifier (use lsblk to confirm this before running the command — writing to the wrong device is irreversible).

Using dd — With Caveats

The dd command is a classic Linux tool for writing disk images. It works for many Linux ISOs but is not reliably compatible with Windows ISOs. Windows installation media uses a specific partition structure and bootloader that dd doesn't always reproduce correctly, particularly for newer Windows versions with large install.wim files that exceed FAT32's 4 GB file size limit. If WoeUSB is available, it's the better choice.

Using Ventoy

Ventoy is a newer approach that turns a USB drive into a multi-boot device. You install Ventoy onto the drive once, then simply copy ISO files onto it. Ventoy handles the booting automatically. This is especially useful if you need to work with multiple OS images regularly. Ventoy has strong compatibility with Windows 10 and 11 ISOs and works well from Linux.

Booting From USB and Installing Windows 🖥️

Once your USB is prepared:

  1. Restart the target machine and enter the boot menu (commonly F2, F12, DEL, or ESC depending on the manufacturer).
  2. Select your USB drive as the boot device.
  3. Follow the Windows installer — it's graphical and guides you through language, edition, and disk partitioning.

UEFI vs. BIOS Matters Here

If your machine uses UEFI (most hardware from the last decade), make sure your USB was written in UEFI-compatible mode and that your boot selection reflects this. WoeUSB and Ventoy both handle UEFI by default. Booting in the wrong mode can result in the installer failing or Windows installing in a configuration that doesn't match your hardware's firmware expectations.

Dual-Boot Considerations

If you're keeping Linux alongside Windows, partition planning is critical. Windows should generally be installed first in a traditional dual-boot setup because its bootloader tends to overwrite existing boot configurations. If you're adding Windows to a machine that already has Linux, you'll likely need to repair your bootloader (typically GRUB) after Windows installs.

ScenarioApproachBoot Repair Needed?
Installing Windows onlyStandard install, erase diskNo
Windows + Linux (fresh)Install Windows first, then LinuxNo
Adding Windows to existing LinuxPartition manually, install WindowsUsually yes
Adding Linux to existing WindowsInstall Linux second, GRUB auto-detectsRarely

Resizing existing Linux partitions to make room for Windows can be done using GParted from within Linux before starting the Windows installation.

The Variables That Change Everything ⚙️

The steps above describe the general process, but several factors shape how smooth or complicated your experience will be:

  • Secure Boot — Windows 11 requires it to be enabled on most hardware; some Linux installs are configured with it disabled. Changing this setting can affect your existing Linux install.
  • Disk format (MBR vs. GPT) — UEFI systems expect GPT-formatted drives. If your disk uses MBR, you may need to convert it, which is not a trivial process on a live system.
  • Windows version — Windows 11 has stricter hardware requirements (TPM 2.0, specific CPU compatibility) that have nothing to do with Linux but will determine whether your target hardware is eligible at all.
  • Your Linux distribution — Package availability for tools like WoeUSB varies. Arch, Ubuntu, Fedora, and Debian-based systems all have different package repositories and update cadences.
  • Technical comfort level — Working with lsblk, fdisk, and terminal-based tools is routine for experienced Linux users but can be a significant barrier for those newer to the command line.

Someone installing Windows on a modern UEFI laptop with a clean drive faces a fundamentally different set of steps than someone adding Windows to an older BIOS machine with an existing Linux partition they want to preserve. The process is learnable in either case — but the details that matter most are the ones specific to your own hardware and setup. 🔧