Make a bootable Windows 11 USB on MacOS
I built a computer recently. The only other functional machine we have at home is my wife’s Macbook Pro 16” (2021) and I used it to create a bootable USB drive from MacOS. I really thought burning the Windows 11 ISO to a bootable USB would be straightforward, but it was trickier than expected. Here I will document how to do it correctly!
First Attempt
I used Balena Etcher. I had success in the past using it to make bootable linux drives. Indeed, the Windows 11 ISO burned to the drive successfully and the drive booted – but then it gave this cryptic error:
I ran a checksum to check that my ISO wasn’t corrupted:
openssl dgst -sha256 Downloads/Win11_English_x64v1.iso
SHA2-256(Downloads/Win11_English_x64v1.iso)= 4bc6c7e7c61af4b5d1b086c5d279947357cff45c2f82021bb58628c2503eb64e
That matched the value on the website. So, no corruption. Weird. I re-burned the ISO on a different thumb drive, and it gave me the same issue.
The Problem
Basically, Balena Etcher blindly tries to copy the ISO files into your USB drive. However, MacOS doesn’t provide native NTFS
support. This means that you can only write a FAT32 drive when it comes to making a bootable windows USB. There is a limitation
introduced by using FAT32: no file can be bigger than 4gb. Unfortunately the Windows 11 ISO contains a file (install.wim
)
that’s bigger than the 4gb filesystem limit.
The solution is to use a library called wimlib
to split the offending big file into smaller ones, and copy the rest of the files as-is.
Assuming you mount the Windows 11 ISO to /Volumes/CCCOMA_X64FRE_EN-US_DV9
and the USB drive you’re using to /Volumes/WINDOWS
,
the commands are simply:
sudo port install wimlib # You can use homebrew too, but I choose order over chaos :)
rsync -vha --exclude=sources/install.wim /Volumes/CCCOMA_X64FRE_EN-US_DV9/* /Volumes/WINDOWS
wimlib-imagex split /Volumes/CCCOMA_X64FRE_EN-US_DV9/sources/install.wim /Volumes/WINDOWS/sources/install.swm 3500