Changelog
I've made it work on newer linux fixing deprecated wimlib-imagex issue and added arm64 support(cmdline --arch) :)
Debian package ready to use:https://github.com/WillXLuke/Fix-WoeUSB/releases/tag/5.3.0
https://github.com/WoeUSB/WoeUSB
A Microsoft Windows® USB installation media preparer for GNU+Linux
- Support Legacy PC/UEFI booting
- Support FAT32 and NTFS filesystems
- Support using physical installation disc or disk image as source
- Windows Vista and later
- Any language or edition variants
- Windows PE
NOTE: Non official installation media may be supported, but not guaranteed
The following are the dependencies that WoeUSB requires, in one way or another. Refer the wiki for distro-specific information.
WoeUSB will not be able to function without these software installed in their proper locations:
- GNU Bash
For interpreting and executing the program logic
Requires >= 4.3 - The GNU Core Utilities(Coreutils)
For common Unix utilities necessary for basic operations - util-linux
For low-level utilities interacting with storage devices, etc - GNU Grep and Gawk
For parsing necessary information out from a command output - The GNU Find Utilities
For enumerating files required for operation - GNU GRUB
For installing the bootstrap code used in a Legacy PC boot
We specifically requires modules of the i386-pc architecture, for Debian-based distributions these are provided via the grub-pc-bin package - GNU Parted
For manipulating disk partition table and partitions - GNU Wget or curl For acquiring Pete Batard's UEFI:NTFS UEFI bootloader
- dosfstools
For creating FAT filesystem in--devicecreation method - NTFS-3G (providing
mkntfs/mkfs.ntfs) For creating NTFS filesystem in--devicecreation method - wimlib (providing
wimsplitor the olderwimlib-imagex) For splitting install.wim Windows Imaging (WIM) archive so that archives over 4GiB can be fit in an FAT32 filesystem
Without the following dependencies WoeUSB will still able to run, but some functionalities will be unavailable:
- p7zip or 7-Zip (
7z/7zz) For workaround the problem where the Windows 7 installation media doesn't ship their UEFI bootloader in the proper location - Pete Batard's UEFI:NTFS UEFI bootloader
For supporting NTFS filesystems in the target USB key - GNU gettext
For supporting message internationalization(I18N)
An architecture-independent Debian binary package is available. It installs the woeusb command system-wide so it can be run from any console.
- Build the package:
./dev-assets/build-deb.sh
- Install it:
sudo dpkg -i distribution/deb/woeusb_<version>_all.deb sudo apt-get install -f # resolve any missing dependencies if prompted
- Use it from any console:
woeusb --help sudo woeusb --arch=arm64-efi --device Windows11_ARM64.iso /dev/sdX
See distribution/deb/README.md for details.
WoeUSB is a program that can be run without installation(excluding its dependencies):
- Download the program(woeusb-N.N.N.bash) from the Releases page
- Fix the missing executable file permission (
chmod +x path/to/woeusb-N.N.N.bash) - Launch a terminal application and run the program via the appropriate path(
sudo path/to/woeusb-N.N.N.bash --help)
The following are the environment variables that may change WoeUSB's runtime behavior:
| Variable name | Usage |
|---|---|
| RUFUS_UEFI_NTFS_VERSION | The release tag/revision of the Rufus source tree to fetch the UEFI:NTFS image from, will use a tested version by default |
-
--device,-d <source media> <device>Wipe the entire target device and build a bootable Windows USB from scratch. -
--partition,-p <source media> <partition>Copy Windows files into an existing partition and make it bootable. -
--target-filesystem,--tgt-fs <FAT|NTFS>Choose the target filesystem for--devicecreation(default: FAT). -
--arch,--architecture <grub target>Select the GRUB target architecture used when installing the bootloader(default:i386-pc).Useful for modern systems:
i386-pc— classic x86 BIOS booting(default)i386-efi/x86_64-efi— x86 UEFI bootingarm64-efi— Windows on ARM / ARM64 UEFI bootingarm-efi— 32-bit ARM UEFI booting
Examples:
# x86 BIOS(default) sudo woeusb --device Windows.iso /dev/sdX # x86 UEFI sudo woeusb --arch=x86_64-efi --device Windows.iso /dev/sdX # Windows on ARM sudo woeusb --arch=arm64-efi --device Windows11_ARM64.iso /dev/sdX
WoeUSB is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
WoeUSB is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with WoeUSB. If not, see http://www.gnu.org/licenses/.
If the asset is in plaintext format:
- Check the
SPDX-License-Identifiertag in the file's header - Check the .reuse/dep5 file from the source tree/release tree directory
If the asset is not in plaintext format:
Check the .reuse/dep5 file from the source tree/release tree directory
- WoeUSB is a fork of Colin GILLE's WinUSB project, without standing on their shoulders WoeUSB will not exist in the first place
- We would like to thank @slacka for the maintenance of the WoeUSB project when it was hosted under their namespace, they have been extremely helpful and cooperative in many conversations that contributed in WoeUSB's improvement
- We would like to thank Pete Batard for their splendid work on the UEFI:NTFS UEFI bootloader, which is included in WoeUSB to enable the NTFS filesystem support
- Source code contributors on GitHub:
- Everyone who have contributed to WoeUSB in one way or another but we're unable to enumerate them due to our ignorance