I'd like to create a Windows 8 bootable USB stick, but I don't have a Windows machine with me to do so.

So how do I do it using Ubuntu?

  • 30
    Psicofrenia "UNetbootin allows you to create bootable Live USB drives for Ubuntu, Fedora, and other Linux distributions without burning a CD.", and I already tried to use it and discovered that UNetbootin really can't be used to create Windows bootable usb sticks. – Zignd May 2 '13 at 13:57
  • Have you tried to follow any Windows 8 tutorials on how to burn USB ticks and use Wine to make one of those indicated softwares to run? – Psicofrenia May 2 '13 at 14:04
  • Well this guy seems to think otherwise... --> CREATE A BOOTABLE WINDOWS 7 USB DRIVE FROM LINUX (TESTED ON UBUNTU) – Meintjes May 2 '13 at 14:04
  • 1
    @MrSeed I've tried this tutorial and also downloaded the older version of the UNetbootin, but the problem is that the older version depends on a library that is not available for Ubuntu 13.04 because it's too old, by the way the newest version of the library is available, but the app still doesn't work with it installed. – Zignd May 2 '13 at 14:09
  • 2
    UNetbootin always generates any error – gal007 Nov 30 '13 at 21:21

10 Answers 10

up vote 295 down vote accepted

WinUSB is old, obsolete, and outdated. It can cause problems on newer systems. You should be using WineUSB or other software in place of WinUSB.

This answer is, however, left here as-is for historical purposes.

Create a bootable Windows USB (Vista and above) from Ubuntu through WinUSB software.

Ubuntu 12.04 through 15.04

Run the below commands on terminal to install WinUSB from a PPA,

sudo add-apt-repository ppa:colingille/freshlight
sudo apt-get update
sudo apt-get install winusb

WinUSB screenshot

Warning for Ubuntu EFI:

installing WinUSB on EFI loaded Ubuntu will uninstall the grub-efi packages in order to install the grub-pc packages. It will make your system unbootable if you don't manually reinstall grub-efi package before rebooting.

To do the manual re-install do:

sudo update-grub
sudo grub-install /dev/sda
sudo update-grub
sudo reboot
  • 18
    @Avinash Raj I get errors: 'code' Installation failed ! Exit code: 512 Log: Formating device... Mounting... mount: blockorientiertes Gerät /home/empedokles/WindowsXP.iso ist schreibgeschützt, wird eingehängt im Nur-Lese-Modus Copying... Installing grub... Installing for x86_64-efi platform. grub-install: Fehler: /media/winusb_target_1406395837_22998 doesn't look like an EFI partition. . Error occured ! Syncing... /usr/bin/winusb: Zeile 78: 6080 Beendet while true; do sleep 0.05; echo 'pulse'; done Cleaning... /usr/bin/winusb: Zeile 78: 9983 Beendet while – empedokles Jul 26 '14 at 18:19
  • 6
    @empedokles 1. If you want to make a Windows XP USB then forget about it. It doesn't work with WinUSB. 2. To fix error 512 read this. – Cornelius Nov 13 '14 at 15:54
  • 2
    @ThoVo read this answer: askubuntu.com/a/539803/269282 – Cornelius Jul 19 '15 at 10:21
  • 2
    Will not work in 15.10, 16.04, 16.10 – rancho Feb 10 '17 at 14:07
  • 3
    This post is outdated, WinUsb was discontinued, but there is WoeUsb that is well mantained. Also take a look at these answers (that needs more upvotes): askubuntu.com/a/928874/256359 askubuntu.com/a/489556/256359 – davcri Dec 5 '17 at 19:37

Any Ubuntu version

even other Linux distros as long as GParted and GRUB are installed.

Install GParted and GRUB on Ubuntu with:

sudo apt-get install gparted grub-pc-bin p7zip-full ntfs-3g

