windows2usb/README.md
2021-11-25 17:43:26 +08:00

4.6 KiB

Windows2usb

Burn Windows ISO to USB Flash Drive on Linux

What is this?

Windows2usb is a bash script which writes Microsoft Windows 7/8/8.1/10/11 installation DVD images to USB Flash Drive or external HDD on Linux. It was designed with compatibility in mind, and should work in all cases, contrary to other popular Linux tools.

Features:

  • Fully automatic, no preparations required
  • Supports BIOS and UEFI, FAT32 and NTFS
  • Supports custom Windows ISOs with install.wim > 4GiB
  • Uses stock Windows bootloaders where possible
  • Does not break UEFI Secure Boot chain
Windows 7/8/8.1/10/11 ISO to Flash Drive burning utility
WARNING: this program will delete all existing data on your drive!

windows2usb <device> <windows iso> <mbr/gpt/gptntfs/gpt+uefintfs>

mbr mode: the most universal, RECOMMENDED method.
   This mode creates MBR partition table with FAT32 partition,
   installs BIOS and UEFI bootloaders, supports Secure Boot.
   install.wim file larger than 4 GiB will be split.
   Suitable for all computers (UEFI/CSM/BIOS).

gpt mode: less universal mode, for modern (UEFI) computers.
   GPT+FAT32, UEFI only, supports Secure Boot.

gptntfs mode: all the same as 'gpt' but NTFS is used.
   GPT+NTFS, UEFI only, supports Secure Boot.
   Large install.wim file will not be split.
   NOTE: not all UEFI are compatible with this mode,
   NTFS driver should be present on the motherboard.

gpt+uefintfs mode: alternative hacky installation method, not recommended.
   This mode uses NTFS partition and third-party 'uefintfs' bootloader.
   GPT+NTFS(data)+FAT32(efi), UEFI only, NO Secure Boot support.
   Large install.wim file will not be split.

How to use?

Download latest portable AppImage version from the Releases page, set execution bit (chmod +x windows2usb-*.AppImage) and run it from the terminal.

windows2usb <device> <windows iso> <mbr/gpt/gptntfs/gpt+uefintfs>"

The program prints removable storage list if no arguments are supplied.

If you don't want to use AppImage, you'll need to install all dependencies and download uefi-ntfs.img from Rufus project.

Feature Matrix

Modes Legacy/UEFI-CSM Boot UEFI Boot Large ISO (>4GB) Secure Boot
mbr(hybrid) Supported Supported Supported Supported
gpt No Supported No Supported
gptntfs No Partial Supported Supported
gpt+uefintfs No Supported Supported No

BIOS Boot

BIOS Boot (Legacy Boot/UEFI-CSM) uses stock Windows 7 MBR and FAT32 bootloader, courtesy of ms-sys project.

BIOS boot is supported only in recommended 'mbr' mode.

To burn ISO compatible with BIOS boot (and UEFI boot as well), run:

windows2usb <device> <windows iso> mbr

UEFI Boot

UEFI Boot is supported in all modes. Recommended mode: 'mbr'.

To burn ISO in this mode, run:

windows2usb <device> <windows iso> mbr

'MBR', 'GPT' and 'GPTNTFS' modes utilize Windows UEFI bootloader from the ISO file, with Secure Boot support.

UEFI Boot with NTFS Partition and uefi-ntfs bootloader

A special 'gpt+uefintfs' mode uses uefi-ntfs bootloader from Rufus project. Windows2usb creates 2 partitions in this mode, small 1 MiB FAT32 partition with uefi-ntfs and huge NTFS partition with ISO data.

This mode was included earlier to work with installation disks where install.wim file is greater than 4 GiB, but since then split WIM file functionality was introduced, and now this mode may be considered obsolete.

This mode does not support Secure Boot (uefi-ntfs bootloader is not signed by Microsoft or other trusted party).

Alternatives

WoeUSB—uses GRUB for BIOS Boot.
bootiso—supports Windows and Linux ISOs.
Ventoy—Booting multi-tool with brilliant support of Windows ISO direct loading.

Credits

This script uses:

  • lsblk and sfdisk from util-linux
  • ms-sys for native Windows 7 MBR and NTFS bootloaders
  • p7zip for ISO extraction
  • autofsync to prevent filesystem bufferbloat and properly show copying progress (AppImage only)
  • wimlib to split large install.wim files to fit FAT32 partition