Skip to content

v0.7.0

Choose a tag to compare

@ShocOne ShocOne released this 22 Jul 12:01
· 24 commits to main since this release

What's Changed

WIM modification, Win11 bypass, bootable USB, and disk-space guards

Extend the imaging library from build-an-ISO to build-and-deploy media with
Windows 11 requirement bypasses, and fill the WIM "modification" gap that the
existing read/write/codec support left open.

WIM modification (pkg/wim)

  • Updater: edit image XML properties in place (SetProperty/SetPropertyAll),
    add/replace/remove files inside an image via append-mode rebuild, and
    serializeHeader/putResource for faithful header rewrites.
  • Split into .swm sets and Join back, following wimlib's on-disk contract
    (per-part blob tables, shared GUID, metadata in part 1); round-trip tested.
  • Preserve the catalog block (INSTALLATIONTYPE/EDITIONID/ARCH) when
    rebuilding boot.wim/install.wim. Previously dropped, which broke edition
    selection and made the INSTALLATIONTYPE=Server bypass impossible.

Windows 11 bypass (pkg/unattend, pkg/builder)

  • Mechanism A: set WINDOWS/INSTALLATIONTYPE=Server on every install.wim image.
  • Mechanism B: generate an autounattend.xml with LabConfig TPM/SecureBoot/RAM/
    Storage/CPU bypass keys + OOBE BypassNRO; merged via the ExtraFiles hook and
    respecting a caller-supplied answer file.
  • builder.Options.Bypass wires both; CLI flags --bypass-win11 et al.

Bootable USB (pkg/usb)

  • Portable plan/copy/split/EFI-fallback core plus Windows (diskpart) and Linux
    (sfdisk/mkfs) backends behind build tags; unsupported platforms return
    ErrUnsupported so the module still builds everywhere.
  • install.wim over FAT32's 4 GiB limit is emitted as an install.swm set
    a missing EFI loader is synthesized from bootmgfw.efi in the install

El Torito fixes (pkg/iso)

  • Use the fixed oscdimg BIOS load size (8 sectors) instead of a length-
    value; guard the UEFI sector count against uint16 overflow.

Disk-space pre-flight (pkg/diskspace)

  • Cross-platform free-space via GetDiskFreeSpaceEx / statfs (no cgo, bu
    tagged). Wired into builder.BuildISO (checks workdir + output, summin
    requirement when they share a volume) and usb.WriteMedia (media must fit the
    disk). Settable --workdir on iso build targets a volume with room.

CLI

  • New usb list|write (with --dry-run/--yes guards), wim set-property --workdir on iso build`.

Validated end to end against a SHA1-verified Windows 11 Pro ESD: the re
ISO passes isoinspect with zero errors, stores the 6.13 GB install.wim
allocation-descriptor extents at full size, applies the bypass to all 7

Full Changelog: v0.6.2...v0.7.0