Commit Graph

1184 Commits

Author SHA1 Message Date
startergo bb3f8ee817 refactor: enhance code quality and defensive programming
Security & Hash Validation Improvements (quickget):
- Fix command injection: replace echo with printf for ISO filename handling
- Add hash length validation (MD5=32, SHA1=40, SHA256=64, SHA512/BLAKE2b=64-128)
- Fix Bash 3.2 compatibility: replace ${var,,} with tr command for macOS
- Add internal whitespace validation in hash algorithm prefix
- Support BLAKE2b variable output lengths (256-512 bits)
- Validate archboot editions: only allow 'default' and 'latest'

CPU Flag Management Improvements (quickemu):
- Auto-correct invalid flag format by prepending comma
- Add conflict detection for unprefixed vs +/- prefixed flag variants
- Strip =value suffix to detect value-assigned flag conflicts
- Add validation for malformed flags (++flag, --flag, +, -)
- Add defensive check that CPU is initialized before appending

All changes improve security, robustness, and portability.
2026-01-23 15:26:21 -05:00
startergo 1c33335517 fix: harden qemu version checks 2026-01-23 11:10:22 -05:00
startergo 5cbebabb59 fix: correct firmware vars and b2sum hashes 2026-01-23 10:19:53 -05:00
startergo 56c658b691 fix: correct quickget arch matching 2026-01-23 08:58:46 -05:00
startergo 3336ab51db Add comprehensive ARM64 Linux support with automatic architecture detection
This commit adds full support for running ARM64 Linux guests on Apple Silicon
Macs with proper graphics acceleration, automatic OS downloads, and reliable
boot configuration.

quickget changes - Automatic Architecture Detection:
- Add HOST_ARCH detection using uname -m (arm64/aarch64 or amd64/x86_64)
- Ubuntu/Ubuntu Server: Download arm64/amd64 based on host architecture
- Fedora editions: Filter available editions by host architecture
- Alpine Linux: Use host architecture for ISO selection
- Debian: Support both arm64 and amd64 (netinst only, live is amd64-only)
- Archboot: New distribution with native aarch64/x86_64/riscv64 support
  * Three editions: default, latest, local
  * Actual bootable ARM64 ISOs (unlike standard Arch Linux)
  * Downloads from release.archboot.com mirror

quickemu changes - ARM64 Guest Support:
1. CPU & Machine Configuration:
   - Changed ARM64 CPU model: 'max' → 'cortex-a72' (better compatibility)
   - Enabled highmem support: highmem=off → highmem=on

2. QEMU Installation Detection:
   - Dynamic path detection using actual binary location
   - Works with custom builds, not just Homebrew defaults
   - Extracts Cellar path from qemu binary for share directory

3. ARM64 UEFI Firmware (AAVMF):
   - Architecture-aware firmware selection (AAVMF for aarch64, OVMF for x86_64)
   - Searches multiple AAVMF paths based on ARCH_VM
   - Supports both secure boot and non-secure boot firmware variants

4. OpenGL ES (ANGLE) Graphics Acceleration:
   - New check_display_gl_support() function for ANGLE detection
   - Two-step verification: library files + dbus parameter test
   - Searches: QEMU prefix, /opt/homebrew, Cellar, libangle
   - Automatic gl=es selection for cocoa when ANGLE detected
   - Updated VirGL: gl != 'off' (supports both gl=on and gl=es)

5. Secure Boot Flag Fix:
   - Changed from unconditional to conditional (checks secureboot config)
   - Only adds cfi.pflash01 secure flag when secureboot="on"
   - Fixes boot hang with ARM64 guests using bootindex

6. ARM64 ISO Boot with bootindex:
   - Special handling for ARM64 Linux ISO boot
   - Uses virtio-scsi-pci + scsi-cd with bootindex=1 (CD-ROM first)
   - Sets bootindex=2 for disk (boots second)
   - Fixes unreliable -cdrom with -boot d on ARM64 UEFI

Design Principles - All Changes are Check-Based:
✓ Checks for ANGLE library files on filesystem
✓ Validates gl=es parameter with dbus display test
✓ Checks ARCH_VM for architecture-specific paths
✓ Checks secureboot configuration option
✓ Checks guest_os and iso presence for bootindex logic
✓ Detects HOST_ARCH for appropriate OS downloads
✗ No assumptions or hardcoded behavior

Tested on: Apple M4 Pro (ARM64), macOS 15.6 Darwin 24.6.0
QEMU: v10.1.2 (startergo/homebrew-qemu-virgl with ANGLE + libepoxy-angle)
Result: Archboot ARM64 ISO boots successfully with full acceleration
Display: COCOA, virtio-gpu-gl-pci, GL (es), VirGL (on) @ 1280x800
2025-11-28 15:06:26 -05:00
startergo 5c3b06acec Add host architecture detection for automatic guest OS selection
Automatically detect the host architecture (ARM64 or x86_64) and download
the appropriate guest OS images when available.

