Creating of installation Windows USB flash drive using GRUB2 There are couple of methods to make bootable USB flash drive with Windows installer but no one guarantees that flash drive will boot. On some PCs it boots, on some doesn't. So we need to use GRUB as an external loader to load Windows loader (NTLDR). First of all, part a flash drive (at least 8Gb drive): - one small bootable partition for GRUB files - second partition for Windows installer files sdb is a name of USB device here. ===== $ sudo cfdisk -z /dev/sdb ┌ Select label type ───┐ │ gpt │ select dos (MBR) type here->│ dos │ │ sgi │ │ sun │ └──────────────────────┘ ===== Create two primary partitions: 1. 100M is enough for GRUB but I've created 500M there. Type of partition is Linux (83). Then mark this partition as Bootable. 2. The rest of device. Change type of this partition to HPHS/NTFS/exFAT (7). Windows 7 installation media doesn't have files bigger then 4Gb so type FAT32(b) can be used for this partition. But 8, 10, 11, etc Windowses have big files so NTFS is a relevant choice. Device Boot Start End Sectors Size Id Type >> /dev/sdb1 * 2048 1026047 1024000 500M 83 Linux /dev/sdb2 1024048 15124991 14100944 6.7G 7 HPFS/NTFS/exFAT ┌────────────────────────────────────────────────────────────────────────────┐ │Partition type: Linux (83) │ │ Attributes : 80 │ └────────────────────────────────────────────────────────────────────────────┘ [Bootable] [ Delete ] [ Resize ] [ Quit ] [ Type ] [ Help ] [ Write ] [ Dump ] Write chages to disk and quit. ===== Next format this partitions: $ sudo mkfs.ext4 /dev/sdb1 .... $ sudo mkfs.ntfs -f /dev/sdb2 .... ===== Next step is to install GRUB2 to USB flash. We also need to specify a directory where GRUB2 files and modules will be located. Let's mount sdb1 to /mnt $ sudo mount /dev/sdb1 /mnt Then install GRUB2. Name of command "grub2-install" can differ in a different distributions. grub-install is a second candidate to try. Also check /usr/sbin for variants. $ sudo grub2-install --boot-directory=/mnt /dev/sdb ===== Create really small config file /mnt/grub2/grub.cfg menuentry Windows { set root=(hd0,msdos2) ntldr /bootmgr boot } hd0 is a name of boot device here (USB flash). msdos2 is a name of second partition on this device. ===== Last step is to copy all files from Windows installation media to prepared partition. Unmount sdb1 first $ sudo umount /dev/sdb1 Mount NTFS partition $ sudo mount /dev/sdb2 /mnt Mount Windows .iso image. $ sudo mkdir /winiso $ sudo mount ~/Windows-install.iso /winiso Copy all of this and clean $ sudo cp -r /winiso/* /mnt $ sync $ sudo umount /mnt $ sudo umount /winiso $ sudo rmdir /winiso Note that you can use this flash drive to boot any Windows install. Just remove installation files from second partition and copy another. ===== References: https://willhaley.com/blog/windows-installer-usb-linux https://askubuntu.com/questions/367011/boot-windows-7-iso-from-grub2