merged upstream to 3.13 release

This commit is contained in:
Phil Clifford 2022-02-25 00:41:46 +00:00
commit 0e9cb4413e
4 changed files with 114 additions and 22 deletions

View File

@ -33,17 +33,13 @@ Features
- **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra - **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra
- **Windows** 8.1, 10 and 11 including TPM 2.0 - **Windows** 8.1, 10 and 11 including TPM 2.0
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu - [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu flavours](https://ubuntu.com/download/flavours)**
flavours](https://ubuntu.com/download/flavours)**
- **Over 360 operating system editions are supported!** - **Over 360 operating system editions are supported!**
- Full SPICE support including host/guest clipboard sharing - Full SPICE support including host/guest clipboard sharing
- VirtIO-webdavd file sharing for Linux and Windows guests - VirtIO-webdavd file sharing for Linux and Windows guests
- VirtIO-9p file sharing for Linux and macOS guests - VirtIO-9p file sharing for Linux and macOS guests
- [QEMU Guest Agent - [QEMU Guest Agent support](https://wiki.qemu.org/Features/GuestAgent); provides access to a system-level agent via standard QMP commands
support](https://wiki.qemu.org/Features/GuestAgent); provides access - Samba file sharing for Linux, macOS and Windows guests (*if `smbd` is installed on the host*)
to a system-level agent via standard QMP commands
- Samba file sharing for Linux, macOS and Windows guests (*if `smbd`
is installed on the host*)
- VirGL acceleration - VirGL acceleration
- USB device pass-through - USB device pass-through
- Smartcard pass-through - Smartcard pass-through
@ -70,8 +66,7 @@ QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/wat
Requirements Requirements
------------ ------------
- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, - [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, SPICE & VirtFS support**
SPICE & VirtFS support**
- [bash](https://www.gnu.org/software/bash/) (*4.0 or newer*) - [bash](https://www.gnu.org/software/bash/) (*4.0 or newer*)
- [Coreutils](https://www.gnu.org/software/coreutils/) - [Coreutils](https://www.gnu.org/software/coreutils/)
- [EDK II](https://github.com/tianocore/edk2) - [EDK II](https://github.com/tianocore/edk2)
@ -91,6 +86,7 @@ Requirements
- [xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/) - [xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/)
- [xrandr](https://gitlab.freedesktop.org/xorg/app/xrandr) - [xrandr](https://gitlab.freedesktop.org/xorg/app/xrandr)
- [zsync](http://zsync.moria.org.uk/) - [zsync](http://zsync.moria.org.uk/)
- [unzip](http://www.info-zip.org/UnZip.html)
Usage Usage
===== =====
@ -224,6 +220,7 @@ Other Operating Systems
- `elementary` (elementary OS) - `elementary` (elementary OS)
- `fedora` (Fedora) - `fedora` (Fedora)
- `freebsd` (FreeBSD) - `freebsd` (FreeBSD)
- `freedos` (FreeDOS)
- `garuda` (Garuda Linux) - `garuda` (Garuda Linux)
- `gentoo` (Gentoo) - `gentoo` (Gentoo)
- `ghostbsd` (GhostBSD) - `ghostbsd` (GhostBSD)
@ -613,6 +610,7 @@ Here are the usage instructions:
``` {.bash} ``` {.bash}
Usage Usage
quickemu --vm ubuntu.conf quickemu --vm ubuntu.conf

@ -1 +1 @@
Subproject commit 0473aa149401b08e7ac22359e3521f405a2f69f9 Subproject commit 65b307b65bf2cde7afbd37a6d654de066a869508

View File

@ -463,7 +463,7 @@ function vm_boot() {
# Make any OS specific adjustments # Make any OS specific adjustments
case ${guest_os} in case ${guest_os} in
*bsd|haiku|linux) *bsd|haiku|freedos|linux)
CPU="-cpu host,kvm=on" CPU="-cpu host,kvm=on"
if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then
CPU="${CPU},topoext" CPU="${CPU},topoext"
@ -471,7 +471,7 @@ function vm_boot() {
if [ "${guest_os}" == "freebsd" ] || [ "${guest_os}" == "ghostbsd" ]; then if [ "${guest_os}" == "freebsd" ] || [ "${guest_os}" == "ghostbsd" ]; then
MOUSE="usb-mouse" MOUSE="usb-mouse"
elif [ "${guest_os}" == "haiku" ]; then elif [ "${guest_os}" == "haiku" ] || [ "${guest_os}" == "freedos" ]; then
MACHINE_TYPE="pc" MACHINE_TYPE="pc"
NET_DEVICE="rtl8139" NET_DEVICE="rtl8139"
fi fi
@ -933,7 +933,11 @@ function vm_boot() {
args+=(-drive media=cdrom,index=1,file="${fixed_iso}") args+=(-drive media=cdrom,index=1,file="${fixed_iso}")
fi fi
if [ -n "${iso}" ] && [ "${guest_os}" == "kolibrios" ]; then if [ -n "{iso}" ] && [ "${guest_os}" == "freedos" ]; then
# FreeDOS reboots after partitioning the disk, and QEMU tries to boot from disk after first restart
# This flag sets the boot order to cdrom,disk. It will persist until powering down the VM
args+=(-boot order=dc)
elif [ -n "${iso}" ] && [ "${guest_os}" == "kolibrios" ]; then
# Since there is bug (probably) in KolibriOS: cdrom indexes 0 or 1 make system show an extra unexisting iso, so we use index=2 # Since there is bug (probably) in KolibriOS: cdrom indexes 0 or 1 make system show an extra unexisting iso, so we use index=2
# shellcheck disable=SC2054 # shellcheck disable=SC2054
args+=(-drive media=cdrom,index=2,file="${iso}") args+=(-drive media=cdrom,index=2,file="${iso}")

108
quickget
View File

@ -39,6 +39,7 @@ function pretty_name() {
dragonflybsd) PRETTY_NAME="DragonFlyBSD";; dragonflybsd) PRETTY_NAME="DragonFlyBSD";;
elementary) PRETTY_NAME="elementary OS";; elementary) PRETTY_NAME="elementary OS";;
freebsd) PRETTY_NAME="FreeBSD";; freebsd) PRETTY_NAME="FreeBSD";;
freedos) PRETTY_NAME="FreeDOS";;
garuda) PRETTY_NAME="Garuda Linux";; garuda) PRETTY_NAME="Garuda Linux";;
ghostbsd) PRETTY_NAME="GhostBSD";; ghostbsd) PRETTY_NAME="GhostBSD";;
kdeneon) PRETTY_NAME="KDE Neon";; kdeneon) PRETTY_NAME="KDE Neon";;
@ -166,6 +167,7 @@ function os_support() {
elementary \ elementary \
fedora \ fedora \
freebsd \ freebsd \
freedos \
garuda \ garuda \
gentoo \ gentoo \
ghostbsd \ ghostbsd \
@ -283,6 +285,10 @@ function editions_freebsd(){
echo disc1 dvd1 echo disc1 dvd1
} }
function releases_freedos() {
echo 1.2 1.3
}
function releases_garuda() { function releases_garuda() {
echo 220131 echo 220131
} }
@ -437,7 +443,49 @@ function releases_tails() {
} }
function releases_ubuntu() { function releases_ubuntu() {
echo 18.04 20.04 21.10 daily-live daily-canary echo 14.04 \
16.04 \
18.04 \
20.04 \
21.10 \
daily-live \
daily-canary \
eol-4.10 \
eol-5.04 \
eol-5.10 \
eol-6.06.0 eol-6.06.1 eol-6.06.2 \
eol-6.10 \
eol-7.04 \
eol-7.10 \
eol-8.04.0 eol-8.04.1 eol-8.04.2 eol-8.04.3 eol-8.04.4 \
eol-8.10 \
eol-9.04 \
eol-9.10 \
eol-10.04.0 eol-10.04.1 eol-10.04.2 eol-10.04.3 eol-10.04.4 \
eol-10.10 \
eol-11.04 \
eol-11.10 \
eol-12.04 eol-12.04.0 eol-12.04.1 eol-12.04.2 eol-12.04.3 eol-12.04.4 eol-12.04.5 \
eol-12.10 \
eol-13.04 \
eol-13.10 \
eol-14.04.0 eol-14.04.1 eol-14.04.2 eol-14.04.3 eol-14.04.4 eol-14.04.5 \
eol-14.10 \
eol-15.04 \
eol-15.10 \
eol-16.04.0 eol-16.04.1 eol-16.04.2 eol-16.04.3 eol-16.04.4 eol-16.04.5 eol-16.04.6 \
eol-16.10 \
eol-17.04 \
eol-17.10 \
eol-18.04 eol-18.04.0 eol-18.04.1 eol-18.04.2 eol-18.04.3 eol-18.04.4 eol-18.04.5 \
eol-18.10 \
eol-19.04 \
eol-19.10 \
eol-20.04 eol-20.04.0 eol-20.04.1 eol-20.04.2 \
eol-20.10 \
eol-21.04 \
eol-21.10 \
;
} }
function releases_void() { function releases_void() {
@ -545,7 +593,7 @@ function web_get() {
fi fi
if command -v aria2c &>/dev/null; then if command -v aria2c &>/dev/null; then
if ! aria2c -x16 --continue=true --summary-interval=0 --download-result=hide --console-log-level=error "${URL}" -o "${DIR}/${FILE}"; then if ! aria2c --stderr -x16 --continue=true --summary-interval=0 --download-result=hide --console-log-level=error "${URL}" -o "${DIR}/${FILE}"; then
echo #Necessary as aria2c in suppressed mode does not have new lines echo #Necessary as aria2c in suppressed mode does not have new lines
echo "ERROR! Failed to download ${URL} with aria2c. Try running 'quickget' again." echo "ERROR! Failed to download ${URL} with aria2c. Try running 'quickget' again."
exit 1 exit 1
@ -615,6 +663,9 @@ function make_vm_config() {
haiku) haiku)
GUEST="haiku" GUEST="haiku"
IMAGE_TYPE="iso";; IMAGE_TYPE="iso";;
freedos)
GUEST="freedos"
IMAGE_TYPE="iso";;
kolibrios) kolibrios)
GUEST="kolibrios" GUEST="kolibrios"
IMAGE_TYPE="iso";; IMAGE_TYPE="iso";;
@ -656,6 +707,11 @@ EOF
case ${OS} in case ${OS} in
alma|oraclelinux|rockylinux) echo "disk_size=\"32G\"" >> "${CONF_FILE}";; alma|oraclelinux|rockylinux) echo "disk_size=\"32G\"" >> "${CONF_FILE}";;
dragonflybsd|haiku|openbsd|netbsd|slackware|tails) echo "boot=\"legacy\"" >> "${CONF_FILE}";; dragonflybsd|haiku|openbsd|netbsd|slackware|tails) echo "boot=\"legacy\"" >> "${CONF_FILE}";;
freedos)
echo "boot=\"legacy\"" >> "${CONF_FILE}"
echo "disk_size=\"4G\"" >> "${CONF_FILE}"
echo "ram=\"256M\"" >> "${CONF_FILE}"
;;
kolibrios) kolibrios)
echo "boot=\"legacy\"" >> "${CONF_FILE}" echo "boot=\"legacy\"" >> "${CONF_FILE}"
echo "disk_size=\"2G\"" >> "${CONF_FILE}" echo "disk_size=\"2G\"" >> "${CONF_FILE}"
@ -833,6 +889,25 @@ function get_freebsd() {
echo "${URL}/${ISO} ${HASH}" echo "${URL}/${ISO} ${HASH}"
} }
function get_freedos() {
local HASH=""
local ISO=""
local URL="http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/${RELEASE}/official"
case ${RELEASE} in
1.2)
ISO="FD12CD.iso"
HASH=$(wget -q -O- "${URL}/FD12.sha" | grep "${ISO}" | cut -d' ' -f1)
;;
1.3)
ISO="FD13-LiveCD.zip"
HASH=$(wget -q -O- "${URL}/verify.txt" | grep -A 8 "sha256sum" | grep "${ISO}" | cut -d' ' -f1)
;;
esac
echo "${URL}/${ISO} ${HASH}"
}
function get_garuda() { function get_garuda() {
local EDITION="${1:-}" local EDITION="${1:-}"
local HASH="" local HASH=""
@ -1169,17 +1244,24 @@ function get_ubuntu() {
RELEASE="daily-live" RELEASE="daily-live"
fi fi
if [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then if [[ "${RELEASE}" == "eol-"* ]]; then
URL="http://cdimage.ubuntu.com/${OS}/${RELEASE}/current" URL="https://old-releases.ubuntu.com/releases/${RELEASE/eol-/}"
elif [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then
URL="https://cdimage.ubuntu.com/${OS}/${RELEASE}/current"
VM_PATH="${OS}-devel" VM_PATH="${OS}-devel"
elif [ "${OS}" == "ubuntu" ]; then elif [ "${OS}" == "ubuntu" ]; then
URL="http://releases.ubuntu.com/${RELEASE}" URL="https://releases.ubuntu.com/${RELEASE}"
else else
URL="http://cdimage.ubuntu.com/${OS}/releases/${RELEASE}/release" URL="https://cdimage.ubuntu.com/${OS}/releases/${RELEASE}/release"
fi fi
ISO=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'desktop\|dvd' | grep amd64 | cut -d'*' -f2) if wget -q --spider "${URL}/SHA256SUMS"; then
HASH=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'desktop\|dvd' | grep amd64 | cut -d' ' -f1) ISO=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | cut -d'*' -f2)
HASH=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | cut -d' ' -f1)
else
ISO=$(wget -q -O- "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | cut -d' ' -f3)
HASH=$(wget -q -O- "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | cut -d' ' -f1)
fi
#echo "${URL}/${ISO} ${HASH}" #echo "${URL}/${ISO} ${HASH}"
if [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then if [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then
@ -1608,13 +1690,21 @@ create_vm() {
local URL="${URL_HASH[0]}" local URL="${URL_HASH[0]}"
local HASH="${URL_HASH[1]}" local HASH="${URL_HASH[1]}"
local ISO="${URL##*/}" local ISO="${URL##*/}"
#echo "${URL}" #echo "${URL}"
#echo "${ISO}" #echo "${ISO}"
#echo "${HASH}" #echo "${HASH}"
web_get "${URL}" "${VM_PATH}" web_get "${URL}" "${VM_PATH}"
if [ -n "${HASH}" ]; then if [ -n "${HASH}" ]; then
check_hash "${ISO}" "${HASH}" check_hash "${ISO}" "${HASH}"
fi fi
if [ ${OS} == "freedos" ] && [[ $ISO =~ ".zip" ]]; then
unzip ${VM_PATH}/${ISO} -d ${VM_PATH}
ISO=$(ls ${VM_PATH} | grep -i '.iso')
fi
make_vm_config "${ISO}" make_vm_config "${ISO}"
} }
@ -1719,7 +1809,7 @@ else
case ${OS} in case ${OS} in
*ubuntu*) *ubuntu*)
echo -n " - Releases: " echo -n " - Releases: "
releases_ubuntu releases_ubuntu | sed -Ee 's/eol-\S+//g' # hide eol releases
;; ;;
*) *)
echo -n " - Releases: " echo -n " - Releases: "