For BIOS: MBR partition scheme

  1. Rewrite the partition table as msdos and format your USB drive as NTFS using GParted (and then "Manage flags" and add the boot flag).
  2. In GParted, right click the USB partition and select Information. Copy the UUID somewhere as you will need it.
  3. Copy all Windows files (from mounted ISO or DVD) to the USB drive.
  4. Go to USB drive and if the folder named boot has uppercase characters, make them all lowercase by renaming it.
  5. Install GRUB on USB:

    sudo grub-install --target=i386-pc --boot-directory="/<USB_mount_folder>/boot" /dev/sdX
    
  6. Create a GRUB config file in the USB drive folder boot/grub/ with the name grub.cfg.

    Write this into the file:

    echo "If you see this, you have successfully booted from USB :)"
    insmod ntfs
    insmod search_fs_uuid  
    search --no-floppy --fs-uuid <UUID_from_step_2> --set root 
    ntldr /bootmgr
    boot
    
  7. Unmount the USB drive and restart your PC. Choose the USB as the first boot device in BIOS and start booting from it.

For UEFI: GPT partition scheme *

* Older Windows versions / editions may not be properly supported or not supported at all. I suggest reading the Microsoft UEFI Firmware page.

  1. Using GParted rewrite the partition table of the USB drive as GPT.
  2. Create a new primary partition and format it as FAT32.
  3. Copy all Windows files (from mounted ISO or DVD) to the USB drive.
  4. Look on USB in the efi/boot/ folder. If there's a file bootx64.efi (bootia32.efi) then you're done. The USB is bootable. Skip to step 7.
  5. Otherwise, open sources/install.wim with the Archive Manager (you must have 7z installed) and browse to ./1/Windows/Boot/EFI/. From here extract bootmgfw.efi somewhere, rename it to bootx64.efi (or bootia32.efi for supported 32 bits OS [?]) and put it on USB in efi/boot/ folder.
  6. If you're making a Windows 7 USB, copy the boot folder from efi/microsoft/ to efi folder.
  7. Don't forget to unmount (safely remove) the USB drive. Select the proper EFI loader from your BIOS.

  • /dev/sdX is the device (e.g. /dev/sdb, not /dev/sdb1).

Source: My blog post about this can be found at Make a bootable Windows USB from Linux.

Note

When properly used with a compatible target operating system, both of these methods should get you a bootable USB drive. However this does not guarantee successful installation of the target operating system.

  • 2
    @GuiImamura right click the partition in GParted, select Manage Flags and tick the checkbox next to boot. – Cornelius Dec 12 '15 at 18:46
  • 8
    EFI method is the way to do it for Win10. And you can safely skip steps 4-6 nowadays. – Ivan Anishchuk Mar 21 '16 at 5:48
  • 2
    After trying many other things, this is the only that worked for me. Thanks. – becko Apr 4 '16 at 13:20
  • 3
    I can confirm that the UEFI/GPT method works without steps 4-6 with Windows 10. – josch Apr 7 '16 at 5:50
  • 2
    If you encounter any error check his blog post (linked at the bottom of his answer) for detailed information. Solutions for some error cases might be useful. – dx486 Jan 10 '17 at 19:24

Ubuntu 14.04 and later

WinUSB is a tool for creating a bootable USB flash drive used for installing Windows. A USB flash drive that is 4GB or larger has enough capacity to make installation media for versions of Windows up to Windows 10. Native UEFI booting is supported for Windows 7 and later images (limited to the FAT filesystem as the target device). WoeUSB is an updated fork of the WinUSB project.

To install WoeUSB (updated fork of WinUSB project) in Ubuntu 14.04/16.04/17.10/18.04/18.10:

sudo add-apt-repository ppa:nilarimogard/webupd8 
sudo apt update  
sudo apt install woeusb

To install WinUSB in Ubuntu 14.04/16.04/16.10/17.04:

sudo add-apt-repository ppa:nilarimogard/webupd8 
sudo apt update  
sudo apt install winusb

This will install the WinUSB graphical interface and the WinUSB command line tool. WinUSB and WoeUSB support both UEFI and BIOS for FAT32/NTFS/ExFAT USB flash drives.

The WinUSB GUI is much easier to use than the WinUSB command line tool. To install a Windows ISO on NTFS partition and edit the Master Boot Record (MBR) of the device using the WinUSB and WoeUSB command line tool run the following command:Click the radio button to the left of where it says From a disk image (iso), browse to the location of the Windows .iso file, under Target device select a USB flash drive, open Disks application and check that the Device name in Disks matches the Target device in WinUSB (it should be something like /dev/sdX where X is a letter of the alphabet), and click the Install button to install to create a bootable Windows installation media on the USB flash drive.

