Creating a Windows 11 Bootable USB on Linux using WoeUSB-NG

In this tutorial we will create a Windows 11 Bootable USB on Ubuntu 22.04 LTS using WoeUSB-NG.

Instructions for the use of WoeUSB-NG are more of less identical for older Windows Versions:

  • Windows 11 Bootable USB – Secure Boot and UEFI
  • Windows 10 Bootable USB – Secure Boot and UEFI or Legacy Boot
  • Windows 8.1 Bootable USB – Secure Boot and UEFI or Legacy Boot

The installation ISOs for these other Windows versions are available from Microsoft's website.

In theory this utility should also work for the following end of life Windows Versions:

  • Windows 7 Bootable USB – Secure Boot Disabled and UEFI or Legacy Boot
  • Windows Vista Bootable USB – Legacy Boot

These installation ISOs are no longer downloadable from Microsoft's website as direct download links. The WoeUSB-NG utility should work if you had previously downloaded a ISO prior to the time Microsoft removed the download links.

Checking Linux Kernel Version

Historically it has been difficult to make a Bootable USB on Linux due to poor support for the NTFS file format and corruption of large files on the NTFS file system such as Windows Installation Files. This has been addressed in Linux Kernel 5.15 which now contains an updated NTFS driver that can handle these files properly. Linux Distros such as:

  • Fedora 36
  • Ubuntu 22.04 LTS and Flavours
    • Mint 21
    • Zorin OS 17 (not yet released)
    • POP OS! 22.04 LTS
    • KDE Neon

have Kernel 5.15 (or newer) and therefore have this updated driver.

To check the Kernel version, open up the terminal and input:

uname -r

In this example, Ubuntu 22.04 LTS has Kernel Version is 5.15 and therefore has the new NTFS driver:

If the Kernel is below this, you are using an obsolete version of Linux and should update it.

Download a Windows ISO

Mainstream Windows ISOs can be downloaded from the Microsoft Windows Software Download Page. Windows Insider Preview ISOs can be downloaded from the Microsoft Windows Insider Preview Software Download Page:

The Windows 11 Software Download page has a Windows Upgrade Assistant, Windows Media Creation Tool and Direct Download Links. On Linux we must use the Direct Download Links as the former options are Applications which are designed to run only on Microsoft Windows:

You will get a Download Option to select your ISO. Windows 10, Windows 11 and the Windows Insider Preview ISOs are all multi-edition covering all the OEM Editions. Your Windows Product Key should be embedded in your Device and be automatically input during installation.

Windows 8.1 on the other hand has single edition ISOs. Only the correct edition will automatically input your embedded product key during installation. An incorrect edition will instead ask for a product key. Select Download:

Next use the drop down list to select your language:

In this example I will select International English:

Select Confirm.

A 64 Bit 24 hour time-limited download link will display. Click on it and download your ISO:

WoeUSB-NG

WoeUSB-NG is rewrite of WoeUSB/WinUSB which takes advantage of the updated NTFS driver in the Linux Kernel and the Python programming language which is inbuilt into modern Linux Distributions.

Open up the terminal. Your terminal prompt should not be of the form username@pcname and should not be prefixed with (base), if it is see the note below before proceeding.

Terminal Prefixed with (base)

If your terminal is prefixed with (base) you have Anaconda or Miniconda installed. We do not want to use the (base) conda environment but rather the Python environment inbuilt into Linux. If you have conda initialised, open up the .bashrc file (which is a hidden file in your home folder) and cut the lines for the conda initialisation (and save these into another text file). Then save the updated .bashrc file. Close any open terminal windows and then open up the terminal, it should not start with (base).

More details about doing this are available in my Anaconda installation Guide:

Install

WoeUSB-NG requires a number of Python libraries as dependencies. To install these on Ubuntu 22.04 LTS or Linux Mint 21 copy and paste the following command to install the dependencies:

sudo apt install git p7zip-full python3-pip python3-wxgtk4.0 grub2-common grub-pc-bin

sudo is an abbreviation for super user do (run as administrator). The first command in the terminal prefixed with sudo will prompt you for authentication. Input your user password to proceed.

apt – an abbreviation for the advanced package tool. This is used on Debian based Linux distributions such as Ubuntu 22.04 LTS or Linux Mint 21. Note for Fedora 36, the dnf package manager is used instead of apt. The installation command is similar, in most cases replacing apt with dnf.

The install command of the advanced package tool is followed by the name of the packages to install.

  • p7zip-full is a utility used to extract files from the ISO.
  • python3-pip is used to install Python packages. Python Install Package (pip).
  • python3-wxgtk4.0 a Python Library around a C++ Framework used to create a General user Interface.
  • grub2-common and grub-pc-bin are required to make a bootloader.

Input:

y

in order to proceed with the install:

Then to install WoeUSB use the following command:

sudo pip3 install WoeUSB-ng

WoeUSB is now installed:

A Start Menu shortcut to WoeUSB should have been created.

Be sure to visit the WoeUSB GitHub page and give the project a star. Any issues found with the utility should be submitted there:

