Creating a bootable Windows 11 USB flash drive in Linux

How to create a bootable Windows 11 USB flash drive in Linux.

Creating a bootable Windows 11 USB flash drive in Linux
Photo by Immo Wegmann / Unsplash

Below is the procedure for creating a bootable USB flash drive with Windows 11.

The same process should also work with any HDD/SSD connected to your system.

1. Download Windows 11 image

https://www.microsoft.com/software-download/windows11

$ sha256sum Win11_English_x64v1.iso
4bc6c7e7c61af4b5d1b086c5d279947357cff45c2f82021bb58628c2503eb64e  Win11_English_x64v1.iso

2. Plug your USB flash drive

Linux detected /dev/sde as the USB stick, in your case it will most likely take a different name.

3. Format your USB flash drive

Work as root account and make sure to replace /dev/sde with your USB flash drive!
Use lsblk and dmesg | tail -50 commands to locate your USB flash drive.

# wipefs -a /dev/sde

# parted /dev/sde
(parted) mklabel gpt                                                      
(parted) mkpart BOOT fat32 0% 1GiB
(parted) mkpart INSTALL ntfs 1GiB 10GiB
(parted) quit

Check the drive layout now:

In my case I've used 100% instead of 10GiB when created the "INSTALL" ntfs partition - mkpart INSTALL ntfs 1GiB 100%. But you can use anything that should be larger than 6 GiB to fit the data from Windows ISO image.
# parted /dev/sde unit B print
Model: SanDisk Extreme (scsi)
Disk /dev/sde: 62742792192B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start        End           Size          File system  Name     Flags
 1      1048576B     1073741823B   1072693248B                BOOT     msftdata
 2      1073741824B  62742593535B  61668851712B               INSTALL  msftdata

4. Mount Windows ISO somewhere

I mounted it to /mnt/iso directory:

mkdir /mnt/iso
mount /home/<your user>/Downloads/Win11_English_x64v1.iso /mnt/iso/

5. Format 1st partition of your USB flash drive as FAT32

mkfs.vfat -n BOOT /dev/sde1
mkdir /mnt/vfat
mount /dev/sde1 /mnt/vfat/

6. Copy everything from Windows ISO image except for the sources directory there

rsync -r --progress --exclude sources --delete-before /mnt/iso/ /mnt/vfat/

7. Copy only boot.wim file from the sources directory, while keeping the same path layout

mkdir /mnt/vfat/sources
cp /mnt/iso/sources/boot.wim /mnt/vfat/sources/

8. Format 2nd partition of your USB flash drive as NTFS

mkfs.ntfs --quick -L INSTALL /dev/sde2 
mkdir /mnt/ntfs
mount /dev/sde2 /mnt/ntfs

9. Copy everything from Windows ISO image there

rsync -r --progress --delete-before /mnt/iso/ /mnt/ntfs/

10. Unmount the USB flash drive and Windows ISO image

umount /mnt/ntfs
umount /mnt/vfat
umount /mnt/iso
sync

11. Power off your USB flash drive

udisksctl power-off -b /dev/sde

Done

Now you are ready to boot off of your USB flash drive to install Windows 11.