enter image description here

Installing WinUSB on EFI-loaded Ubuntu will uninstall the grub-efi packages in order to install the grub-pc packages, so before you reboot run the following commands to repair grub:

sudo update-grub
sudo grub-install /dev/sdX # replace X with the letter of the partition where grub is located
sudo update-grub
sudo reboot
  • 1
    It works (used the 64 bit version) – Pavak Paul Dec 8 '14 at 19:32
  • 1
    Or Just use dd like everyone else... – ChangosMuertos Sep 10 '15 at 20:35
  • 1
    I had to go buy a higher-quality USB stick to get it to work. I imagine that's not a problem specific to WinUSB, though. – Seth Jan 10 '17 at 14:02
  • $ sudo add-apt-repository ppa:nilarimogard/webupd8 Cannot add PPA: 'ppa:~nilarimogard/ubuntu/webupd8'. ERROR: '~nilarimogard' user or team does not exist. – Christophe Ferreboeuf Feb 9 '17 at 16:59
  • It works on my computer. You should see a message that says: More info: https://launchpad.net/~nilarimogard/+archive/ubuntu/webupd8 Press [ENTER] to continue or ctrl-c to cancel adding it After you see this message press the Enter key to continue. Maybe you have a connectivity issue. – karel Feb 9 '17 at 21:50

The current UNetbootin boot chain is not compatible with UEFI and computers that come with a pre-installed copy Windows 8

You can use dd instead, while being careful in what you are doing:

sudo dd if=/path/to/iso/windows.iso of=/dev/sdX bs=4M; sync
  • Replace sdX with the drive you want to use (in my case, sdg):
  • This requires that your motherboard is able to boot from CDROM-USB.

If you want still to use UNetbootin, there are 2 (3) things that you will need:

  1. Unetbootin
  2. Gparted
  3. Internet access to install all the above, the Windows ISO image and a USB stick with more than 4GB.

So, first, backup all the contents of your usb stick. Once that is done install gparted and unetbootin:

sudo apt-get install gparted unetbootin

Now look for gparted in the Dash or type gparted in the terminal. Select your USB stick from the right dropdown list. In my case it's /dev/sdg, yours may be different. Remove all partitions and create a single big FAT32 partition with Gparted.

Once that is done, unplug and plug your USB stick so it gets mounted (you can also mount it from the same GParted), now execute Unetbootin, again, you can look in the dash or typing in the terminal. Select that you want to use an iso, look for the path your ISO is.

Mark the checkbox to see all devices, here you have to select the very same device you selected in Gparted, otherwise your data can be lost. Select continue. Wait for a moment and done. Restart your pc and select to boot from the USB.

  • 1
    @gcb weird, was a Windows 8? – Braiam Dec 27 '13 at 21:14
  • 1
    good point. no. it was windows7 pro. I will check with the win8 to see if that cd has the sd/hdd format. – gcb Dec 27 '13 at 21:24
  • 2
    I prefer your answer (the dd variant) to the accepted one, simply because it doesn't require adding another repositiory or even installing any software at all (unetbootin is not required, just use dd). – doublehelix May 24 '15 at 8:51
  • 7
    dd didn’t work for me, the computer just didn’t boot from the pendrive. If you want to use UNetbootin on a ntfs-formatted pendrive, you have to start it from command line: sudo unetbootin installtype=USB targetdrive=/dev/sdb1 (sdb1 is my pendrive’s ntfs-formatted partition, yours may be different). – erik Nov 22 '15 at 23:20
  • 7
    As of this answer at serverfault the dd-method fails very often, because it requires that your motherboard is able to boot USB-CDROM not just USB-HDD. – erik Nov 22 '15 at 23:46

The answers are outdated, WinUSB is not working anymore. But there is a working fork called WoeUSB.

Github: https://github.com/slacka/WoeUSB

Installation

Ubuntu / Debian

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install woeusb

Arch

pacaur -S woeusb-git

Fedora

dnf install -y WoeUSB

Writing the ISO

After installation, write the windows ISO with that command:

sudo woeusb --device /path/to/your.iso /dev/sdX

