Merge pull request #322 from philclifford/merging-updated-distros

Merging updated distros - Consolidated 15 PRs
This commit is contained in:
Martin Wimpress 2022-02-17 09:44:10 +00:00 committed by GitHub
commit f2f0c11ed6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 531 additions and 28 deletions

View File

@ -32,13 +32,30 @@ comprehensive support for macOS and Windows**.
* **Windows** 8.1, 10 and 11 including TPM 2.0
* [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu flavours](https://ubuntu.com/download/flavours)**
* [Debian](https://www.debian.org/) (bullseye with all the official and non-free DE variants)
* [Fedora](https://getfedora.org/) & openSUSE ([Leap](https://get.opensuse.org/leap/), [Tumbleweed](https://get.opensuse.org/tumbleweed/), [MicroOS](https://microos.opensuse.org/))
* [Fedora](https://getfedora.org/)
& openSUSE ([Leap](https://get.opensuse.org/leap/)
, [Tumbleweed](https://get.opensuse.org/tumbleweed/)
, [MicroOS](https://microos.opensuse.org/))
* [Alma Linux](https://almalinux.org/)
* [Linux Mint](https://linuxmint.com/) (Cinnamon, MATE, and XFCE), [elementary OS](https://elementary.io/), [Pop!_OS](https://pop.system76.com/)
* [Arch Linux](https://www.archlinux.org/), [Kali](https://www.kali.org/),[Garuda](https://garudalinux.org/), [ZorinOS](https://zorin.com/os/) & [NixOS](https://nixos.org/)
* [Oracle Linux](https://www.oracle.com/linux/) and [Rocky Linux](https://rockylinux.org/)
* [Alpine Linux](https://www.alpinelinux.org/)
* [Linux Mint](https://linuxmint.com/) (Cinnamon, MATE, and XFCE)
, [elementary OS](https://elementary.io/)
, [Pop!_OS](https://pop.system76.com/)
* [Arch Linux](https://www.archlinux.org/)
, [ArcoLinux](https://www.arcolinux.info/)
, [CachyOS](https://cachyos.org/)
, [Kali](https://www.kali.org/)
, [Garuda](https://garudalinux.org/)
, [Gentoo Linux](https://www.gentoo.org/)
, [Manjaro](https://manjaro.org)
, [NixOS](https://nixos.org/)
& [ZorinOS](https://zorin.com/os/)
* [Oracle Linux](https://www.oracle.com/linux/)
and [Rocky Linux](https://rockylinux.org/)
* [Regolith Linux](https://regolith-linux.org/) (Release 1.6 and latest 2.0.0 pre-release )
* [FreeBSD](https://www.freebsd.org/) & [OpenBSD](https://www.openbsd.org/)
* [FreeBSD](https://www.freebsd.org/)
& [OpenBSD](https://www.openbsd.org/)
* [Haiku](https://www.haiku-os.org/)
* Full SPICE support including host/guest clipboard sharing
* VirtIO-webdavd file sharing for Linux and Windows guests
* VirtIO-9p file sharing for Linux and macOS guests
@ -177,14 +194,19 @@ preferred flavour.
`quickget` also supports:
* `alma`
* `alpine`
* `archlinux`
* `arcolinux`
* `cachyos`
* `debian`
* `elementary`
* `fedora`
* `garuda`
* `gentoo`
* `kali`
* `kdeneon`
* `linuxmint`
* `mxlinux`
* `nixos`
* `opensuse`
* `oraclelinux`
@ -329,15 +351,28 @@ tpm="on"
* `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
* `tpm="on"` instructs `quickemu` to create a software emulated TPM device using `swtpm`.
## BSD Guests
## Haiku Guests
`quickemu` supports FreeBSD and OpenBSD.
`quickemu` supports [Haiku](https://www.haiku-os.org/).
```bash
quickget freebsd 13_0
quickemu --vm freebsd-13_0.conf
quickget quickget haiku r1beta3-x86_64
quickemu --vm haiku-r1beta3-x86_64.conf
```
At the moment the only way to share files between host and a Haiku guest is by
using SSH (having a SSH server running on the host):
On guest:
```bash
scp example.txt user@host-local-ip:/home/user # sending a file from guest to host
scp user@host-local-ip:/home/user/example.txt . # receiving a file from host to guest
```
`quickget` cannot automatically download and create virtual machines for Haiku
nightly versions, but they work if the ISO and configuration are set up manually.
# SPICE
The following features are available while using the SPICE protocol:

View File

@ -228,6 +228,7 @@ function vm_boot() {
local KERNEL_NODE=""
local KERNEL_VER="?"
local LSB_DESCRIPTION="Unknown OS"
local MACHINE_TYPE="q35"
local MAC_BOOTLOADER=""
local MAC_MISSING=""
local MAC_DISK_DEV="ide-hd,bus=ahci.2"
@ -383,7 +384,7 @@ function vm_boot() {
# https://bugzilla.redhat.com/show_bug.cgi?id=1929357#c5
case ${secureboot} in
on)
if [ -e "/usr/share/OVMF/OVMF_CODE_4M.secboot.fd" ]; then
if [ -e "/usr/share/OVMF/OVMF_CODE_4M.secboot.fd" ]; then
EFI_CODE="/usr/share/OVMF/OVMF_CODE_4M.secboot.fd"
efi_vars "/usr/share/OVMF/OVMF_VARS_4M.fd" "${EFI_VARS}"
elif [ -e "/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd" ]; then
@ -392,9 +393,18 @@ function vm_boot() {
elif [ -e "/usr/share/OVMF/x64/OVMF_CODE.secboot.fd" ]; then
EFI_CODE="/usr/share/OVMF/x64/OVMF_CODE.secboot.fd"
efi_vars "/usr/share/OVMF/x64/OVMF_VARS.fd" "${EFI_VARS}"
elif [ -e "/usr/share/edk2-ovmf/OVMF_CODE.fd" ]; then
elif [ -e "/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd" ]; then
EFI_CODE="/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd"
efi_vars "/usr/share/edk2-ovmf/OVMF_VARS.fd" "${EFI_VARS}"
elif [ -e "/usr/share/qemu/ovmf-x86_64-smm-ms-code.bin" ]; then
EFI_CODE="/usr/share/qemu/ovmf-x86_64-smm-ms-code.bin"
efi_vars "/usr/share/qemu/ovmf-x86_64-smm-ms-vars.bin" "${EFI_VARS}"
elif [ -e "/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd" ]; then
EFI_CODE="/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd"
efi_vars "/usr/share/edk2-ovmf/OVMF_VARS.fd" "${EFI_VARS}"
elif [ -e "/usr/share/qemu/edk2-x86_64-secure-code.fd" ]; then
EFI_CODE="/usr/share/qemu/edk2-x86_64-secure-code.fd"
efi_vars "/usr/share/qemu/edk2-x86_64-code.fd" "${EFI_VARS}"
else
echo "ERROR! SecureBoot was requested but no SecureBoot capable firmware was found."
echo " Please install OVMF firmware."
@ -417,6 +427,12 @@ function vm_boot() {
elif [ -e "/usr/share/edk2-ovmf/OVMF_CODE.fd" ]; then
EFI_CODE="/usr/share/edk2-ovmf/OVMF_CODE.fd"
efi_vars "/usr/share/edk2-ovmf/OVMF_VARS.fd" "${EFI_VARS}"
elif [ -e "/usr/share/qemu/ovmf-x86_64-4m-code.bin" ]; then
EFI_CODE="/usr/share/qemu/ovmf-x86_64-4m-code.bin"
efi_vars "/usr/share/qemu/ovmf-x86_64-4m-vars.bin" "${EFI_VARS}"
elif [ -e "/usr/share/qemu/edk2-x86_64-code.fd" ]; then
EFI_CODE="/usr/share/qemu/edk2-x86_64-code.fd"
efi_vars "/usr/share/qemu/edk2-x86_64-code.fd" "${EFI_VARS}"
else
echo "ERROR! EFI boot requested but no EFI firmware found."
echo " Please install OVMF firmware."
@ -463,6 +479,29 @@ function vm_boot() {
disk_size="16G"
fi
;;
kolibrios)
CPU="-cpu qemu32,kvm=on"
if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then
CPU="${CPU},topoext"
fi
MACHINE_TYPE="pc"
NET_DEVICE="rtl8139"
GUEST_TWEAKS="-boot d"
if [ -z "${disk_size}" ]; then
disk_size="256M"
fi
;;
haiku)
CPU="-cpu host,kvm=on"
MACHINE_TYPE="pc"
NET_DEVICE="rtl8139"
if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then
CPU="${CPU},topoext"
fi
if [ -z "${disk_size}" ]; then
disk_size="32G"
fi
;;
macos)
#https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/
# A CPU with SSE4.1 support is required for >= macOS Sierra
@ -591,7 +630,7 @@ function vm_boot() {
fi
fi
if [ "${DISK_USED}" == "yes" ]; then
if [ "${DISK_USED}" == "yes" ] && [ "${guest_os}" != "kolibrios" ]; then
# If there is a disk image that appears to be used do not boot from installation media.
iso=""
img=""
@ -833,7 +872,7 @@ function vm_boot() {
# shellcheck disable=SC2054,SC2206,SC2140
args+=(-name ${VMNAME},process=${VMNAME} -pidfile "${VMDIR}/${VMNAME}.pid"
-enable-kvm -machine q35,smm=${SMM},vmport=off ${GUEST_TWEAKS}
-enable-kvm -machine ${MACHINE_TYPE},smm=${SMM},vmport=off ${GUEST_TWEAKS}
${CPU} ${SMP}
-m ${RAM_VM} ${BALLOON}
-smbios type=2,manufacturer="Quickemu Project",product="Quickemu",version="${VERSION}",serial="0xDEADBEEF",location="quickemu.com",asset="${VMNAME}"
@ -891,6 +930,13 @@ function vm_boot() {
args+=(-drive if=floppy,format=raw,file="${floppy}")
fi
# Since there is bug (probably) in KolibriOS: cdrom indexes 0 or 1 make system show an extra unexisting iso, so we use index=2
if [ -n "${iso}" ] && [ "${guest_os}" == "kolibrios" ]; then
# shellcheck disable=SC2054
args+=(-drive media=cdrom,index=2,file="${iso}")
iso=""
fi
if [ -n "${iso}" ]; then
# shellcheck disable=SC2054
args+=(-drive media=cdrom,index=0,file="${iso}")
@ -922,6 +968,11 @@ function vm_boot() {
# shellcheck disable=SC2054,SC2206
args+=(-device ${MAC_DISK_DEV},drive=SystemDisk
-drive id=SystemDisk,if=none,format=qcow2,file="${disk_img}" ${STATUS_QUO})
elif [ "${guest_os}" == "kolibrios" ]; then
# shellcheck disable=SC2054,SC2206
args+=(-device ahci,id=ahci
-device ide-hd,bus=ahci.0,drive=SystemDisk
-drive id=SystemDisk,if=none,format=qcow2,file="${disk_img}" ${STATUS_QUO})
else
# shellcheck disable=SC2054,SC2206
args+=(-device virtio-blk-pci,drive=SystemDisk

447
quickget
View File

@ -36,15 +36,32 @@ function pretty_name() {
SIMPLE_NAME="${1}"
case ${SIMPLE_NAME} in
alma) PRETTY_NAME="Alma Linux";;
alpine) PRETTY_NAME="Alpine Linux";;
android) PRETTY_NAME="Android x86";;
archlinux) PRETTY_NAME="Arch Linux";;
arcolinux) PRETTY_NAME="Arco Linux";;
cachyos) PRETTY_NAME="CachyOS";;
elementary) PRETTY_NAME="elementary OS";;
freebsd) PRETTY_NAME="FreeBSD";;
gentoo) PRETTY_NAME="Gentoo";;
garuda) PRETTY_NAME="Garuda Linux";;
haiku) PRETTY_NAME="Haiku";;
kdeneon) PRETTY_NAME="KDE Neon";;
kolibrios) PRETTY_NAME="KolibriOS";;
linuxmint-cinnamon) PRETTY_NAME="Linux Mint Cinnamon";;
linuxmint-mate) PRETTY_NAME="Linux Mint MATE";;
linuxmint-xfce) PRETTY_NAME="Linux Mint XFCE";;
manjaro-xfce) PRETTY_NAME="Manjaro XFCE";;
manjaro-kde) PRETTY_NAME="Manjaro KDE";;
manjaro-gnome) PRETTY_NAME="Manjaro Gnome";;
manjaro-budgie) PRETTY_NAME="Manjaro Budgie";;
manjaro-cinnamon) PRETTY_NAME="Manjaro Cinnamon";;
manjaro-deepin) PRETTY_NAME="Manjaro Deepin";;
manjaro-i3) PRETTY_NAME="Manjaro i3";;
manjaro-mate) PRETTY_NAME="Manjaro MATE";;
mxlinux-xfce) PRETTY_NAME="MX Linux XFCE";;
mxlinux-kde) PRETTY_NAME="MX Linux KDE";;
mxlinux-fluxbox) PRETTY_NAME="MX Linux Fluxbox";;
nixos-gnome) PRETTY_NAME="NixOS Gnome";;
nixos-plasma5) PRETTY_NAME="NixOS KDE";;
nixos-minimal) PRETTY_NAME="NixOS Minimal";;
@ -59,6 +76,7 @@ function pretty_name() {
ubuntu-kylin) PRETTY_NAME="Ubuntu Kylin";;
ubuntu-mate) PRETTY_NAME="Ubuntu MATE";;
ubuntu-studio) PRETTY_NAME="Ubuntu Studio";;
void) PRETTY_NAME="Void Linux";;
zorin) PRETTY_NAME="Zorin OS";;
*) PRETTY_NAME="${SIMPLE_NAME^}";;
esac
@ -111,6 +129,10 @@ function list_csv() {
FUNC="ubuntu"
elif [[ "${OS}" == *"linuxmint"* ]]; then
FUNC="linuxmint"
elif [[ "${OS}" == *"manjaro"* ]]; then
FUNC="manjaro"
elif [[ "${OS}" == *"mxlinux"* ]]; then
FUNC="mxlinux"
elif [[ "${OS}" == *"nixos"* ]]; then
FUNC="nixos"
else
@ -127,8 +149,12 @@ function list_csv() {
DOWNLOADER="${DL}"
elif [[ "${OS}" == *"ubuntu"* ]] && [ "${RELEASE}" == "devel" ]; then
DOWNLOADER="${DL}"
elif [ "${OS}" == "cachyos" ]; then
DOWNLOADER="${DL}"
elif [ "${OS}" == "garuda" ]; then
DOWNLOADER="${DL}"
elif [ "${OS}" == "gentoo" ]; then
DOWNLOADER="${DL}"
elif [[ "${OS}" == *"kdeneon"* ]]; then
DOWNLOADER="${DL}"
else
@ -161,19 +187,36 @@ function list_csv() {
function os_support() {
echo alma \
alpine \
android \
archlinux \
arcolinux \
cachyos \
debian \
elementary \
freebsd \
fedora \
garuda \
gentoo \
haiku \
kali \
kdeneon \
kolibrios \
kubuntu \
linuxmint-cinnamon \
linuxmint-mate \
linuxmint-xfce \
manjaro-xfce \
manjaro-kde \
manjaro-gnome \
manjaro-budgie \
manjaro-cinnamon \
manjaro-deepin \
manjaro-i3 \
manjaro-mate \
mxlinux-xfce \
mxlinux-kde \
mxlinux-fluxbox \
nixos-gnome \
nixos-plasma5 \
nixos-minimal \
@ -186,11 +229,13 @@ function os_support() {
regolith \
rockylinux \
solus \
tails \
ubuntu \
ubuntu-budgie \
ubuntu-kylin \
ubuntu-mate \
ubuntu-studio \
void \
windows \
xubuntu \
zorin
@ -202,6 +247,14 @@ function releases_alma() {
8.5
}
function releases_alpine() {
echo latest \
3.12 \
3.13 \
3.14 \
3.15
}
function releases_android() {
echo 9.0 \
8.1 \
@ -217,21 +270,28 @@ function releases_archlinux() {
echo latest
}
function releases_arcolinux() {
echo latest
}
# later refactor these DE variants like languages and avoid the arch ?
# all these are available with a "nonfree" option too
function releases_debian() {
echo 11.1.0-amd64-cinnamon \
11.1.0-amd64-gnome \
11.1.0-amd64-kde \
11.1.0-amd64-lxde \
11.1.0-amd64-lxqt \
11.1.0-amd64-mate \
11.1.0-amd64-standard \
11.1.0-amd64-xfce
echo cinnamon \
gnome \
kde \
lxde \
lxqt \
mate \
standard \
xfce
}
function releases_cachyos() {
echo 2022.01.09
}
function releases_elementary() {
echo 6.0
echo 6.1
}
function releases_freebsd(){
@ -245,6 +305,10 @@ function releases_fedora(){
35
}
function releases_gentoo(){
echo latest
}
function releases_garuda() {
echo bspwm \
dr460nized \
@ -262,6 +326,11 @@ function releases_garuda() {
cinnamon
}
function releases_haiku() {
echo r1beta3-x86_64 \
r1beta3-x86_gcc2h
}
function releases_kali() {
echo latest \
weekly
@ -274,10 +343,18 @@ function releases_kdeneon() {
developer
}
function releases_kolibrios() {
echo latest
}
function releases_linuxmint(){
echo 20.2
}
function releases_mxlinux(){
echo 21
}
function releases_nixos(){
echo 21.05 \
21.11
@ -314,9 +391,20 @@ function releases_macos() {
monterey
}
function releases_manjaro() {
case ${OS} in
*xfce|*kde|*gnome) echo full \
minimal \
minimal-lts;;
*budgie|*cinnamon|*deepin|*i3|*mate) echo full \
minimal;;
esac
}
function releases_popos() {
echo 20.04 \
21.04
21.04 \
21.10
}
function releases_regolith() {
@ -343,6 +431,10 @@ function releases_solus() {
4.3-plasma
}
function releases_tails() {
echo stable
}
function releases_ubuntu() {
echo bionic \
focal \
@ -352,6 +444,13 @@ function releases_ubuntu() {
canary
}
function releases_void() {
echo base \
musl \
xfce \
xfce-musl
}
function languages_windows() {
LANGS=(Arabic
"Brazilian Portuguese"
@ -513,15 +612,24 @@ function make_vm_config() {
if [ "${OS}" == "alma" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "alpine" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "android" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "archlinux" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "arcolinux" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "debian" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "cachyos" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "elementary" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
@ -537,12 +645,27 @@ function make_vm_config() {
elif [ "${OS}" == "garuda" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "gentoo" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "haiku" ]; then
GUEST="haiku"
IMAGE_TYPE="iso"
elif [ "${OS}" == "kdeneon" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "kolibrios" ]; then
GUEST="kolibrios"
IMAGE_TYPE="iso"
elif [[ "${OS}" == *"linuxmint"* ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [[ "${OS}" == *"manjaro"* ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [[ "${OS}" == *"mxlinux"* ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [[ "${OS}" == *"nixos"* ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
@ -567,9 +690,15 @@ function make_vm_config() {
elif [ "${OS}" == "solus" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [[ "${OS}" == "tails" ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [[ "${OS}" == *"ubuntu"* ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "void" ]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "macos" ]; then
GUEST="macos"
IMAGE_TYPE="img"
@ -596,25 +725,48 @@ EOF
if [ -n "${ISO_FILE}" ]; then
echo "fixed_iso=\"${VM_PATH}/${ISO_FILE}\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "alma" ] && [ ${ISOTYPE} == "dvd" ]; then
echo "disk_size=\"32G\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "kolibrios" ]; then
echo "boot=\"legacy\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "openbsd" ]; then
echo "boot=\"legacy\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "tails" ]; then
echo "boot=\"legacy\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "macos" ]; then
echo "macos_release=\"${RELEASE}\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "cachyos" ]; then
echo "disk_size=\"32G\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "garuda" ]; then
echo "disk_size=\"32G\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "haiku" ]; then
echo "boot=\"legacy\"" >> "${OS}-${RELEASE}.conf"
echo "disk_size=\"32G\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "oraclelinux" ]; then
echo "disk_size=\"20G\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "void" ]; then
echo "disk_size=\"20G\"" >> "${OS}-${RELEASE}.conf"
fi
if [ "${OS}" == "zorin" ]; then
case ${RELEASE} in
15education64|15edulite64|15edulite32)
@ -692,6 +844,30 @@ function get_alma() {
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_alpine() {
local HASH=""
local ISO=""
local URL=""
local VERSION=""
local BRANCH=""
validate_release "releases_alpine"
if [[ "${RELEASE}" == "latest" ]]; then
BRANCH="latest-stable"
else
BRANCH="v${RELEASE}"
fi
MANIFESTURL="https://dl-cdn.alpinelinux.org/alpine/${BRANCH}/releases/x86_64/latest-releases.yaml"
VERSION=$(wget -qO- "${MANIFESTURL}" | awk '/"Xen"/{found=0} {if(found) print} /"Virtual"/{found=1}' | grep 'version:' | awk '{print $2}')
ISO="alpine-virt-${VERSION}-x86_64.iso"
URL="https://dl-cdn.alpinelinux.org/alpine/${BRANCH}/releases/x86_64/${ISO}"
web_get "${URL}" "${VM_PATH}"
HASH=$(wget -qO- "${MANIFESTURL}" | awk '/"Xen"/{found=0} {if(found) print} /"Virtual"/{found=1}' | grep 'sha256:' | awk '{print $2}')
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_archlinux() {
local HASH=""
local ISO=""
@ -708,6 +884,36 @@ function get_archlinux() {
make_vm_config "${ISO}"
}
function get_arcolinux() {
local HASH=""
local ISO=""
local URL=""
local VERSION=""
validate_release "releases_arcolinux"
VERSION=$(wget -q -O- 'https://ant.seedhost.eu/arcolinux/.quick/info' | cut -d " " -f 2)
URL="https://ant.seedhost.eu/arcolinux/.quick/"
ISO="arcolinuxl-${VERSION}-x86_64.iso"
HASH=$(wget -q -O- 'https://ant.seedhost.eu/arcolinux/.quick/arcolinuxl-'${VERSION}'-x86_64.iso.sha1' | cut -d " " -f 1)
web_get "${URL}/${ISO}" "${VM_PATH}"
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_cachyos() {
local HASH=""
local ISO=""
local URL=""
local VERSION=""
validate_release "releases_cachyos"
#ISO="cachyos-cli-${RELEASE}-x86_64.iso"
ISO="cachyos-${RELEASE}-x86_64.iso"
URL="https://mirror.cachyos.org/ISO"
web_get "${URL}/${ISO}" "${VM_PATH}"
make_vm_config "${ISO}"
}
function get_debian() {
local HASH=""
@ -741,11 +947,11 @@ function get_elementary() {
local ISO=""
local URL=""
local B66tim=""
local isotag="20211218-rc"
validate_release "releases_elementary"
B66tim=$(date +%s | base64 )
ISO="elementaryos-${RELEASE}-stable.20211005.iso"
ISO="elementaryos-${RELEASE}-stable.${isotag}.iso"
# TODO: derive region from geoIP
URL="https://ams3.dl.elementary.io/download/${B66tim}=/${ISO}"
web_get "${URL}" "${VM_PATH}"
@ -793,6 +999,27 @@ function get_fedora() {
make_vm_config "${ISO}"
}
function get_gentoo() {
local HASH=""
local ISO=""
local URL=""
local LOCAT=""
local INSTALLMIN=""
validate_release "releases_gentoo"
eval $( wget -O/tmp/gentoolatest https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/${RELEASE}-iso.txt 2>&1 |grep Location | awk '{print "LOCAT="$2}' )
LOCAT=$(dirname ${LOCAT})
eval $( awk '/admincd-amd64/ {print "ADMIN="$1}; /install-amd64-minimal/ {print "INSTALLMIN="$1}' /tmp/gentoolatest )
URL="${LOCAT}/${INSTALLMIN}"
ISO=$(basename "${INSTALLMIN}" )
web_get "${URL}" "${VM_PATH}"
HASH=$(wget -q -O- ${LOCAT}/${INSTALLMIN}.DIGESTS|grep -e iso|grep -v -e CONT -e catalyst|cut -d\ -f1)
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_kali() {
local HASH=""
local ISO=""
@ -828,6 +1055,23 @@ function get_kdeneon() {
make_vm_config "${ISO}"
}
function get_kolibrios() {
local HASH=""
local ISO=""
local URL=""
validate_release "releases_kolibrios"
#URL="https://builds.kolibrios.org/eng/${RELEASE}.7z"
ISO="kolibri.iso"
URL="https://builds.kolibrios.org/eng/${ISO}"
web_get "${URL}" "${VM_PATH}"
#7z e "${VM_PATH}/${RELEASE}.7z" "kolibri.iso"
#ISO="kolibrios-${RELEASE}.iso"
#mv "kolibri.iso" "${VM_PATH}/${ISO}"
#rm "${VM_PATH}/${RELEASE}.7z"
make_vm_config "${ISO}"
}
function get_linuxmint() {
local FLAVOR=""
local HASH=""
@ -842,7 +1086,74 @@ function get_linuxmint() {
web_get "${URL}" "${VM_PATH}"
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_manjaro() {
local FLAVOR=""
local MANIFESTURL=""
# local ISOKEY=""
local HASHKEY=""
local HASH=""
local ISO=""
local URL=""
validate_release "releases_manjaro"
FLAVOR=$(echo "${OS}" | cut -d'-' -f2)
case ${FLAVOR} in
xfce|kde|gnome) BRANCH="official";;
budgie|cinnamon|deepin|i3|mate) BRANCH="community";;
esac
if [[ ${RELEASE} == "full" ]]; then
KEY="Download_x64 = "
HASHKEY="Download_x64_Checksum = "
elif [[ ${RELEASE} == "minimal" ]]; then
KEY="Download_Minimal_x64 = "
HASHKEY="Download_Minimal_x64_Checksum = "
elif [[ ${RELEASE} == "minimal" ]]; then
KEY="Download_Minimal_lts = "
HASHKEY="Download_Minimal_x64_Checksum_lts = "
fi
MANIFESTURL="https://gitlab.manjaro.org/webpage/manjaro-homepage/-/raw/master/site/content/downloads/${BRANCH}/${FLAVOR}.md"
URL="$(wget -qO- ${MANIFESTURL} | grep "${KEY}" | awk '{print $3}' | tr -d '"')"
ISO="$(echo $URL | awk -F "/" '{print $6}')"
HASH=$(wget -qO- ${MANIFESTURL} | grep "${HASHKEY}" | awk '{print $3}' | tr -d '"')
web_get "${URL}" "${VM_PATH}"
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_mxlinux() {
local FLAVOR=""
local HASH=""
local ISO=""
local URL=""
local BASE_URL=""
validate_release "releases_mxlinux"
FLAVOR=$(echo "${OS}" | cut -d'-' -f2)
if [[ "$FLAVOR" == "xfce" ]]; then
ISO="MX-${RELEASE}_x64.iso"
BASE_URL="https://sourceforge.net/projects/mx-linux/files/Final/Xfce/"
elif [[ "$FLAVOR" == "kde" ]]; then
ISO="MX-${RELEASE}_KDE_x64.iso"
BASE_URL="https://sourceforge.net/projects/mx-linux/files/Final/KDE/"
elif [[ "$FLAVOR" == "fluxbox" ]]; then
ISO="MX-${RELEASE}_fluxbox_x64.iso"
BASE_URL="https://sourceforge.net/projects/mx-linux/files/Final/Fluxbox/"
fi
URL="${BASE_URL}/${ISO}"
web_get "${URL}" "${VM_PATH}"
web_get "${URL}.sha256" "${VM_PATH}"
HASH=$(cat "${VM_PATH}/${ISO}.sha256" | cut -d' ' -f1)
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_nixos() {
local FLAVOR=""
local HASH=""
@ -857,6 +1168,7 @@ function get_nixos() {
web_get "${URL}" "${VM_PATH}"
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_openbsd() {
local HASH=""
@ -872,6 +1184,40 @@ function get_openbsd() {
make_vm_config "${ISO}"
}
function get_void() {
local HASH=""
local ISO=""
local URL=""
local HASH_URL=""
validate_release "releases_void"
DATE=$(wget -q -O- "https://mirror.fit.cvut.cz/voidlinux/live/current/sha256sum.txt" | awk 'NR == 1' |cut -d'.' -f1| cut -d'-' -f4)
URL="http://mirror.fit.cvut.cz/voidlinux/live/current"
case ${RELEASE} in
base)
ISO="void-live-x86_64-${DATE}.iso";;
musl)
ISO="void-live-x86_64-musl-${DATE}.iso";;
xfce)
ISO="void-live-x86_64-${DATE}-xfce.iso";;
xfce-musl)
ISO="void-live-x86_64-musl-${DATE}-xfce.iso";;
esac
case ${RELEASE} in
base)
HASH="$(wget -q -O- "https://mirror.fit.cvut.cz/voidlinux/live/current/sha256sum.txt" | grep "void-live-x86_64-${DATE}.iso" | cut -d' ' -f4)";;
musl)
HASH="$(wget -q -O- "https://mirror.fit.cvut.cz/voidlinux/live/current/sha256sum.txt" | grep "void-live-x86_64-musl-${DATE}.iso" | cut -d' ' -f4)";;
xfce)
HASH="$(wget -q -O- "https://mirror.fit.cvut.cz/voidlinux/live/current/sha256sum.txt" | grep "void-live-x86_64-${DATE}-xfce.iso" | cut -d' ' -f4)";;
xfce-musl)
HASH="$(wget -q -O- "https://mirror.fit.cvut.cz/voidlinux/live/current/sha256sum.txt" | grep "void-live-x86_64-musl-${DATE}.iso" | cut -d' ' -f4)";;
esac
web_get "${URL}/${ISO}" "${VM_PATH}"
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_zorin() {
local ISO=""
local URL=""
@ -941,10 +1287,14 @@ function get_opensuse() {
ISO="openSUSE-MicroOS-DVD-x86_64-Current.iso"
URL="https://download.opensuse.org/tumbleweed/iso/${ISO}"
HASH=$(wget -q -O- "${URL}.sha256" | cut -d' ' -f1)
else
elif [ "$RELEASE" == 15.0 ] || [ "$RELEASE" == 15.1 ]; then
ISO="openSUSE-Leap-${RELEASE}-DVD-x86_64.iso"
URL="https://download.opensuse.org/distribution/leap/${RELEASE}/iso/${ISO}"
HASH=$(wget -q -O- "${URL}.sha256" | cut -d' ' -f1)
else
ISO="openSUSE-Leap-${RELEASE}-DVD-x86_64-Current.iso"
URL="https://download.opensuse.org/distribution/leap/${RELEASE}/iso/${ISO}"
HASH=$(wget -q -O- "${URL}.sha256" | cut -d' ' -f1)
fi
web_get "${URL}" "${VM_PATH}"
check_hash "${ISO}" "${HASH}"
@ -1100,6 +1450,18 @@ function get_regolith() {
make_vm_config "${ISO}"
}
function get_tails() {
validate_release "releases_tails"
RELEASE_JSON_URL="https://tails.boum.org/install/v2/Tails/amd64/${RELEASE}/latest.json"
RELEASE_JSON="$(wget -q -O- "$RELEASE_JSON_URL")"
URL=$(echo "$RELEASE_JSON" | jq -r '.installations[0]."installation-paths"[]|select(.type=="iso")|."target-files"[0].url')
HASH=$(echo "$RELEASE_JSON" | jq -r '.installations[0]."installation-paths"[]|select(.type=="iso")|."target-files"[0].sha256')
ISO=$(echo "${URL}" | sed -e "s/.*\/\([^\/]*\)$/\1/")
web_get "${URL}" "${VM_PATH}"
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function get_ubuntu() {
local DEVEL="daily-live"
@ -1149,6 +1511,7 @@ function get_ubuntu() {
make_vm_config "${ISO}"
fi
}
function get_garuda() {
local HASH=""
local ISO=""
@ -1185,6 +1548,21 @@ function get_garuda() {
make_vm_config "${OS}-${RELEASE}.iso"
}
function get_haiku() {
local ISO=""
local URL=""
local HASH=""
validate_release "releases_haiku"
ISO="haiku-${RELEASE}-anyboot.iso"
URL="https://cdn.haiku-os.org/haiku-release/$(echo $RELEASE | awk -F '-' '{print $1}')/${ISO}"
HASH=$(wget -q -O- ${URL}.sha256 | grep "${ISO}" | cut -d' ' -f4)
web_get "${URL}" "${VM_PATH}"
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
}
function unattended_windows() {
cat << 'EOF' > "${1}"
<?xml version="1.0" encoding="utf-8"?>
@ -1480,7 +1858,6 @@ function unattended_windows() {
EOF
}
function dbg_windows() {
local DEBUG=0
if [ ${DEBUG} -eq 1 ]; then
@ -1623,10 +2000,16 @@ if [ -n "${2}" ]; then
fi
VM_PATH="${OS}-${RELEASE}-${ISOTYPE}"
get_alma "${ISOTYPE}"
elif [ "${OS}" == "alpine" ]; then
get_alpine
elif [ "${OS}" == "android" ]; then
get_android
elif [ "${OS}" == "archlinux" ]; then
get_archlinux
elif [ "${OS}" == "arcolinux" ]; then
get_arcolinux
elif [ "${OS}" == "void" ]; then
get_void
elif [ "${OS}" == "debian" ]; then
if [ -n "${3}" ]; then
FREEDOM="${3}"
@ -1653,12 +2036,24 @@ if [ -n "${2}" ]; then
get_fedora
elif [ "${OS}" == "garuda" ]; then
get_garuda
elif [ "${OS}" == "cachyos" ]; then
get_cachyos
elif [ "${OS}" == "gentoo" ]; then
get_gentoo
elif [ "${OS}" == "haiku" ]; then
get_haiku
elif [ "${OS}" == "kali" ]; then
get_kali
elif [ "${OS}" == "kdeneon" ]; then
get_kdeneon
elif [ "${OS}" == "kolibrios" ]; then
get_kolibrios
elif [[ "${OS}" == *"linuxmint-"* ]]; then
get_linuxmint
elif [[ "${OS}" == *"manjaro-"* ]]; then
get_manjaro
elif [[ "${OS}" == *"mxlinux-"* ]]; then
get_mxlinux
elif [[ "${OS}" == *"nixos-"* ]]; then
get_nixos
elif [ "${OS}" == "openbsd" ]; then
@ -1667,7 +2062,7 @@ if [ -n "${2}" ]; then
get_opensuse
elif [ "${OS}" == "oraclelinux" ]; then
get_oraclelinux
elif [ "${OS}" == "popos" ]; then
elif [ "${OS}" == "popos" ]; then
if [ -n "${3}" ]; then
DRIVER="${3}"
DRIVERS=(intel nvidia)
@ -1703,6 +2098,8 @@ if [ -n "${2}" ]; then
get_rocky "${ISOTYPE}"
elif [ "${OS}" == "solus" ]; then
get_solus
elif [[ "${OS}" == "tails"* ]]; then
get_tails
elif [[ "${OS}" == *"ubuntu"* ]]; then
get_ubuntu
elif [ "${OS}" == "windows" ]; then
@ -1730,10 +2127,14 @@ else
echo -n "ERROR! You must specify a release: "
if [ "${OS}" == "alma" ]; then
releases_alma
elif [ "${OS}" == "alpine" ]; then
releases_alpine
elif [ "${OS}" == "android" ]; then
releases_android
elif [ "${OS}" == "archlinux" ]; then
releases_archlinux
elif [ "${OS}" == "arcolinux" ]; then
releases_arcolinux
elif [ "${OS}" == "debian" ]; then
releases_debian
elif [ "${OS}" == "elementary" ]; then
@ -1744,10 +2145,22 @@ else
releases_fedora
elif [ "${OS}" == "garuda" ]; then
releases_garuda
elif [ "${OS}" == "cachyos" ]; then
releases_cachyos
elif [ "${OS}" == "gentoo" ]; then
releases_gentoo
elif [ "${OS}" == "haiku" ]; then
releases_haiku
elif [ "${OS}" == "kali" ]; then
releases_kali
elif [ "${OS}" == "kolibrios" ]; then
releases_kolibrios
elif [[ "${OS}" == *"linuxmint-"* ]]; then
releases_linuxmint
elif [[ "${OS}" == *"manjaro-"* ]]; then
releases_manjaro
elif [[ "${OS}" == *"mxlinux-"* ]]; then
releases_mxlinux
elif [[ "${OS}" == *"nixos-"* ]]; then
releases_nixos
elif [ "${OS}" == "opensuse" ]; then
@ -1766,8 +2179,12 @@ else
releases_rockylinux
elif [ "${OS}" == "solus" ]; then
releases_solus
elif [[ "${OS}" == "tails"* ]]; then
releases_tails
elif [[ "${OS}" == *"ubuntu"* ]]; then
releases_ubuntu
elif [ "${OS}" == "void" ]; then
releases_void
elif [ "${OS}" == "windows" ]; then
releases_windows
elif [ "${OS}" == "zorin" ]; then