I have:

  • ISO image of Windows 7 install media
  • 4 GB USB flash drive
  • no DVD drive
  • Linux installed
  • If you could manage to do all these tasks from within your linux desktop, you'll be rocking the house. I think the toughest part would be fiddling with all the operations that Windows' Diskpart does. Making the partition marked as 'active' and 'boot', 'primary', etc.
    – p.campbell
    May 10, 2009 at 0:17
  • 3
    I think GParted (gparted.sourceforge.net) can handle all the partition flags just fine. See e.g. gparted.sourceforge.net/screenshots.php . And I haven't tested but it looks like rsync can substitute for robocopy in that checklist. May 10, 2009 at 2:47
  • 1
    There are many detailed answers to the same question on askubuntu.com/q/289559/135671
    – erik
    Nov 23, 2015 at 10:37
  • Comment about WoeUSB is much better than Accepted answer! Also AA is inaccurate - DOS or GPT label? Wasted 3 hours with "ms-sys + ntfs/fat32 + gpt/msdos, lurking for efi in bios, changing flash drives" but finally, WoeUSB done the job in several minutes! Probably grub is more robust than original MBR. May 11, 2021 at 19:36

4 Answers 4


OK, after unsuccessfully trying all methods mentioned here, I finally got it working. Basically, the missing step was to write a proper boot sector to the USB stick, which can be done from Linux with ms-sys or lilo -M. This works with the Windows 7 retail version.

Here is the complete rundown again:

Install ms-sys - if it is not in your repositories, get it here. Or alternatively, make sure lilo is installed (but do not run the liloconfig step on your local box if e.g. Grub is installed there!)

Check what device your USB media is assigned - here we will assume it is /dev/sdb. Delete all partitions, create a new one taking up all the space, set type to NTFS (7), and remember to set it bootable:

# cfdisk /dev/sdb   or   fdisk /dev/sdb (partition type 7, and bootable flag)

Create an NTFS filesystem:

# mkfs.ntfs -f /dev/sdb1

Write Windows 7 MBR on the USB stick (also works for windows 8), multiple options here:

  1. # ms-sys -7 /dev/sdb
  2. or (e.g. on newer Ubuntu installs) sudo lilo -M /dev/sdb mbr (info)
  3. or (if syslinux is installed), you can run sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdb

Mount ISO and USB media:

# mount -o loop win7.iso /mnt/iso
# mount /dev/sdb1 /mnt/usb

Copy over all files:

# cp -r /mnt/iso/* /mnt/usb/   ...or use the standard GUI file-browser of your system

Call sync to make sure all files are written.

Open gparted, select the USB drive, right-click on the file system, then click on "Manage Flags". Check the boot checkbox, then close.

...and you're done.

After all that, you probably want to back up your USB media for further installations and get rid of the ISO file... Just use dd: # dd if=/dev/sdb of=win7.img

Note, this copies the whole device! — which is usually (much) bigger than the files copied to it. So instead I propose

# dd count=[(size of the ISO file in MB plus some extra MB for boot block) divided by default dd blocksize] if=/dev/sdb of=win7.img

Thus for example with 8 M extra bytes:

# dd count=$(((`stat -c '%s' win7.iso` + 8*1024*1024) / 512)) if=/dev/sdb of=win7.img status=progress

As always, double check the device names very carefully when working with dd.

The method creating a bootable USB presented above works also with Win10 installer iso. I tried it running Ubuntu 16.04 copying Win10_1703_SingleLang_English_x64.iso (size 4,241,291,264 bytes) onto an 8 GB USB-stick — in non-UEFI [non-secure] boot only. After execution dd reports: 8300156+0 records in 8300156+0 records out 4249679872 bytes (4.2 GB, 4.0 GiB) copied, 412.807 s, 10.3 MB/s

Reverse if/of next time you want to put the Windows 7 installer onto USB.

  • 1
    Would be nice to mention the numerical partition type to use in cfdisk as well (7, 86, 87?) Sep 5, 2010 at 21:03
  • 5
    It worked with type 7
    – Ropez
    Sep 15, 2010 at 20:56
  • 3
    Just a note: If your ntfs filesystem gives weird permission errors when you write to it even as root, make sure you've installed ntfs-3g. Jun 24, 2011 at 6:32
  • 4
    call sync after the copy to make sure all files are written Nov 14, 2014 at 10:43
  • 3
    Did not work for me until I called ms-sys -n /dev/sdb1 before ms-sys -7 /dev/sdb (all that after copying the files). See wycd.net/posts/…
    – gsc
    Oct 10, 2020 at 7:51

You can accomplish this with dd, if your PC supports UEFI, and, by extension, GPT disks.

Open up a terminal, your going to need to find what device is your pendrive. If you have the drive mounted you can find the name of the device by typing "mount" and looking at it's entry. Something like the following:

/dev/sdb1 on /media/USBDISK type vfat (rw,nosuid,nodev,uhelper=hal,uid=1000,utf8,shortname=mixed)

In this case the first partion of /dev/sdb is mounted at /media/USBDISK. Open a root shell and unmount the drive.

umount /dev/sdb1

Go to the directory where your ISO is stored in a root shell and type in the following: (Replace windows7.iso with whatever the iso is called, and /dev/sdb with the device id of your usb stick).

dd if=windows7.iso of=/dev/sdb

If your motherboard supports booting off of a pendrive it should be able to boot off it. This will get the installer on the pendrive not the OS itself.

  • 22
    Doesn't work for me.
    – user8602
    Jun 2, 2010 at 16:41
  • 1
    Does your motherboard support booting from USB? That'll be the ultimate deciding factor of whether this approach will work or not. Jun 4, 2010 at 14:46
  • 11
    Doesn't work for me either and my machine does support USB booting just fine. Maybe this approach can work on machines that can boot DVD-style USB-storage but most BIOSes assume HDD-style layout on USB (meaning 512 byte MBR with boot code in it). On thing worth a mention: Fedora CD/DVD images, unlike W7, do in fact have such MBR with boot code and partition table on them, making them suitable for HDD/USB boot too.
    – Tronic
    Aug 28, 2010 at 17:35
  • 9
    This does require that your motherboard is able to boot USB-CDROM not just USB-HDD Oct 5, 2010 at 12:43
  • 12
    This solution is missing the MBR-installation step, and will typically not work unless it magically is there already. The solution by @Gunthers is complete.
    – stolsvik
    Dec 25, 2011 at 1:30

PCambell's suggestion is good but you will also want to clear the MBR, the linux equivalent is below

I tried this and it worked (I'm not sure why the dd method failed but seems the partition had to be ntfs?):

  • work out which /dev/device is your usb flash drive and unmount it
  • clear the MBR: dd if=/dev/zero of=/dev/device bs=446 count=1
  • run fdisk /dev/device
  • remove all partitions and create 1 primary partition, make it bootable then save the changes
  • run mkfs.ntfs /dev/device1 (partition 1)
  • copy the entire contents of the windows install iso on to the partition you created

Instead of

dd if=windows7.iso of=/dev/sdb

you write as root,

dd if=windows7.iso of=/dev/sdb1 

(ADD 1 at the end or whatever your USB drive is placed at.)

  • 3
    No, the of=sdb is correct as per the previous answers. Aug 13, 2011 at 21:00
  • 2
    This is just plain wrong.
    – lukad
    May 24, 2014 at 10:31
  • 1
    -1: dd needs to write to devices, not to partitions
    – ssc
    Sep 16, 2014 at 13:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .