Automatically use virtiofsd (vhost-user-fs-pci) instead of 9p when
virtiofsd is present on the host and the guest OS is Linux. Falls back
silently to 9p when virtiofsd is unavailable. Updates README to document
the new capability.
Maybe it was accurate in this past but the current Quickget release
suggest that only Fedora Server has arm64 support. That's not the case.
In fact checking the `releases.json` file that `quickget` already uses
shows us that every edition other than Onyx supports arm64.
This PR makes that change.
The command ran to check this info was:
```bash
curl -sL https://getfedora.org/releases.json | jq -r
'group_by(.variant)[] | "\(.[0].variant): \(map(.arch) | unique |
join(", "))"'
COSMIC-Atomic: aarch64, x86_64
Cloud: aarch64, ppc64le, s390x, x86_64
Container: aarch64, ppc64le, s390x, x86_64
Everything: aarch64, ppc64le, s390x, x86_64
IoT: aarch64, ppc64le, s390x, x86_64
KDE: aarch64, ppc64le, x86_64
Kinoite: aarch64, ppc64le, x86_64
Labs: aarch64, x86_64
Onyx: x86_64
Sericea: aarch64, x86_64
Server: aarch64, ppc64le, s390x, x86_64
Silverblue: aarch64, ppc64le, x86_64
Spins: aarch64, x86_64
Workstation: aarch64, ppc64le, x86_64
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>