chore: align doc submodule commit
docs(quickget): adapt whitespace in help_message()
needed in manual page regeneration to retain filtering of needed lines
currently omits the new flag for --disable-unattended
Signed-off-by: Phil Clifford <philip.clifford@gmail.com>
- Set default --display to 'gtk' instead of 'sdl'
- Add runtime check to fall back to 'sdl' when QEMU lacks GTK support
and print a note to the user
- Update usage text to show 'gtk' as the default display option
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Remove noisy "Serial: (off)" echo and add explanatory comment
- Stop forcing serial="${serial:-socket}" early; leave unset and set
per-guest after config
- Set serial="none" for macOS and Windows guests, otherwise default to
"socket"
- Reduce terminal clutter for guests that do not emit useful serial
output
- Document how to override: use --serial or set serial=socket in the VM
.conf
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Replace previous VGA default with vmware-svga to align with macOS
native VMware display driver and OSX-KVM expectations
- Improve resolution handling and mouse integration for macOS VMs
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Pin OSX-KVM URLs to commit da4b23b5e92c5b939568700034367e8b7649fe90
- Use pinned URLs for OpenCore.qcow2, OVMF_CODE.fd and
OVMF_VARS-1920x1080.fd
- Prevent breakage after upstream removed OVMF_CODE.fd from master (26
Jan 2026)
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Use Unix sockets for local --display spice to allow GL/VirGL
acceleration
- Use egl-headless backend to provide GL context for virtio-gpu-gl; do
not
enable SPICE gl=on (avoids blocking QEMU main loop)
- Add -vga none for SPICE modes to prevent duplicate scanouts
- Update start_viewer() to support spice+unix:// and
spice://localhost:port
connection modes for spicy and remote-viewer clients
- Clean up Unix socket (.sock) files alongside existing .spice file
cleanup
Provides local GL-accelerated guest 3D via VirGL while keeping remote
access
over TCP unchanged.
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Reorder and refine Windows mapping: map none|spice -> qxl-vga;
cocoa|gtk|sdl|spice-app -> virtio-vga
- Remove the VGA variable and the forced '-vga none' from VIDEO
composition
- Remove unused VGA initialization in vm_boot
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Change HOST_CPU_VENDOR lookup to use '^Vendor ID' when parsing
/proc/cpuinfo
- Ensures correct CPU vendor detection on systems that label the field
as 'Vendor ID' instead of 'Vendor'
Fixes#1845
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Remove integrated OpenCore creation/extraction code from quickget:
require_mtools/sgdisk helpers, create_macos_disk_with_opencore,
download_opencore and related logic
- Simplify quickemu macOS boot flow to expect a separate OpenCore.qcow2
or ESP.qcow2; streamline device/drive argument construction
- Remove mtools and gptfdisk from devshell.nix and package.nix
- Always download OpenCore.qcow2 via legacy method and update status
messages
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Display supported architectures when running ./quickget <os> (shows
"Archs: amd64 arm64")
- Add get_supported_archs() helper to enumerate available architectures
- Add arch_suffix() helper and append architecture suffix to VM
dir/config names
for foreign architectures (e.g., alpine-v3.23-arm64/)
- Add NORMALISED_HOST_ARCH variable to detect foreign vs native
architecture
- Include arch="x86_64" or arch="aarch64" in config files for foreign
downloads
- Replace process checks (pidof pipewire / pidof pulseaudio) with socket
existence checks to determine functional audio services.
- PipeWire detection checks $PIPEWIRE_REMOTE or
$XDG_RUNTIME_DIR/pipewire-0.
- PulseAudio detection checks $PULSE_SERVER or
$XDG_RUNTIME_DIR/pulse/native.
- Change default audio driver from pa to alsa as a safer fallback on
headless hosts.
- Set detection priority: PipeWire (if QEMU >= 8.1) → PulseAudio → ALSA.
- Reason: a listening socket indicates a working service; pidof can be
misleading on headless servers and caused QEMU "Failed to initialize
PW context" errors.
Fixes#1838
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- add cache=writeback and aio=threads to DRIVE_OPTIMISATIONS
- retain existing optimisations: discard=unmap,detect-zeroes=unmap
- improve write performance (host writeback caching) and async I/O
parallelism via thread-based AIO
- follows Proxmox/libvirt QEMU disk best practices; researched for macOS
but applies to all guests
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add os_info() case entry with a description for Azure Linux
- Add Azure Linux to os_support() list
- Implement releases_azurelinux() returning "3.0"
- Implement arch_azurelinux() returning "amd64 arm64"
- Implement get_azurelinux() using stable aka.ms download URLs:
- https://aka.ms/azurelinux-3.0-x86_64.iso
- https://aka.ms/azurelinux-3.0-aarch64.isoFixes#1459
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Replace builtins.match with builtins.split for version extraction
- Previous regex with .* patterns caused catastrophic backtracking on large files (~2800 lines)
- builtins.split avoids full-string regex matching and is more efficient
Fixes: Nix build CI failure
- Replace flake.nix nixpkgs URL with github:nixos/nixpkgs/nixos-unstable
- Update flake.lock to new locked rev, narHash and github type
No functional changes to scripts; resolves dependency refresh for Nix flakes.,
Add exit 1 after curl failure handling in web_get
- Exit immediately when a download via curl fails
- Prevent continuing to build invalid VM configs after failed download
Fixes#1625
- Set usb_controller="xhci" in display_param_check() when BRAILLE is enabled.
- Braille devices are USB 1.1 (full-speed); EHCI only handles USB 2.0/3.0,
which causes speed mismatch warnings and prevents braille devices from working.
Fixes#730
- Raise global minimum QEMU version from 6.0.0 to 6.1.0.
- The option -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off used for macOS guests
is only available in QEMU 6.1.0 and later; prefer raising the global requirement rather
than adding per-flag conditionals.
- Update version check and error message in quickemu.
BREAKING CHANGE: Require QEMU 6.1.0; older QEMU will fail the version check.
- Pass vmware-cpuid-freq=on to -cpu on Intel hosts to enable VMware TSC
frequency reporting and improve macOS timing
- Add ICH9-LPC flag to disable ACPI PCI hotplug bridge support to avoid
macOS PCI hotplug issues (required for QEMU 6.1+)
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Split macOS sound card logic by OS version:
- Use virtio-sound-pci for macOS 12+ (Monterey and newer)
- Use ich9-intel-hda for Big Sur
- Keep intel-hda for earlier macOS releases
- Add virtio-sound-pci case to configure_audio() to pair the device with
existing audiodev backends (PulseAudio, PipeWire, ALSA, CoreAudio)
- Update help text to include virtio-sound-pci as an allowed sound card
option
- Add virtio-sound-pci to allowed sound cards in
sound_card_param_check()
VoodooHDA injected via OpenCore stopped working from macOS 11.3+
onwards and usb-audio proved unreliable for Big Sur+. virtio-sound-pci
works natively on macOS 12+ without kexts and fixes guest audio for
affected versions.
Fixes#1642
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add TCG-specific runtime optimisations in vm_boot for
cross-architecture VMs
- Detect host RAM and set tb-size to 512 for hosts with >=16GB,
otherwise 256
- Append -accel tcg,tb-size=${TCG_TB_SIZE},thread=multi to QEMU args
- Improve TCG translation cache behaviour and SMP performance for TCG
guests
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Update flake.nix and package.nix to refresh package definitions and
pins
- Refresh devshell.nix to include updated development dependencies
- Adjust debian/control metadata to match packaging and dependency
changes
- Align packaging metadata between Nix and Debian to improve
reproducibility
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Clarify highmem behaviour for aarch64 virt machine and why it is
needed for >3GB RAM
- Add detailed explanation of TCG (software emulation), how to force it,
and common use cases
- Replace TODOs about VM detection with manufacturer-based detection
guidance
- Improve ARM detection rationale (no standard vendor strings)
- Explain that TCG enables running x86_64 macOS on ARM via software
emulation
- Prefer OpenGL ES via ANGLE on macOS for stability/performance on
Metal-backed systems
- Document virtio-gpu naming and regex rationale for matching device
names
- Note virtio devices manage VRAM dynamically via QEMU default
max_hostmem
- Add SMM/vmport note clarifying x86-specific semantics and Secure Boot
differences
No functional changes; comments only.
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Quote URL argument passed to web_pipe in quickget to prevent
word-splitting
- Quote echoed variables in quickget (echo "${...}") for safe output
when values contain whitespace
- Add shellcheck disable=SC2054 in quickemu vm_boot to silence a
spurious ShellCheck warning
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Prefer GNU coreutils g* hash commands on macOS when available; fall
back to native shasum/md5 otherwise
- Handle MD5 on macOS using 'md5 -r' and parse its output for comparison
- Warn and skip b2sum verification when GNU b2sum is not installed on
macOS
- Use a selected hash command variable when printing status and
performing checks
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add arch_ubuntu() to enumerate supported architectures and gate ARM64
by release
- Validate architecture once RELEASE is known and exit/skip if
unsupported
- Use UBUNTU_ARCH when selecting ISO lines and hashes instead of
hardcoded amd64
- Use cdimage.ubuntu.com releases path for Ubuntu ARM64 desktop ISOs
- Default non-numeric releases (daily, dvd, etc.) to amd64 only
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- If architecture is unsupported and OPERATION is "test" or "show",
call test_result with SKIP and exit 0
- Keep existing error and exit 1 for non-test/show operations
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Skip early architecture check for OSes with editions_<os> to avoid
rejecting valid edition-specific combinations
- Perform architecture validation after EDITION is known and show a
descriptive error when the chosen edition isn't available on ARCH
- Preserve test/show behaviour (report SKIP) and keep previous flow for
OSes without editions_<os>
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Remove the OPERATION == "test" guard so is_arch_supported() is
evaluated
unconditionally
- Apply the unconditional arch check in test_all() for editions loop,
ubuntu-server, ubuntu desktop (ubuntu*), and the default case
- Skip generating URLs / running further logic when an OS is not
available
for the requested ARCH
IMPACT: quickget will no longer attempt to generate or test downloads
for
architectures that the distro does not support, preventing incorrect URL
generation and false-positive test attempts.
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add CLI flag --check-all-arch with help text and CHECK_ALL_ARCH var
- Implement loop to run checks for both amd64 and arm64, setting ARCH
per run
- Validate architecture and release/edition before generating URLs; skip
Windows
- Generate and check URLs per-arch, reporting PASS / FAIL / SKIP per
entry
- Update CI workflow to call ./quickget --check-all-arch for distro
matrix tests
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add arch_*() functions declaring supported architectures for several
distros
- Add is_arch_supported() helper; default to amd64 when no arch_* exists
- Validate architecture before generating URLs or running tests
(web_get, zsync_get, test_all)
- Update test_result() to accept and display an optional reason when
skipping
- Prevent false failures by skipping tests for unsupported architectures
IMPACT: quickget now respects requested architectures and reports clear
SKIP reasons for distros that do not support the selected arch.
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Use ARCH as DEBIAN_ARCH when constructing ISO filename and cdimage URL
- Update DEBCURRENT handling to select arch-specific iso-hybrid path
- Add explicit error and exit if arm64 is requested with a non-netinst
edition
(Debian provides netinst images only for ARM64)
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add FEDORA_ARCH and set to aarch64 when ARCH == arm64
- Use FEDORA_ARCH in jq filter to pick the correct Fedora ISO/sha256
- Add UBUNTU_ARCH and switch Ubuntu daily/releases URL for arm64
- Use UBUNTU_ARCH when parsing SHA256SUMS/MD5SUMS instead of hardcoded
amd64
Fixes incorrect ISO selection on ARM64 hosts and enables arm64
downloads.
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add HOST_ARCH detection and set ARCH default (arm64 → arm64, others →
amd64)
- Add parse_arch_flag() and support --arch/-arch before or after
operation args
- Inject arch="aarch64" into generated VM configs when ARCH=arm64
- Use QEMU_ARCH in distro helpers (AlmaLinux, Alpine, etc.) to build
correct ISO names/URLs
- Update help text to document --arch and reorder flags display
- Tidy Alpine release parsing (use first match) and simplify Rocky URL
assignment
Note: quickget now defaults ARCH from the host; pass --arch to override
if you
need a different target architecture.
Signed-off-by: Martin Wimpress <martin@wimpress.org>