How do I create a bootable ISO with Windows 7 installation files? [duplicate]
I'd like to create a Windows bootable USB stick, but I don't have a Windows machine with me at the moment to do so. How could I achieve the same using Ubuntu?
Solution 1:
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
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
Solution 2:
Any Ubuntu version
even other Linux distros as long as GParted and GRUB are installed.
Install GParted, GRUB, 7z, and NTFS on Ubuntu with:
sudo apt-get install gparted grub-pc-bin p7zip-full ntfs-3g
For BIOS: MBR partition scheme
-
Using GParted, rewrite the USB drive's partition table as msdos, format it as NTFS, and then "Manage flags" and add the
boot
flag. -
In GParted, right click the USB partition and select Information. Copy the UUID somewhere as you will need it.
-
Mount your Windows ISO or DVD and copy all its files to the USB drive.
-
Go to the USB drive, and if the folder named
boot
has uppercase characters, make them all lowercase by renaming it. -
Install GRUB on the USB drive.
In the below command, replace
/dev/sdX
with the device (e.g./dev/sdb
, not/dev/sdb1
) and replace<USB_mount_folder>
with the folder where you mounted the USB drive (which could be like/media/<username>/<UUID>
).sudo grub-install --target=i386-pc --boot-directory="/<USB_mount_folder>/boot" /dev/sdX
-
Create a GRUB config file in the USB drive folder
boot/grub/
with the namegrub.cfg
.Write this into the file, replacing
<UUID_from_step_2>
with the UUID you copied down in step 2.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
-
Unmount the USB drive.
-
Now to use it, restart your PC, and boot from the USB drive.
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.
- Using GParted, rewrite the partition table of the USB drive as GPT.
- Create a new primary partition and format it as FAT32.
- Mount your Windows ISO or DVD and copy all its files to the USB drive.
- Look on USB in the
efi/boot/
folder. If there's a filebootx64.efi
(bootia32.efi
) then you're done. The USB is bootable. Skip to step 7. - Otherwise, open
sources/install.wim
with the Archive Manager (you must have7z
installed) and browse to./1/Windows/Boot/EFI/
. From here extractbootmgfw.efi
somewhere, rename it tobootx64.efi
(orbootia32.efi
for supported 32 bits OS [?]) and put it on USB inefi/boot/
folder. - If you're making a Windows 7 USB, copy the
boot
folder fromefi/microsoft/
toefi
folder. - Don't forget to unmount (safely remove) the USB drive.
- Select the proper EFI loader from your BIOS.
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 Windows.
Solution 3:
Writing ISOs with WoeUSB (WinUSB fork)
Some answers are outdated, since WinUSB is not working anymore. But there is a working fork called WoeUSB.
Github: https://github.com/WoeUSB/WoeUSB
TLDR:
sudo woeusb --target-filesystem NTFS --device /path/to/your.iso /dev/sdX
Installation
It does not uninstall grub-efi anymore!
☞ Ubuntu / Debian
sudo add-apt-repository universe # contains the p7zip-full dependency
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install woeusb
☞ Arch
pacaur -S woeusb
☞ Fedora
dnf install -y WoeUSB
☞ OpenSUSE
zypper install WoeUSB
Identifying the USB stick (the /dev/sdX path)
GUI approach
Search for a programm called disks, or if you use gnome you can launch it by executing gnome-disks
.
Command line approach
There are several commands available to list storage devices. You might try one of these:
sudo lsblk --scsi --paths
sudo lshw -class disk -short
Identify your usb device and see which path it has (like /dev/sdX).
Writing the ISO
After installation, write the windows ISO to your storage device with the following command. In the command below replace the X in /dev/sdX with your usb device path (see above how to find it).
sudo woeusb --target-filesystem NTFS --device /path/to/your.iso /dev/sdX
The --target-filesystem NTFS
flag is required if the installation image is greater than 4GB, which is the case for the current Windows 10 official ISO file.