Ventoy

Ventoy is an open source tool to create bootable USB drive for ISO/WIM/IMG/VHD(x)/EFI files. With ventoy, you don’t need to format the disk over and over, you just need to copy the ISO/WIM/IMG/VHD(x)/EFI files to the USB drive and boot them directly. You can copy many files at a time and ventoy will give you a boot menu to select them (screenshot). You can also browse ISO/WIM/IMG/VHD(x)/EFI files in local disks and boot them. x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI, ARM64 UEFI and MIPS64EL UEFI are supported in the same way. Most types of OS supported (Windows/WinPE/Linux/ChromeOS/Unix/VMware/Xen…)
— Ventoy

Getting started

  1. Install ventoy, AUR (en) - ventoy-bin, Download Ventoy

  2. Find the USB device

    lsblk -o name,mountpoint,label,size,uuid
  3. Run the shell script as root (if used ventoy-bin package, binary is ventoy)

    # XXX is the USB device, for example /dev/sdb.
    sh Ventoy2Disk.sh { -i | -u } /dev/XXX
    Usage:  Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX
      CMD:
       -i  install Ventoy to sdX (fails if disk already installed with Ventoy)
       -u  update Ventoy in sdX
     
       -I  force install Ventoy to sdX (no matter if installed or not)
       -l  list Ventoy information in sdX
     
      OPTION: (optional)
       -r SIZE_MB  preserve some space at the bottom of the disk (only for install)
       -s/-S       enable/disable secure boot support (default is enabled)
       -g          use GPT partition style, default is MBR (only for install)
       -L          Label of the 1st exfat partition (default is Ventoy)
       -n          try non-destructive installation (only for install)

How to copy ISO file to Ventoy USB drive and validate it

Windows

Checksums are verified, check this note windows setup script

export VENTOY_PATH="/media/Ventoy"
export WIN_ISO_CHECKSUM="c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d"
export ISO_FILE="en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso"
 
# Mount USB drive
udiskie-mount -a
 
# Check ventoy USB drive is mounted
[ -d $VENTOY_PATH ] || exit 1
 
# Update ventoy path
VENTOY_PATH="$VENTOY_PATH/_win"
 
# Create _win directory
mkdir -p "$VENTOY_PATH"
 
cp "$ISO_FILE" "$VENTOY_PATH"
 
# Create SHA-256 file and validate it
echo "$WIN_ISO_CHECKSUM  $ISO_FILE" > "$VENTOY_PATH/$ISO_FILE.sha256.txt"
sha256sum -c "$VENTOY_PATH/$ISO_FILE.sha256.txt"

Arch Linux

To download, I use this URL

## Step 1 prepare
 
export ISO_FILE="archlinux-x86_64.iso"
export SIGNER_FILE="$ISO_FILE.sig"
export ARCH_ISO_URL="https://geo.mirror.pkgbuild.com/iso/latest/$ISO_FILE"
export ARCH_SIG_URL="https://geo.mirror.pkgbuild.com/iso/latest/$SIGNER_FILE"
export VENTOY_PATH="/media/Ventoy"
 
## Verify requiremets installed
sudo pacman -S --needed aria2 gnupg udiskie
 
# Mount USB drive
udiskie-mount -a
 
# Check ventoy USB drive is mounted
[ -d $VENTOY_PATH ] || exit 1
 
# Update ventoy path
VENTOY_PATH="$VENTOY_PATH/_linux"
 
# Create _linux directory
mkdir -p "$VENTOY_PATH"
 
## Step 2 download and verify
cd "$VENTOY_PATH"
aria2c --max-connection-per-server 8 "$ARCH_ISO_URL"
aria2c "$ARCH_SIG_URL"
gpg --keyserver-options auto-key-retrieve --verify "$SIGNER_FILE"