Make bootable windows USB on linux?

Posted on

Problem :

I’ve downloaded en_windows_10_education_version_1703_updated_march_2017_x64_dvd_10189297.iso from the Windows imagine portal. I’m reading that the image can be booted from a usb so I’ve tried using dd.

With the following command:

sudo dd bs=4M if=en_windows_10_education_version_1703_updated_march_2017_x64_dvd_10189297.iso of=/dev/sdc  status=progress

That doesn’t work when I try to boot into the usb, so I also tried replacing /dev/sdc/ with /dev/sdc1.

My computer is setup to first boot with utfi and then legacy.

Is there something else I can try to get this working?

Solution :

It will not work by writing the ISO file to the thumb drive with dd because that works only for hybrid ISO (ISO file that has an MBR and a partition table), which is not the case of Windows ISOs (They are actually UDFs).

To make a UEFI bootable drive out of of it, you need to partition the drive with fdisk or gdisk. You need MBR/msdos partition table if you want it make it BIOS/legacy bootable as well, otherwise you can use GPT (but it’s not a must for UEFI booting). A single partition (not the same as partitionless) will do. The partition type should be c (W95 FAT32 LBA) in fdisk or 0700 in gdisk. ef/ef00 might also work but that would prevent the drive from being accessible in normal Windows environment without extra steps. Use ‘a’ in fdisk to mark the partition as active if you will make it legacy bootable as well.

Then format the partition with mkfs.fat (with optionally -F32). Mount both the formatted partition and the Windows ISO (to different mountpoint respectively) and copy the content from the ISO to the drive.

If you need the drive to be legacy bootable, write boot code to the MBR of the drive and the boot sector of the partition with ms-sys:

ms-sys -7 /dev/sdX
ms-sys -e /dev/sdXY

Note that if you want your Windows installation to be of UEFI variant, you may want to avoid making the installer drive legacy bootable to avoid ambiguity, because the mode the installer drive booted in is going to determine the boot mode / variant of the new Windows installation.

If you are using Linux Mint, you can use the native app “USB image writer”. If you are on a different distro, you can add the Mint repository and install the app. I have successfully used it several times.

Leave a Reply

Your email address will not be published. Required fields are marked *