Creating a bootable USB from a Windows ISO
The reason for needing this could be e.g. reinstalling Windows but it could also be to update your system firmware - because the vendor only provided Windows binaries - you need a Windows system.
To update you system firmware you can use a Windows PE environment like Hiren’s BootCD Hirens BootCD
If you want to reinstall Windows after your Manjaro adventure get a Windows ISO from Microsoft
Topics covered
WoeUSB
WoeUSB (AUR) is the unsurpassed tool to write a Windows ISO to USB
Build from AUR using Add/Remove Software
- Open the GUI package manager - if AUR is not enabled - enable AUR.
- Search for woeusb and build the package.
- Launch WoeUSB from the menu system.
Build using terminal
$ pamac build woeusb
Flashing your device
Flash your device takes this form
$ sudo woeusb --device <path-to-iso> <device>
So if you USB is in your downloads folder named Win10.iso and your device is /dev/sdy the command would be
$ sudo woeusb --device ~/Downloads/Win10.iso /dev/sdy
Wait for the result - woeusb will print informational messages when done.
ventoy
2020-05-09T10:35:00Z
The ventoy utility is a great tool for booting a Windows ISO without having to jump through the hoops in this guide.
Install the ventoy package from repo
$ sudo pacman -S ventoy
Locate your USB stick
$ lsblk
Partition schema used
@stephane was so kind to remind of the possibility of reserving disk space and the choice of using either MBR og GPT.
ventoy supports both MBR style and GPT style partition table. If you choose one over the other depends on your use case - most notably the number of partitions on the device. If you plan to extend the device with more than two partitions it is recommended to use GPT.
For MBR style partition schema (default) (replace sdy below with your device)
$ sudo ventoy -i /dev/sdy
For GPT style partition schema
$ sudo ventoy -i -g /dev/sdy
Reserved space
If you want to use the disk as a leave-no-trace system using the ISO as a readonly system - you may want to create one or more partitions to hold your data. As ventoy defaults to use the entire disk the installer has the option to reserve a part of the USB for adding more partitions.
The size of the reserved space is set in MB so to reserve 8G on a 32G stick for more than two partitions use (8x1024MB=8192MB)
$ sudo ventoy -i -g -r 8192 /dev/sdy
You can later use e.g. gparted or another partitioning tool to create the extra partition(s) - and encrypt then if you desire so.
Using a file manager
Using your file manager and drag your Windows ISO onto you USB and wait - patience is the keyword - patience.
When the copy operation is done - use the eject button in your file manager - and wait - wait until the device disappears from your file manager.
If you don’t wait - data corruption will occur - and you don’t want that.
ventoy command line
Using the device name from above mount the first partition to a temporary mount point
$ sudo mount /dev/sdy1 /mnt
Copy the ISO file to the USB - assuming the ISO is in your Downloads folder
$ cp ~/Downloads/<windows.iso> /mnt && sync
When the command finishes you can unmount the device
$ sudo umount /mnt
If you don’t wait - data corruption will occur - and you don’t want that.
Terminal
Remove all removable devices (USB), open a terminal and list known disk devices
$ lsblk -la
Insert your USB stick and list your devices one more time
$ lsblk -la
Make a note of the extra device listed. If you only have one disk then it probably will be /dev/sdb
.
Please do double check the device id
In the terminal clear the disk of any partition info, using this command (replace sdy with device letter from above).
$ sudo dd if=/dev/zero of=/dev/sdy bs=1M count=10 oflag=sync
Then use fdisk to create the filesystem needed for the Windows ISO (replace X with device letter from above).
$ sudo fdisk /dev/sdy
The commands in fdisk is as follows
- o - create a new empty DOS partition table
- n - add a new partition
- Enter - accept default partition type primary
- Enter - accept default partition number 1
- Enter - accept default first sector 2048
- Enter - accept default last sector
- t - change partition type
- 07 - select HPFS/NTFS/exFAT
- a - set bootable flag for partition 1
- w - write changes to disk
Newer versions of Windows 10 ISO contains a file bigger than 4G. Format the device using ntfs (replace sdy with device letter from above) to overcome the size limitation of FAT32.
$ sudo mkfs.ntfs /dev/sdX1
Create a folder to mount your ISO
$ mkdir ~/winiso
Mount your ISO
$ sudo mount -o loop /path/to/windows/iso/filename.iso ~/winiso
Create a folder to mount your USB
$ mkdir ~/winusb
Mount the partition (replace sdy with device letter from above)
$ sudo mount /dev/sdy1 ~/winusb
Copy all files from ISO to USB
$ cd ~/winiso
$ cp -r * ~/winusb
The copy operation is going to take a long time depending on your USB port speed and your USB device.
When the copy is done ensure all data is flushed to the device using the sync command
$ sync
When all data is flushed to the device you will be returned to the prompt.
Next thing is to move out of the winiso folder
$ cd
Then unmount the devices
$ sudo umount ~/winiso ~/winusb
Remove the folders
$ rm -rf ~/winiso ~/winusb
You should now be able to boot to your Windows install media.