(Replace the X in /dev/sdX with the letter corresponding to your USB. You can find which is the correct one in the program Disks.)

It does not uninstall grub-efi anymore.

  • 2
    Worked perfectly. On Achlinux pacaur -S woeusb-git – dvim Aug 18 '17 at 6:28
  • 1
    WoeUSB is perfect! And, unlike WinUSB, it does not require the entire web-kit as a dependency (only compiling web-kit takes a couple of hours on my desktop PC). – davcri Oct 31 '17 at 17:17
  • 2
    On Error: Target device is currently busy issues, use sudo umount /dev/sdb (or respective device). ("Ejecting" the USB stick is not helping, since it must not be completely gone, only the partition unmounted. Otherwise the error will be: probing initialization failed: No medium found) – Frank Nocke Apr 1 at 12:28
  • 2
    Also worked on Fedora 28 with a Win10_1803_x64 iso. To install: dnf install -y WoeUSB – eddygeek May 29 at 7:14
  • @FrankNocke I got past the No medium found error by reformatting the USB drive – Zook Jul 2 at 22:18

In Non-UEFI machines, we can use GRUB2 to make USB stick bootable. Then, we can use 'ntldr' command in the GRUB2 to boot Windows from USB.

  • Enable the boot flag on the target partition of the USB drive. It can be easily done with the use of the tool called "GParted". It is a GUI tool for drive partitioning.
  • If the installation image is an ISO file, mount it and access the files.
  • Copy all the files to root of USB drive.
  • Install GRUB to USB drive:

    sudo grub-install --boot-directory="/media/user/MyUSBDrive/boot" /dev/sdX
    
  • Configure GRUB to boot Windows by placing the following file as "/boot/grub/grub.cfg" in the USB drive:

    set menu_color_normal=white/black
    set menu_color_highlight=black/light-gray
    menuentry 'Install Windows 8' {
     ntldr /bootmgr
    }
    

See complete answer at my blog Creating a bootable windows USB from Linux

  • 2
    No installs required. Simplest steps. Should have tried this before the accepted answer – Anurag Dec 20 '15 at 7:06
  • The grub-install command needs to be run as superuser. Only missing info – Anurag Dec 20 '15 at 7:07
  • 4
    THIS IS THE ULTIMATE ANSWER!!! – Danial Behzadi Mar 19 '16 at 14:07
  • 3
    This is the same as the answer "Any Ubuntu version ... MBR partition scheme" but it's missing the --target=i386-pc option to grub-install and doesn't use the grub2 search command to find the "root" to boot from. Maybe that's not needed... – David Tonhofer Aug 15 '16 at 16:29
  • I think something else must be needed install wise, I dont have i386-pc as an option. – teknopaul Aug 9 '17 at 22:05

mkusb-nox and mkusb version 12 can create Windows install drives

It seems difficult to find a linux tool that can create boot drives (USB sticks, memory cards ...) with Windows, so I added this feature to mkusb-nox and later on created mkusb version 12 with this feature. It works in all current versions of Ubuntu (and Ubuntu flavours: Kubuntu, Lubuntu ... Xubuntu) and with Debian Jessie. The created boot drive can boot 64-bit Windows in both UEFI and BIOS mode.

You get/update this new version of mkusb and mkusb-nox from the mkusb PPA via the following commands

sudo add-apt-repository universe  # this line only for standard Ubuntu

sudo add-apt-repository ppa:mkusb/ppa
sudo apt-get update
sudo apt-get install mkusb mkusb-nox

sudo apt-get install usb-pack-efi  # only for persistent live drives

See these links,

mkusb-nox 11.1.2: added feature: make USB install drive for Windows

mkusb/v7 - ubuntu help page

mkusb-nox can create a USB boot stick with Windows 7 - 10, but you have to cope with a command line interface.

Edit 1: New: mkusb version 12, the new version provides a graphical user interface for the same method. See these links,

help.ubuntu.com/community/mkusb#Windows_USB_install_drive

mkusb-nox: screenshot of user dialogue

dus with guidus alias mkusb version 12: enter image description here enter image description here

