From 87ebc793fccb3eda7dffdcf17832c5f4140f2098 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Tue, 22 Feb 2022 01:51:34 +0000 Subject: [PATCH 1/6] trying to keep up... re-generating --- README.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e09466a..fdc1ab7 100644 --- a/README.md +++ b/README.md @@ -33,13 +33,17 @@ Features - **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra - **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)** +- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu + flavours](https://ubuntu.com/download/flavours)** - **Over 360 operating system editions are supported!** - 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 -- [QEMU Guest Agent support](https://wiki.qemu.org/Features/GuestAgent); provides access 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*) +- [QEMU Guest Agent + support](https://wiki.qemu.org/Features/GuestAgent); provides access + 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 - USB device pass-through - Smartcard pass-through @@ -66,7 +70,8 @@ QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/wat Requirements ------------ -- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, SPICE & VirtFS support** +- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, + SPICE & VirtFS support** - [bash](https://www.gnu.org/software/bash/) (*4.0 or newer*) - [Coreutils](https://www.gnu.org/software/coreutils/) - [EDK II](https://github.com/tianocore/edk2) @@ -237,7 +242,7 @@ Other Operating Systems - `popos` (Pop!\_OS) - `regolith` (Regolith Linux) - `rockylinux` (Rocky Linux) -- `slackware` (Slackware) +- `slackware` (Slackware Linux) - `solus` (Solus) - `tails` (Tails) - `void` (Void Linux) @@ -399,6 +404,9 @@ tpm="on" - `tpm="on"` instructs `quickemu` to create a software emulated TPM device using `swtpm`. +Other Guests +------------ + SPICE ===== @@ -613,7 +621,6 @@ Here are the usage instructions: ``` {.bash} - Usage quickemu --vm ubuntu.conf From 0622273efd1c2d61929224e391821f7ba3cd8c53 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Wed, 23 Feb 2022 16:16:16 +0000 Subject: [PATCH 2/6] revert README.md to upstream for noise-suppression --- README.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 7775229..03b17a4 100644 --- a/README.md +++ b/README.md @@ -33,17 +33,13 @@ Features - **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra - **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)** +- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu flavours](https://ubuntu.com/download/flavours)** - **Over 360 operating system editions are supported!** - 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 -- [QEMU Guest Agent - support](https://wiki.qemu.org/Features/GuestAgent); provides access - 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*) +- [QEMU Guest Agent support](https://wiki.qemu.org/Features/GuestAgent); provides access 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 - USB device pass-through - Smartcard pass-through @@ -70,8 +66,7 @@ QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/wat Requirements ------------ -- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, - SPICE & VirtFS support** +- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, SPICE & VirtFS support** - [bash](https://www.gnu.org/software/bash/) (*4.0 or newer*) - [Coreutils](https://www.gnu.org/software/coreutils/) - [EDK II](https://github.com/tianocore/edk2) @@ -243,7 +238,7 @@ Other Operating Systems - `popos` (Pop!\_OS) - `regolith` (Regolith Linux) - `rockylinux` (Rocky Linux) -- `slackware` (Slackware Linux) +- `slackware` (Slackware) - `solus` (Solus) - `tails` (Tails) - `void` (Void Linux) @@ -405,9 +400,6 @@ tpm="on" - `tpm="on"` instructs `quickemu` to create a software emulated TPM device using `swtpm`. -Other Guests ------------- - SPICE ===== @@ -622,6 +614,7 @@ Here are the usage instructions: ``` {.bash} + Usage quickemu --vm ubuntu.conf From 85cb70745d481c37d0269fa88e1112fefc3351da Mon Sep 17 00:00:00 2001 From: Yannick Mauray Date: Thu, 24 Feb 2022 23:23:41 +0100 Subject: [PATCH 3/6] Send progress to stderr (#394) By default, progress is sent to stdout, which is buffered and cannot be proerly processed by `quickgui` --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 43e715e..a31ea60 100755 --- a/quickget +++ b/quickget @@ -545,7 +545,7 @@ function web_get() { fi 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 "ERROR! Failed to download ${URL} with aria2c. Try running 'quickget' again." exit 1 From 38b086244d591ab803f531ced409ccb87d63bfb2 Mon Sep 17 00:00:00 2001 From: Dani Llewellyn Date: Thu, 24 Feb 2022 22:28:29 +0000 Subject: [PATCH 4/6] Add old/obsolete/eol Ubuntu releases (hidden by default) (#393) * Ensure Ubuntu releases are all downloaded via HTTPS URLs * Add eol-4.10 thru to eol-21.10 releases for Ubuntu * Add special handling of MD5SUMS-only Ubuntu releases on old-releases.ubuntu.com * Add detection of Ubuntu `*-install.iso` files for very early Ubuntu releases Signed-off-by: Dani Llewellyn --- quickget | 65 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/quickget b/quickget index a31ea60..f467270 100755 --- a/quickget +++ b/quickget @@ -437,7 +437,49 @@ function releases_tails() { } 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() { @@ -1169,17 +1211,24 @@ function get_ubuntu() { RELEASE="daily-live" fi - if [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then - URL="http://cdimage.ubuntu.com/${OS}/${RELEASE}/current" + if [[ "${RELEASE}" == "eol-"* ]]; then + 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" elif [ "${OS}" == "ubuntu" ]; then - URL="http://releases.ubuntu.com/${RELEASE}" + URL="https://releases.ubuntu.com/${RELEASE}" else - URL="http://cdimage.ubuntu.com/${OS}/releases/${RELEASE}/release" + URL="https://cdimage.ubuntu.com/${OS}/releases/${RELEASE}/release" fi - ISO=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'desktop\|dvd' | grep amd64 | cut -d'*' -f2) - HASH=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'desktop\|dvd' | grep amd64 | cut -d' ' -f1) + if wget -q --spider "${URL}/SHA256SUMS"; then + 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}" if [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then @@ -1719,7 +1768,7 @@ else case ${OS} in *ubuntu*) echo -n " - Releases: " - releases_ubuntu + releases_ubuntu | sed -Ee 's/eol-\S+//g' # hide eol releases ;; *) echo -n " - Releases: " From ebc83ebacff3e6940fdec9cbc2548c312a61ee28 Mon Sep 17 00:00:00 2001 From: nqvrg <66185596+nqvrg@users.noreply.github.com> Date: Thu, 24 Feb 2022 23:31:23 +0100 Subject: [PATCH 5/6] Add FreeDOS support (#374) * Add support for FreeDOS 1.2 to quickget * Add support for freedos guests to quickemu * Add support for FreeDOS 1.3 to quickget * Force qemu to keep booting from cd after formatting disk * Adjust VM settings * Refactor FreeDOS to use create_vm * Add FreeDOS to README * Add unzip to README as a dependency --- README.md | 4 +++- quickemu | 10 +++++++--- quickget | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 03b17a4..7d948cf 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,7 @@ Requirements - [xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/) - [xrandr](https://gitlab.freedesktop.org/xorg/app/xrandr) - [zsync](http://zsync.moria.org.uk/) +- [unzip](http://www.info-zip.org/UnZip.html) Usage ===== @@ -215,10 +216,11 @@ Other Operating Systems - `cachyos` (CachyOS) - `debian` (Debian) - `devuan` (Devuan) - `dragonflybsd` (DragonFlyBSD) +- `dragonflybsd` (DragonFlyBSD) - `elementary` (elementary OS) - `fedora` (Fedora) - `freebsd` (FreeBSD) +- `freedos` (FreeDOS) - `garuda` (Garuda Linux) - `gentoo` (Gentoo) - `ghostbsd` (GhostBSD) diff --git a/quickemu b/quickemu index 1a97990..49655d4 100755 --- a/quickemu +++ b/quickemu @@ -463,7 +463,7 @@ function vm_boot() { # Make any OS specific adjustments case ${guest_os} in - *bsd|haiku|linux) + *bsd|haiku|freedos|linux) CPU="-cpu host,kvm=on" if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then CPU="${CPU},topoext" @@ -471,7 +471,7 @@ function vm_boot() { if [ "${guest_os}" == "freebsd" ] || [ "${guest_os}" == "ghostbsd" ]; then MOUSE="usb-mouse" - elif [ "${guest_os}" == "haiku" ]; then + elif [ "${guest_os}" == "haiku" ] || [ "${guest_os}" == "freedos" ]; then MACHINE_TYPE="pc" NET_DEVICE="rtl8139" fi @@ -933,7 +933,11 @@ function vm_boot() { args+=(-drive media=cdrom,index=1,file="${fixed_iso}") 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 # shellcheck disable=SC2054 args+=(-drive media=cdrom,index=2,file="${iso}") diff --git a/quickget b/quickget index f467270..ba66956 100755 --- a/quickget +++ b/quickget @@ -39,6 +39,7 @@ function pretty_name() { dragonflybsd) PRETTY_NAME="DragonFlyBSD";; elementary) PRETTY_NAME="elementary OS";; freebsd) PRETTY_NAME="FreeBSD";; + freedos) PRETTY_NAME="FreeDOS";; garuda) PRETTY_NAME="Garuda Linux";; ghostbsd) PRETTY_NAME="GhostBSD";; kdeneon) PRETTY_NAME="KDE Neon";; @@ -166,6 +167,7 @@ function os_support() { elementary \ fedora \ freebsd \ + freedos \ garuda \ gentoo \ ghostbsd \ @@ -283,6 +285,11 @@ function editions_freebsd(){ echo disc1 dvd1 } +function releases_freedos() { + echo 1.2 \ + 1.3 +} + function releases_garuda() { echo 220131 } @@ -657,6 +664,9 @@ function make_vm_config() { haiku) GUEST="haiku" IMAGE_TYPE="iso";; + freedos) + GUEST="freedos" + IMAGE_TYPE="iso";; kolibrios) GUEST="kolibrios" IMAGE_TYPE="iso";; @@ -698,6 +708,11 @@ EOF case ${OS} in alma|oraclelinux|rockylinux) echo "disk_size=\"32G\"" >> "${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) echo "boot=\"legacy\"" >> "${CONF_FILE}" echo "disk_size=\"2G\"" >> "${CONF_FILE}" @@ -875,6 +890,28 @@ function get_freebsd() { echo "${URL}/${ISO} ${HASH}" } +function get_freedos() { + local HASH="" + local ISO="" + local URL="" + + 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() { local EDITION="${1:-}" local HASH="" @@ -1657,13 +1694,21 @@ create_vm() { local URL="${URL_HASH[0]}" local HASH="${URL_HASH[1]}" local ISO="${URL##*/}" + #echo "${URL}" #echo "${ISO}" #echo "${HASH}" web_get "${URL}" "${VM_PATH}" + if [ -n "${HASH}" ]; then check_hash "${ISO}" "${HASH}" 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}" } From fb771265f12da507ab012d09db8e59220ed838bc Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Thu, 24 Feb 2022 23:04:35 +0000 Subject: [PATCH 6/6] Minor clean up of FreeDOS support --- quickget | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/quickget b/quickget index ba66956..1c70e90 100755 --- a/quickget +++ b/quickget @@ -286,8 +286,7 @@ function editions_freebsd(){ } function releases_freedos() { - echo 1.2 \ - 1.3 + echo 1.2 1.3 } function releases_garuda() { @@ -893,19 +892,16 @@ function get_freebsd() { function get_freedos() { local HASH="" local ISO="" - local URL="" + local URL="http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/${RELEASE}/official" - URL="http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/${RELEASE}/official" - - case $RELEASE in + 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) + HASH=$(wget -q -O- "${URL}/verify.txt" | grep -A 8 "sha256sum" | grep "${ISO}" | cut -d' ' -f1) ;; esac