USB Windows Compatibility

How to Create a Windows 10 Installer USB from Linux

If you need to build a booteable USB stick with Windows under Linux this tutorial shows the steps to follow for some alternatives available. The tutorial shows two ways to carry out this task both in text and graphical modes using the command dd for text mode and UNetbootin for graphical mode, which can be downloaded from https://unetbootin.github.io/linux_download.html.The text mode is pretty easy and includes commands any Linux user should know such as listing partitions and storage devices, formatting and creating filesystems and the command dd among others, which can be used for full protected formatting.

Formatting your USB stick

This step is only necessary for users using the dd technique without additional space on their USB devices, if you are using the graphical method to create a booteable USB stick with UNebootin or have enough space for the Windows installer on an used USB stick you can omit this step.

To begin, before plugging in the USB device check the current disks attached to your computer by running:

fdisk -l

As you see in the output above the only device is /dev/sda with 3 partitions, /dev/sda1, /dev/sda2 and /dev/sda3. Now plug in your USB stick into your computer and run fdisk again:

fdisk -l

You can see the new device /dev/sdb model Cruzer Blade of 3.7GB, that’s the pendrive on which Windows installer will be installed.

Since it is a small USB disk, I will format it  to guarantee space for Windows, the dd command we’ll use to copy the ISO image to the pendrive won’t remove existing information on it, this step is not mandatory and if you have a big pendrive with existing information and available space you can omit it leaving all the data together inside the disk.

If you want to proceed with the format, before formatting the pendrive run:

cfdisk /dev/sdb

Once started cfdisk will show the chosen disk (sdb in my case) and the existing partitions, in my case all the space is free. To create a FAT 32 partition select NEW and press ENTER.

Select the space for the fat partition, you can leave the entire disk, press ENTER.

Then select primary and press ENTER again.

Once back in the main menu select the option TYPE and press ENTER.

Select the option “b W95 FAT 32” and press ENTER.

In the main menu select “Booteable”  and press ENTER.

Finally press on “Write” to save all changes on the USB drive.

Now umount the disk by running:

$ umount /dev/sdb

Once unmounted to format the USB stick creating a FAT filesystem run:

$ mkfs.fat -F32 /dev/sdb1

Depending on your device the process may take a while, once finished it will let you know the process ended successfully.

Create a Windows 10 USB Installer on Debian 10 using dd

$ sudo dd bs=4M if=<Path-To-ISO> of=/dev/sd<X>
conv=fdatasync status=progress

Where <Path-To-ISO> should be replaced for your Windows ISO image path and <X> for your device letter.

In my case I run:

$ sudo dd bs=4M if=/home/shared/Microsoft\ Windows\ 10\
Pro\ x64BiT.iso of=/dev/sdb conv=fdatasync status=progress

Where:
bs: read and write bytes
if: reads the indicated file as origin
of: writes the indicated file as destination
conv=fdatasync: assures the data will be written in destination before the operation ends.
status=progress: will show progress in real time, otherwise dd doesn’t show progress.

At the end of the process the program will let you know the operation ended successfully.

NOTE: when you reboot your computer to boot make sure your BIOS is configured to boot from the USB stick or press the proper key to allow selecting the boot device on boot.

Create a Windows 10 USB Installer on Debian 10 using UNebootin

While the previous method is the recommended there is a graphical option for users who dislike the text mode, the software explained in this tutorial is UNebootin and it is available for Linux, Windows and Mac at https://unetbootin.github.io/linux_download.html.

To download the 64x version you can use wget, run:

$ wget
https://github.com/unetbootin/unetbootin/releases/download/
675/unetbootin-linux64-675.bin

To download the 32x version using wget run:

$ wget https://github.com/unetbootin/unetbootin/releases/
download/675/unetbootin-linux-675.bin

In my case I got the 64 bits version, once downloaded you need to give execution rights to the file by running:

$ chmod +x unetbootin-linux64-675.bin

Then as normal user run

$ xhost local:root

And as root run:

$ sudo QT_X11_NO_MITSHM=1 /home/shared/unetbootin-linux64-675.bin

UNetbootin will prompt, unselect “Distribution” and instead select “Disk Image” and select your ISO’s path, the disk type and the drive:

The process may take several minutes showing the steps of the image below:

Once finished you can reboot as instructed in the final screen:

Now you can reboot your system, make sure your BIOS is configured to boot from USB devices. 

I hope you found this brief tutorial on Windows booteable USB sticks useful, thank you for reading it and consider using LinuxHint support channel in case you need help with any of the steps described above or any Linux or networking related issue.
Keep following LinuxHint for additional updates and tips on Linux and Networking.

Related articles:

About the author

Ivan Vanney

Ivan Vanney

Ivan Vanney has over 2 years as writer for LinuxHint, he is co-founder of the freelance services marketplace GIGopen.com where he works as a sysadmin.