Create a Bootable USB

Launch WoeUSB from the start menu. As this is a utility which requires root permissions to access the partition table and partitions on a USB, you will need to input your user password to authenticate the launching of the program.

Select the Load button:

Note when WoeUSB-NG opens the file explorer, it opens in the root users "home" folder and not the current users "home" folder, so you need to select other locations, home and then your user name then downloads so that you can find your installation ISO.

Select Other Locations and then select home.

Then select your username and then downloads:

Select your ISO and then Open:

Your ISO should now display. Input your 16-32 GB USB Flash Drive and then select Refresh:

Select your USB Flash Drive and select Install:

Select Yes at the Warning abou wiping the partitions on the USB Flash Drive:

WoeUSB-NG will now create the Bootable USB:

When it is done, you will be informed. Select OK and close WoeUSB-NG:

If you open Disks:

You will see the USB Flash Drive has a NTFS Partition and a small FAT32 Partition:

The UEFI BIOS in some Dell systems require a FAT32 Partition for a USB to be listed as a Boot Device. This FAT32 Partition is there to accommodate such systems. An example is the Dell OptiPlex 7050, when configured with a UEFI Boot and Secure Boot only a single Boot Device Displays, the FAT32 Partition. Installation proceeds as expected when this Boot Entry is selected:

The NTFS Partition is configured both for both a UEFI and Legacy Boot:

When a system is configured with Legacy Boot. Only the NTFS Partition will display listed as USB Storage Device. An example is the Dell OptiPlex 7050, when configured with a Legacy Boot only a single Boot Device Displays, the NTFS Partition. When this Boot Entry is selected a black screen with a white underscore displays. Then the installation proceeds as expected:

On systems with a more recent UEFI BIOS Setup, the arbitrary restriction to boot of a FAT32 Partition is dropped and under a UEFI Boot both entries of the USB Flash Drive Display. For example on the XPS 9305 both partitions are listed. On this system the install proceeds irrespective whether the NTFS (1) or FAT32 (2) boot entry are selected:

RAID Drivers

When you are reinstalling Windows 11 or Windows 10 on a system with an 8th, 9th, 10th, 11th or 12th Intel Processor or AMD Ryzen Processor and the RAID SATA Operation

You will need to load additional storage controllers in order for the Windows Setup to recognise your storage controller to see your NVMe SSD.

Download the appropriate driver as a .zip file from Intel or AMD:

For example on my XPS 13 9305:

Has an 11th Generation Intel Processor:

And Intel VMD. I need the F6flpy-x64.zip file:

Extract the Zip folder:

You should see an extracted folder with files similar to the following:

Rename this folder F6:

Copy this to the NTFS partition of your Windows 11 or Windows 10 USB Flash Drive.

You may need to load drivers from this folder during the Windows setup to view your systems internal SSD.

Manual Partition of a UEFI Bootable USB

Older instructions to manually create a UEFI bootable USB Flash Drive:

Installing GParted

The Ubuntu 22.04 LTS software store has been updated to only incorporate snap packages. GParted is not a snap package and has to be installed using the advance package tool apt. To install GParted use:

sudo apt install gparted

Input your password when prompted for authentication:

GParted is now installed:

Partition a USB Flash Drive

You will need a 16-32 GB USB Flash Drive. Insert it and launch GParted:

GParted requires elevated permissions in order to work with USB Flash Drives. Input your passowrd and select authenticate in order to proceed:

To the top right select the Drive Dropdown Menu:

Select your USB Flash Drive (this can usually be identified by the file size):

Right click any partition on the drive and select Unmount:

In theory we can create a Bootable USB with a GPT Table and a single NTFS Partition. However in practice this Bootable USB won't display in the Boot Menu of some Dell Systems when Secure Boot is Enabled. Some Dell systems require a FAT32 Partition to pass Secure Boot… Therefore we will create a Bootable USB with a GPT Partition Table, a FAT32 Boot Partition and a NTFS Install Partition.

Now select Device and Create Partition Table:

Make sure it is GPT and select Apply:

Right click the Unallocated space and select New:

Change the New size to 1024 MB, the file system to fat32 and the label to BOOT:

Right click the remaining Unallocated space and select New:

Ensure the File system is NTFS and the label is INSTALL:

Now apply the changes:

Select Apply at the warning:

Then select Close and Close GParted:

Copy Windows Installation Files

Now right click your Windows ISO and select Open with Disk Image Mounter:

Navigate to its contents. You will see a sources folder:

Within this is an install.wim file which exceeds 4.0 GB. Note 4.0 GB is the upper file size limit of the FAT32 file system and therefore this file will not fit on a FAT32 Partition.

Copy everything on the ISO to the FAT32 BOOT Partition of your USB except the sources folder:

In its place create your own sources folder:

Copy the boot.wim from the ISO sources folder to your BOOT sources folder:

Now copy all the files from the ISO (including the sources folder) to the install.wim:

Once all the files have copied over you have a Windows 11 Bootable USB.