Changes:
- Add HOST_ARCH detection using uname -m
- Normalize arm64 to aarch64, amd64 to x86_64
- Update Ubuntu/Ubuntu Server to use HOST_ARCH (converted to arm64/amd64)
- Update Fedora editions to filter by HOST_ARCH
- Update Alpine Linux to use HOST_ARCH

This allows ARM Macs to automatically download ARM64 Linux distributions
(Fedora, Alpine, Ubuntu daily builds) while still supporting x86_64 TCG
emulation for distributions that only provide x86_64 images.

Tested on: Apple M4 Pro (ARM) - successfully detects aarch64
2025-11-28 10:07:44 -05:00
TheMuso 703fe861f8 feat: Add Zorin 18 2025-11-01 09:30:51 +00:00
Lorenzo Villani 2311b95a14 fix(windows): make local account passwords never expire
Co-authored-by: bogiord <bogiord@users.noreply.github.com>
2025-10-20 11:15:45 +01:00
Lorenzo Villani 934ffacdd3 refactor(windows): don't install usbdk 2025-10-17 22:59:22 +01:00
Lorenzo Villani 3bb13330cc fix(windows): load viogpudo after Windows PE pass 2025-10-17 22:33:29 +01:00
Lorenzo Villani 6a34e59f7b fix(windows): remove E:\amd64\w10 from driver search paths
The E:\amd64\w10 directory contains vioscsi and viostor drivers, but
these are already included via E:\vioscsi\w10\amd64 and
E:\viostor\w10\amd64. This duplication causes issues with Windows 11
24H2 and later.
2025-10-17 22:33:29 +01:00
Phil Clifford 4a11725b1e fix: change iso fs for unattended iso
fixes #1621
2025-08-28 12:01:57 +01:00
Lorenzo a6367ccb78
fix: Arch Linux Mirror (#1709)
Use official Arch Linux HTTPS server over potentially out of date mirror
2025-08-17 18:02:42 +01:00
Phil Clifford 36082437e1 fix(ubuntu): just get the latest iso as the previous has been removed
They have left references to the  24.04.2 iso in the SHA256SUMS file but removed the iso.
We need to filter out the latest until they tidy up.
2025-08-17 18:00:14 +01:00
Daniel Napora 808caa1e74 fix(Trisquel): Add missing field separator (|) 2025-08-17 16:58:48 +00:00
Liam bd178bb4c3 chore: Document Fedora edition/variant change 2025-07-31 15:09:56 +01:00
Liam f6b36c4ec5 fix: Accept edition as fedora variant 2025-07-31 15:09:56 +01:00
Alan Pope d912402e32 fix(macos) Add support for gnu hash algo 2025-07-29 18:16:31 +00:00
mag37 7d7332a1fc
fix: quickget - Handle Fedora KDE 42 (and up) as edition and not as spin. (#1697) 2025-07-21 19:28:36 +01:00
Kenichi Kamiya e4c2c5cf2b fix(nixos): support only latest 25.05
Previously, edition fallback logic allowed downloading the correct
"graphical" ISO for 25.05 even when specifying "plasma6" or "gnome".
However, the VM_PATH and directory name still used the original edition
(e.g., nixos-25.05-plasma6). Fixing this would require more complicated
changes to the code.

NixOS 24.11 will reach EOL on 2025-06-30, about two weeks from now.
2025-07-07 12:27:34 +01:00
Kenichi Kamiya 91e06a64fd fix(nixos): update editions
- Drop legacy 23.11 support; now only 24.11 or later is allowed
- Fallback to "graphical" edition except 24.11
- Do not display "graphical" edition to users;
  it is not supported in 24.11
2025-07-07 12:27:34 +01:00
TheMuso 9f90d46ea1
feat: Add support for FreeDOS 1.4 (#1678) 2025-06-18 02:45:25 +01:00
Liam 0e6be87757 fix(solus): update editions function to find correct editions 2025-05-26 19:22:51 +00:00
Phil Clifford 517ba94203 fix: adapt openindiana release search to updated website 2025-05-25 02:32:19 +00:00
Lorenzo 2129abf060 Fixed parrotsec urls 2025-05-11 14:24:49 +01:00
Liam 6b51f740a4 feat: Add Bazzite Deck; fix: Correct bazzite filenames 2025-04-17 17:49:05 +00:00
Phil Clifford 727708b1ae
fix: handle pclinuxos inconsistent naming (#1629)
* fix: handle inconsistent filenaming

They name releases with a dash for mate and a dot for the others.  No bets on when they notice this and make it consistent.  In case they somehow get a dashed name first swap the dotty ones too.
2025-04-15 13:18:07 +01:00
user20198 0c4e257048
feat: Add PCLinuxOS to quickget (#1610)
* Add PCLinuxOS to quickget


---------

Co-authored-by: Phil Clifford <philclifford@users.noreply.github.com>
2025-04-12 23:07:25 +01:00
Anatoli Babenia 616d10b594
feat(quickget): Show download path (#1516)
* feat(quickget): Show full download path


---------

Co-authored-by: Phil Clifford <philclifford@users.noreply.github.com>
2025-04-12 21:50:08 +01:00
Phil Clifford 40f86c0af1 chore: move arco to author-requested release source 2025-04-12 20:43:28 +00:00
Liam 9dc70808c5 fix: Better match parrotsec releases 2025-04-12 20:29:09 +00:00
Phil Clifford 3da9edc995
fix: correctly match editions (#1585)
Closes #1583
2025-02-09 16:53:45 -08:00
Liam f87cc613ab
fix: Correctly throw errors when an invalid option is passed (#1560)
* fix: Correctly throw errors when a parameter is not fully matched
2025-02-01 14:39:48 +00:00
Liam 70b531c463
fix: Allow non-v24 arcolinux releases (#1575) 2025-02-01 14:37:21 +00:00
Liam eb0fd03137
fix: Disregard curl configuration (#1571) 2025-01-29 10:54:23 +00:00
hyperpuncher 20b17cb129
feat: Linux Mint 22.1 support (#1563) 2025-01-18 15:12:21 -08:00
debuggerx01 37190c7b3a
fix(macos): Correct version user receives from quickget; add sequoia (#1550)
* fix(macos): quickget macos sonoma download sequoia BaseSystem.dmg

* feat: Add macOS Sequoia

---------

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2025-01-15 11:36:50 -06:00
zenobit 622ecfd4a4
fix(siduction): Update to Shine_on+ (#1549) 2025-01-05 03:11:39 +00:00
debuggerx01 238ec98071
fix(windows): Fix the download of the Chinese Windows ISO. (#1540)
* Fix the download of the Chinese Windows ISO.
2024-12-30 21:54:14 +00:00
Silke Hofstra 652708388e fix(solus): update Solus URLs
The latest Solus release has changed the naming of ISOs:

- Update all related functions to support the ISO name
  format used in the latest release.
- Use the directory listings in order to support more releases in the future.
2024-12-30 10:58:46 +00:00
Phil Clifford 373f133ac7
fix(easyos): move to dynamic release behaviour (#1494)
The static list included a release that has been removed
and also  hard coded mappings for 2023 and 2024. This dynamically determines the latest two years
and finds available releases in those years, so will still provide reasonable service next year.
2024-12-30 10:58:18 +00:00
lwbt 42c83f7e6a
fix: TrueNAS Scale download (#1539)
* fix: TrueNAS Scale download

* Update endless to 6.0.4
2024-12-30 10:57:02 +00:00
Jack Wasey 6334e82a42
feat: Add proxmox-ve (#1518)
* Add proxmox-ve

* Dynamically detect proxmox-ve releases

* fix: Address shellcheck lint

---------

Co-authored-by: Jack antibes admin <jmin@antibes.walton>
Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2024-12-30 10:56:16 +00:00
Liam 2c22f0c31e
fix(windows): Use new Microsoft JSON API to fix URL generation (#1534) 2024-12-20 17:52:09 +00:00
Daniel Napora 122992112b
feat: Add Mabox Linux (#1531) 2024-12-19 16:27:37 +00:00
Phil Clifford e27aa30804
feat: add support for elementary 8.0 (#1533) 2024-12-18 20:47:18 +00:00
Gordon Schulz ec0f276abf
fix(fedora): Check whether the link value contains an actual .iso file (#1503)
* fix(fedora): Check whether the link value contains an actual .iso file

Also remove the SHA256 requirement. Fedora provides these for all links
now.
Fixes #1502

* refactor(fedora): Use more concise function to filter out non-ISO files

---------

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2024-11-08 02:12:41 -06:00
Phil Clifford 16a43af329
fix(fedora): handle the space in the beta release (#1492)
* fix(fedora): handle the space in the beta release

fixes #1462
adjust the RELEASE to remove and replace the space

* fix(fedora): only list available editions where a release is selected

fixes #1493
2024-10-29 12:01:33 +00:00
Martin M. S. Pedersen 17a5971e49 fix: Use HTTPS URLs wherever possible 2024-10-21 15:44:06 -05:00
Zeglius 3f7bc4a77a fix: increase default disk size for bazzite to 64GB minimum 2024-10-21 15:37:39 -05:00