Edit 2:

  • A new improved version, mkusb 12.2.9, is available now via the standard (and stable) PPA.

    sudo add-apt-repository universe  # this line only for standard Ubuntu
    
    sudo add-apt-repository ppa:mkusb/ppa
    sudo apt-get update
    sudo apt-get install mkusb mkusb-nox
    
    sudo apt-get install usb-pack-efi  # only for persistent live drives
    
    • It can install for BIOS mode also from installed systems running in UEFI mode.

    • Some minor but irritating bugs are squashed.

    • With the iso files, that I have been able to download, I can create these kinds of Windows install drives

      • Windows 7 installer that boots in BIOS mode
      • Windows 8.1 installer that boots in UEFI mode and BIOS mode
      • Windows 10 installer that boots in UEFI mode and BIOS mode

A simple 'Do it yourself' method

  • 2
    Mkusb-nox is the best solution I have found, especially since the answers citing Winusb on this page are obsolete as this program is no longer supported and does not work out of the box with 16.04, keep up the good work Sudodus. – C.S.Cameron Nov 16 '16 at 1:21
  • 1
    Dus worked for me. – Alberto Salvia Novella Apr 30 '17 at 18:34
  • Thank you for your work. FYI from Ubuntu 16.04 I get an error at the end of the process: Bootloader: grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. Please specify --target or --directory. – Pointy Jul 27 '17 at 19:04
  • ... however the USB stick appears to work (I'm installing Win 10 on a different machine than the one I used to make the USB stick.) – Pointy Jul 27 '17 at 19:06
  • @Pointy, Are you running mkusb in an installed Ubuntu system in UEFI mode? In that case there is a problem: the program package grub-pc cannot be installed unless the 'competing' package grub-efi is removed. It can be solved by running a [persistent] live Ubuntu or Ubuntu based system with mkusb. Such a system can work both in BIOS and UEFI mode, and grub-pc can be installed alongside the package `grub-efi'. See this link, help.ubuntu.com/community/mkusb/… – sudodus Jul 27 '17 at 19:21

winusb from the accepted answer is the only easy method I found.

However, there is no winusb package for saucy. You can however install the raring package by downloading it here and opening it with the software installer. It works with saucy.

http://ppa.launchpad.net/colingille/freshlight/ubuntu/pool/main/w/winusb/

  • 1
    winusb for saucy is now available in ppa:colingille/freshlight repository – Prasad RD Dec 8 '13 at 6:46

You can use WinUSB for that to install WinUSB on your Ubuntu follow these instruction.

Okey, if you are from Ubuntu 13.10,13.04,12.10,12.04, then run this in terminal:

sudo add-apt-repository ppa:colingille/freshlight
sudo apt-get update
sudo apt-get install winusb

and if you are from Ubuntu 14.04 then run this in terminal:

sudo add-apt-repository ppa:colingille/freshlight
sudo sh -c "sed -i 's/trusty/saucy/g' /etc/apt/sources.list.d/colingille-freshlight-trusty.list"
sudo apt-get update
sudo apt-get install winusb

WinUSB comes with a simple GUI with minimal options to go with, here is how to use WinUSB to make bootable Windows USB from Ubuntu. You can use any Windows ISO may be for XP, Windows 7, Windows 8, Windows 8.1 or any other.

  1. Insert Flash Drive & Get your Windows ISO (I used Windows 10 Technical Preview) or insert the Windows CD/DVD
  2. Start WinUSB and, nothing else really needs to be explained.
  3. Select your Source, either ISO or CD Drive
  4. Pick your Target (USB) Device. If it doesn’t appear, hit refresh and make sure it’s mounted.
  5. Click on “Install” and enter your Password (required to mount devices and write directly to drives)

This is all you need to do to create a bootable Windows USB Stick

Source : How to install and use WinUSB in Ubuntu

For the sake of completeness, let me add instructions on how to create a bootable USB-disk from ThinkPad's UEFI/BIOS update ISOs. None of the above answers worked for me. (Perhaps there are similar problems with other vendors.)

  1. Create an img file with geteltorito

    sudo apt install genisoimage
    geteltorito <image>.iso -o <image>.img
    
  2. Write the img file to disk. Using this exact block size is important.

    sudo dd if=<image>.img of=/dev/sdX bs=512K && sync
    

protected by Avinash Raj May 6 '14 at 9:21

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.