From 4e196d57b077df4778da412b612de156987144a1 Mon Sep 17 00:00:00 2001 From: franksmcb <44311495+franksmcb@users.noreply.github.com> Date: Fri, 22 Apr 2022 02:44:23 -0600 Subject: [PATCH 001/189] Add 22.04 support for Ubuntu and flavours (#441) --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index c1208d7..9c4a8cd 100755 --- a/quickget +++ b/quickget @@ -441,7 +441,7 @@ function releases_tails() { } function releases_ubuntu() { - local LTS_SUPPORT="14.04 16.04 18.04 20.04" + local LTS_SUPPORT="14.04 16.04 18.04 20.04 22.04" case "${OS}" in kubuntu|lubuntu|ubuntukylin|\ ubuntu-mate|ubuntustudio|xubuntu) From 71a1efaceb4d2a195c831128ea5d6191c3e6ef96 Mon Sep 17 00:00:00 2001 From: Heysion Date: Fri, 22 Apr 2022 16:45:14 +0800 Subject: [PATCH 002/189] fix: update debian upstream version 11.3.0 (#436) update debian upstream version 11.3.0 Log: Co-authored-by: Heysion --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index 9c4a8cd..a530d8b 100755 --- a/quickget +++ b/quickget @@ -241,7 +241,7 @@ function releases_cachyos() { } function releases_debian() { - echo 10.11.0 11.2.0 + echo 10.11.0 11.2.0 11.3.0 } function editions_debian() { @@ -826,7 +826,7 @@ function get_debian() { local URL="" case ${RELEASE} in - 11.2.0) URL="https://cdimage.debian.org/debian-cd/${RELEASE}-live/amd64/iso-hybrid";; + 11.3.0) URL="https://cdimage.debian.org/debian-cd/${RELEASE}-live/amd64/iso-hybrid";; *) URL="https://cdimage.debian.org/cdimage/archive/${RELEASE}-live/amd64/iso-hybrid/";; esac From 187da46c3b38a8ad261c90901ea2370832ae897c Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Fri, 22 Apr 2022 09:53:12 +0100 Subject: [PATCH 003/189] Bump version to 3.15 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 24e1007..a034e06 100755 --- a/quickemu +++ b/quickemu @@ -1124,7 +1124,7 @@ VMPATH="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="3.14" +readonly VERSION="3.15" # PUBLICSHARE is the only directory exposed to guest VMs for file # sharing via 9P, spice-webdavd and Samba. This path is not configurable. From 8a2057715c9294888b6a65a3c67df34aa9295d58 Mon Sep 17 00:00:00 2001 From: Radomir Ochtyra <32648297+radomuc@users.noreply.github.com> Date: Sat, 5 Mar 2022 00:11:08 +0100 Subject: [PATCH 004/189] Add support to reuse remote-client when call command again and support for other clients - add suport for custom ssh-port and spice-port - add suport for alternate viewer: 'remote-viewer' and 'none' - support implemented on commandline as well as for configuration file --- quickemu | 168 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 151 insertions(+), 17 deletions(-) diff --git a/quickemu b/quickemu index a034e06..8b9b41c 100755 --- a/quickemu +++ b/quickemu @@ -761,9 +761,11 @@ function vm_boot() { echo -n "" > "${VMDIR}/${VMNAME}.ports" - # Find a free port to expose ssh to the guest - local SSH_PORT="" - SSH_PORT=$(get_port 22220 9) + if [ -z "$SSH_PORT" ]; then + # Find a free port to expose ssh to the guest + SSH_PORT=$(get_port 22220 9) + fi + if [ -n "${SSH_PORT}" ]; then echo "ssh,${SSH_PORT}" >> "${VMDIR}/${VMNAME}.ports" NET="${NET},hostfwd=tcp::${SSH_PORT}-:22" @@ -783,10 +785,12 @@ function vm_boot() { done fi - # Find a free port for spice local SPICE="disable-ticketing=on" - local SPICE_PORT="" - SPICE_PORT=$(get_port 5930 9) + if [ -z "${SPICE_PORT}" ]; then + # Find a free port for spice + SPICE_PORT=$(get_port 5930 9) + fi + if [ -z "${SPICE_PORT}" ]; then echo " - SPICE: All SPICE ports have been exhausted." if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice" ] || [ "${OUTPUT}" == "spice-app" ]; then @@ -1013,19 +1017,53 @@ function vm_boot() { SHELL_ARGS="${SHELL_ARGS//)/\\)}" SHELL_ARGS="${SHELL_ARGS//Quickemu Project/\"Quickemu Project\"}" - echo "${QEMU}" "${SHELL_ARGS}" >> "${VMDIR}/${VMNAME}.sh" - ${QEMU} "${args[@]}" > "${VMDIR}/${VMNAME}.log" & + if [ ${VM_UP} -eq 0 ]; then + echo "${QEMU}" "${SHELL_ARGS}" >> "${VMDIR}/${VMNAME}.sh" + ${QEMU} "${args[@]}" > "${VMDIR}/${VMNAME}.log" & + sleep 0.25 + fi - # If output is 'none' then SPICE was requested. - if [ "${OUTPUT}" == "spice" ]; then - if [ -n "${PUBLIC}" ]; then - spicy --title "${VMNAME}" --port "${SPICE_PORT}" --spice-shared-dir "${PUBLIC}" "${FULLSPICY}" >/dev/null 2>&1 & - else - spicy --title "${VMNAME}" --port "${SPICE_PORT}" "${FULLSPICY}" >/dev/null 2>&1 & + echo " - Process: Starting ${VM} as ${VMNAME} ($(cat "${VMDIR}/${VMNAME}.pid"))" +} + +function start_viewer { + errno=0 + if [ "${VIEWER}" != "none" ]; then + echo "---" + + # If output is 'none' then SPICE was requested. + if [ "${OUTPUT}" == "spice" ]; then + if [ "${VIEWER}" == "remote-viewer" ]; then + # show via viewer: remote-viewer + + if [ -n "${PUBLIC}" ]; then + echo " - Start viewer: ${VIEWER} --title \"${VMNAME}\" --spice-shared-dir \"${PUBLIC}\" ${FULLSPICY} \"spice://localhost:${SPICE_PORT}\" >/dev/null 2>&1 &" + ${VIEWER} --title "${VMNAME}" --spice-shared-dir "${PUBLIC}" ${FULLSPICY} "spice://localhost:${SPICE_PORT}" >/dev/null 2>&1 & + errno=$? + else + echo " - Start viewer: ${VIEWER} --title \"${VMNAME}\" ${FULLSPICY} \"spice://localhost:${SPICE_PORT}\" >/dev/null 2>&1 &" + ${VIEWER} --title "${VMNAME}" ${FULLSPICY} "spice://localhost:${SPICE_PORT}" >/dev/null 2>&1 & + errno=$? + fi + + elif [ "${VIEWER}" == "spicy" ]; then + # show via viewer: spicy + + if [ -n "${PUBLIC}" ]; then + echo " - Start viewer: ${VIEWER} --title \"${VMNAME}\" --port \"${SPICE_PORT}\" --spice-shared-dir \"${PUBLIC}\" \"${FULLSPICY}\" >/dev/null 2>&1 &" + ${VIEWER} --title "${VMNAME}" --port "${SPICE_PORT}" --spice-shared-dir "${PUBLIC}" "${FULLSPICY}" >/dev/null 2>&1 & + errno=$? + else + echo " - Start viewer: ${VIEWER} --title \"${VMNAME}\" --port \"${SPICE_PORT}\" \"${FULLSPICY}\" >/dev/null 2>&1 &" + ${VIEWER} --title "${VMNAME}" --port "${SPICE_PORT}" "${FULLSPICY}" >/dev/null 2>&1 & + errno=$? + fi + fi + if [ $errno -ne 0 ]; then + echo "WARNING! Could not start viewer(${VIEWER}) Err: $errno" + fi fi fi - sleep 0.25 - echo " - Process: Starting ${VM} as ${VMNAME} ($(cat "${VMDIR}/${VMNAME}.pid"))" } function shortcut_create { @@ -1067,6 +1105,9 @@ function usage() { echo " --snapshot delete : Delete a snapshot." echo " --snapshot info : Show disk/snapshot info." echo " --status-quo : Do not commit any changes to disk/snapshot." + echo " --viewer : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none'" + echo " --ssh-port : Set ssh-port manually" + echo " --spice-port : Set spice-port manually" echo " --version : Print version" exit 1 } @@ -1081,6 +1122,42 @@ function display_param_check() { fi } +function viewer_param_check() { + if [ "${VIEWER}" != "none" ] && [ "${VIEWER}" != "spicy" ] && [ "${VIEWER}" != "remote-viewer" ]; then + echo "ERROR! Requested viewer '${VIEWER}' is not recognised." + exit 1 + fi + if [ "${VIEWER}" == "spicy" ] && ! command -v spicy &>/dev/null; then + echo "ERROR! Requested 'spicy' as viewer, but 'spicy' is not installed." + exit 1 + elif [ "${VIEWER}" == "remote-viewer" ] && ! command -v remote-viewer &>/dev/null; then + echo "ERROR! Requested 'remote-viewer' as viewer, but 'remote-viewer' is not installed." + exit 1 + fi +} + +function parse_ports_from_file { + local FILE="${VMDIR}/${VMNAME}.ports" + + # parse ports + port_name=( $(cat "$FILE" | cut -d, -f1) ) + port_number=( $(cat "$FILE" | cut -d, -f2) ) + for ((i=0; i<${#port_name[@]}; i++)); do + if [ ${port_name[$i]} == 'ssh' ]; then + SSH_PORT=${port_number[$i]} + fi + if [ ${port_name[$i]} == 'spice' ]; then + SPICE_PORT=${port_number[$i]} + fi + done +} + +function is_numeric { + [[ "$1" =~ ^[0-9]+$ ]] +} + +### MAIN + # Lowercase variables are used in the VM config file only boot="efi" bridge="" @@ -1100,6 +1177,9 @@ ram="" secureboot="off" tpm="off" usb_devices=() +viewer="spicy" +ssh_port="" +spice_port="" BRAILLE="" DELETE_DISK=0 @@ -1120,6 +1200,9 @@ VM="" VMDIR="" VMNAME="" VMPATH="" +VIEWER="" +SSH_PORT="" +SPICE_PORT="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") @@ -1213,6 +1296,18 @@ else VM="${2}" shift shift;; + -viewer|--viewer) + VIEWER="${2}" + shift + shift;; + -ssh-port|--ssh-port) + SSH_PORT="${2}" + shift; + shift;; + -spice-port|--spice-port) + SPICE_PORT="${2}" + shift; + shift;; -version|--version) echo "${VERSION}" exit;; @@ -1259,6 +1354,39 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then fi fi + if [ -z "${VIEWER}" ]; then + VIEWER="${viewer}" + fi + viewer_param_check + + if [ -z "${SSH_PORT}" ]; then + SSH_PORT=${ssh_port} + fi + if [ -n "${SSH_PORT}" ] && ! is_numeric "${SSH_PORT}"; then + echo "ERROR: ssh-port must be a number!" + exit 1 + fi + + if [ -z "${SPICE_PORT}" ]; then + SPICE_PORT=${spice_port} + fi + if [ -n "${SPICE_PORT}" ] && ! is_numeric "${SPICE_PORT}"; then + echo "ERROR: spice-port must be a number!" + exit 1 + fi + + # Check if vm is already run + VM_PID=0 + VM_UP=0 + if [ -r "${VMDIR}/${VMNAME}.pid" ]; then + VM_PID=$(head -c50 "${VMDIR}/${VMNAME}.pid") + kill -0 ${VM_PID} 2>&1 >/dev/null + if [ $? -eq 0 ]; then + echo "VM already started!" + VM_UP=1 + fi + fi + if [ "${tpm}" == "on" ]; then SWTPM=$(command -v swtpm) if [ ! -e "${SWTPM}" ]; then @@ -1309,6 +1437,12 @@ if [ ${SHORTCUT} -eq 1 ]; then exit fi -vm_boot +if [ $VM_UP -eq 0 ]; then + vm_boot + start_viewer +else + parse_ports_from_file + start_viewer +fi # vim:tabstop=2:shiftwidth=2:expandtab From 21788f525db9bbe691c093e0717b284d06e63537 Mon Sep 17 00:00:00 2001 From: Radomir Ochtyra <32648297+radomuc@users.noreply.github.com> Date: Sat, 5 Mar 2022 20:43:00 +0100 Subject: [PATCH 005/189] Add support for qemu-monitor and custom public-directory - Add commandline parameter --public-dir for custom directory - Add commandline parameter --monitor for qemu-monitor support - Add commandline parameter --monitor-telnet-host and --monitor-telnet-port to configure qemu-monitor via telnet - .ports enhanced to provide data for monitor-telnet - Support implemented on commandline as well as for configuration file - Fixed bug regarding extra_args --- quickemu | 135 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 99 insertions(+), 36 deletions(-) diff --git a/quickemu b/quickemu index 8b9b41c..af9496a 100755 --- a/quickemu +++ b/quickemu @@ -900,8 +900,8 @@ function vm_boot() { -device usb-ccid -chardev spicevmc,id=ccid,name=smartcard -device ccid-card-passthru,chardev=ccid - -monitor none - -serial mon:stdio) + ) +# -serial mon:stdio) # FIXME: Check for device availability. qemu will fail to start otherwise if [ -n "${BRAILLE}" ]; then @@ -1005,8 +1005,37 @@ function vm_boot() { -device tpm-tis,tpmdev=tpm0) fi + if [ -z "${monitor}" ]; then + monitor="${monitor}" + fi + + if [ -z "${MONITOR_TELNET_HOST}" ]; then + MONITOR_TELNET_HOST="${monitor_telnet_host:-localhost}" + fi + if [ -z "${MONITOR_TELNET_PORT}" ]; then + MONITOR_TELNET_PORT="${monitor_telnet_port}" + fi + if [ -n "${MONITOR_TELNET_PORT}" ] && ! is_numeric "${MONITOR_TELNET_PORT}"; then + echo "ERROR: telnet-port must be a number!" + exit 1 + fi + + if [ "${MONITOR}" == "none" ]; then + args+=(-monitor none) + echo " - Monitor: (off)" + elif [ "${MONITOR}" == "telnet" ]; then + args+=(-monitor telnet:${MONITOR_TELNET_HOST}:${MONITOR_TELNET_PORT},server,nowait) + echo " - Monitor: On host: telnet ${MONITOR_TELNET_HOST} ${MONITOR_TELNET_PORT}" + echo "monitor-telnet,${MONITOR_TELNET_PORT},${MONITOR_TELNET_HOST}" >> "${VMDIR}/${VMNAME}.ports" + elif [ "${MONITOR}" == "socket" ]; then + args+=(-monitor unix:${VMDIR}/${VMNAME}-monitor.socket,server,nowait) + echo " - Monitor: On host: nc -U \"${VMDIR}/${VMNAME}-monitor.socket\"" + else + :: + fi + if [ -n "${extra_args}" ]; then - args+=("${extra_args}") + args+=(${extra_args}) fi # The OSK parameter contains parenthesis, they need to be escaped in the shell @@ -1092,23 +1121,27 @@ function usage() { echo " ${LAUNCHER} --vm ubuntu.conf" echo echo "You can also pass optional parameters" - echo " --braille : Enable braille support. Requires SDL." - echo " --delete-disk : Delete the disk image and EFI variables" - echo " --delete-vm : Delete the entire VM and it's configuration" - echo " --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice'" - echo " --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)" - echo " --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers" - echo " --screen : Use specified screen to determine the window size." - echo " --shortcut : Create a desktop shortcut" - echo " --snapshot apply : Apply/restore a snapshot." - echo " --snapshot create : Create a snapshot." - echo " --snapshot delete : Delete a snapshot." - echo " --snapshot info : Show disk/snapshot info." - echo " --status-quo : Do not commit any changes to disk/snapshot." - echo " --viewer : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none'" - echo " --ssh-port : Set ssh-port manually" - echo " --spice-port : Set spice-port manually" - echo " --version : Print version" + echo " --braille : Enable braille support. Requires SDL." + echo " --delete-disk : Delete the disk image and EFI variables" + echo " --delete-vm : Delete the entire VM and it's configuration" + echo " --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice'" + echo " --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)" + echo " --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers" + echo " --screen : Use specified screen to determine the window size." + echo " --shortcut : Create a desktop shortcut" + echo " --snapshot apply : Apply/restore a snapshot." + echo " --snapshot create : Create a snapshot." + echo " --snapshot delete : Delete a snapshot." + echo " --snapshot info : Show disk/snapshot info." + echo " --status-quo : Do not commit any changes to disk/snapshot." + echo " --viewer : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none'" + echo " --ssh-port : Set ssh-port manually" + echo " --spice-port : Set spice-port manually" + echo " --public-dir : expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '', 'none'" + echo " --monitor : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none'" + echo " --monitor-telnet-host : Set telnet host for monitor. (default: 'localhost')" + echo " --monitor-telnet-port : Set telnet port for monitor. (default: '4444')" + echo " --version : Print version" exit 1 } @@ -1180,6 +1213,10 @@ usb_devices=() viewer="spicy" ssh_port="" spice_port="" +public_dir="" +monitor="socket" +monitor_telnet_port="4444" +monitor_telnet_host="localhost" BRAILLE="" DELETE_DISK=0 @@ -1203,28 +1240,13 @@ VMPATH="" VIEWER="" SSH_PORT="" SPICE_PORT="" +MONITOR="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) readonly VERSION="3.15" -# PUBLICSHARE is the only directory exposed to guest VMs for file -# sharing via 9P, spice-webdavd and Samba. This path is not configurable. -if command -v xdg-user-dir &>/dev/null; then - PUBLIC=$(xdg-user-dir PUBLICSHARE) - if [ "${PUBLIC%/}" != "${HOME}" ]; then - if [ ! -d "${PUBLIC}" ]; then - mkdir -p "${PUBLIC}" - fi - PUBLIC_TAG="Public-${USER,,}" - # shellcheck disable=SC2012 - PUBLIC_PERMS=$(ls -ld "${PUBLIC}" | cut -d' ' -f1) - else - PUBLIC="" - fi -fi - # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) QEMU_IMG=$(command -v qemu-img) @@ -1308,6 +1330,22 @@ else SPICE_PORT="${2}" shift; shift;; + -public-dir|--public-dir) + PUBLIC="${2}" + shift; + shift;; + -monitor|--monitor) + MONITOR="${2}" + shift; + shift;; + -monitor-telnet-host|--monitor-telnet-host) + MONITOR_TELNET_HOST="${2}" + shift; + shift;; + -monitor-telnet-port|--monitor-telnet-port) + MONITOR_TELNET_PORT="${2}" + shift; + shift;; -version|--version) echo "${VERSION}" exit;; @@ -1359,6 +1397,31 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then fi viewer_param_check + if [ -z "${PUBLIC}" ]; then + PUBLIC="${public_dir}" + fi + + if [ "${PUBLIC}" == "none" ]; then + PUBLIC="" + else + # PUBLICSHARE is the only directory exposed to guest VMs for file + # sharing via 9P, spice-webdavd and Samba. This path is not configurable. + if [ -z "${PUBLIC}" ]; then + if command -v xdg-user-dir &>/dev/null; then + PUBLIC=$(xdg-user-dir PUBLICSHARE) + fi + fi + + if [ ! -d "${PUBLIC}" ]; then + echo "ERROR! Public directory: '${PUBLIC}' doesn't exist!" + exit 1 + fi + + PUBLIC_TAG="Public-${USER,,}" + # shellcheck disable=SC2012 + PUBLIC_PERMS=$(ls -ld "${PUBLIC}" | cut -d' ' -f1) + fi + if [ -z "${SSH_PORT}" ]; then SSH_PORT=${ssh_port} fi From bd00b34067047e5cce6d10e526691f1aba5844ea Mon Sep 17 00:00:00 2001 From: Radomir Ochtyra <32648297+radomuc@users.noreply.github.com> Date: Sun, 6 Mar 2022 04:18:20 +0100 Subject: [PATCH 006/189] Add support to send command to QEMU-Monitor - Add commandline parameter --monitor-cmd - Support implemented on commandline as well as for configuration file --- quickemu | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 63 insertions(+), 7 deletions(-) diff --git a/quickemu b/quickemu index af9496a..22a6e0d 100755 --- a/quickemu +++ b/quickemu @@ -1028,7 +1028,7 @@ function vm_boot() { echo " - Monitor: On host: telnet ${MONITOR_TELNET_HOST} ${MONITOR_TELNET_PORT}" echo "monitor-telnet,${MONITOR_TELNET_PORT},${MONITOR_TELNET_HOST}" >> "${VMDIR}/${VMNAME}.ports" elif [ "${MONITOR}" == "socket" ]; then - args+=(-monitor unix:${VMDIR}/${VMNAME}-monitor.socket,server,nowait) + args+=(-monitor unix:${VM_MONITOR_SOCKETPATH},server,nowait) echo " - Monitor: On host: nc -U \"${VMDIR}/${VMNAME}-monitor.socket\"" else :: @@ -1141,6 +1141,7 @@ function usage() { echo " --monitor : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none'" echo " --monitor-telnet-host : Set telnet host for monitor. (default: 'localhost')" echo " --monitor-telnet-port : Set telnet port for monitor. (default: '4444')" + echo " --monitor-cmd : Send command to monitor if available. (Example: system_powerdown)" echo " --version : Print version" exit 1 } @@ -1173,14 +1174,20 @@ function parse_ports_from_file { local FILE="${VMDIR}/${VMNAME}.ports" # parse ports - port_name=( $(cat "$FILE" | cut -d, -f1) ) - port_number=( $(cat "$FILE" | cut -d, -f2) ) + local port_name=( $(cat "$FILE" | cut -d, -f1) ) + local port_number=( $(cat "$FILE" | cut -d, -f2) ) + local host_name=( $(cat "$FILE" | gawk 'FS="," {print $3,"."}') ) + for ((i=0; i<${#port_name[@]}; i++)); do - if [ ${port_name[$i]} == 'ssh' ]; then - SSH_PORT=${port_number[$i]} + if [ "${port_name[$i]}" == "ssh" ]; then + SSH_PORT="${port_number[$i]}" fi - if [ ${port_name[$i]} == 'spice' ]; then - SPICE_PORT=${port_number[$i]} + if [ "${port_name[$i]}" == "spice" ]; then + SPICE_PORT="${port_number[$i]}" + fi + if [ "${port_name[$i]}" == "monitor-telnet" ]; then + MONITOR_TELNET_PORT="${port_number[$i]}" + MONITOR_TELNET_HOST="${host_name[$i]}" fi done } @@ -1189,6 +1196,45 @@ function is_numeric { [[ "$1" =~ ^[0-9]+$ ]] } +function monitor_send_cmd { + local MSG="${1}" + + if [ -z "${MSG}" ]; then + echo "WARNING! Send to QEMU-Monitor: Message empty!" + return 1 + fi + + # Determine monitor channel + local monitor_channel="" + + if [ -S "${VMDIR}/${VMNAME}-monitor.socket" ]; then + monitor_channel="socket" + elif [ -n "${MONITOR_TELNET_PORT}" ] && [ -n "${MONITOR_TELNET_HOST}" ]; then + monitor_channel="telnet" + else + echo "WARNING! No qemu-monitor channel available - Couldn't send message to monitor!" + return + fi + + + case "${monitor_channel}" in + socket) + echo -e " - MON-SEND: ${MSG}" + echo -e "${MSG}" | nc -N -U "${VM_MONITOR_SOCKETPATH}" 2>&1 > /dev/null + ;; + telnet) + echo -e " - MON-SEND: ${MSG}" + echo -e "${MSG}" | nc -N "${MONITOR_TELNET_HOST}" "${MONITOR_TELNET_PORT}" 2>&1 > /dev/null + ;; + *) + echo "ERROR! This should never happen!" + exit 1 + ;; + esac + + return 0 +} + ### MAIN # Lowercase variables are used in the VM config file only @@ -1217,6 +1263,7 @@ public_dir="" monitor="socket" monitor_telnet_port="4444" monitor_telnet_host="localhost" +monitor_cmd="" BRAILLE="" DELETE_DISK=0 @@ -1241,6 +1288,8 @@ VIEWER="" SSH_PORT="" SPICE_PORT="" MONITOR="" +MONITOR_CMD="" +VM_MONITOR_SOCKETPATH="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") @@ -1338,6 +1387,10 @@ else MONITOR="${2}" shift; shift;; + -monitor-cmd|--monitor-cmd) + MONITOR_CMD="${2}" + shift; + shift;; -monitor-telnet-host|--monitor-telnet-host) MONITOR_TELNET_HOST="${2}" shift; @@ -1369,6 +1422,7 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then VMDIR=$(dirname "${disk_img}") VMNAME=$(basename "${VM}" .conf) VMPATH=$(realpath "$(dirname "${VM}")") + VM_MONITOR_SOCKETPATH="${VMDIR}/${VMNAME}-monitor.socket" # Backwards compatibility for ${driver_iso} if [ -n "${driver_iso}" ] && [ -z "${fixed_iso}" ]; then @@ -1503,9 +1557,11 @@ fi if [ $VM_UP -eq 0 ]; then vm_boot start_viewer + monitor_send_cmd "${MONITOR_CMD}" else parse_ports_from_file start_viewer + monitor_send_cmd "${MONITOR_CMD}" fi # vim:tabstop=2:shiftwidth=2:expandtab From a13e6735e7c3b1d9aafd742d08fa28607a3152bf Mon Sep 17 00:00:00 2001 From: Radomir Ochtyra <32648297+radomuc@users.noreply.github.com> Date: Sun, 6 Mar 2022 22:55:33 +0100 Subject: [PATCH 007/189] Add support to connect guest-console via serial - support commandline parameter --serial, --serial-telnet-host and --serial-telnet-port - support serial options: 'socket', 'telnet' and 'none' - add support to find free ports for monitor-telnet and serial-telnet - replace nc with socat - change default port for monitor-telnet to 4440 - some bugfix --- quickemu | 106 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 86 insertions(+), 20 deletions(-) diff --git a/quickemu b/quickemu index 22a6e0d..46601a1 100755 --- a/quickemu +++ b/quickemu @@ -1005,8 +1005,8 @@ function vm_boot() { -device tpm-tis,tpmdev=tpm0) fi - if [ -z "${monitor}" ]; then - monitor="${monitor}" + if [ -z "${MONITOR}" ]; then + MONITOR="${monitor:-none}" fi if [ -z "${MONITOR_TELNET_HOST}" ]; then @@ -1024,14 +1024,60 @@ function vm_boot() { args+=(-monitor none) echo " - Monitor: (off)" elif [ "${MONITOR}" == "telnet" ]; then - args+=(-monitor telnet:${MONITOR_TELNET_HOST}:${MONITOR_TELNET_PORT},server,nowait) - echo " - Monitor: On host: telnet ${MONITOR_TELNET_HOST} ${MONITOR_TELNET_PORT}" - echo "monitor-telnet,${MONITOR_TELNET_PORT},${MONITOR_TELNET_HOST}" >> "${VMDIR}/${VMNAME}.ports" + # Find a free port to expose monitor-telnet to the guest + local temp_port="$(get_port ${MONITOR_TELNET_PORT} 9)" + if [ -z "${temp_port}" ]; then + echo " - Monitor: All Monitor-Telnet ports have been exhausted." + else + MONITOR_TELNET_PORT="${temp_port}" + args+=(-monitor telnet:${MONITOR_TELNET_HOST}:${MONITOR_TELNET_PORT},server,nowait) + echo " - Monitor: On host: telnet ${MONITOR_TELNET_HOST} ${MONITOR_TELNET_PORT}" + echo "monitor-telnet,${MONITOR_TELNET_PORT},${MONITOR_TELNET_HOST}" >> "${VMDIR}/${VMNAME}.ports" + fi elif [ "${MONITOR}" == "socket" ]; then args+=(-monitor unix:${VM_MONITOR_SOCKETPATH},server,nowait) - echo " - Monitor: On host: nc -U \"${VMDIR}/${VMNAME}-monitor.socket\"" + echo " - Monitor: On host: nc -U \"${VM_MONITOR_SOCKETPATH}\"" + echo " or : socat -,echo=0,icanon=0 unix-connect:${VM_MONITOR_SOCKETPATH}" else - :: + echo "ERROR! \"${MONITOR}\" is an unknown monitor option." + exit 1 + fi + + if [ -z "${SERIAL}" ]; then + SERIAL="${serial:-none}" + fi + + if [ -z "${SERIAL_TELNET_HOST}" ]; then + SERIAL_TELNET_HOST="${serial_telnet_host:-localhost}" + fi + if [ -z "${SERIAL_TELNET_PORT}" ]; then + SERIAL_TELNET_PORT="${serial_telnet_port}" + fi + if [ -n "${SERIAL_TELNET_PORT}" ] && ! is_numeric "${SERIAL_TELNET_PORT}"; then + echo "ERROR: serial-port must be a number!" + exit 1 + fi + + if [ "${SERIAL}" == "none" ]; then + args+=(-serial none) + elif [ "${SERIAL}" == "telnet" ]; then + # Find a free port to expose serial-telnet to the guest + local temp_port="$(get_port ${SERIAL_TELNET_PORT} 9)" + if [ -z "${temp_port}" ]; then + echo " - Serial: All Serial-Telnet ports have been exhausted." + else + SERIAL_TELNET_PORT="${temp_port}" + args+=(-serial telnet:${SERIAL_TELNET_HOST}:${SERIAL_TELNET_PORT},server,nowait) + echo " - Serial: On host: telnet ${SERIAL_TELNET_HOST} ${SERIAL_TELNET_PORT}" + echo "serial-telnet,${SERIAL_TELNET_PORT},${SERIAL_TELNET_HOST}" >> "${VMDIR}/${VMNAME}.ports" + fi + elif [ "${SERIAL}" == "socket" ]; then + args+=(-serial unix:${VM_SERIAL_SOCKETPATH},server,nowait) + echo " - Serial: On host: nc -U \"${VM_SERIAL_SOCKETPATH}\"" + echo " or : socat -,echo=0,icanon=0 unix-connect:${VM_SERIAL_SOCKETPATH}" + else + echo "ERROR! \"${SERIAL}\" is an unknown serial option." + exit 1 fi if [ -n "${extra_args}" ]; then @@ -1140,19 +1186,20 @@ function usage() { echo " --public-dir : expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '', 'none'" echo " --monitor : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none'" echo " --monitor-telnet-host : Set telnet host for monitor. (default: 'localhost')" - echo " --monitor-telnet-port : Set telnet port for monitor. (default: '4444')" + echo " --monitor-telnet-port : Set telnet port for monitor. (default: '4440')" echo " --monitor-cmd : Send command to monitor if available. (Example: system_powerdown)" + echo " --serial : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none'" + echo " --serial-telnet-host : Set telnet host for serial. (default: 'localhost')" + echo " --serial-telnet-port : Set telnet port for serial. (default: '6660')" echo " --version : Print version" exit 1 } function display_param_check() { + # @ASK: accept "spice-app" as output ? if [ "${OUTPUT}" != "gtk" ] && [ "${OUTPUT}" != "none" ] && [ "${OUTPUT}" != "sdl" ] && [ "${OUTPUT}" != "spice" ]; then echo "ERROR! Requested output '${OUTPUT}' is not recognised." exit 1 - elif [ "${OUTPUT}" == "spice" ] && ! command -v spicy &>/dev/null; then - echo "ERROR! Requested SPICE display, but 'spicy' is not installed." - exit 1 fi } @@ -1181,13 +1228,14 @@ function parse_ports_from_file { for ((i=0; i<${#port_name[@]}; i++)); do if [ "${port_name[$i]}" == "ssh" ]; then SSH_PORT="${port_number[$i]}" - fi - if [ "${port_name[$i]}" == "spice" ]; then + elif [ "${port_name[$i]}" == "spice" ]; then SPICE_PORT="${port_number[$i]}" - fi - if [ "${port_name[$i]}" == "monitor-telnet" ]; then + elif [ "${port_name[$i]}" == "monitor-telnet" ]; then MONITOR_TELNET_PORT="${port_number[$i]}" MONITOR_TELNET_HOST="${host_name[$i]}" + elif [ "${port_name[$i]}" == "serial-telnet" ]; then + SERIAL_TELNET_PORT="${port_number[$i]}" + SERIAL_TELNET_HOST="${host_name[$i]}" fi done } @@ -1220,11 +1268,11 @@ function monitor_send_cmd { case "${monitor_channel}" in socket) echo -e " - MON-SEND: ${MSG}" - echo -e "${MSG}" | nc -N -U "${VM_MONITOR_SOCKETPATH}" 2>&1 > /dev/null + echo -e "${MSG}" | socat -,shut-down unix-connect:"${VM_MONITOR_SOCKETPATH}" 2>&1 > /dev/null ;; telnet) echo -e " - MON-SEND: ${MSG}" - echo -e "${MSG}" | nc -N "${MONITOR_TELNET_HOST}" "${MONITOR_TELNET_PORT}" 2>&1 > /dev/null + echo -e "${MSG}" | socat - tcp:"${MONITOR_TELNET_HOST}":"${MONITOR_TELNET_PORT}" 2>&1 > /dev/null ;; *) echo "ERROR! This should never happen!" @@ -1261,9 +1309,12 @@ ssh_port="" spice_port="" public_dir="" monitor="socket" -monitor_telnet_port="4444" +monitor_telnet_port="4440" monitor_telnet_host="localhost" monitor_cmd="" +serial="socket" +serial_telnet_port="6660" +serial_telnet_host="localhost" BRAILLE="" DELETE_DISK=0 @@ -1290,6 +1341,8 @@ SPICE_PORT="" MONITOR="" MONITOR_CMD="" VM_MONITOR_SOCKETPATH="" +VM_SERIAL_SOCKETPATH="" +SERIAL="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") @@ -1399,6 +1452,18 @@ else MONITOR_TELNET_PORT="${2}" shift; shift;; + -serial|--serial) + SERIAL="${2}" + shift; + shift;; + -serial-telnet-host|--serial-telnet-host) + SERIAL_TELNET_HOST="${2}" + shift; + shift;; + -serial-telnet-port|--serial-telnet-port) + SERIAL_TELNET_PORT="${2}" + shift; + shift;; -version|--version) echo "${VERSION}" exit;; @@ -1423,6 +1488,7 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then VMNAME=$(basename "${VM}" .conf) VMPATH=$(realpath "$(dirname "${VM}")") VM_MONITOR_SOCKETPATH="${VMDIR}/${VMNAME}-monitor.socket" + VM_SERIAL_SOCKETPATH="${VMDIR}/${VMNAME}-serial.socket" # Backwards compatibility for ${driver_iso} if [ -n "${driver_iso}" ] && [ -z "${fixed_iso}" ]; then @@ -1557,11 +1623,11 @@ fi if [ $VM_UP -eq 0 ]; then vm_boot start_viewer - monitor_send_cmd "${MONITOR_CMD}" + [ -n "${MONITOR_CMD}" ] && monitor_send_cmd "${MONITOR_CMD}" else parse_ports_from_file start_viewer - monitor_send_cmd "${MONITOR_CMD}" + [ -n "${MONITOR_CMD}" ] &&monitor_send_cmd "${MONITOR_CMD}" fi # vim:tabstop=2:shiftwidth=2:expandtab From 29efdbbdc075bf355329e7dfbeb47ab462ddc144 Mon Sep 17 00:00:00 2001 From: Radomir Ochtyra <32648297+radomuc@users.noreply.github.com> Date: Mon, 14 Mar 2022 01:46:52 +0100 Subject: [PATCH 008/189] Improve support for keyboard, mouse and usb-controller - add support to choose preferred usb-controller either ehci (USB2.0) or xhci (USB 3.0) - add support to choose preferred keyboard either ps2, usb or virtio - add support to choose preferred keyboard-layout - add support to choose preferred mouse either ps2, usb, tablet, virtio - fix some bugs regarding missing variables - releated to MONTITOR_TELNET_* and SERIAL_TELNET_* - Support implemented on commandline as well as for configuration file --- quickemu | 101 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 90 insertions(+), 11 deletions(-) diff --git a/quickemu b/quickemu index 46601a1..be74870 100755 --- a/quickemu +++ b/quickemu @@ -231,7 +231,6 @@ function vm_boot() { local MAC_BOOTLOADER="" local MAC_MISSING="" local MAC_DISK_DEV="ide-hd,bus=ahci.2" - local MOUSE="usb-tablet" local NET_DEVICE="virtio-net" local OSK="" local SMM="off" @@ -470,7 +469,7 @@ function vm_boot() { fi if [ "${guest_os}" == "freebsd" ] || [ "${guest_os}" == "ghostbsd" ]; then - MOUSE="usb-mouse" + MOUSE="usb" elif [ "${guest_os}" == "haiku" ] || [ "${guest_os}" == "freedos" ]; then MACHINE_TYPE="pc" NET_DEVICE="rtl8139" @@ -873,9 +872,6 @@ function vm_boot() { -m ${RAM_VM} ${BALLOON} -smbios type=2,manufacturer="Quickemu Project",product="Quickemu",version="${VERSION}",serial="0xDEADBEEF",location="quickemu.com",asset="${VMNAME}" ${VIDEO} -display ${DISPLAY_RENDER} - -device usb-ehci,id=input - -device usb-kbd,bus=input.0 - -device ${MOUSE},bus=input.0 -audiodev ${AUDIO_DEV} -device intel-hda -device hda-duplex,audiodev=audio0 -rtc base=localtime,clock=host,driftfix=slew @@ -901,13 +897,63 @@ function vm_boot() { -chardev spicevmc,id=ccid,name=smartcard -device ccid-card-passthru,chardev=ccid ) -# -serial mon:stdio) + + + # setup usb-controller + [ -z "${USB_CONTROLLER}" ] && USB_CONTROLLER="$usb_controller" + if [ "${USB_CONTROLLER}" == "ehci" ]; then + args+=(-device usb-ehci,id=input) + elif [ "${USB_CONTROLLER}" == "xhci" ]; then + args+=(-device qemu-xhci,id=input) + elif [ -z "${USB_CONTROLLER}" ] || [ "${USB_CONTROLLER}" == "none" ]; then + # add nothing + : + else + echo "WARNING! Unknown usb-controller value: '${USB_CONTROLLER}'" + fi + + # setup keyboard + # @INFO: must be set after usb-controller + [ -z "${KEYBOARD}" ] && KEYBOARD="$keyboard" + if [ "${KEYBOARD}" == "usb" ]; then + args+=(-device usb-kbd,bus=input.0) + elif [ "${KEYBOARD}" == "virtio" ]; then + args+=(-device virtio-keyboard) + elif [ "${KEYBOARD}" == "ps2" ] || [ -z "${KEYBOARD}" ]; then + # add nothing, default is ps/2 keyboard + : + else + echo "WARNING! Unknown keyboard value: '${KEYBOARD}'; Fallback to ps2" + fi + + # setup keyboard_layout + # @INFO: When using the VNC display, you must use the -k parameter to set the keyboard layout if you are not using en-us. + [ -z "${KEYBOARD_LAYOUT}" ] && KEYBOARD_LAYOUT="$keyboard_layout" + if [ -n "${KEYBOARD_LAYOUT}" ]; then + args+=(-k ${KEYBOARD_LAYOUT}) + fi # FIXME: Check for device availability. qemu will fail to start otherwise if [ -n "${BRAILLE}" ]; then - # shellcheck disable=SC2054 - args+=(-chardev braille,id=brltty - -device usb-braille,id=usbbrl,chardev=brltty) + # shellcheck disable=SC2054 + args+=(-chardev braille,id=brltty + -device usb-braille,id=usbbrl,chardev=brltty) + fi + + # setup mouse + # @INFO: must be set after usb-controller + [ -z "${MOUSE}" ] && MOUSE="$mouse" + if [ "${MOUSE}" == "usb" ]; then + args+=(-device usb-mouse,bus=input.0) + elif [ "${MOUSE}" == "tablet" ]; then + args+=(-device usb-tablet,bus=input.0) + elif [ "${MOUSE}" == "virtio" ]; then + args+=(-device virtio-mouse) + elif [ "${MOUSE}" == "ps2" ] || [ -z "${MOUSE}" ]; then + # add nothing, default is ps/2 mouse + : + else + echo "WARNING! Unknown mouse value: '${MOUSE}; Fallback to ps2'" fi if [ -n "${bridge}" ]; then @@ -1187,10 +1233,14 @@ function usage() { echo " --monitor : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none'" echo " --monitor-telnet-host : Set telnet host for monitor. (default: 'localhost')" echo " --monitor-telnet-port : Set telnet port for monitor. (default: '4440')" - echo " --monitor-cmd : Send command to monitor if available. (Example: system_powerdown)" + echo " --monitor-cmd : Send command to monitor if available. (Example: system_powerdown)" echo " --serial : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none'" echo " --serial-telnet-host : Set telnet host for serial. (default: 'localhost')" echo " --serial-telnet-port : Set telnet port for serial. (default: '6660')" + echo " --keyboard : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio'" + echo " --keyboard_layout : Set keyboard layout." + echo " --mouse : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio'" + echo " --usb-controller : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none'" echo " --version : Print version" exit 1 } @@ -1315,6 +1365,15 @@ monitor_cmd="" serial="socket" serial_telnet_port="6660" serial_telnet_host="localhost" +# options: ehci(USB2.0), xhci(USB3.0) +usb_controller="ehci" +# options: ps2, usb, virtio +keyboard="usb" +keyboard_layout="en-us" +# options: ps2, usb, tablet, virtio +mouse="tablet" +# options: ehci, xhci +usb_controller="ehci" BRAILLE="" DELETE_DISK=0 @@ -1339,10 +1398,18 @@ VIEWER="" SSH_PORT="" SPICE_PORT="" MONITOR="" +MONITOR_TELNET_PORT="" +MONITOR_TELNET_HOST="" MONITOR_CMD="" VM_MONITOR_SOCKETPATH="" VM_SERIAL_SOCKETPATH="" SERIAL="" +SERIAL_TELNET_PORT="" +SERIAL_TELNET_HOST="" +KEYBOARD="" +KEYBOARD_LAYOUT="" +MOUSE="" +USB_CONTROLLER="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") @@ -1464,6 +1531,18 @@ else SERIAL_TELNET_PORT="${2}" shift; shift;; + -keyboard|--keyboard) + KEYBOARD="${2}" + shift; + shift;; + -mouse|--mouse) + MOUSE="${2}" + shift; + shift;; + -usb-controller|--usb-controller) + USB_CONTROLLER="${2}" + shift; + shift;; -version|--version) echo "${VERSION}" exit;; @@ -1528,7 +1607,7 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then # sharing via 9P, spice-webdavd and Samba. This path is not configurable. if [ -z "${PUBLIC}" ]; then if command -v xdg-user-dir &>/dev/null; then - PUBLIC=$(xdg-user-dir PUBLICSHARE) + PUBLIC=$(xdg-user-dir PUBLICSHARE) fi fi From 1174282660800f3c5ee7998839543708ae1b5b2a Mon Sep 17 00:00:00 2001 From: Radomir Ochtyra <32648297+radomuc@users.noreply.github.com> Date: Mon, 14 Mar 2022 23:00:22 +0100 Subject: [PATCH 009/189] fix code duplication --- quickemu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickemu b/quickemu index be74870..63f991d 100755 --- a/quickemu +++ b/quickemu @@ -1702,11 +1702,11 @@ fi if [ $VM_UP -eq 0 ]; then vm_boot start_viewer - [ -n "${MONITOR_CMD}" ] && monitor_send_cmd "${MONITOR_CMD}" else parse_ports_from_file start_viewer - [ -n "${MONITOR_CMD}" ] &&monitor_send_cmd "${MONITOR_CMD}" fi +[ -n "${MONITOR_CMD}" ] && monitor_send_cmd "${MONITOR_CMD}" + # vim:tabstop=2:shiftwidth=2:expandtab From 9e368b64bc7899ab3b7bf706cadd79576ff1c164 Mon Sep 17 00:00:00 2001 From: Radomir Ochtyra <32648297+radomuc@users.noreply.github.com> Date: Thu, 21 Apr 2022 13:49:18 +0200 Subject: [PATCH 010/189] Add support for "extra_args" in commandline --- quickemu | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/quickemu b/quickemu index 63f991d..261b784 100755 --- a/quickemu +++ b/quickemu @@ -1126,8 +1126,12 @@ function vm_boot() { exit 1 fi - if [ -n "${extra_args}" ]; then - args+=(${extra_args}) + + if [ -z "${EXTRA_ARGS}" ]; then + EXTRA_ARGS="${extra_args}" + fi + if [ -n "${EXTRA_ARGS}" ]; then + args+=(${EXTRA_ARGS}) fi # The OSK parameter contains parenthesis, they need to be escaped in the shell @@ -1241,6 +1245,7 @@ function usage() { echo " --keyboard_layout : Set keyboard layout." echo " --mouse : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio'" echo " --usb-controller : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none'" + echo " --extra_args : Pass additional arguments to qemu" echo " --version : Print version" exit 1 } @@ -1410,6 +1415,7 @@ KEYBOARD="" KEYBOARD_LAYOUT="" MOUSE="" USB_CONTROLLER="" +EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") @@ -1543,6 +1549,10 @@ else USB_CONTROLLER="${2}" shift; shift;; + -extra_args|--extra_args) + EXTRA_ARGS="${2}" + shift; + shift;; -version|--version) echo "${VERSION}" exit;; From 7d1e90908892d2e1a3e98d4f89a773b3e43c5a8a Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 00:59:15 +0100 Subject: [PATCH 011/189] Cleanly Add Batocera (#403) just batocera removed leakage from ludos --- quickemu | 15 +++++++++++++++ quickget | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/quickemu b/quickemu index 261b784..f162138 100755 --- a/quickemu +++ b/quickemu @@ -485,6 +485,15 @@ function vm_boot() { disk_size="16G" fi ;; + batocera) + CPU="-cpu host,kvm=on" + if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then + CPU="${CPU},topoext" + fi + MACHINE_TYPE="pc" + NET_DEVICE="rtl8139" + disk_size="8G" + ;; kolibrios) CPU="-cpu qemu32,kvm=on" if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then @@ -1024,6 +1033,12 @@ function vm_boot() { 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}) + elif [ "${guest_os}" == "batocera" ] ; then + # shellcheck disable=SC2054,SC2206 + args+=(-device virtio-blk-pci,drive=BootDisk + -drive id=BootDisk,if=none,format=raw,file="${img}" + -device virtio-blk-pci,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 diff --git a/quickget b/quickget index a530d8b..e62c863 100755 --- a/quickget +++ b/quickget @@ -160,6 +160,7 @@ function os_support() { android \ archlinux \ arcolinux \ + batocera \ cachyos \ debian \ devuan \ @@ -264,6 +265,10 @@ function releases_fedora() { echo 33 34 35 } +function releases_batocera() { + echo 33 +} + function editions_fedora() { echo Workstation \ Cinnamon \ @@ -662,6 +667,9 @@ function make_vm_config() { IMAGE_FILE="${1}" ISO_FILE="${2}" case "${OS}" in + batocera) + GUEST="batocera" + IMAGE_TYPE="img";; dragonflybsd) GUEST="dragonflybsd" IMAGE_TYPE="iso";; @@ -812,6 +820,13 @@ function get_arcolinux() { echo "${URL}/${ISO} ${HASH}" } +function get_batocera() { + local HASH="" + local ISO="batocera-x86_64-${RELEASE}-20220203.img.gz" + local URL="https://updates.batocera.org/x86_64/stable/last" + echo "${URL}/${ISO} ${HASH}" +} + function get_cachyos() { local HASH="" local ISO="cachyos-${RELEASE}-x86_64.iso" @@ -1717,6 +1732,10 @@ create_vm() { unzip ${VM_PATH}/${ISO} -d ${VM_PATH} ISO=$(ls ${VM_PATH} | grep -i '.iso') fi + if [[ ${OS} == "batocera" ]] && [[ ${ISO} =~ ".gz" ]]; then + gzip -d "${VM_PATH}/${ISO}" + ISO="${ISO/.gz/}" + fi make_vm_config "${ISO}" } From ecc37fa3294afb8e26ae65ca9e1450fde8ae8d2c Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 00:59:39 +0100 Subject: [PATCH 012/189] Additional OVMF paths for recently updated Solus hosts (#422) * Extra OVMF search paths needed for Solus who have moved things around also spotted a possible typo to investigate in the void additions * Revert "updated submodule position" This reverts commit 9648f79b81b5e72465785993bc62469130ac848f. * minor cleanup * try realign submodule backwards --- quickemu | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/quickemu b/quickemu index f162138..6a1dfa7 100755 --- a/quickemu +++ b/quickemu @@ -400,6 +400,10 @@ function vm_boot() { 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}" + # Solus new place to hide + elif [ -e "/usr/share/edk2-ovmf/x64/OVMF_CODE.secboot.fd" ]; then + EFI_CODE="/usr/share/edk2-ovmf/x64/OVMF_CODE.secboot.fd" + efi_vars "/usr/share/edk2-ovmf/x64/OVMF_VARS.fd" "${EFI_VARS}" else echo "ERROR! SecureBoot was requested but no SecureBoot capable firmware was found." echo " Please install OVMF firmware." @@ -428,6 +432,10 @@ function vm_boot() { 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}" + # Solus + elif [ -e "/usr/share/edk2-ovmf/x64/OVMF_CODE.fd" ]; then + EFI_CODE="/usr/share/edk2-ovmf/x64/OVMF_CODE.fd" + efi_vars "/usr/share/edk2-ovmf/x64/OVMF_VARS.fd" "${EFI_VARS}" else echo "ERROR! EFI boot requested but no EFI firmware found." echo " Please install OVMF firmware." From ab1d9672acdcb9aa092add1405eb7b56b1f194c0 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:03:37 +0100 Subject: [PATCH 013/189] Add filter to choose iso files in daily-live (#430) fix: #429 --- quickget | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/quickget b/quickget index e62c863..351377f 100755 --- a/quickget +++ b/quickget @@ -1284,11 +1284,11 @@ function get_ubuntu() { fi 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) + ISO=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | cut -d'*' -f2) + HASH=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso |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) + ISO=$(wget -q -O- "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | cut -d' ' -f3) + HASH=$(wget -q -O- "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | cut -d' ' -f1) fi #echo "${URL}/${ISO} ${HASH}" From ac0ad827523926a2fbf571b4af196a6df2627408 Mon Sep 17 00:00:00 2001 From: Eli Array Minkoff Date: Tue, 22 Mar 2022 11:44:14 -0400 Subject: [PATCH 014/189] Add shebang to conf and mark it as executable --- quickget | 3 +++ 1 file changed, 3 insertions(+) diff --git a/quickget b/quickget index 351377f..7590125 100755 --- a/quickget +++ b/quickget @@ -711,10 +711,13 @@ function make_vm_config() { if [ ! -e "${CONF_FILE}" ]; then echo "Making ${CONF_FILE}" cat << EOF > "${CONF_FILE}" +#!$(which quickemu) --vm guest_os="${GUEST}" disk_img="${VM_PATH}/disk.qcow2" ${IMAGE_TYPE}="${VM_PATH}/${IMAGE_FILE}" EOF + echo "Giving user execute permissions on ${CONF_FILE}," + chmod u+x "${CONF_FILE}" if [ -n "${ISO_FILE}" ]; then echo "fixed_iso=\"${VM_PATH}/${ISO_FILE}\"" >> "${CONF_FILE}" fi From ace75eee9dfb696dd21e1c59f4bfde0426ea5cac Mon Sep 17 00:00:00 2001 From: goosepirate <71612256+goosepirate@users.noreply.github.com> Date: Sat, 23 Jul 2022 20:07:08 -0400 Subject: [PATCH 015/189] Mention SPICE Windows guest tools in README (#440) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 83488df..66e2321 100644 --- a/README.md +++ b/README.md @@ -424,6 +424,8 @@ requires that the `spicy` client is installed, available from the quickemu --vm ubuntu-20.04.conf --display spice ``` +To enable copy/paste with a Windows guest, install [SPICE Windows guest tools](https://www.spice-space.org/download.html) in the guest VM. + Headless -------- From 582dd448fa14277e073e8884ecdc1a098205c5ca Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:07:33 +0100 Subject: [PATCH 016/189] add support for EndeavourOS (#449) --- quickget | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/quickget b/quickget index 7590125..1cfb4d6 100755 --- a/quickget +++ b/quickget @@ -38,6 +38,7 @@ function pretty_name() { cachyos) PRETTY_NAME="CachyOS";; dragonflybsd) PRETTY_NAME="DragonFlyBSD";; elementary) PRETTY_NAME="elementary OS";; + endeavouros) PRETTY_NAME="EndeavourOS";; freebsd) PRETTY_NAME="FreeBSD";; freedos) PRETTY_NAME="FreeDOS";; garuda) PRETTY_NAME="Garuda Linux";; @@ -166,6 +167,7 @@ function os_support() { devuan \ dragonflybsd \ elementary \ + endeavouros \ fedora \ freebsd \ freedos \ @@ -261,6 +263,12 @@ function releases_elementary() { echo 6.1 } +function releases_endeavouros() { + echo apollo_22_1 \ + atlantis-21_4 \ + atlantis_neo-21_5 +} + function releases_fedora() { echo 33 34 35 } @@ -887,6 +895,16 @@ function get_elementary() { echo "${URL}/$(date +%s | base64)/${ISO} ${HASH}" } +function get_endeavouros() { + local HASH="" + # Endeavour release names are Capitalized and our $RELEASE is forced to lowercase so we have to revert it + local ISO="EndeavourOS_${RELEASE@u}.iso" + local URL="https://github.com/endeavouros-team/ISO/releases/download/1-EndeavourOS-ISO-releases-archive" + + HASH=$(wget -q -O- "${URL}/${ISO}.sha512sum" | cut -d' ' -f1) + echo "${URL}/${ISO} ${HASH}" +} + function get_fedora() { local EDITION="${1:-}" local HASH="" From 68729159cb8d5bdf35642f46164f3074ff7ba933 Mon Sep 17 00:00:00 2001 From: dabrown645 Date: Sat, 23 Jul 2022 17:08:54 -0700 Subject: [PATCH 017/189] Update Garuda to Release: latest & get Editions from web site (#453) --- quickget | 38 ++++++++++---------------------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/quickget b/quickget index 1cfb4d6..ecf81cf 100755 --- a/quickget +++ b/quickget @@ -303,23 +303,12 @@ function releases_freedos() { } function releases_garuda() { - echo 220131 + echo latest } function editions_garuda() { - echo dr460nized \ - dr460nized-blackarch \ - dr460nized-gaming \ - bspwm \ - cinnamon \ - gnome \ - i3 \ - kde-barebones \ - lxqt-kwin \ - mate \ - qtile \ - sway \ - xfce + URL="https://mirrors.fossho.st/garuda/iso/latest/garuda/" + echo $(wget -q -O - ${URL} | grep '^ Date: Sun, 24 Jul 2022 02:09:19 +0200 Subject: [PATCH 018/189] quickget: get_windows: validate that download url leads to microsoft cdn (#455) For windows downloads hashes aren't validated via hashes. Let's at least validate that downloads are coming from microsoft via https. Signed-off-by: Steffen Dirkwinkel --- quickget | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/quickget b/quickget index ecf81cf..938d299 100755 --- a/quickget +++ b/quickget @@ -1687,9 +1687,17 @@ function get_windows() { dbg_windows "${DOWNLOAD_SHA1}" DOWNLOAD_ID=$(echo "${DOWNLOAD_INFO}" | grep -oP '(?<=https:\/\/tb\.rg-adguard\.net/dl\.php\?go=)[0-9a-z]+') dbg_windows "${DOWNLOAD_ID}" - DOWNLOAD_URL="https://tb.rg-adguard.net/dl.php?go=${DOWNLOAD_ID}" + REDIRECT_URL="https://tb.rg-adguard.net/dl.php?go=${DOWNLOAD_ID}" + dbg_windows "${REDIRECT_URL}" + DOWNLOAD_URL=$(curl --head --silent --write-out "%{redirect_url}\n" --output /dev/null "${REDIRECT_URL}") dbg_windows "${DOWNLOAD_URL}" + MS_BASE_URL="https://software.download.prss.microsoft.com/" + if [[ ! ${DOWNLOAD_URL} =~ ^${MS_BASE_URL} ]]; then + echo "Download URL not leading to Microsoft CDN" + exit 1 + fi + echo "Downloading ${WINDOWS_NAME}..." web_get "${DOWNLOAD_URL}" "${VM_PATH}" "${FILE_NAME}" From 3f0dfaf9a0ea0bc6313f3e16d00ba766d86a20c6 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:09:40 +0100 Subject: [PATCH 019/189] Update Alma releases (#457) * Update Alma for available releases 8.4 removed and current betas added * fixed for beta paths * Alma 9.0 released --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index 938d299..954d549 100755 --- a/quickget +++ b/quickget @@ -208,7 +208,7 @@ function os_support() { } function releases_alma() { - echo 8.4 8.5 + echo 8.5 8.6 9.0 } function editions_alma() { @@ -759,7 +759,7 @@ function get_alma() { local EDITION="${1:-}" local HASH="" local ISO="AlmaLinux-${RELEASE}-x86_64-${EDITION}.iso" - local URL="http://lon.mirror.rackspace.com/almalinux/${RELEASE}/isos/x86_64/" + local URL="http://lon.mirror.rackspace.com/almalinux/${RELEASE/beta-1/beta}/isos/x86_64/" HASH="$(wget -q -O- "${URL}/CHECKSUM" | grep "(${ISO}" | cut -d' ' -f4)" echo "${URL}/${ISO} ${HASH}" } From 349b9df81c9eab3f8d133b772314c8e3b86c332c Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:10:21 +0100 Subject: [PATCH 020/189] removed obsolete 12.2 version (#458) --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 954d549..3a3ebf7 100755 --- a/quickget +++ b/quickget @@ -291,7 +291,7 @@ function editions_fedora() { } function releases_freebsd(){ - echo 12.2 12.3 13.0 + echo 12.3 13.0 } function editions_freebsd(){ From a5b792de21e43fe716e1b5387fd9cc236432f143 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:10:35 +0100 Subject: [PATCH 021/189] update openBSD releases (#459) --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 3a3ebf7..025e87a 100755 --- a/quickget +++ b/quickget @@ -390,7 +390,7 @@ function editions_nixos(){ } function releases_openbsd(){ - echo 6.7 6.8 6.9 7.0 + echo 6.8 6.9 7.0 7.1 } function releases_opensuse(){ From 35b90f77e0953883ab77309468b259db9f9f0759 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:11:03 +0100 Subject: [PATCH 022/189] changed haiku mirror as cdn no longer resolves (#460) NY set as it seemed good enough. Other working options left in comments in case --- quickget | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index 025e87a..63ac319 100755 --- a/quickget +++ b/quickget @@ -981,8 +981,10 @@ function get_ghostbsd() { function get_haiku() { local EDITION="${1:-}" local ISO="haiku-${RELEASE}-${EDITION}-anyboot.iso" - local URL="https://cdn.haiku-os.org/haiku-release/${RELEASE}" - local HASH="" + # local URL="https://cdn.haiku-os.org/haiku-release/${RELEASE}" # domain gone + local URL="http://mirror.rit.edu/haiku/${RELEASE}" # NY, USA + # local URL="https://mirrors.tnonline.net/haiku/haiku-release/${RELEASE}" # Sweden + # local URL="https://mirror.aarnet.edu.au/pub/haiku/${RELEASE}" # Aus HASH=$(wget -q -O- "${URL}/${ISO}.sha256" | grep "${ISO}" | cut -d' ' -f4) echo "${URL}/${ISO} ${HASH}" From dea192b78579aeb86e71cab441b1e17234d3cca6 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:11:46 +0100 Subject: [PATCH 023/189] add warning for unsupported fedora spins (#461) --- quickget | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/quickget b/quickget index 63ac319..11d7c8a 100755 --- a/quickget +++ b/quickget @@ -1818,6 +1818,14 @@ if [ -n "${2}" ]; then echo " - Setting edition to: ${EDITION}" fi fi + # Handle odd missing fedora cominations + if [[ $OS == fedora ]] ; then + if [[ ${RELEASE} = "33" && ${EDITION} = "i3" ]] || [[ ${RELEASE} = "34" && ${EDITION} = "Cinnamon" ]] ; then + echo "ERROR! Unsupported combination" + echo " Fedora 33 i3 and Fedora 34 Cinnamon are not available, please choose another Release or Edition" + exit 1; + fi + fi VM_PATH="${OS}-${RELEASE}-${EDITION}" validate_release "releases_${OS}" From 4f3f5f2b58dac48b43ad4b9196a991246600f6af Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:12:33 +0100 Subject: [PATCH 024/189] updated mxlinux release to 21.1 (#462) --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 11d7c8a..c85d01e 100755 --- a/quickget +++ b/quickget @@ -352,7 +352,7 @@ function editions_linuxmint(){ } function releases_mxlinux(){ - echo 21 + echo 21.1 } function editions_mxlinux(){ From 790c6269932ba5b03ae6ebbfc7a055bd221c630d Mon Sep 17 00:00:00 2001 From: Scott Travis Date: Sat, 23 Jul 2022 20:13:00 -0400 Subject: [PATCH 025/189] Add support for CentOS Stream (#464) * Add support for CentOS Stream Supports CentOS Stream releases 8 and 9, editions 'dvd1' and 'boot'. * Rename 'centos' to 'centos-stream' for clarity --- quickget | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/quickget b/quickget index c85d01e..67a7ebc 100755 --- a/quickget +++ b/quickget @@ -36,6 +36,7 @@ function pretty_name() { archlinux) PRETTY_NAME="Arch Linux";; arcolinux) PRETTY_NAME="Arco Linux";; cachyos) PRETTY_NAME="CachyOS";; + centos-stream) PRETTY_NAME="CentOS Stream";; dragonflybsd) PRETTY_NAME="DragonFlyBSD";; elementary) PRETTY_NAME="elementary OS";; endeavouros) PRETTY_NAME="EndeavourOS";; @@ -163,6 +164,7 @@ function os_support() { arcolinux \ batocera \ cachyos \ + centos-stream \ debian \ devuan \ dragonflybsd \ @@ -243,6 +245,14 @@ function releases_cachyos() { echo 2022.01.09 2022.02.11 } +function releases_centos-stream() { + echo 8 9 +} + +function editions_centos-stream() { + echo dvd1 boot +} + function releases_debian() { echo 10.11.0 11.2.0 11.3.0 } @@ -721,7 +731,7 @@ EOF # OS specific tweaks case ${OS} in - alma|oraclelinux|rockylinux) echo "disk_size=\"32G\"" >> "${CONF_FILE}";; + alma|centos-stream|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}" @@ -834,6 +844,25 @@ function get_cachyos() { echo "${URL}/${ISO} ${HASH}" } +function get_centos-stream() { + local HASH="" + local ISO="" + case ${RELEASE} in + 8) + ISO="CentOS-Stream-${RELEASE}-x86_64-latest-${EDITION}.iso" + URL="https://mirrors.ocf.berkeley.edu/centos/8-stream/isos/x86_64" + HASH=$(wget -q -O- ${URL}/CHECKSUM | grep "SHA256 (${ISO}" | cut -d' ' -f4) + ;; + 9) + ISO="CentOS-Stream-${RELEASE}-latest-x86_64-${EDITION}.iso" + URL="https://mirrors.ocf.berkeley.edu/centos-stream/9-stream/BaseOS/x86_64/iso" + HASH=$(wget -q -O- ${URL}/${ISO}.SHA256SUM | grep "SHA256 (${ISO}" | cut -d' ' -f4) + ;; + esac + + echo "${URL}/${ISO} ${HASH}" +} + function get_debian() { local EDITION="${1:-}" local HASH="" From f061991b6724843b4d80d2e1c671a3efc7631eb6 Mon Sep 17 00:00:00 2001 From: Heysion Date: Sun, 24 Jul 2022 08:15:52 +0800 Subject: [PATCH 026/189] feat: add deepin support (#475) add deepin v20 support Log: Co-authored-by: Heysion Y --- quickget | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/quickget b/quickget index 67a7ebc..709aebf 100755 --- a/quickget +++ b/quickget @@ -166,6 +166,7 @@ function os_support() { cachyos \ centos-stream \ debian \ + deepin \ devuan \ dragonflybsd \ elementary \ @@ -261,6 +262,10 @@ function editions_debian() { echo standard cinnamon gnome kde lxde lxqt mate xfce netinst } +function releases_deepin() { + echo 20 20.1 20.2 20.2.1 20.2.2 20.2.3 20.2.4 20.3 20.4 20.5 +} + function releases_devuan() { echo beowulf chimaera } @@ -733,6 +738,10 @@ EOF case ${OS} in alma|centos-stream|oraclelinux|rockylinux) echo "disk_size=\"32G\"" >> "${CONF_FILE}";; dragonflybsd|haiku|openbsd|netbsd|slackware|tails) echo "boot=\"legacy\"" >> "${CONF_FILE}";; + deepin) + echo "disk_size=\"64G\"" >> "${CONF_FILE}" + echo "ram=\"4G\"" >> "${CONF_FILE}" + ;; freedos) echo "boot=\"legacy\"" >> "${CONF_FILE}" echo "disk_size=\"4G\"" >> "${CONF_FILE}" @@ -884,6 +893,30 @@ function get_debian() { echo "${URL}/${ISO} ${HASH}" } +function get_deepin() { + local HASH="" + local EDITION="" + local ISO="deepin-desktop-community-${RELEASE}-amd64.iso" + # deepin-desktop-community-20.3-amd64.iso + local URL="https://cdimage.deepin.com/releases/"${RELEASE} + + # fix iso name + if [[ "${RELEASE}" == *"20" ]] ; then + EDITION="1003" + ISO="deepin-desktop-community-${EDITION}-amd64.iso" + elif [[ "${RELEASE}" == *"20.1" ]]; then + EDITION="1010" + ISO="deepin-desktop-community-${EDITION}-amd64.iso" + fi + + HASH=$(wget -q -O- "${URL}/SHA256SUMS" | grep "${ISO}" | cut -d' ' -f1) + + #echo "${URL}/${ISO} ${HASH}" + web_get "${URL}/${ISO}" "${VM_PATH}" + check_hash "${ISO}" "${HASH}" + make_vm_config "${ISO}" +} + function get_devuan() { local HASH="" local ISO="" @@ -1867,6 +1900,10 @@ if [ -n "${2}" ]; then # Ubuntu doesn't use create_vm() validate_release releases_ubuntu get_ubuntu + elif [[ "${OS}" == *"deepin"* ]]; then + # deepin doesn't use create_vm() + validate_release releases_deepin + get_deepin elif [ "${OS}" == "windows" ]; then LANG="English International" if [ -n "${3}" ]; then From fe46fffeff0e1fbc61e5809f8c1e4dac271cdaf9 Mon Sep 17 00:00:00 2001 From: Philipp Kiemle <30795174+daPhipz@users.noreply.github.com> Date: Sun, 24 Jul 2022 02:16:05 +0200 Subject: [PATCH 027/189] Make Fedora 36 available (#477) Closes #471 --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 709aebf..6067d63 100755 --- a/quickget +++ b/quickget @@ -285,7 +285,7 @@ function releases_endeavouros() { } function releases_fedora() { - echo 33 34 35 + echo 33 34 35 36 } function releases_batocera() { From 95c72d3eefd18d029c20b777107d37ad20d9aa7f Mon Sep 17 00:00:00 2001 From: Dimitris <58709057+DimitrisPa@users.noreply.github.com> Date: Sun, 24 Jul 2022 00:16:24 +0000 Subject: [PATCH 028/189] Update NixOS releases (#479) --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 6067d63..822737e 100755 --- a/quickget +++ b/quickget @@ -397,7 +397,7 @@ function releases_netbsd() { } function releases_nixos(){ - echo 21.05 21.11 + echo 21.05 21.11 22.05 } function editions_nixos(){ From f127cca13b31ff8976dcf0895a98665ba5368edb Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:16:37 +0100 Subject: [PATCH 029/189] add Release 20.3 (#483) requested in #482 --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 822737e..108bf65 100755 --- a/quickget +++ b/quickget @@ -359,7 +359,7 @@ function releases_kolibrios() { } function releases_linuxmint(){ - echo 20.2 + echo 20.2 20.3 } function editions_linuxmint(){ From 0390dcf65241379bc09b66e45e99ccb4ccf4671a Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:17:23 +0100 Subject: [PATCH 030/189] add LMDE (#484) requested in #482 --- quickget | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/quickget b/quickget index 108bf65..e5ab7fb 100755 --- a/quickget +++ b/quickget @@ -47,6 +47,7 @@ function pretty_name() { kdeneon) PRETTY_NAME="KDE Neon";; kolibrios) PRETTY_NAME="KolibriOS";; linuxmint) PRETTY_NAME="Linux Mint";; + lmde) PRETTY_NAME="Linux Mint Debian Edition";; mxlinux) PRETTY_NAME="MX Linux";; netboot) PRETTY_NAME="netboot.xyz";; netbsd) PRETTY_NAME="NetBSD";; @@ -183,6 +184,7 @@ function os_support() { kolibrios \ kubuntu \ linuxmint \ + lmde \ manjaro \ mxlinux \ netboot \ @@ -366,6 +368,13 @@ function editions_linuxmint(){ echo cinnamon mate xfce } +function editions_lmde(){ + echo cinnamon +} +function releases_lmde(){ + echo 5 +} + function releases_mxlinux(){ echo 21.1 } @@ -1089,6 +1098,16 @@ function get_linuxmint() { echo "${URL}/${ISO} ${HASH}" } +function get_lmde() { + local EDITION="${1:-}" + local HASH="" + local ISO="lmde-${RELEASE}-${EDITION}-64bit.iso" + local URL="https://mirror.bytemark.co.uk/linuxmint/debian" + + HASH=$(wget -q -O- "${URL}/sha256sum.txt" | grep "${ISO}" | cut -d' ' -f1) + echo "${URL}/${ISO} ${HASH}" +} + function get_macos() { local BOARD_ID="" local CWD="" From cb0922de2025c83e81b8e003dc10d5737de07ada Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:17:54 +0100 Subject: [PATCH 031/189] Add OpenSuSE 15.4 release (#489) --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index e5ab7fb..fa7920a 100755 --- a/quickget +++ b/quickget @@ -418,7 +418,7 @@ function releases_openbsd(){ } function releases_opensuse(){ - echo 15.0 15.1 15.2 15.3 microos tumbleweed + echo 15.0 15.1 15.2 15.3 15.4 microos tumbleweed } function releases_oraclelinux() { From 677b3e38744dbb959f36b0d4586f940d59d709ca Mon Sep 17 00:00:00 2001 From: Philip Crockett Date: Sun, 24 Jul 2022 02:19:04 +0200 Subject: [PATCH 032/189] Support Pop!_OS 22.04 (#493) --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index fa7920a..3289e60 100755 --- a/quickget +++ b/quickget @@ -426,7 +426,7 @@ function releases_oraclelinux() { } function releases_popos() { - echo 20.04 21.10 + echo 20.04 21.10 22.04 } function editions_popos() { From da30757832301e04e0234a25af61bf3d432635b7 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:19:19 +0100 Subject: [PATCH 033/189] Remove Impish at EOL 14/7/2022 (#495) --- quickget | 1 - 1 file changed, 1 deletion(-) diff --git a/quickget b/quickget index 3289e60..5deff45 100755 --- a/quickget +++ b/quickget @@ -480,7 +480,6 @@ function releases_ubuntu() { ;; esac echo ${LTS_SUPPORT} \ - 21.10 \ daily-live \ daily-canary \ eol-4.10 \ From cfadfde2b7fd6cfb1c9effbf520f9d7c7eade3b5 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:20:49 +0100 Subject: [PATCH 034/189] Add 11.4.0 current live release (#503) * Add 11.4.0 current live release * move latest debian on so last switches to archive --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index 5deff45..2447e9b 100755 --- a/quickget +++ b/quickget @@ -257,7 +257,7 @@ function editions_centos-stream() { } function releases_debian() { - echo 10.11.0 11.2.0 11.3.0 + echo 10.11.0 11.2.0 11.3.0 11.4.0 } function editions_debian() { @@ -887,7 +887,7 @@ function get_debian() { local URL="" case ${RELEASE} in - 11.3.0) URL="https://cdimage.debian.org/debian-cd/${RELEASE}-live/amd64/iso-hybrid";; + 11.4.0) URL="https://cdimage.debian.org/debian-cd/${RELEASE}-live/amd64/iso-hybrid";; *) URL="https://cdimage.debian.org/cdimage/archive/${RELEASE}-live/amd64/iso-hybrid/";; esac From b540471acc8171b2de9bdd4e0296a07868159176 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sun, 24 Jul 2022 01:21:41 +0100 Subject: [PATCH 035/189] Update latest Rocky to 9.0 release (#506) also reflect changed name for dvd iso --- quickget | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/quickget b/quickget index 2447e9b..5101f59 100755 --- a/quickget +++ b/quickget @@ -442,12 +442,13 @@ function editions_regolith() { } function releases_rockylinux() { - echo 8.3 8.4 8.5 + echo 8.3 8.4 8.5 9.0 } +# Rocky have renamed dvd1 -> dvd at 9.0 function editions_rockylinux() { echo minimal \ - dvd1 + "dvd (dvd1 prior to 9.0)" } function releases_slackware() { @@ -1307,7 +1308,7 @@ function get_rockylinux() { local URL="" case ${RELEASE} in - 8.5) URL="https://download.rockylinux.org/pub/rocky/${RELEASE}/isos/x86_64";; + 9.0) URL="https://download.rockylinux.org/pub/rocky/${RELEASE}/isos/x86_64";; *) URL="http://dl.rockylinux.org/vault/rocky/${RELEASE}/isos/x86_64/";; esac HASH=$(wget -q -O- "${URL}/CHECKSUM" | grep "SHA256" | grep "${ISO})" | cut -d' ' -f4) From 601273de40b387773f1e0dded68e9ed68f9764a4 Mon Sep 17 00:00:00 2001 From: kaikikokuke <62207468+kaikikokuke@users.noreply.github.com> Date: Sun, 24 Jul 2022 02:22:01 +0200 Subject: [PATCH 036/189] Updates MSRs alert comment to include windows (#507) Adds windows to MSRs alert comment in addition to macOS --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 6a1dfa7..866d3b4 100755 --- a/quickemu +++ b/quickemu @@ -645,7 +645,7 @@ function vm_boot() { fi if [ "${guest_os}" == "macos" ] || [ "${guest_os}" == "windows" ]; then - # Display MSRs alert if the guest is macOS + # Display MSRs alert if the guest is macOS or windows ignore_msrs_alert fi From 76bb64035d1fdaa089e68d1e6a604fcf31e156e4 Mon Sep 17 00:00:00 2001 From: Abe Hanoka Date: Sat, 23 Jul 2022 20:23:04 -0400 Subject: [PATCH 037/189] fix window 11 config example (#497) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 66e2321..a015a2b 100644 --- a/README.md +++ b/README.md @@ -400,6 +400,7 @@ disk_img="windows-11/disk.qcow2" iso="windows-11/Win11_EnglishInternational_x64.iso" fixed_iso="windows-11/virtio-win.iso" tpm="on" +secureboot="on" ``` - `guest_os="windows"` instructs `quickemu` to optimise for Windows. From 02b09416d581b963e2c3580b76505b2cbd9fe8f3 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Sun, 24 Jul 2022 01:28:18 +0100 Subject: [PATCH 038/189] Drop Alma 8.5. Close #500 --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 5101f59..f6a3e48 100755 --- a/quickget +++ b/quickget @@ -213,7 +213,7 @@ function os_support() { } function releases_alma() { - echo 8.5 8.6 9.0 + echo 8.6 9.0 } function editions_alma() { From 974c9ab5fae928e2f1964c37cefc9e3bd782df07 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Fri, 29 Jul 2022 09:31:10 +0100 Subject: [PATCH 039/189] White space clean up --- quickemu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickemu b/quickemu index 866d3b4..9f3c270 100755 --- a/quickemu +++ b/quickemu @@ -1149,7 +1149,7 @@ function vm_boot() { exit 1 fi - + if [ -z "${EXTRA_ARGS}" ]; then EXTRA_ARGS="${extra_args}" fi @@ -1285,7 +1285,7 @@ function viewer_param_check() { if [ "${VIEWER}" != "none" ] && [ "${VIEWER}" != "spicy" ] && [ "${VIEWER}" != "remote-viewer" ]; then echo "ERROR! Requested viewer '${VIEWER}' is not recognised." exit 1 - fi + fi if [ "${VIEWER}" == "spicy" ] && ! command -v spicy &>/dev/null; then echo "ERROR! Requested 'spicy' as viewer, but 'spicy' is not installed." exit 1 From 39da52a3bfda0cb06a669cd1b23b3114a2aa3148 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Fri, 29 Jul 2022 11:45:59 +0100 Subject: [PATCH 040/189] Bump the version to 3.16 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 9f3c270..17f739e 100755 --- a/quickemu +++ b/quickemu @@ -1443,7 +1443,7 @@ EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="3.15" +readonly VERSION="3.16" # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) From d0c2bb228a79356cd39ccf326a933c90aee9d420 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Sat, 30 Jul 2022 07:56:23 +0100 Subject: [PATCH 041/189] New release docs with cogged README (#508) --- README.md | 274 ++++++++++++++++++++---------------- build-docs | 2 +- docs/quickemu.1 | 302 +++++++++++++++++++++++++--------------- docs/quickemu.1.md | 197 +++++++++++++++----------- docs/quickemu_conf.1 | 87 ++++++++---- docs/quickemu_conf.1.md | 97 ++++++------- docs/quickget.1 | 189 ++++++++++++++----------- docs/quickget.1.md | 70 +++++----- 8 files changed, 698 insertions(+), 520 deletions(-) diff --git a/README.md b/README.md index a015a2b..dc9b9d2 100644 --- a/README.md +++ b/README.md @@ -8,17 +8,16 @@
Quickemu Screenshot

Made with 💝 for

-Introduction ------------- +## Introduction Quickly create and run highly optimised desktop virtual machines for Linux, macOS and Windows; with just two commands. You decide what operating system you want to run and Quickemu will figure out the best way to do it for you. For example: -``` {.bash} -quickget ubuntu-mate 21.10 -quickemu --vm ubuntu-mate-21.10-.conf +``` bash +quickget ubuntu-mate 22.04 +quickemu --vm ubuntu-mate-22.04-.conf ``` The original objective of the project was to enable quick testing of @@ -28,8 +27,7 @@ and no elevated permissions are required to run the virtual machines. **Quickemu now also includes comprehensive support for macOS and Windows**. -Features --------- +## Features - **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra - **Windows** 8.1, 10 and 11 including TPM 2.0 @@ -67,8 +65,7 @@ Quickemu. [![Replace VirtualBox with Bash & QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/watch?v=AOTYWEgw0hI) -Requirements ------------- +## Requirements - [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, SPICE & VirtFS support** @@ -93,11 +90,37 @@ Requirements - [zsync](http://zsync.moria.org.uk/) - [unzip](http://www.info-zip.org/UnZip.html) -Usage -===== +### Installing Requirements -Graphical User Interfaces -------------------------- +For Ubuntu, Arch and nixos systems the +[ppa](https://launchpad.net/~flexiondotorg/+archive/ubuntu/quickemu), +[AUR](https://aur.archlinux.org/packages/quickemu) or +[nix](https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/quickemu) +packaging will take care of the dependencies. For other host +distributions or operating systems it will be necessary to install the +above requirements or their equivalents. + +These examples may save a little typing + +Debian: + + sudo apt install qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip + +Fedora: + + sudo dnf install qemu bash coreutils edk2-tools grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-gtk-tools swtpm wget xdg-user-dirs xrandr unzip + +MacOS: + +This is a work in progress (see [issue +248](https://github.com/quickemu-project/quickemu/issues/248) for other +steps and changes that may enable running on MacOS) + + brew install qemu bash coreutils grep jq python@3.10 cdrtools gnu-sed spice-gtk wget zsync + +# Usage + +## Graphical User Interfaces While `quickemu` and `quickget` are designed for the terminal, a graphical user interface is also available: @@ -112,33 +135,30 @@ Many thanks to [Luke Wesley-Holley](https://github.com/Lukewh) and ### Quickgui for Ubuntu -``` {.bash} +``` bash sudo add-apt-repository ppa:yannick-mauray/quickgui sudo apt update sudo apt install quickgui ``` -Install Quickemu -================ +# Install Quickemu -Ubuntu ------- +## Ubuntu Quickemu is available from a PPA for Ubuntu users. The Quickemu PPA also includes a back port of QEMU 6.0.0 for 20.04 (Focal) and 21.04 (Hirsute). To install Quickemu and all the dependencies run the following in a terminal: -``` {.bash} +``` bash sudo apt-add-repository ppa:flexiondotorg/quickemu sudo apt update sudo apt install quickemu ``` -Other Linux ------------ +## Other Linux -``` {.bash} +``` bash git clone --depth=1 https://github.com/wimpysworld/quickemu cd quickemu ``` @@ -160,15 +180,14 @@ status](https://repology.org/badge/vertical-allrepos/quickemu.svg)](https://repo [![Packaging status](https://repology.org/badge/vertical-allrepos/quickgui.svg)](https://repology.org/project/quickgui/versions) -Ubuntu Guest ------------- +## Ubuntu Guest `quickget` will automatically download an Ubuntu release and create the virtual machine configuration. -``` {.bash} -quickget ubuntu 20.04 -quickemu --vm ubuntu-20.04.conf +``` bash +quickget ubuntu 22.04 +quickemu --vm ubuntu-22.04.conf ``` - Complete the installation as normal. @@ -185,7 +204,7 @@ quickemu --vm ubuntu-20.04.conf `quickget` can also download/refresh devel images via `zsync` for Ubuntu developers and testers. -``` {.bash} +``` bash quickget ubuntu devel quickemu --vm ubuntu-devel.conf ``` @@ -208,8 +227,7 @@ with your preferred flavour. - `ubuntu` (Ubuntu) - `xubuntu` (Xubuntu) -Other Operating Systems ------------------------ +## Other Operating Systems `quickget` also supports: @@ -218,11 +236,15 @@ Other Operating Systems - `android` (Android x86) - `archlinux` (Arch Linux) - `arcolinux` (Arco Linux) +- `batocera` (Batocera) - `cachyos` (CachyOS) +- `centos-stream` (CentOS Stream) - `debian` (Debian) +- `deepin` (Deepin) - `devuan` (Devuan) - `dragonflybsd` (DragonFlyBSD) - `elementary` (elementary OS) +- `endeavouros` (EndeavourOS) - `fedora` (Fedora) - `freebsd` (FreeBSD) - `freedos` (FreeDOS) @@ -234,6 +256,7 @@ Other Operating Systems - `kdeneon` (KDE Neon) - `kolibrios` (KolibriOS) - `linuxmint` (Linux Mint) +- `lmde` (Linux Mint Debian Edition) - `manjaro` (Manjaro) - `mxlinux` (MX Linux) - `netboot` (netboot.xyz) @@ -257,7 +280,7 @@ configuration. - Download a .iso image of a Linux distribution - Create a VM configuration file; for example `debian-bullseye.conf` -``` {.bash} +``` bash guest_os="linux" disk_img="debian-bullseye/disk.qcow2" iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso" @@ -265,7 +288,7 @@ iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso" - Use `quickemu` to start the virtual machine: -``` {.bash} +``` bash quickemu --vm debian-bullseye.conf ``` @@ -276,13 +299,12 @@ quickemu --vm debian-bullseye.conf - Install the SPICE WebDAV agent (`spice-webdavd`) to enable file sharing. -macOS Guest ------------ +## macOS Guest `quickget` automatically downloads a macOS recovery image and creates a virtual machine configuration. -``` {.bash} +``` bash quickget macos catalina quickemu --vm macos-catalina.conf ``` @@ -312,7 +334,7 @@ supported. The default macOS configuration looks like this: -``` {.bash} +``` bash guest_os="macos" img="macos-catalina/RecoveryImage.img" disk_img="macos-catalina/disk.qcow2" @@ -363,8 +385,7 @@ There are some considerations when running macOS via Quickemu. webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). - Copy/paste via SPICE agent is **not available on macOS**. -Windows 8.1, 10 & 11 Guests ---------------------------- +## Windows 8.1, 10 & 11 Guests `quickget` can automatically download Windows 8.1, [Windows 10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and @@ -374,7 +395,7 @@ with the [VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) and creates a virtual machine configuration. -``` {.bash} +``` bash quickget windows 11 quickemu --vm windows-11.conf ``` @@ -388,13 +409,13 @@ By default `quickget` will download the *"English International"* release, but you can optionally specify one of the supported languages: For example: -``` {.bash} +``` bash quickget windows 11 "Chinese (Traditional)" ``` The default Windows 11 configuration looks like this: -``` {.bash} +``` bash guest_os="windows" disk_img="windows-11/disk.qcow2" iso="windows-11/Win11_EnglishInternational_x64.iso" @@ -408,8 +429,7 @@ secureboot="on" - `tpm="on"` instructs `quickemu` to create a software emulated TPM device using `swtpm`. -SPICE -===== +# SPICE The following features are available while using the SPICE protocol: @@ -421,51 +441,49 @@ To use SPICE add `--display spice` to the Quickemu invocation, this requires that the `spicy` client is installed, available from the `spice-client-gtk` package in Debian/Ubuntu. -``` {.bash} -quickemu --vm ubuntu-20.04.conf --display spice +``` bash +quickemu --vm ubuntu-22.04.conf --display spice ``` -To enable copy/paste with a Windows guest, install [SPICE Windows guest tools](https://www.spice-space.org/download.html) in the guest VM. +To enable copy/paste with a Windows guest, install [SPICE Windows guest +tools](https://www.spice-space.org/download.html) in the guest VM. -Headless --------- +## Headless To start a VM with SPICE enabled, but no display attached use `--display none`. This requires that the `spicy` client is installed, available from the `spice-client-gtk` package in Debian/Ubuntu to connect to the running VM -``` {.bash} -quickemu --vm ubuntu-20.04.conf --display none +``` bash +quickemu --vm ubuntu-22.04.conf --display none ``` You can also use the `.ports` file in the VM directory to lookup what SSH and SPICE ports the VM is connected to. -``` {.bash} -cat ubuntu-20.04/ubuntu-20.04.ports +``` bash +cat ubuntu-22.04/ubuntu-22.04.ports ``` If, for example, the SSH port is set to 22220, and assuming your VM has a started SSH service (details vary by OS), you can typically SSH into it from the host as follows: -``` {.bash} +``` bash ssh -p 22220 your_vm_user@localhost ``` -Accessibility -============= +# Accessibility Qemu provides support for using BrlAPI to display braille output on a real or fake device. -``` {.bash} -quickemu --vm ubuntu-21.10.conf --braille --display sdl +``` bash +quickemu --vm ubuntu-22.04.conf --braille --display sdl ``` -BIOS and EFI -============ +# BIOS and EFI Since Quickemu 2.1.0 `efi` is the default boot option. If you want to override this behaviour then add the following line to you VM @@ -473,8 +491,7 @@ configuration to enable legacy BIOS. - `boot="legacy"` - Enable Legacy BIOS boot -Tuning CPU cores, RAM & disks -============================= +# Tuning CPU cores, RAM & disks By default, Quickemu will calculate the number of CPUs cores and RAM to allocate to a VM based on the specifications of your host computer. You @@ -489,8 +506,7 @@ Add additional lines to your virtual machine configuration: - `disk_size="16G"` - Specify the size of the virtual disk allocated to the VM -Disk preallocation ------------------- +## Disk preallocation Preallocation mode (allowed values: `off` (default), `metadata`, `falloc`, `full`). An image with preallocated metadata is initially @@ -502,16 +518,14 @@ configuration. - `preallocation="metadata"` -CD-ROM disks ------------- +## CD-ROM disks If you want to expose an ISO image from the host to guest add the following line to the VM configuration: - `fixed_iso="/path/to/image.iso"` -Floppy disks ------------- +## Floppy disks If you're like [Alan Pope](https://popey.com) you'll probably want to mount a floppy disk image in the guest. To do so add the following line @@ -519,14 +533,12 @@ to the VM configuration: - `floppy="/path/to/floppy.img"` -File Sharing -============ +# File Sharing All File Sharing options will only expose `~/Public` (or localised variations) for the current user to the guest VMs. -Samba 🐧 🍏 🪟 ------------ +## Samba 🐧 🍏 🪟 If `smbd` is available on the host, Quickemu will automatically enable the built-in QEMU support for exposing a Samba share from the host to @@ -534,22 +546,28 @@ the guest. You can install the minimal Samba components on Ubuntu using: -``` {.bash} +``` bash sudo apt install --no-install-recommends samba ``` -SPICE WebDAV 🐧 🪟 ----------------- +If everything is set up correctly, the `smbd` address will be printed +when the virtual machine is started. For example: + + - smbd: On guest: smb://10.0.2.4/qemu + +If using a Windows guest, right-click on "This PC", click "Add a network +location", and paste this address, removing `smb:` and replacing forward +slashes with backslashes (in this example `\\10.0.2.4\qemu`). + +## SPICE WebDAV 🐧 🪟 - TBD -VirtIO-9P 🐧 🍏 -------------- +## VirtIO-9P 🐧 🍏 - TBD -Network port forwarding -======================= +# Network port forwarding Add an additional line to your virtual machine configuration. For example: @@ -561,30 +579,26 @@ In the example above: - Port 8123 on the host is forwarded to port 8123 on the guest. - Port 8888 on the host is forwarded to port 80 on the guest. -Bridged networking -================== +# Bridged networking Connect your virtual machine to a preconfigured network bridge. Add an additional line to your virtual machine configuration - `bridge="br0"` -USB redirection -=============== +# USB redirection Quickemu supports USB redirection via SPICE pass-through and host pass-through. -SPICE redirection (recommended) -------------------------------- +## SPICE redirection (recommended) Using SPICE for USB pass-through is easiest as it doesn't require any elevated permission, start Quickemu with `--display spice` and then select `Input` -\> `Select USB Device for redirection` from the menu to choose which device(s) you want to attach to the guest. -Host redirection **NOT Recommended** ------------------------------------- +## Host redirection **NOT Recommended** **USB host redirection is not recommended**, it is provided purely for backwards compatibility to older versions of Quickemu. Using SPICE is @@ -597,9 +611,9 @@ example: In the example above: -- The USB device with vendor\_id 046d and product\_id 082d will be +- The USB device with vendor_id 046d and product_id 082d will be exposed to the guest. -- The USB device with vendor\_id 046d and product\_id 085e will be +- The USB device with vendor_id 046d and product_id 085e will be exposed to the guest. If the USB devices are not writable, `quickemu` will display the @@ -611,55 +625,80 @@ like this: sudo chown -v root:user /dev/bus/usb/001/005 ERROR! USB permission changes are required 👆 -TPM -=== +# TPM Since Quickemu 2.2.0 a software emulated TPM device can be added to guest virtual machines. Just add `tpm="on"` to your VM configuration. `quickget` will automatically add this line to Windows 11 virtual machines. -All the options -=============== +# All the options Here are the usage instructions: -``` {.bash} + +``` + Usage quickemu --vm ubuntu.conf You can also pass optional parameters - --braille : Enable braille support. Requires SDL. - --delete-disk : Delete the disk image and EFI variables - --delete-vm : Delete the entire VM and it's configuration - --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice' - --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) - --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers - --screen : Use specified screen to determine the window size. - --shortcut : Create a desktop shortcut - --snapshot apply : Apply/restore a snapshot. - --snapshot create : Create a snapshot. - --snapshot delete : Delete a snapshot. - --snapshot info : Show disk/snapshot info. - --status-quo : Do not commit any changes to disk/snapshot. - --version : Print version + --braille : Enable braille support. Requires SDL. + --delete-disk : Delete the disk image and EFI variables + --delete-vm : Delete the entire VM and it's configuration + --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice' + --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) + --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers + --screen : Use specified screen to determine the window size. + --shortcut : Create a desktop shortcut + --snapshot apply : Apply/restore a snapshot. + --snapshot create : Create a snapshot. + --snapshot delete : Delete a snapshot. + --snapshot info : Show disk/snapshot info. + --status-quo : Do not commit any changes to disk/snapshot. + --viewer : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none' + --ssh-port : Set ssh-port manually + --spice-port : Set spice-port manually + --public-dir : expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '', 'none' + --monitor : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none' + --monitor-telnet-host : Set telnet host for monitor. (default: 'localhost') + --monitor-telnet-port : Set telnet port for monitor. (default: '4440') + --monitor-cmd : Send command to monitor if available. (Example: system_powerdown) + --serial : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none' + --serial-telnet-host : Set telnet host for serial. (default: 'localhost') + --serial-telnet-port : Set telnet port for serial. (default: '6660') + --keyboard : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio' + --keyboard_layout : Set keyboard layout. + --mouse : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio' + --usb-controller : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none' + --extra_args : Pass additional arguments to qemu + --version : Print version + ``` -Desktop shortcuts ------------------ + + +## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in `~/.local/share/applications`. Here is an example of how to create a shortcut. -``` {.bash} -quickemu --vm ubuntu-20.04-desktop.conf --shortcut +``` bash +quickemu --vm ubuntu-22.04-desktop.conf --shortcut ``` -Screen and window size (Linux guests only) ------------------------------------------- +## Screen and window size (Linux guests only) `qemu` will always default to the primary monitor to display the VM's window. @@ -680,13 +719,13 @@ must match the resolution of the screen. To know which screen to use, type: -``` {.bash} +``` bash xrandr --listmonitors | grep -v Monitors ``` The command will output something like this: -``` {.bash} +``` bash 0: +*HDMI-0 2560/597x1440/336+1920+0 HDMI-0 1: +DVI-D-0 1920/527x1080/296+0+0 DVI-D-0 ``` @@ -695,7 +734,7 @@ The first number is what needs to be passed to the `--screen` option. For example: -``` {.bash} +``` bash quickemu --vm vm.conf --screen 0 ``` @@ -704,8 +743,7 @@ which Quickemu sizes to 2048x1152. Without the `--screen` option, Quickemu would have used the 1920x1080 monitor which results in a window size of 1664x936. -References -========== +# References Useful reference that assisted the development of Quickemu. diff --git a/build-docs b/build-docs index 3ede604..51ee39c 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 3ede604a11b7a666f91bb19705d32d73fb0bd4d7 +Subproject commit 51ee39c41c13fb1cc78e86ec24b100f35c337d70 diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 75ec017..77de3ae 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -1,6 +1,20 @@ -.\" Automatically generated by Pandoc 2.9.2.1 +.\" Automatically generated by Pandoc 2.18 .\" -.TH "QUICKEMU" "1" "February 20, 2022" "quickemu" "Quickemu User Manual" +.\" Define V font for inline verbatim, using C font in formats +.\" that render this, and otherwise B font. +.ie "\f[CB]x\f[]"x" \{\ +. ftr V B +. ftr VI BI +. ftr VB B +. ftr VBI BI +.\} +.el \{\ +. ftr V CR +. ftr VI CI +. ftr VB CB +. ftr VBI CBI +.\} +.TH "QUICKEMU" "1" "July 30, 2022" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -61,8 +75,8 @@ Do not commit any changes to disk/snapshot. Print version .SH EXAMPLES .TP -\f[B]quickemu \[en]vm ubuntu-mate-21.10-.conf\f[R] -Launches the VM specified in the file \f[I]ubuntu-mate-21.10-.conf\f[R] +\f[B]quickemu \[en]vm ubuntu-mate-22.04-.conf\f[R] +Launches the VM specified in the file \f[I]ubuntu-mate-22.04-.conf\f[R] .SS Introduction .PP Quickly create and run highly optimised desktop virtual machines for @@ -73,8 +87,8 @@ For example: .IP .nf \f[C] -quickget ubuntu-mate 21.10 -quickemu --vm ubuntu-mate-21.10-.conf +quickget ubuntu-mate 22.04 +quickemu --vm ubuntu-mate-22.04-.conf \f[R] .fi .PP @@ -105,7 +119,7 @@ QEMU Guest Agent support (https://wiki.qemu.org/Features/GuestAgent); provides access to a system-level agent via standard QMP commands .IP \[bu] 2 Samba file sharing for Linux, macOS and Windows guests (\f[I]if -\f[CI]smbd\f[I] is installed on the host\f[R]) +\f[VI]smbd\f[I] is installed on the host\f[R]) .IP \[bu] 2 VirGL acceleration .IP \[bu] 2 @@ -181,10 +195,49 @@ xrandr (https://gitlab.freedesktop.org/xorg/app/xrandr) zsync (http://zsync.moria.org.uk/) .IP \[bu] 2 unzip (http://www.info-zip.org/UnZip.html) +.SS Installing Requirements +.PP +For Ubuntu, Arch and nixos systems the +ppa (https://launchpad.net/~flexiondotorg/+archive/ubuntu/quickemu), +AUR (https://aur.archlinux.org/packages/quickemu) or +nix (https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/quickemu) +packaging will take care of the dependencies. +For other host distributions or operating systems it will be necessary +to install the above requirements or their equivalents. +.PP +These examples may save a little typing +.PP +Debian: +.IP +.nf +\f[C] +sudo apt install qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip +\f[R] +.fi +.PP +Fedora: +.IP +.nf +\f[C] +sudo dnf install qemu bash coreutils edk2-tools grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-gtk-tools swtpm wget xdg-user-dirs xrandr unzip +\f[R] +.fi +.PP +MacOS: +.PP +This is a work in progress (see issue +248 (https://github.com/quickemu-project/quickemu/issues/248) for other +steps and changes that may enable running on MacOS) +.IP +.nf +\f[C] +brew install qemu bash coreutils grep jq python\[at]3.10 cdrtools gnu-sed spice-gtk wget zsync +\f[R] +.fi .SH Usage .SS Graphical User Interfaces .PP -While \f[C]quickemu\f[R] and \f[C]quickget\f[R] are designed for the +While \f[V]quickemu\f[R] and \f[V]quickget\f[R] are designed for the terminal, a graphical user interface is also available: .IP \[bu] 2 \f[B]Quickgui (https://github.com/quickgui/quickgui)\f[R] by Mark @@ -206,13 +259,13 @@ sudo apt install quickgui .fi .SS Ubuntu Guest .PP -\f[C]quickget\f[R] will automatically download an Ubuntu release and +\f[V]quickget\f[R] will automatically download an Ubuntu release and create the virtual machine configuration. .IP .nf \f[C] -quickget ubuntu 20.04 -quickemu --vm ubuntu-20.04.conf +quickget ubuntu 22.04 +quickemu --vm ubuntu-22.04.conf \f[R] .fi .IP \[bu] 2 @@ -221,24 +274,24 @@ Complete the installation as normal. Post-install: .RS 2 .IP \[bu] 2 -Install the SPICE agent (\f[C]spice-vdagent\f[R]) to enable copy/paste +Install the SPICE agent (\f[V]spice-vdagent\f[R]) to enable copy/paste and USB redirection .RS 2 .IP \[bu] 2 -\f[C]sudo apt install spice-vdagent\f[R] +\f[V]sudo apt install spice-vdagent\f[R] .RE .IP \[bu] 2 -Install the SPICE WebDAV agent (\f[C]spice-webdavd\f[R]) to enable file +Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) to enable file sharing. .RS 2 .IP \[bu] 2 -\f[C]sudo apt install spice-webdavd\f[R] +\f[V]sudo apt install spice-webdavd\f[R] .RE .RE .SS Ubuntu devel (daily-live) images .PP -\f[C]quickget\f[R] can also download/refresh devel images via -\f[C]zsync\f[R] for Ubuntu developers and testers. +\f[V]quickget\f[R] can also download/refresh devel images via +\f[V]zsync\f[R] for Ubuntu developers and testers. .IP .nf \f[C] @@ -247,106 +300,116 @@ quickemu --vm ubuntu-devel.conf \f[R] .fi .PP -You can run \f[C]quickget ubuntu devel\f[R] to refresh your daily +You can run \f[V]quickget ubuntu devel\f[R] to refresh your daily development image as often as you like, it will even automatically switch to a new series. .SS Ubuntu Flavours .PP All the official Ubuntu flavours are supported, just replace -\f[C]ubuntu\f[R] with your preferred flavour. +\f[V]ubuntu\f[R] with your preferred flavour. .IP \[bu] 2 -\f[C]kubuntu\f[R] (Kubuntu) +\f[V]kubuntu\f[R] (Kubuntu) .IP \[bu] 2 -\f[C]lubuntu\f[R] (Lubuntu) +\f[V]lubuntu\f[R] (Lubuntu) .IP \[bu] 2 -\f[C]ubuntu-budgie\f[R] (Ubuntu Budgie) +\f[V]ubuntu-budgie\f[R] (Ubuntu Budgie) .IP \[bu] 2 -\f[C]ubuntukylin\f[R] (Ubuntu Kylin) +\f[V]ubuntukylin\f[R] (Ubuntu Kylin) .IP \[bu] 2 -\f[C]ubuntu-mate\f[R] (Ubuntu MATE) +\f[V]ubuntu-mate\f[R] (Ubuntu MATE) .IP \[bu] 2 -\f[C]ubuntustudio\f[R] (Ubuntu Studio) +\f[V]ubuntustudio\f[R] (Ubuntu Studio) .IP \[bu] 2 -\f[C]ubuntu\f[R] (Ubuntu) +\f[V]ubuntu\f[R] (Ubuntu) .IP \[bu] 2 -\f[C]xubuntu\f[R] (Xubuntu) +\f[V]xubuntu\f[R] (Xubuntu) .SS Other Operating Systems .PP -\f[C]quickget\f[R] also supports: +\f[V]quickget\f[R] also supports: .IP \[bu] 2 -\f[C]alma\f[R] (Alma Linux) +\f[V]alma\f[R] (Alma Linux) .IP \[bu] 2 -\f[C]alpine\f[R] (Alpine Linux) +\f[V]alpine\f[R] (Alpine Linux) .IP \[bu] 2 -\f[C]android\f[R] (Android x86) +\f[V]android\f[R] (Android x86) .IP \[bu] 2 -\f[C]archlinux\f[R] (Arch Linux) +\f[V]archlinux\f[R] (Arch Linux) .IP \[bu] 2 -\f[C]arcolinux\f[R] (Arco Linux) +\f[V]arcolinux\f[R] (Arco Linux) .IP \[bu] 2 -\f[C]cachyos\f[R] (CachyOS) +\f[V]batocera\f[R] (Batocera) .IP \[bu] 2 -\f[C]debian\f[R] (Debian) +\f[V]cachyos\f[R] (CachyOS) .IP \[bu] 2 -\f[C]devuan\f[R] (Devuan) +\f[V]centos-stream\f[R] (CentOS Stream) .IP \[bu] 2 -\f[C]dragonflybsd\f[R] (DragonFlyBSD) +\f[V]debian\f[R] (Debian) .IP \[bu] 2 -\f[C]elementary\f[R] (elementary OS) +\f[V]deepin\f[R] (Deepin) .IP \[bu] 2 -\f[C]fedora\f[R] (Fedora) +\f[V]devuan\f[R] (Devuan) .IP \[bu] 2 -\f[C]freebsd\f[R] (FreeBSD) +\f[V]dragonflybsd\f[R] (DragonFlyBSD) .IP \[bu] 2 -\f[C]freedos\f[R] (FreeDOS) +\f[V]elementary\f[R] (elementary OS) .IP \[bu] 2 -\f[C]garuda\f[R] (Garuda Linux) +\f[V]endeavouros\f[R] (EndeavourOS) .IP \[bu] 2 -\f[C]gentoo\f[R] (Gentoo) +\f[V]fedora\f[R] (Fedora) .IP \[bu] 2 -\f[C]ghostbsd\f[R] (GhostBSD) +\f[V]freebsd\f[R] (FreeBSD) .IP \[bu] 2 -\f[C]haiku\f[R] (Haiku) +\f[V]freedos\f[R] (FreeDOS) .IP \[bu] 2 -\f[C]kali\f[R] (Kali) +\f[V]garuda\f[R] (Garuda Linux) .IP \[bu] 2 -\f[C]kdeneon\f[R] (KDE Neon) +\f[V]gentoo\f[R] (Gentoo) .IP \[bu] 2 -\f[C]kolibrios\f[R] (KolibriOS) +\f[V]ghostbsd\f[R] (GhostBSD) .IP \[bu] 2 -\f[C]linuxmint\f[R] (Linux Mint) +\f[V]haiku\f[R] (Haiku) .IP \[bu] 2 -\f[C]manjaro\f[R] (Manjaro) +\f[V]kali\f[R] (Kali) .IP \[bu] 2 -\f[C]mxlinux\f[R] (MX Linux) +\f[V]kdeneon\f[R] (KDE Neon) .IP \[bu] 2 -\f[C]netboot\f[R] (netboot.xyz) +\f[V]kolibrios\f[R] (KolibriOS) .IP \[bu] 2 -\f[C]netbsd\f[R] (NetBSD) +\f[V]linuxmint\f[R] (Linux Mint) .IP \[bu] 2 -\f[C]nixos\f[R] (NixOS) +\f[V]lmde\f[R] (Linux Mint Debian Edition) .IP \[bu] 2 -\f[C]openbsd\f[R] (OpenBSD) +\f[V]manjaro\f[R] (Manjaro) .IP \[bu] 2 -\f[C]opensuse\f[R] (openSUSE) +\f[V]mxlinux\f[R] (MX Linux) .IP \[bu] 2 -\f[C]oraclelinux\f[R] (Oracle Linux) +\f[V]netboot\f[R] (netboot.xyz) .IP \[bu] 2 -\f[C]popos\f[R] (Pop!_OS) +\f[V]netbsd\f[R] (NetBSD) .IP \[bu] 2 -\f[C]regolith\f[R] (Regolith Linux) +\f[V]nixos\f[R] (NixOS) .IP \[bu] 2 -\f[C]rockylinux\f[R] (Rocky Linux) +\f[V]openbsd\f[R] (OpenBSD) .IP \[bu] 2 -\f[C]slackware\f[R] (Slackware) +\f[V]opensuse\f[R] (openSUSE) .IP \[bu] 2 -\f[C]solus\f[R] (Solus) +\f[V]oraclelinux\f[R] (Oracle Linux) .IP \[bu] 2 -\f[C]tails\f[R] (Tails) +\f[V]popos\f[R] (Pop!_OS) .IP \[bu] 2 -\f[C]void\f[R] (Void Linux) +\f[V]regolith\f[R] (Regolith Linux) .IP \[bu] 2 -\f[C]zorin\f[R] (Zorin OS) +\f[V]rockylinux\f[R] (Rocky Linux) +.IP \[bu] 2 +\f[V]slackware\f[R] (Slackware) +.IP \[bu] 2 +\f[V]solus\f[R] (Solus) +.IP \[bu] 2 +\f[V]tails\f[R] (Tails) +.IP \[bu] 2 +\f[V]void\f[R] (Void Linux) +.IP \[bu] 2 +\f[V]zorin\f[R] (Zorin OS) .PP Or you can download a Linux image and manually create a VM configuration. @@ -354,7 +417,7 @@ configuration. Download a .iso image of a Linux distribution .IP \[bu] 2 Create a VM configuration file; for example -\f[C]debian-bullseye.conf\f[R] +\f[V]debian-bullseye.conf\f[R] .IP .nf \f[C] @@ -364,7 +427,7 @@ iso=\[dq]debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso\[dq] \f[R] .fi .IP \[bu] 2 -Use \f[C]quickemu\f[R] to start the virtual machine: +Use \f[V]quickemu\f[R] to start the virtual machine: .IP .nf \f[C] @@ -377,15 +440,15 @@ Complete the installation as normal. Post-install: .RS 2 .IP \[bu] 2 -Install the SPICE agent (\f[C]spice-vdagent\f[R]) to enable copy/paste +Install the SPICE agent (\f[V]spice-vdagent\f[R]) to enable copy/paste and USB redirection. .IP \[bu] 2 -Install the SPICE WebDAV agent (\f[C]spice-webdavd\f[R]) to enable file +Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) to enable file sharing. .RE .SS macOS Guest .PP -\f[C]quickget\f[R] automatically downloads a macOS recovery image and +\f[V]quickget\f[R] automatically downloads a macOS recovery image and creates a virtual machine configuration. .IP .nf @@ -395,8 +458,8 @@ quickemu --vm macos-catalina.conf \f[R] .fi .PP -macOS \f[C]high-sierra\f[R], \f[C]mojave\f[R], \f[C]catalina\f[R], -\f[C]big-sur\f[R] and \f[C]monterey\f[R] are supported. +macOS \f[V]high-sierra\f[R], \f[V]mojave\f[R], \f[V]catalina\f[R], +\f[V]big-sur\f[R] and \f[V]monterey\f[R] are supported. .IP \[bu] 2 Use cursor keys and enter key to select the \f[B]macOS Base System\f[R] .IP \[bu] 2 @@ -409,19 +472,19 @@ Click \f[B]Disk Utility\f[R] and \f[B]Continue\f[R] On macOS Catalina, Big Sur & Monterey .RS 2 .IP \[bu] 2 -Select \f[C]Apple Inc. VirtIO Block Media\f[R] from the list and click +Select \f[V]Apple Inc. VirtIO Block Media\f[R] from the list and click \f[B]Erase\f[R]. .RE .IP \[bu] 2 On macOS Mojave and High Sierra .RS 2 .IP \[bu] 2 -Select \f[C]QEMU HARDDISK Media\f[R] (\[ti]103.08GB) from the list and +Select \f[V]QEMU HARDDISK Media\f[R] (\[ti]103.08GB) from the list and click \f[B]Erase\f[R]. .RE .RE .IP \[bu] 2 -Enter a \f[C]Name:\f[R] for the disk and click \f[B]Erase\f[R]. +Enter a \f[V]Name:\f[R] for the disk and click \f[B]Erase\f[R]. .IP \[bu] 2 Click \f[B]Done\f[R]. .IP \[bu] 2 @@ -455,10 +518,10 @@ macos_release=\[dq]catalina\[dq] \f[R] .fi .IP \[bu] 2 -\f[C]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for +\f[V]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for macOS. .IP \[bu] 2 -\f[C]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to +\f[V]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to optimise for a particular macOS release. .RS 2 .IP \[bu] 2 @@ -486,7 +549,7 @@ Big Sur Monterey .RE .IP \[bu] 2 -\f[C]quickemu\f[R] will automatically download the required +\f[V]quickemu\f[R] will automatically download the required OpenCore (https://github.com/acidanthera/OpenCorePkg) bootloader and OVMF firmware from OSX-KVM (https://github.com/kholia/OSX-KVM). .IP \[bu] 2 @@ -499,11 +562,11 @@ VirtIO Block Media (https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used for the system disk where supported. .IP \[bu] 2 -VirtIO \f[C]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used for +VirtIO \f[V]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used for the mouse. .IP \[bu] 2 -VirtIO Network (\f[C]virtio-net\f[R]) is supported and enabled on macOS -Big Sur and newer but previous releases use \f[C]vmxnet3\f[R]. +VirtIO Network (\f[V]virtio-net\f[R]) is supported and enabled on macOS +Big Sur and newer but previous releases use \f[V]vmxnet3\f[R]. .IP \[bu] 2 VirtIO Memory Ballooning is supported and enabled on macOS Big Sur and newer but disabled for other support macOS releases. @@ -532,7 +595,7 @@ webdavd (https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). Copy/paste via SPICE agent is \f[B]not available on macOS\f[R]. .SS Windows 8.1, 10 & 11 Guests .PP -\f[C]quickget\f[R] can automatically download Windows 8.1, Windows +\f[V]quickget\f[R] can automatically download Windows 8.1, Windows 10 (https://www.microsoft.com/en-gb/software-download/windows10ISO) and Windows 11 (https://www.microsoft.com/en-gb/software-download/windows11) along with the VirtIO drivers for @@ -551,7 +614,7 @@ Complete the installation as you normally would. All relevant drivers and services should be installed automatically. .SS Regional versions .PP -By default \f[C]quickget\f[R] will download the \f[I]\[lq]English +By default \f[V]quickget\f[R] will download the \f[I]\[lq]English International\[rq]\f[R] release, but you can optionally specify one of the supported languages: For example: .IP @@ -570,74 +633,89 @@ disk_img=\[dq]windows-11/disk.qcow2\[dq] iso=\[dq]windows-11/Win11_EnglishInternational_x64.iso\[dq] fixed_iso=\[dq]windows-11/virtio-win.iso\[dq] tpm=\[dq]on\[dq] +secureboot=\[dq]on\[dq] \f[R] .fi .IP \[bu] 2 -\f[C]guest_os=\[dq]windows\[dq]\f[R] instructs \f[C]quickemu\f[R] to +\f[V]guest_os=\[dq]windows\[dq]\f[R] instructs \f[V]quickemu\f[R] to optimise for Windows. .IP \[bu] 2 -\f[C]fixed_iso=\f[R] specifies the ISO image that provides VirtIO +\f[V]fixed_iso=\f[R] specifies the ISO image that provides VirtIO drivers. .IP \[bu] 2 -\f[C]tpm=\[dq]on\[dq]\f[R] instructs \f[C]quickemu\f[R] to create a -software emulated TPM device using \f[C]swtpm\f[R]. +\f[V]tpm=\[dq]on\[dq]\f[R] instructs \f[V]quickemu\f[R] to create a +software emulated TPM device using \f[V]swtpm\f[R]. .SH All the options .PP Here are the usage instructions: .IP .nf \f[C] - Usage quickemu --vm ubuntu.conf You can also pass optional parameters - --braille : Enable braille support. Requires SDL. - --delete-disk : Delete the disk image and EFI variables - --delete-vm : Delete the entire VM and it\[aq]s configuration - --display : Select display backend. \[aq]sdl\[aq] (default), \[aq]gtk\[aq], \[aq]none\[aq], or \[aq]spice\[aq] - --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) - --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers - --screen : Use specified screen to determine the window size. - --shortcut : Create a desktop shortcut - --snapshot apply : Apply/restore a snapshot. - --snapshot create : Create a snapshot. - --snapshot delete : Delete a snapshot. - --snapshot info : Show disk/snapshot info. - --status-quo : Do not commit any changes to disk/snapshot. - --version : Print version - + --braille : Enable braille support. Requires SDL. + --delete-disk : Delete the disk image and EFI variables + --delete-vm : Delete the entire VM and it\[aq]s configuration + --display : Select display backend. \[aq]sdl\[aq] (default), \[aq]gtk\[aq], \[aq]none\[aq], or \[aq]spice\[aq] + --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) + --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers + --screen : Use specified screen to determine the window size. + --shortcut : Create a desktop shortcut + --snapshot apply : Apply/restore a snapshot. + --snapshot create : Create a snapshot. + --snapshot delete : Delete a snapshot. + --snapshot info : Show disk/snapshot info. + --status-quo : Do not commit any changes to disk/snapshot. + --viewer : Choose an alternative viewer. \[at]Options: \[aq]spicy\[aq] (default), \[aq]remote-viewer\[aq], \[aq]none\[aq] + --ssh-port : Set ssh-port manually + --spice-port : Set spice-port manually + --public-dir : expose share directory. \[at]Options: \[aq]\[aq] (default: xdg-user-dir PUBLICSHARE), \[aq]\[aq], \[aq]none\[aq] + --monitor : Set monitor connection type. \[at]Options: \[aq]socket\[aq] (default), \[aq]telnet\[aq], \[aq]none\[aq] + --monitor-telnet-host : Set telnet host for monitor. (default: \[aq]localhost\[aq]) + --monitor-telnet-port : Set telnet port for monitor. (default: \[aq]4440\[aq]) + --monitor-cmd : Send command to monitor if available. (Example: system_powerdown) + --serial : Set serial connection type. \[at]Options: \[aq]socket\[aq] (default), \[aq]telnet\[aq], \[aq]none\[aq] + --serial-telnet-host : Set telnet host for serial. (default: \[aq]localhost\[aq]) + --serial-telnet-port : Set telnet port for serial. (default: \[aq]6660\[aq]) + --keyboard : Set keyboard. \[at]Options: \[aq]usb\[aq] (default), \[aq]ps2\[aq], \[aq]virtio\[aq] + --keyboard_layout : Set keyboard layout. + --mouse : Set mouse. \[at]Options: \[aq]tablet\[aq] (default), \[aq]ps2\[aq], \[aq]usb\[aq], \[aq]virtio\[aq] + --usb-controller : Set usb-controller. \[at]Options: \[aq]ehci\[aq] (default), \[aq]xhci\[aq], \[aq]none\[aq] + --extra_args : Pass additional arguments to qemu + --version : Print version \f[R] .fi .SS Desktop shortcuts .PP Desktop shortcuts can be created for a VM, the shortcuts are saved in -\f[C]\[ti]/.local/share/applications\f[R]. +\f[V]\[ti]/.local/share/applications\f[R]. Here is an example of how to create a shortcut. .IP .nf \f[C] -quickemu --vm ubuntu-20.04-desktop.conf --shortcut +quickemu --vm ubuntu-22.04-desktop.conf --shortcut \f[R] .fi .SS Screen and window size (Linux guests only) .PP -\f[C]qemu\f[R] will always default to the primary monitor to display the +\f[V]qemu\f[R] will always default to the primary monitor to display the VM\[cq]s window. .PP -Without the \f[C]--screen\f[R] option, \f[C]quickemu\f[R] will look for +Without the \f[V]--screen\f[R] option, \f[V]quickemu\f[R] will look for the size of the smallest monitor, and use a size that fits on said monitor. .PP -The \f[C]--screen\f[R] option forces \f[C]quickemu\f[R] to use the size +The \f[V]--screen\f[R] option forces \f[V]quickemu\f[R] to use the size of the given monitor to compute the size of the window. \f[B]It won\[cq]t use that monitor to display the VM\[cq]s window if it\[cq]s not the primary monitor\f[R]. This is useful if the primary monitor if not the smallest one, and if the VM\[cq]s window doesn\[cq]t need to be moved around. .PP -The \f[C]--screen\f[R] option is also useful with the -\f[C]--fullscreen\f[R] option, again because \f[C]qemu\f[R] will always +The \f[V]--screen\f[R] option is also useful with the +\f[V]--fullscreen\f[R] option, again because \f[V]qemu\f[R] will always use the primary monitor. In order for the fullscreen mode to work properly, the resolution of the VM\[cq]s window must match the resolution of the screen. @@ -659,7 +737,7 @@ The command will output something like this: \f[R] .fi .PP -The first number is what needs to be passed to the \f[C]--screen\f[R] +The first number is what needs to be passed to the \f[V]--screen\f[R] option. .PP For example: @@ -672,7 +750,7 @@ quickemu --vm vm.conf --screen 0 .PP The above uses the 2560x1440 screen to compute the size of the window, which Quickemu sizes to 2048x1152. -Without the \f[C]--screen\f[R] option, Quickemu would have used the +Without the \f[V]--screen\f[R] option, Quickemu would have used the 1920x1080 monitor which results in a window size of 1664x936. .SH References .PP diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index c1d878d..66a98e7 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,30 +1,26 @@ --- author: Martin Wimpress -date: 'February 20, 2022' +date: July 30, 2022 footer: quickemu header: Quickemu User Manual section: 1 title: QUICKEMU --- -NAME -==== +# NAME quickemu - A quick VM builder and manager -SYNOPSIS -======== +# SYNOPSIS **quickemu** \[*OPTION*\]... -DESCRIPTION -=========== +# DESCRIPTION **quickemu** will create and run highly optimised desktop virtual machines for Linux, macOS and Windows -OPTIONS -======= +# OPTIONS **--vm** : vm configuration file @@ -70,23 +66,21 @@ You can also pass optional parameters **--version** : Print version -EXAMPLES -======== +# EXAMPLES -**quickemu --vm ubuntu-mate-21.10-.conf** -: Launches the VM specified in the file *ubuntu-mate-21.10-.conf* +**quickemu --vm ubuntu-mate-22.04-.conf** +: Launches the VM specified in the file *ubuntu-mate-22.04-.conf* -Introduction ------------- +## Introduction Quickly create and run highly optimised desktop virtual machines for Linux, macOS and Windows; with just two commands. You decide what operating system you want to run and Quickemu will figure out the best way to do it for you. For example: -``` {.bash} -quickget ubuntu-mate 21.10 -quickemu --vm ubuntu-mate-21.10-.conf +``` bash +quickget ubuntu-mate 22.04 +quickemu --vm ubuntu-mate-22.04-.conf ``` The original objective of the project was to enable quick testing of @@ -96,8 +90,7 @@ and no elevated permissions are required to run the virtual machines. **Quickemu now also includes comprehensive support for macOS and Windows**. -Features --------- +## Features - **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra - **Windows** 8.1, 10 and 11 including TPM 2.0 @@ -135,8 +128,7 @@ Quickemu. [![Replace VirtualBox with Bash & QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/watch?v=AOTYWEgw0hI) -Requirements ------------- +## Requirements - [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, SPICE & VirtFS support** @@ -161,11 +153,37 @@ Requirements - [zsync](http://zsync.moria.org.uk/) - [unzip](http://www.info-zip.org/UnZip.html) -Usage -===== +### Installing Requirements -Graphical User Interfaces -------------------------- +For Ubuntu, Arch and nixos systems the +[ppa](https://launchpad.net/~flexiondotorg/+archive/ubuntu/quickemu), +[AUR](https://aur.archlinux.org/packages/quickemu) or +[nix](https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/quickemu) +packaging will take care of the dependencies. For other host +distributions or operating systems it will be necessary to install the +above requirements or their equivalents. + +These examples may save a little typing + +Debian: + + sudo apt install qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip + +Fedora: + + sudo dnf install qemu bash coreutils edk2-tools grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-gtk-tools swtpm wget xdg-user-dirs xrandr unzip + +MacOS: + +This is a work in progress (see [issue +248](https://github.com/quickemu-project/quickemu/issues/248) for other +steps and changes that may enable running on MacOS) + + brew install qemu bash coreutils grep jq python@3.10 cdrtools gnu-sed spice-gtk wget zsync + +# Usage + +## Graphical User Interfaces While `quickemu` and `quickget` are designed for the terminal, a graphical user interface is also available: @@ -180,21 +198,20 @@ Many thanks to [Luke Wesley-Holley](https://github.com/Lukewh) and ### Quickgui for Ubuntu -``` {.bash} +``` bash sudo add-apt-repository ppa:yannick-mauray/quickgui sudo apt update sudo apt install quickgui ``` -Ubuntu Guest ------------- +## Ubuntu Guest `quickget` will automatically download an Ubuntu release and create the virtual machine configuration. -``` {.bash} -quickget ubuntu 20.04 -quickemu --vm ubuntu-20.04.conf +``` bash +quickget ubuntu 22.04 +quickemu --vm ubuntu-22.04.conf ``` - Complete the installation as normal. @@ -211,7 +228,7 @@ quickemu --vm ubuntu-20.04.conf `quickget` can also download/refresh devel images via `zsync` for Ubuntu developers and testers. -``` {.bash} +``` bash quickget ubuntu devel quickemu --vm ubuntu-devel.conf ``` @@ -234,8 +251,7 @@ with your preferred flavour. - `ubuntu` (Ubuntu) - `xubuntu` (Xubuntu) -Other Operating Systems ------------------------ +## Other Operating Systems `quickget` also supports: @@ -244,11 +260,15 @@ Other Operating Systems - `android` (Android x86) - `archlinux` (Arch Linux) - `arcolinux` (Arco Linux) +- `batocera` (Batocera) - `cachyos` (CachyOS) +- `centos-stream` (CentOS Stream) - `debian` (Debian) +- `deepin` (Deepin) - `devuan` (Devuan) - `dragonflybsd` (DragonFlyBSD) - `elementary` (elementary OS) +- `endeavouros` (EndeavourOS) - `fedora` (Fedora) - `freebsd` (FreeBSD) - `freedos` (FreeDOS) @@ -260,6 +280,7 @@ Other Operating Systems - `kdeneon` (KDE Neon) - `kolibrios` (KolibriOS) - `linuxmint` (Linux Mint) +- `lmde` (Linux Mint Debian Edition) - `manjaro` (Manjaro) - `mxlinux` (MX Linux) - `netboot` (netboot.xyz) @@ -283,7 +304,7 @@ configuration. - Download a .iso image of a Linux distribution - Create a VM configuration file; for example `debian-bullseye.conf` -``` {.bash} +``` bash guest_os="linux" disk_img="debian-bullseye/disk.qcow2" iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso" @@ -291,7 +312,7 @@ iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso" - Use `quickemu` to start the virtual machine: -``` {.bash} +``` bash quickemu --vm debian-bullseye.conf ``` @@ -302,13 +323,12 @@ quickemu --vm debian-bullseye.conf - Install the SPICE WebDAV agent (`spice-webdavd`) to enable file sharing. -macOS Guest ------------ +## macOS Guest `quickget` automatically downloads a macOS recovery image and creates a virtual machine configuration. -``` {.bash} +``` bash quickget macos catalina quickemu --vm macos-catalina.conf ``` @@ -338,7 +358,7 @@ supported. The default macOS configuration looks like this: -``` {.bash} +``` bash guest_os="macos" img="macos-catalina/RecoveryImage.img" disk_img="macos-catalina/disk.qcow2" @@ -389,8 +409,7 @@ There are some considerations when running macOS via Quickemu. webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). - Copy/paste via SPICE agent is **not available on macOS**. -Windows 8.1, 10 & 11 Guests ---------------------------- +## Windows 8.1, 10 & 11 Guests `quickget` can automatically download Windows 8.1, [Windows 10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and @@ -400,7 +419,7 @@ with the [VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) and creates a virtual machine configuration. -``` {.bash} +``` bash quickget windows 11 quickemu --vm windows-11.conf ``` @@ -414,18 +433,19 @@ By default `quickget` will download the *"English International"* release, but you can optionally specify one of the supported languages: For example: -``` {.bash} +``` bash quickget windows 11 "Chinese (Traditional)" ``` The default Windows 11 configuration looks like this: -``` {.bash} +``` bash guest_os="windows" disk_img="windows-11/disk.qcow2" iso="windows-11/Win11_EnglishInternational_x64.iso" fixed_iso="windows-11/virtio-win.iso" tpm="on" +secureboot="on" ``` - `guest_os="windows"` instructs `quickemu` to optimise for Windows. @@ -433,47 +453,58 @@ tpm="on" - `tpm="on"` instructs `quickemu` to create a software emulated TPM device using `swtpm`. -All the options -=============== +# All the options Here are the usage instructions: -``` {.bash} -Usage - quickemu --vm ubuntu.conf -You can also pass optional parameters - --braille : Enable braille support. Requires SDL. - --delete-disk : Delete the disk image and EFI variables - --delete-vm : Delete the entire VM and it's configuration - --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice' - --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) - --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers - --screen : Use specified screen to determine the window size. - --shortcut : Create a desktop shortcut - --snapshot apply : Apply/restore a snapshot. - --snapshot create : Create a snapshot. - --snapshot delete : Delete a snapshot. - --snapshot info : Show disk/snapshot info. - --status-quo : Do not commit any changes to disk/snapshot. - --version : Print version + Usage + quickemu --vm ubuntu.conf -``` + You can also pass optional parameters + --braille : Enable braille support. Requires SDL. + --delete-disk : Delete the disk image and EFI variables + --delete-vm : Delete the entire VM and it's configuration + --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice' + --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) + --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers + --screen : Use specified screen to determine the window size. + --shortcut : Create a desktop shortcut + --snapshot apply : Apply/restore a snapshot. + --snapshot create : Create a snapshot. + --snapshot delete : Delete a snapshot. + --snapshot info : Show disk/snapshot info. + --status-quo : Do not commit any changes to disk/snapshot. + --viewer : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none' + --ssh-port : Set ssh-port manually + --spice-port : Set spice-port manually + --public-dir : expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '', 'none' + --monitor : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none' + --monitor-telnet-host : Set telnet host for monitor. (default: 'localhost') + --monitor-telnet-port : Set telnet port for monitor. (default: '4440') + --monitor-cmd : Send command to monitor if available. (Example: system_powerdown) + --serial : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none' + --serial-telnet-host : Set telnet host for serial. (default: 'localhost') + --serial-telnet-port : Set telnet port for serial. (default: '6660') + --keyboard : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio' + --keyboard_layout : Set keyboard layout. + --mouse : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio' + --usb-controller : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none' + --extra_args : Pass additional arguments to qemu + --version : Print version -Desktop shortcuts ------------------ +## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in `~/.local/share/applications`. Here is an example of how to create a shortcut. -``` {.bash} -quickemu --vm ubuntu-20.04-desktop.conf --shortcut +``` bash +quickemu --vm ubuntu-22.04-desktop.conf --shortcut ``` -Screen and window size (Linux guests only) ------------------------------------------- +## Screen and window size (Linux guests only) `qemu` will always default to the primary monitor to display the VM's window. @@ -494,13 +525,13 @@ must match the resolution of the screen. To know which screen to use, type: -``` {.bash} +``` bash xrandr --listmonitors | grep -v Monitors ``` The command will output something like this: -``` {.bash} +``` bash 0: +*HDMI-0 2560/597x1440/336+1920+0 HDMI-0 1: +DVI-D-0 1920/527x1080/296+0+0 DVI-D-0 ``` @@ -509,7 +540,7 @@ The first number is what needs to be passed to the `--screen` option. For example: -``` {.bash} +``` bash quickemu --vm vm.conf --screen 0 ``` @@ -518,8 +549,7 @@ which Quickemu sizes to 2048x1152. Without the `--screen` option, Quickemu would have used the 1920x1080 monitor which results in a window size of 1664x936. -References -========== +# References Useful reference that assisted the development of Quickemu. @@ -556,20 +586,17 @@ Useful reference that assisted the development of Quickemu. - - -AUTHORS -======= +# AUTHORS Written by Martin Wimpress. -BUGS -==== +# BUGS Submit bug reports online at: -SEE ALSO -======== +# SEE ALSO Full sources at: -quickemu\_conf(1), quickget(1), quickgui(1) +quickemu_conf(1), quickget(1), quickgui(1) diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index 5f3472f..5fa43b7 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -1,6 +1,20 @@ -.\" Automatically generated by Pandoc 2.9.2.1 +.\" Automatically generated by Pandoc 2.18 .\" -.TH "QUICKEMU_CONF" "1" "February 20, 2022" "quickemu_conf" "Quickemu Configuration Manual" +.\" Define V font for inline verbatim, using C font in formats +.\" that render this, and otherwise B font. +.ie "\f[CB]x\f[]"x" \{\ +. ftr V B +. ftr VI BI +. ftr VB B +. ftr VBI BI +.\} +.el \{\ +. ftr V CR +. ftr VI CI +. ftr VB CB +. ftr VBI CBI +.\} +.TH "QUICKEMU_CONF" "1" "July 30, 2022" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP @@ -60,10 +74,10 @@ macos_release=\[dq]catalina\[dq] \f[R] .fi .IP \[bu] 2 -\f[C]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for +\f[V]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for macOS. .IP \[bu] 2 -\f[C]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to +\f[V]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to optimise for a particular macOS release. .RS 2 .IP \[bu] 2 @@ -86,21 +100,21 @@ tpm=\[dq]on\[dq] \f[R] .fi .IP \[bu] 2 -\f[C]guest_os=\[dq]windows\[dq]\f[R] instructs \f[C]quickemu\f[R] to +\f[V]guest_os=\[dq]windows\[dq]\f[R] instructs \f[V]quickemu\f[R] to optimise for Windows. .IP \[bu] 2 -\f[C]fixed_iso=\f[R] specifies the ISO image that provides VirtIO +\f[V]fixed_iso=\f[R] specifies the ISO image that provides VirtIO drivers. .IP \[bu] 2 -\f[C]tpm=\[dq]on\[dq]\f[R] instructs \f[C]quickemu\f[R] to create a -software emulated TPM device using \f[C]swtpm\f[R]. +\f[V]tpm=\[dq]on\[dq]\f[R] instructs \f[V]quickemu\f[R] to create a +software emulated TPM device using \f[V]swtpm\f[R]. .SH BIOS and EFI .PP -Since Quickemu 2.1.0 \f[C]efi\f[R] is the default boot option. +Since Quickemu 2.1.0 \f[V]efi\f[R] is the default boot option. If you want to override this behaviour then add the following line to you VM configuration to enable legacy BIOS. .IP \[bu] 2 -\f[C]boot=\[dq]legacy\[dq]\f[R] - Enable Legacy BIOS boot +\f[V]boot=\[dq]legacy\[dq]\f[R] - Enable Legacy BIOS boot .SH Tuning CPU cores, RAM & disks .PP By default, Quickemu will calculate the number of CPUs cores and RAM to @@ -110,18 +124,18 @@ your liking. .PP Add additional lines to your virtual machine configuration: .IP \[bu] 2 -\f[C]cpu_cores=\[dq]4\[dq]\f[R] - Specify the number of CPU cores +\f[V]cpu_cores=\[dq]4\[dq]\f[R] - Specify the number of CPU cores allocated to the VM .IP \[bu] 2 -\f[C]ram=\[dq]4G\[dq]\f[R] - Specify the amount of RAM to allocate to +\f[V]ram=\[dq]4G\[dq]\f[R] - Specify the amount of RAM to allocate to the VM .IP \[bu] 2 -\f[C]disk_size=\[dq]16G\[dq]\f[R] - Specify the size of the virtual disk +\f[V]disk_size=\[dq]16G\[dq]\f[R] - Specify the size of the virtual disk allocated to the VM .SS Disk preallocation .PP -Preallocation mode (allowed values: \f[C]off\f[R] (default), -\f[C]metadata\f[R], \f[C]falloc\f[R], \f[C]full\f[R]). +Preallocation mode (allowed values: \f[V]off\f[R] (default), +\f[V]metadata\f[R], \f[V]falloc\f[R], \f[V]full\f[R]). An image with preallocated metadata is initially larger but can improve performance when the image needs to grow. .PP @@ -129,27 +143,27 @@ Specify what disk preallocation should be used, if any, when creating the system disk image by adding a line like this to your VM configuration. .IP \[bu] 2 -\f[C]preallocation=\[dq]metadata\[dq]\f[R] +\f[V]preallocation=\[dq]metadata\[dq]\f[R] .SS CD-ROM disks .PP If you want to expose an ISO image from the host to guest add the following line to the VM configuration: .IP \[bu] 2 -\f[C]fixed_iso=\[dq]/path/to/image.iso\[dq]\f[R] +\f[V]fixed_iso=\[dq]/path/to/image.iso\[dq]\f[R] .SS Floppy disks .PP If you\[cq]re like Alan Pope (https://popey.com) you\[cq]ll probably want to mount a floppy disk image in the guest. To do so add the following line to the VM configuration: .IP \[bu] 2 -\f[C]floppy=\[dq]/path/to/floppy.img\[dq]\f[R] +\f[V]floppy=\[dq]/path/to/floppy.img\[dq]\f[R] .SH File Sharing .PP -All File Sharing options will only expose \f[C]\[ti]/Public\f[R] (or +All File Sharing options will only expose \f[V]\[ti]/Public\f[R] (or localised variations) for the current user to the guest VMs. .SS Samba \[u1F427] \[u1F34F] \[u1FA9F] .PP -If \f[C]smbd\f[R] is available on the host, Quickemu will automatically +If \f[V]smbd\f[R] is available on the host, Quickemu will automatically enable the built-in QEMU support for exposing a Samba share from the host to the guest. .PP @@ -160,6 +174,21 @@ You can install the minimal Samba components on Ubuntu using: sudo apt install --no-install-recommends samba \f[R] .fi +.PP +If everything is set up correctly, the \f[V]smbd\f[R] address will be +printed when the virtual machine is started. +For example: +.IP +.nf +\f[C] + - smbd: On guest: smb://10.0.2.4/qemu +\f[R] +.fi +.PP +If using a Windows guest, right-click on \[lq]This PC\[rq], click +\[lq]Add a network location\[rq], and paste this address, removing +\f[V]smb:\f[R] and replacing forward slashes with backslashes (in this +example \f[V]\[rs]\[rs]10.0.2.4\[rs]qemu\f[R]). .SS SPICE WebDAV \[u1F427] \[u1FA9F] .IP \[bu] 2 TBD @@ -171,7 +200,7 @@ TBD Add an additional line to your virtual machine configuration. For example: .IP \[bu] 2 -\f[C]port_forwards=(\[dq]8123:8123\[dq] \[dq]8888:80\[dq])\f[R] +\f[V]port_forwards=(\[dq]8123:8123\[dq] \[dq]8888:80\[dq])\f[R] .PP In the example above: .IP \[bu] 2 @@ -183,7 +212,7 @@ Port 8888 on the host is forwarded to port 80 on the guest. Connect your virtual machine to a preconfigured network bridge. Add an additional line to your virtual machine configuration .IP \[bu] 2 -\f[C]bridge=\[dq]br0\[dq]\f[R] +\f[V]bridge=\[dq]br0\[dq]\f[R] .SH USB redirection .PP Quickemu supports USB redirection via SPICE pass-through and host @@ -191,9 +220,9 @@ pass-through. .SS SPICE redirection (recommended) .PP Using SPICE for USB pass-through is easiest as it doesn\[cq]t require -any elevated permission, start Quickemu with \f[C]--display spice\f[R] -and then select \f[C]Input\f[R] -> -\f[C]Select USB Device for redirection\f[R] from the menu to choose +any elevated permission, start Quickemu with \f[V]--display spice\f[R] +and then select \f[V]Input\f[R] -> +\f[V]Select USB Device for redirection\f[R] from the menu to choose which device(s) you want to attach to the guest. .SS Host redirection \f[B]NOT Recommended\f[R] .PP @@ -204,7 +233,7 @@ Using SPICE is preferred, see above. Add an additional line to your virtual machine configuration. For example: .IP \[bu] 2 -\f[C]usb_devices=(\[dq]046d:082d\[dq] \[dq]046d:085e\[dq])\f[R] +\f[V]usb_devices=(\[dq]046d:082d\[dq] \[dq]046d:085e\[dq])\f[R] .PP In the example above: .IP \[bu] 2 @@ -214,7 +243,7 @@ to the guest. The USB device with vendor_id 046d and product_id 085e will be exposed to the guest. .PP -If the USB devices are not writable, \f[C]quickemu\f[R] will display the +If the USB devices are not writable, \f[V]quickemu\f[R] will display the appropriate commands to modify the USB device(s) access permissions, like this: .IP @@ -230,8 +259,8 @@ like this: .PP Since Quickemu 2.2.0 a software emulated TPM device can be added to guest virtual machines. -Just add \f[C]tpm=\[dq]on\[dq]\f[R] to your VM configuration. -\f[C]quickget\f[R] will automatically add this line to Windows 11 +Just add \f[V]tpm=\[dq]on\[dq]\f[R] to your VM configuration. +\f[V]quickget\f[R] will automatically add this line to Windows 11 virtual machines. .SH AUTHORS .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index a978739..8ff9ba7 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,19 +1,17 @@ --- author: Martin Wimpress -date: 'February 20, 2022' -footer: quickemu\_conf +date: July 30, 2022 +footer: quickemu_conf header: Quickemu Configuration Manual section: 1 -title: QUICKEMU\_CONF +title: QUICKEMU_CONF --- -NAME -==== +# NAME -quickemu\_conf - Options and parameters in the quickemu \.conf +quickemu_conf - Options and parameters in the quickemu \.conf -DESCRIPTION -=========== +# DESCRIPTION **quickemu** will create and run highly optimised desktop virtual machines for Linux, macOS and Windows. It uses sensible defaults, but @@ -21,12 +19,11 @@ many configuration options can be overridden in the required configuration file, which will as a minimum specify the path to the installation ISO and QEMU disk for the installed VM -OPTIONS -======= +# OPTIONS These are the options and defaults for the \.conf file -``` {.bash} +``` bash # Lowercase variables are used in the VM config file only boot="efi" bridge="" @@ -47,10 +44,9 @@ tpm="off" usb_devices=() ``` -EXAMPLES -======== +# EXAMPLES -``` {.bash} +``` bash guest_os="linux" disk_img="debian-bullseye/disk.qcow2" iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso" @@ -58,7 +54,7 @@ iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso" The default macOS configuration looks like this: -``` {.bash} +``` bash guest_os="macos" img="macos-catalina/RecoveryImage.img" disk_img="macos-catalina/disk.qcow2" @@ -75,7 +71,7 @@ macos_release="catalina" The default Windows 11 configuration looks like this: -``` {.bash} +``` bash guest_os="windows" disk_img="windows-11/disk.qcow2" iso="windows-11/Win11_EnglishInternational_x64.iso" @@ -88,8 +84,7 @@ tpm="on" - `tpm="on"` instructs `quickemu` to create a software emulated TPM device using `swtpm`. -BIOS and EFI -============ +# BIOS and EFI Since Quickemu 2.1.0 `efi` is the default boot option. If you want to override this behaviour then add the following line to you VM @@ -97,8 +92,7 @@ configuration to enable legacy BIOS. - `boot="legacy"` - Enable Legacy BIOS boot -Tuning CPU cores, RAM & disks -============================= +# Tuning CPU cores, RAM & disks By default, Quickemu will calculate the number of CPUs cores and RAM to allocate to a VM based on the specifications of your host computer. You @@ -113,8 +107,7 @@ Add additional lines to your virtual machine configuration: - `disk_size="16G"` - Specify the size of the virtual disk allocated to the VM -Disk preallocation ------------------- +## Disk preallocation Preallocation mode (allowed values: `off` (default), `metadata`, `falloc`, `full`). An image with preallocated metadata is initially @@ -126,16 +119,14 @@ configuration. - `preallocation="metadata"` -CD-ROM disks ------------- +## CD-ROM disks If you want to expose an ISO image from the host to guest add the following line to the VM configuration: - `fixed_iso="/path/to/image.iso"` -Floppy disks ------------- +## Floppy disks If you're like [Alan Pope](https://popey.com) you'll probably want to mount a floppy disk image in the guest. To do so add the following line @@ -143,14 +134,12 @@ to the VM configuration: - `floppy="/path/to/floppy.img"` -File Sharing -============ +# File Sharing All File Sharing options will only expose `~/Public` (or localised variations) for the current user to the guest VMs. -Samba 🐧 🍏 🪟 ------------ +## Samba 🐧 🍏 🪟 If `smbd` is available on the host, Quickemu will automatically enable the built-in QEMU support for exposing a Samba share from the host to @@ -158,22 +147,28 @@ the guest. You can install the minimal Samba components on Ubuntu using: -``` {.bash} +``` bash sudo apt install --no-install-recommends samba ``` -SPICE WebDAV 🐧 🪟 ----------------- +If everything is set up correctly, the `smbd` address will be printed +when the virtual machine is started. For example: + + - smbd: On guest: smb://10.0.2.4/qemu + +If using a Windows guest, right-click on "This PC", click "Add a network +location", and paste this address, removing `smb:` and replacing forward +slashes with backslashes (in this example `\\10.0.2.4\qemu`). + +## SPICE WebDAV 🐧 🪟 - TBD -VirtIO-9P 🐧 🍏 -------------- +## VirtIO-9P 🐧 🍏 - TBD -Network port forwarding -======================= +# Network port forwarding Add an additional line to your virtual machine configuration. For example: @@ -185,30 +180,26 @@ In the example above: - Port 8123 on the host is forwarded to port 8123 on the guest. - Port 8888 on the host is forwarded to port 80 on the guest. -Bridged networking -================== +# Bridged networking Connect your virtual machine to a preconfigured network bridge. Add an additional line to your virtual machine configuration - `bridge="br0"` -USB redirection -=============== +# USB redirection Quickemu supports USB redirection via SPICE pass-through and host pass-through. -SPICE redirection (recommended) -------------------------------- +## SPICE redirection (recommended) Using SPICE for USB pass-through is easiest as it doesn't require any elevated permission, start Quickemu with `--display spice` and then select `Input` -\> `Select USB Device for redirection` from the menu to choose which device(s) you want to attach to the guest. -Host redirection **NOT Recommended** ------------------------------------- +## Host redirection **NOT Recommended** **USB host redirection is not recommended**, it is provided purely for backwards compatibility to older versions of Quickemu. Using SPICE is @@ -221,9 +212,9 @@ example: In the example above: -- The USB device with vendor\_id 046d and product\_id 082d will be +- The USB device with vendor_id 046d and product_id 082d will be exposed to the guest. -- The USB device with vendor\_id 046d and product\_id 085e will be +- The USB device with vendor_id 046d and product_id 085e will be exposed to the guest. If the USB devices are not writable, `quickemu` will display the @@ -235,27 +226,23 @@ like this: sudo chown -v root:user /dev/bus/usb/001/005 ERROR! USB permission changes are required 👆 -TPM -=== +# TPM Since Quickemu 2.2.0 a software emulated TPM device can be added to guest virtual machines. Just add `tpm="on"` to your VM configuration. `quickget` will automatically add this line to Windows 11 virtual machines. -AUTHORS -======= +# AUTHORS Written by Martin Wimpress. -BUGS -==== +# BUGS Submit bug reports online at: -SEE ALSO -======== +# SEE ALSO Full sources at: diff --git a/docs/quickget.1 b/docs/quickget.1 index 2ee7927..3bcc359 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -1,6 +1,20 @@ -.\" Automatically generated by Pandoc 2.9.2.1 +.\" Automatically generated by Pandoc 2.18 .\" -.TH "QUICKGET" "1" "February 20, 2022" "quickget" "Quickget User Manual" +.\" Define V font for inline verbatim, using C font in formats +.\" that render this, and otherwise B font. +.ie "\f[CB]x\f[]"x" \{\ +. ftr V B +. ftr VI BI +. ftr VB B +. ftr VBI BI +.\} +.el \{\ +. ftr V CR +. ftr VI CI +. ftr VB CB +. ftr VBI CBI +.\} +.TH "QUICKGET" "1" "July 30, 2022" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -12,7 +26,7 @@ quickget - download and prepare materials for building a quickemu VM .SH DESCRIPTION .PP \f[B]quickget\f[R] will download the requisite materials and prepare a -configuration for \f[C]quickemu\f[R] to use to build and run +configuration for \f[V]quickemu\f[R] to use to build and run .SH OPTIONS .TP \f[B]version | -version | \[en]version\f[R] @@ -29,13 +43,13 @@ Editions may not apply and will be defaulted if not provided. .SH NOTES .SS Ubuntu Guest .PP -\f[C]quickget\f[R] will automatically download an Ubuntu release and +\f[V]quickget\f[R] will automatically download an Ubuntu release and create the virtual machine configuration. .IP .nf \f[C] -quickget ubuntu 20.04 -quickemu --vm ubuntu-20.04.conf +quickget ubuntu 22.04 +quickemu --vm ubuntu-22.04.conf \f[R] .fi .IP \[bu] 2 @@ -44,24 +58,24 @@ Complete the installation as normal. Post-install: .RS 2 .IP \[bu] 2 -Install the SPICE agent (\f[C]spice-vdagent\f[R]) to enable copy/paste +Install the SPICE agent (\f[V]spice-vdagent\f[R]) to enable copy/paste and USB redirection .RS 2 .IP \[bu] 2 -\f[C]sudo apt install spice-vdagent\f[R] +\f[V]sudo apt install spice-vdagent\f[R] .RE .IP \[bu] 2 -Install the SPICE WebDAV agent (\f[C]spice-webdavd\f[R]) to enable file +Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) to enable file sharing. .RS 2 .IP \[bu] 2 -\f[C]sudo apt install spice-webdavd\f[R] +\f[V]sudo apt install spice-webdavd\f[R] .RE .RE .SS Ubuntu devel (daily-live) images .PP -\f[C]quickget\f[R] can also download/refresh devel images via -\f[C]zsync\f[R] for Ubuntu developers and testers. +\f[V]quickget\f[R] can also download/refresh devel images via +\f[V]zsync\f[R] for Ubuntu developers and testers. .IP .nf \f[C] @@ -70,106 +84,116 @@ quickemu --vm ubuntu-devel.conf \f[R] .fi .PP -You can run \f[C]quickget ubuntu devel\f[R] to refresh your daily +You can run \f[V]quickget ubuntu devel\f[R] to refresh your daily development image as often as you like, it will even automatically switch to a new series. .SS Ubuntu Flavours .PP All the official Ubuntu flavours are supported, just replace -\f[C]ubuntu\f[R] with your preferred flavour. +\f[V]ubuntu\f[R] with your preferred flavour. .IP \[bu] 2 -\f[C]kubuntu\f[R] (Kubuntu) +\f[V]kubuntu\f[R] (Kubuntu) .IP \[bu] 2 -\f[C]lubuntu\f[R] (Lubuntu) +\f[V]lubuntu\f[R] (Lubuntu) .IP \[bu] 2 -\f[C]ubuntu-budgie\f[R] (Ubuntu Budgie) +\f[V]ubuntu-budgie\f[R] (Ubuntu Budgie) .IP \[bu] 2 -\f[C]ubuntukylin\f[R] (Ubuntu Kylin) +\f[V]ubuntukylin\f[R] (Ubuntu Kylin) .IP \[bu] 2 -\f[C]ubuntu-mate\f[R] (Ubuntu MATE) +\f[V]ubuntu-mate\f[R] (Ubuntu MATE) .IP \[bu] 2 -\f[C]ubuntustudio\f[R] (Ubuntu Studio) +\f[V]ubuntustudio\f[R] (Ubuntu Studio) .IP \[bu] 2 -\f[C]ubuntu\f[R] (Ubuntu) +\f[V]ubuntu\f[R] (Ubuntu) .IP \[bu] 2 -\f[C]xubuntu\f[R] (Xubuntu) +\f[V]xubuntu\f[R] (Xubuntu) .SS Other Operating Systems .PP -\f[C]quickget\f[R] also supports: +\f[V]quickget\f[R] also supports: .IP \[bu] 2 -\f[C]alma\f[R] (Alma Linux) +\f[V]alma\f[R] (Alma Linux) .IP \[bu] 2 -\f[C]alpine\f[R] (Alpine Linux) +\f[V]alpine\f[R] (Alpine Linux) .IP \[bu] 2 -\f[C]android\f[R] (Android x86) +\f[V]android\f[R] (Android x86) .IP \[bu] 2 -\f[C]archlinux\f[R] (Arch Linux) +\f[V]archlinux\f[R] (Arch Linux) .IP \[bu] 2 -\f[C]arcolinux\f[R] (Arco Linux) +\f[V]arcolinux\f[R] (Arco Linux) .IP \[bu] 2 -\f[C]cachyos\f[R] (CachyOS) +\f[V]batocera\f[R] (Batocera) .IP \[bu] 2 -\f[C]debian\f[R] (Debian) +\f[V]cachyos\f[R] (CachyOS) .IP \[bu] 2 -\f[C]devuan\f[R] (Devuan) +\f[V]centos-stream\f[R] (CentOS Stream) .IP \[bu] 2 -\f[C]dragonflybsd\f[R] (DragonFlyBSD) +\f[V]debian\f[R] (Debian) .IP \[bu] 2 -\f[C]elementary\f[R] (elementary OS) +\f[V]deepin\f[R] (Deepin) .IP \[bu] 2 -\f[C]fedora\f[R] (Fedora) +\f[V]devuan\f[R] (Devuan) .IP \[bu] 2 -\f[C]freebsd\f[R] (FreeBSD) +\f[V]dragonflybsd\f[R] (DragonFlyBSD) .IP \[bu] 2 -\f[C]freedos\f[R] (FreeDOS) +\f[V]elementary\f[R] (elementary OS) .IP \[bu] 2 -\f[C]garuda\f[R] (Garuda Linux) +\f[V]endeavouros\f[R] (EndeavourOS) .IP \[bu] 2 -\f[C]gentoo\f[R] (Gentoo) +\f[V]fedora\f[R] (Fedora) .IP \[bu] 2 -\f[C]ghostbsd\f[R] (GhostBSD) +\f[V]freebsd\f[R] (FreeBSD) .IP \[bu] 2 -\f[C]haiku\f[R] (Haiku) +\f[V]freedos\f[R] (FreeDOS) .IP \[bu] 2 -\f[C]kali\f[R] (Kali) +\f[V]garuda\f[R] (Garuda Linux) .IP \[bu] 2 -\f[C]kdeneon\f[R] (KDE Neon) +\f[V]gentoo\f[R] (Gentoo) .IP \[bu] 2 -\f[C]kolibrios\f[R] (KolibriOS) +\f[V]ghostbsd\f[R] (GhostBSD) .IP \[bu] 2 -\f[C]linuxmint\f[R] (Linux Mint) +\f[V]haiku\f[R] (Haiku) .IP \[bu] 2 -\f[C]manjaro\f[R] (Manjaro) +\f[V]kali\f[R] (Kali) .IP \[bu] 2 -\f[C]mxlinux\f[R] (MX Linux) +\f[V]kdeneon\f[R] (KDE Neon) .IP \[bu] 2 -\f[C]netboot\f[R] (netboot.xyz) +\f[V]kolibrios\f[R] (KolibriOS) .IP \[bu] 2 -\f[C]netbsd\f[R] (NetBSD) +\f[V]linuxmint\f[R] (Linux Mint) .IP \[bu] 2 -\f[C]nixos\f[R] (NixOS) +\f[V]lmde\f[R] (Linux Mint Debian Edition) .IP \[bu] 2 -\f[C]openbsd\f[R] (OpenBSD) +\f[V]manjaro\f[R] (Manjaro) .IP \[bu] 2 -\f[C]opensuse\f[R] (openSUSE) +\f[V]mxlinux\f[R] (MX Linux) .IP \[bu] 2 -\f[C]oraclelinux\f[R] (Oracle Linux) +\f[V]netboot\f[R] (netboot.xyz) .IP \[bu] 2 -\f[C]popos\f[R] (Pop!_OS) +\f[V]netbsd\f[R] (NetBSD) .IP \[bu] 2 -\f[C]regolith\f[R] (Regolith Linux) +\f[V]nixos\f[R] (NixOS) .IP \[bu] 2 -\f[C]rockylinux\f[R] (Rocky Linux) +\f[V]openbsd\f[R] (OpenBSD) .IP \[bu] 2 -\f[C]slackware\f[R] (Slackware) +\f[V]opensuse\f[R] (openSUSE) .IP \[bu] 2 -\f[C]solus\f[R] (Solus) +\f[V]oraclelinux\f[R] (Oracle Linux) .IP \[bu] 2 -\f[C]tails\f[R] (Tails) +\f[V]popos\f[R] (Pop!_OS) .IP \[bu] 2 -\f[C]void\f[R] (Void Linux) +\f[V]regolith\f[R] (Regolith Linux) .IP \[bu] 2 -\f[C]zorin\f[R] (Zorin OS) +\f[V]rockylinux\f[R] (Rocky Linux) +.IP \[bu] 2 +\f[V]slackware\f[R] (Slackware) +.IP \[bu] 2 +\f[V]solus\f[R] (Solus) +.IP \[bu] 2 +\f[V]tails\f[R] (Tails) +.IP \[bu] 2 +\f[V]void\f[R] (Void Linux) +.IP \[bu] 2 +\f[V]zorin\f[R] (Zorin OS) .PP Or you can download a Linux image and manually create a VM configuration. @@ -177,7 +201,7 @@ configuration. Download a .iso image of a Linux distribution .IP \[bu] 2 Create a VM configuration file; for example -\f[C]debian-bullseye.conf\f[R] +\f[V]debian-bullseye.conf\f[R] .IP .nf \f[C] @@ -187,7 +211,7 @@ iso=\[dq]debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso\[dq] \f[R] .fi .IP \[bu] 2 -Use \f[C]quickemu\f[R] to start the virtual machine: +Use \f[V]quickemu\f[R] to start the virtual machine: .IP .nf \f[C] @@ -200,15 +224,15 @@ Complete the installation as normal. Post-install: .RS 2 .IP \[bu] 2 -Install the SPICE agent (\f[C]spice-vdagent\f[R]) to enable copy/paste +Install the SPICE agent (\f[V]spice-vdagent\f[R]) to enable copy/paste and USB redirection. .IP \[bu] 2 -Install the SPICE WebDAV agent (\f[C]spice-webdavd\f[R]) to enable file +Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) to enable file sharing. .RE .SS macOS Guest .PP -\f[C]quickget\f[R] automatically downloads a macOS recovery image and +\f[V]quickget\f[R] automatically downloads a macOS recovery image and creates a virtual machine configuration. .IP .nf @@ -218,8 +242,8 @@ quickemu --vm macos-catalina.conf \f[R] .fi .PP -macOS \f[C]high-sierra\f[R], \f[C]mojave\f[R], \f[C]catalina\f[R], -\f[C]big-sur\f[R] and \f[C]monterey\f[R] are supported. +macOS \f[V]high-sierra\f[R], \f[V]mojave\f[R], \f[V]catalina\f[R], +\f[V]big-sur\f[R] and \f[V]monterey\f[R] are supported. .IP \[bu] 2 Use cursor keys and enter key to select the \f[B]macOS Base System\f[R] .IP \[bu] 2 @@ -232,19 +256,19 @@ Click \f[B]Disk Utility\f[R] and \f[B]Continue\f[R] On macOS Catalina, Big Sur & Monterey .RS 2 .IP \[bu] 2 -Select \f[C]Apple Inc. VirtIO Block Media\f[R] from the list and click +Select \f[V]Apple Inc. VirtIO Block Media\f[R] from the list and click \f[B]Erase\f[R]. .RE .IP \[bu] 2 On macOS Mojave and High Sierra .RS 2 .IP \[bu] 2 -Select \f[C]QEMU HARDDISK Media\f[R] (\[ti]103.08GB) from the list and +Select \f[V]QEMU HARDDISK Media\f[R] (\[ti]103.08GB) from the list and click \f[B]Erase\f[R]. .RE .RE .IP \[bu] 2 -Enter a \f[C]Name:\f[R] for the disk and click \f[B]Erase\f[R]. +Enter a \f[V]Name:\f[R] for the disk and click \f[B]Erase\f[R]. .IP \[bu] 2 Click \f[B]Done\f[R]. .IP \[bu] 2 @@ -278,10 +302,10 @@ macos_release=\[dq]catalina\[dq] \f[R] .fi .IP \[bu] 2 -\f[C]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for +\f[V]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for macOS. .IP \[bu] 2 -\f[C]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to +\f[V]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to optimise for a particular macOS release. .RS 2 .IP \[bu] 2 @@ -309,7 +333,7 @@ Big Sur Monterey .RE .IP \[bu] 2 -\f[C]quickemu\f[R] will automatically download the required +\f[V]quickemu\f[R] will automatically download the required OpenCore (https://github.com/acidanthera/OpenCorePkg) bootloader and OVMF firmware from OSX-KVM (https://github.com/kholia/OSX-KVM). .IP \[bu] 2 @@ -322,11 +346,11 @@ VirtIO Block Media (https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used for the system disk where supported. .IP \[bu] 2 -VirtIO \f[C]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used for +VirtIO \f[V]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used for the mouse. .IP \[bu] 2 -VirtIO Network (\f[C]virtio-net\f[R]) is supported and enabled on macOS -Big Sur and newer but previous releases use \f[C]vmxnet3\f[R]. +VirtIO Network (\f[V]virtio-net\f[R]) is supported and enabled on macOS +Big Sur and newer but previous releases use \f[V]vmxnet3\f[R]. .IP \[bu] 2 VirtIO Memory Ballooning is supported and enabled on macOS Big Sur and newer but disabled for other support macOS releases. @@ -355,7 +379,7 @@ webdavd (https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). Copy/paste via SPICE agent is \f[B]not available on macOS\f[R]. .SS Windows 8.1, 10 & 11 Guests .PP -\f[C]quickget\f[R] can automatically download Windows 8.1, Windows +\f[V]quickget\f[R] can automatically download Windows 8.1, Windows 10 (https://www.microsoft.com/en-gb/software-download/windows10ISO) and Windows 11 (https://www.microsoft.com/en-gb/software-download/windows11) along with the VirtIO drivers for @@ -374,7 +398,7 @@ Complete the installation as you normally would. All relevant drivers and services should be installed automatically. .SS Regional versions .PP -By default \f[C]quickget\f[R] will download the \f[I]\[lq]English +By default \f[V]quickget\f[R] will download the \f[I]\[lq]English International\[rq]\f[R] release, but you can optionally specify one of the supported languages: For example: .IP @@ -393,17 +417,18 @@ disk_img=\[dq]windows-11/disk.qcow2\[dq] iso=\[dq]windows-11/Win11_EnglishInternational_x64.iso\[dq] fixed_iso=\[dq]windows-11/virtio-win.iso\[dq] tpm=\[dq]on\[dq] +secureboot=\[dq]on\[dq] \f[R] .fi .IP \[bu] 2 -\f[C]guest_os=\[dq]windows\[dq]\f[R] instructs \f[C]quickemu\f[R] to +\f[V]guest_os=\[dq]windows\[dq]\f[R] instructs \f[V]quickemu\f[R] to optimise for Windows. .IP \[bu] 2 -\f[C]fixed_iso=\f[R] specifies the ISO image that provides VirtIO +\f[V]fixed_iso=\f[R] specifies the ISO image that provides VirtIO drivers. .IP \[bu] 2 -\f[C]tpm=\[dq]on\[dq]\f[R] instructs \f[C]quickemu\f[R] to create a -software emulated TPM device using \f[C]swtpm\f[R]. +\f[V]tpm=\[dq]on\[dq]\f[R] instructs \f[V]quickemu\f[R] to create a +software emulated TPM device using \f[V]swtpm\f[R]. .SH AUTHORS .PP Written by Martin Wimpress. diff --git a/docs/quickget.1.md b/docs/quickget.1.md index fa7939b..e34b73a 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,35 +1,31 @@ --- author: Martin Wimpress -date: 'February 20, 2022' +date: July 30, 2022 footer: quickget header: Quickget User Manual section: 1 title: QUICKGET --- -NAME -==== +# NAME quickget - download and prepare materials for building a quickemu VM -SYNOPSIS -======== +# SYNOPSIS **quickget** \[*os*\] \[*release*\] \[*edition*\] \| \[*OPTION*\]\* -DESCRIPTION -=========== +# DESCRIPTION **quickget** will download the requisite materials and prepare a configuration for `quickemu` to use to build and run -OPTIONS -======= +# OPTIONS **version \| -version \| --version** : show version (from Quickemu) -**list \| list\_csv \| list\_json** +**list \| list_csv \| list_json** : provide a csv list of all supported guest OSes, versions and variants. @@ -39,18 +35,16 @@ OPTIONS script will exit. Editions may not apply and will be defaulted if not provided. -NOTES -===== +# NOTES -Ubuntu Guest ------------- +## Ubuntu Guest `quickget` will automatically download an Ubuntu release and create the virtual machine configuration. -``` {.bash} -quickget ubuntu 20.04 -quickemu --vm ubuntu-20.04.conf +``` bash +quickget ubuntu 22.04 +quickemu --vm ubuntu-22.04.conf ``` - Complete the installation as normal. @@ -67,7 +61,7 @@ quickemu --vm ubuntu-20.04.conf `quickget` can also download/refresh devel images via `zsync` for Ubuntu developers and testers. -``` {.bash} +``` bash quickget ubuntu devel quickemu --vm ubuntu-devel.conf ``` @@ -90,8 +84,7 @@ with your preferred flavour. - `ubuntu` (Ubuntu) - `xubuntu` (Xubuntu) -Other Operating Systems ------------------------ +## Other Operating Systems `quickget` also supports: @@ -100,11 +93,15 @@ Other Operating Systems - `android` (Android x86) - `archlinux` (Arch Linux) - `arcolinux` (Arco Linux) +- `batocera` (Batocera) - `cachyos` (CachyOS) +- `centos-stream` (CentOS Stream) - `debian` (Debian) +- `deepin` (Deepin) - `devuan` (Devuan) - `dragonflybsd` (DragonFlyBSD) - `elementary` (elementary OS) +- `endeavouros` (EndeavourOS) - `fedora` (Fedora) - `freebsd` (FreeBSD) - `freedos` (FreeDOS) @@ -116,6 +113,7 @@ Other Operating Systems - `kdeneon` (KDE Neon) - `kolibrios` (KolibriOS) - `linuxmint` (Linux Mint) +- `lmde` (Linux Mint Debian Edition) - `manjaro` (Manjaro) - `mxlinux` (MX Linux) - `netboot` (netboot.xyz) @@ -139,7 +137,7 @@ configuration. - Download a .iso image of a Linux distribution - Create a VM configuration file; for example `debian-bullseye.conf` -``` {.bash} +``` bash guest_os="linux" disk_img="debian-bullseye/disk.qcow2" iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso" @@ -147,7 +145,7 @@ iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso" - Use `quickemu` to start the virtual machine: -``` {.bash} +``` bash quickemu --vm debian-bullseye.conf ``` @@ -158,13 +156,12 @@ quickemu --vm debian-bullseye.conf - Install the SPICE WebDAV agent (`spice-webdavd`) to enable file sharing. -macOS Guest ------------ +## macOS Guest `quickget` automatically downloads a macOS recovery image and creates a virtual machine configuration. -``` {.bash} +``` bash quickget macos catalina quickemu --vm macos-catalina.conf ``` @@ -194,7 +191,7 @@ supported. The default macOS configuration looks like this: -``` {.bash} +``` bash guest_os="macos" img="macos-catalina/RecoveryImage.img" disk_img="macos-catalina/disk.qcow2" @@ -245,8 +242,7 @@ There are some considerations when running macOS via Quickemu. webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). - Copy/paste via SPICE agent is **not available on macOS**. -Windows 8.1, 10 & 11 Guests ---------------------------- +## Windows 8.1, 10 & 11 Guests `quickget` can automatically download Windows 8.1, [Windows 10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and @@ -256,7 +252,7 @@ with the [VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) and creates a virtual machine configuration. -``` {.bash} +``` bash quickget windows 11 quickemu --vm windows-11.conf ``` @@ -270,18 +266,19 @@ By default `quickget` will download the *"English International"* release, but you can optionally specify one of the supported languages: For example: -``` {.bash} +``` bash quickget windows 11 "Chinese (Traditional)" ``` The default Windows 11 configuration looks like this: -``` {.bash} +``` bash guest_os="windows" disk_img="windows-11/disk.qcow2" iso="windows-11/Win11_EnglishInternational_x64.iso" fixed_iso="windows-11/virtio-win.iso" tpm="on" +secureboot="on" ``` - `guest_os="windows"` instructs `quickemu` to optimise for Windows. @@ -289,20 +286,17 @@ tpm="on" - `tpm="on"` instructs `quickemu` to create a software emulated TPM device using `swtpm`. -AUTHORS -======= +# AUTHORS Written by Martin Wimpress. -BUGS -==== +# BUGS Submit bug reports online at: -SEE ALSO -======== +# SEE ALSO Full sources at: -quickemu(1), quickemu\_conf(1), quickgui(1) +quickemu(1), quickemu_conf(1), quickgui(1) From b7e1fba11780a03ba03ec5f9d7a7f5a63a4d9a84 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Mon, 1 Aug 2022 09:14:21 +0100 Subject: [PATCH 042/189] Correct batocera for release 34 (#512) * chore: docs submodule * check for current batocera release at runtime --- build-docs | 2 +- quickget | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/build-docs b/build-docs index 51ee39c..c881d8e 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 51ee39c41c13fb1cc78e86ec24b100f35c337d70 +Subproject commit c881d8e4862a5810a4793f34626181667fde8f89 diff --git a/quickget b/quickget index f6a3e48..267895a 100755 --- a/quickget +++ b/quickget @@ -291,7 +291,7 @@ function releases_fedora() { } function releases_batocera() { - echo 33 + echo 32 33 34 } function editions_fedora() { @@ -850,8 +850,23 @@ function get_arcolinux() { function get_batocera() { local HASH="" - local ISO="batocera-x86_64-${RELEASE}-20220203.img.gz" - local URL="https://updates.batocera.org/x86_64/stable/last" + local URL="https://mirrors.o2switch.fr/batocera/x86_64/stable/last" + local ISO="$(curl -sl ${URL}/ | grep -e 'batocera.*img.gz'|cut -d\" -f2)" + local CURRENT_RELEASE=$(echo "${ISO}"| cut -d\- -f3) + + + case ${RELEASE} in + ${CURRENT_RELEASE}) #Current release + URL+="" + ;; + *) + URL+="/archives/${RELEASE}" + ISO="$(curl -sl ${URL}/ | grep -e 'batocera.*img.gz'|cut -d\" -f2)" + ;; # non-current are here + + esac + + echo "${URL}/${ISO} ${HASH}" } From 45722ac1f8a8fd69228753a79c694d3e8301068a Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Mon, 1 Aug 2022 09:14:53 +0100 Subject: [PATCH 043/189] Oracle Linux 9.0 added (#513) * chore: docs submodule * Oracle Linux Release 9.0 added also removed some early obsoleted 8.x releases --- quickget | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/quickget b/quickget index 267895a..313644a 100755 --- a/quickget +++ b/quickget @@ -422,7 +422,7 @@ function releases_opensuse(){ } function releases_oraclelinux() { - echo 7.7 7.8 7.9 8.2 8.3 8.4 8.5 + echo 7.7 7.8 7.9 8.4 8.5 8.6 9.0 } function releases_popos() { @@ -1285,8 +1285,8 @@ function get_oraclelinux() { local URL="https://yum.oracle.com/ISOS/OracleLinux/OL${VER_MAJ}/u${VER_MIN}/x86_64/" case ${VER_MAJ} in - 8) ISO="OracleLinux-R${VER_MAJ}-U${VER_MIN}-x86_64-dvd.iso";; - *) ISO="OracleLinux-R${VER_MAJ}-U${VER_MIN}-Server-x86_64-dvd.iso";; + 7) ISO="OracleLinux-R${VER_MAJ}-U${VER_MIN}-Server-x86_64-dvd.iso";; + *) ISO="OracleLinux-R${VER_MAJ}-U${VER_MIN}-x86_64-dvd.iso";; esac HASH=$(wget -q -O- "https://linux.oracle.com/security/gpg/checksum/OracleLinux-R${VER_MAJ}-U${VER_MIN}-Server-x86_64.checksum" | grep "${ISO}" | cut -d' ' -f1) echo "${URL}/${ISO} ${HASH}" From f65b8e328b83c2affa2cc00e9daa9614ab533286 Mon Sep 17 00:00:00 2001 From: Vladislav Nepogodin Date: Mon, 1 Aug 2022 04:24:08 +0400 Subject: [PATCH 044/189] new release --- quickget | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/quickget b/quickget index 313644a..6c00bfb 100755 --- a/quickget +++ b/quickget @@ -245,7 +245,11 @@ function editions_arcolinux() { } function releases_cachyos() { - echo 2022.01.09 2022.02.11 + echo 220731 +} + +function editions_cachyos() { + echo kde gnome xfce } function releases_centos-stream() { @@ -872,8 +876,9 @@ function get_batocera() { function get_cachyos() { local HASH="" - local ISO="cachyos-${RELEASE}-x86_64.iso" - local URL="https://mirror.cachyos.org/ISO" + local ISO="cachyos-${EDITION}-linux-${RELEASE}.iso" + local URL="https://mirror.cachyos.org/ISO/${EDITION}/${RELEASE}" + HASH=$(wget -q -O- "${URL}/${ISO}.sha256" | cut -d' ' -f1) echo "${URL}/${ISO} ${HASH}" } From e8b1b7cb3e43f71e605cee7f68f7f19990cee149 Mon Sep 17 00:00:00 2001 From: infokiller Date: Mon, 1 Aug 2022 11:22:12 +0300 Subject: [PATCH 045/189] Add support for spice-app (#510) * Add spice-app as display option * Rework how we set the default OUTPUT variable display is never set and display_param_check is already checked when parsing options * enable overriding the gl param 3d acceleration is not stable on some setups (looking at you, nvidia) Co-authored-by: Matej --- quickemu | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/quickemu b/quickemu index 17f739e..56576a4 100755 --- a/quickemu +++ b/quickemu @@ -221,7 +221,6 @@ function vm_boot() { local HOST_CPU_SMT="" local HOST_CPU_SOCKETS="" local HOST_CPU_VENDOR="" - local GL="on" local GUEST_TWEAKS="" local KERNEL_NAME="Unknown" local KERNEL_NODE="" @@ -734,24 +733,32 @@ function vm_boot() { DISPLAY_RENDER="${OUTPUT},grab-on-hover=on,zoom-to-fit=off" # GL is not working with GTK and virtio-vga if [ "${DISPLAY_DEVICE}" == "virtio-vga" ]; then - GL="off" + gl="off" fi ;; none|spice) DISPLAY_RENDER="none";; + # spice-app has a bug where using spice-app,gl=off seems to enable gl, but + # if the gl param is omitted it works fine. + spice-app) + DISPLAY_RENDER="${OUTPUT}" + if [[ "${gl}" == "on" ]]; then + DISPLAY_RENDER+=",gl=on" + fi + ;; *) - DISPLAY_RENDER="${OUTPUT},gl=${GL}";; + DISPLAY_RENDER="${OUTPUT},gl=${gl}";; esac - if [ "${GL}" == "on" ] && [[ "${DISPLAY_DEVICE}" == *"virtio"* ]]; then + if [ "${gl}" == "on" ] && [[ "${DISPLAY_DEVICE}" == *"virtio"* ]]; then if [ "${QEMU_VER_SHORT}" -ge 61 ]; then DISPLAY_DEVICE="${DISPLAY_DEVICE}-gl" else DISPLAY_DEVICE="${DISPLAY_DEVICE},virgl=on" fi - echo ", GL (${GL}), VirGL (on)" + echo ", GL (${gl}), VirGL (on)" else - echo ", GL (${GL}), VirGL (off)" + echo ", GL (${gl}), VirGL (off)" fi # Build the video configuration @@ -1243,7 +1250,7 @@ function usage() { echo " --braille : Enable braille support. Requires SDL." echo " --delete-disk : Delete the disk image and EFI variables" echo " --delete-vm : Delete the entire VM and it's configuration" - echo " --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice'" + echo " --display : Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or 'spice-app'" echo " --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)" echo " --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers" echo " --screen : Use specified screen to determine the window size." @@ -1274,8 +1281,7 @@ function usage() { } function display_param_check() { - # @ASK: accept "spice-app" as output ? - if [ "${OUTPUT}" != "gtk" ] && [ "${OUTPUT}" != "none" ] && [ "${OUTPUT}" != "sdl" ] && [ "${OUTPUT}" != "spice" ]; then + if [ "${OUTPUT}" != "gtk" ] && [ "${OUTPUT}" != "none" ] && [ "${OUTPUT}" != "sdl" ] && [ "${OUTPUT}" != "spice" ] && [ "${OUTPUT}" != "spice-app" ]; then echo "ERROR! Requested output '${OUTPUT}' is not recognised." exit 1 fi @@ -1612,16 +1618,14 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then disk_size="${disk}" fi + # Set the default OUTPUT if not provided by user if [ -z "${OUTPUT}" ]; then - # Braille support requires SDL. Override OUTPUT if braille was requested. - if [ -n "${BRAILLE}" ]; then - OUTPUT="sdl" - elif [ -z "${display}" ]; then - OUTPUT="sdl" - else - OUTPUT="${display}" - display_param_check - fi + OUTPUT="sdl" + fi + + # Braille support requires SDL. Override OUTPUT if braille was requested. + if [ -n "${BRAILLE}" ]; then + OUTPUT="sdl" fi if [ -z "${VIEWER}" ]; then @@ -1629,6 +1633,12 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then fi viewer_param_check + # Set the default 3d acceleration. Will be overridden to "off" if + # DISPLAY_DEVICE is determined to be virtio-vga since it doesn't work there. + if [ -z "${gl}" ]; then + gl="on" + fi + if [ -z "${PUBLIC}" ]; then PUBLIC="${public_dir}" fi From 7ce97daf27dd16444d0f3c29aa6f06b2c5562aaa Mon Sep 17 00:00:00 2001 From: MatejSpindler Date: Mon, 1 Aug 2022 10:23:19 +0200 Subject: [PATCH 046/189] Add multiscreen mode (#473) Enable multiscreen with max_outputs for the virtio-vga if user configures max_outputs in the .conf file --- quickemu | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/quickemu b/quickemu index 56576a4..debefd1 100755 --- a/quickemu +++ b/quickemu @@ -776,6 +776,11 @@ function vm_boot() { ati-vga|cirrus-vga|VGA) VIDEO="${VIDEO},vgamem_mb=64";; esac + # Configure multiscreen if max_outputs was provided in the .conf file + if [ -v max_outputs ]; then + VIDEO="${VIDEO},max_outputs=${max_outputs}" + fi + # Add fullscreen options VIDEO="${VIDEO} ${FULLSCREEN}" From 4e836b78fec2d750caf0137910b20bf28a96ca70 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Mon, 1 Aug 2022 10:16:51 +0100 Subject: [PATCH 047/189] Collapse component in unattended.xml --- quickget | 60 ++++++++------------------------------------------------ 1 file changed, 8 insertions(+), 52 deletions(-) diff --git a/quickget b/quickget index 6c00bfb..02348dd 100755 --- a/quickget +++ b/quickget @@ -1448,44 +1448,22 @@ function unattended_windows() { https://docs.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/ --> - + * - + true - + true - + * Quickemu Project @@ -1497,25 +1475,13 @@ function unattended_windows() { Quickemu Project - + 0 - + false @@ -1625,11 +1591,7 @@ function unattended_windows() { - + + + false + * @@ -1457,6 +1460,9 @@ function unattended_windows() { true + + 1 + @@ -1474,6 +1480,7 @@ function unattended_windows() { https://github.com/quickemu-project/quickemu/issues Quickemu Project + W269N-WFGWX-YVC9B-4J6C9-T83GX 0 @@ -1584,8 +1591,11 @@ function unattended_windows() { true + Quickemu + Quickemu Project + - VK7JG-NPHTM-C97JM-9MPGT-3V66T + W269N-WFGWX-YVC9B-4J6C9-T83GX Never @@ -1640,19 +1650,45 @@ function unattended_windows() { + + + quickemu + true</PlainText> + </Password> + <Enabled>true</Enabled> + <Username>Quickemu</Username> + </AutoLogon> + <DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet> <OOBE> <HideEULAPage>true</HideEULAPage> - <HideLocalAccountScreen>false</HideLocalAccountScreen> + <HideLocalAccountScreen>true</HideLocalAccountScreen> <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> - <HideOnlineAccountScreens>false</HideOnlineAccountScreens> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> <ProtectYourPC>3</ProtectYourPC> - <SkipUserOOBE>false</SkipUserOOBE> - <SkipMachineOOBE>false</SkipMachineOOBE> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> <VMModeOptimizations> <SkipWinREInitialization>true</SkipWinREInitialization> </VMModeOptimizations> </OOBE> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Password> + <Value>quickemu</Value> + <PlainText>true</PlainText> + </Password> + <Description>Quickemu</Description> + <DisplayName>Quickemu</DisplayName> + <Group>Administrators</Group> + <Name>Quickemu</Name> + </LocalAccount> + </LocalAccounts> + </UserAccounts> + <RegisteredOrganization>Quickemu Project</RegisteredOrganization> + <RegisteredOwner>Quickemu</RegisteredOwner> <FirstLogonCommands> <SynchronousCommand wcm:action="add"> <CommandLine>msiexec /i E:\guest-agent\qemu-ga-x86_64.msi /quiet /passive /qn</CommandLine> From 2e5785286f31f470681dfb9712f9be4222b8661d Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Mon, 1 Aug 2022 10:11:56 +0100 Subject: [PATCH 049/189] doc refresh to include option --- README.md | 72 ++++++++++++++++++++++------------------- docs/quickemu.1 | 7 ++-- docs/quickemu.1.md | 10 ++++-- docs/quickemu_conf.1 | 2 +- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 5 ++- docs/quickget.1.md | 6 +++- 7 files changed, 62 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index dc9b9d2..6a97658 100644 --- a/README.md +++ b/README.md @@ -231,6 +231,10 @@ with your preferred flavour. `quickget` also supports: +## Other Operating Systems + +`quickget` also supports: + - `alma` (Alma Linux) - `alpine` (Alpine Linux) - `android` (Android x86) @@ -648,46 +652,46 @@ cog.out(f"```\n\n{help}\n\n```\n\n") ``` -Usage - quickemu --vm ubuntu.conf + Usage + quickemu --vm ubuntu.conf -You can also pass optional parameters - --braille : Enable braille support. Requires SDL. - --delete-disk : Delete the disk image and EFI variables - --delete-vm : Delete the entire VM and it's configuration - --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice' - --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) - --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers - --screen <screen> : Use specified screen to determine the window size. - --shortcut : Create a desktop shortcut - --snapshot apply <tag> : Apply/restore a snapshot. - --snapshot create <tag> : Create a snapshot. - --snapshot delete <tag> : Delete a snapshot. - --snapshot info : Show disk/snapshot info. - --status-quo : Do not commit any changes to disk/snapshot. - --viewer <viewer> : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none' - --ssh-port <port> : Set ssh-port manually - --spice-port <port> : Set spice-port manually - --public-dir <path> : expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '<directory>', 'none' - --monitor <type> : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none' - --monitor-telnet-host <ip/host> : Set telnet host for monitor. (default: 'localhost') - --monitor-telnet-port <port> : Set telnet port for monitor. (default: '4440') - --monitor-cmd <cmd> : Send command to monitor if available. (Example: system_powerdown) - --serial <type> : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none' - --serial-telnet-host <ip/host> : Set telnet host for serial. (default: 'localhost') - --serial-telnet-port <port> : Set telnet port for serial. (default: '6660') - --keyboard <type> : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio' - --keyboard_layout <layout> : Set keyboard layout. - --mouse <type> : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio' - --usb-controller <type> : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none' - --extra_args <arguments> : Pass additional arguments to qemu - --version : Print version + You can also pass optional parameters + --braille : Enable braille support. Requires SDL. + --delete-disk : Delete the disk image and EFI variables + --delete-vm : Delete the entire VM and it's configuration + --display : Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or 'spice-app' + --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) + --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers + --screen <screen> : Use specified screen to determine the window size. + --shortcut : Create a desktop shortcut + --snapshot apply <tag> : Apply/restore a snapshot. + --snapshot create <tag> : Create a snapshot. + --snapshot delete <tag> : Delete a snapshot. + --snapshot info : Show disk/snapshot info. + --status-quo : Do not commit any changes to disk/snapshot. + --viewer <viewer> : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none' + --ssh-port <port> : Set ssh-port manually + --spice-port <port> : Set spice-port manually + --public-dir <path> : expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '<directory>', 'none' + --monitor <type> : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none' + --monitor-telnet-host <ip/host> : Set telnet host for monitor. (default: 'localhost') + --monitor-telnet-port <port> : Set telnet port for monitor. (default: '4440') + --monitor-cmd <cmd> : Send command to monitor if available. (Example: system_powerdown) + --serial <type> : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none' + --serial-telnet-host <ip/host> : Set telnet host for serial. (default: 'localhost') + --serial-telnet-port <port> : Set telnet port for serial. (default: '6660') + --keyboard <type> : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio' + --keyboard_layout <layout> : Set keyboard layout. + --mouse <type> : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio' + --usb-controller <type> : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none' + --extra_args <arguments> : Pass additional arguments to qemu + --version : Print version ``` - <!-- [[[end]]] --> + ## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 77de3ae..c069623 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "July 30, 2022" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "August 1, 2022" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -326,6 +326,9 @@ All the official Ubuntu flavours are supported, just replace .SS Other Operating Systems .PP \f[V]quickget\f[R] also supports: +.SS Other Operating Systems +.PP +\f[V]quickget\f[R] also supports: .IP \[bu] 2 \f[V]alma\f[R] (Alma Linux) .IP \[bu] 2 @@ -658,7 +661,7 @@ You can also pass optional parameters --braille : Enable braille support. Requires SDL. --delete-disk : Delete the disk image and EFI variables --delete-vm : Delete the entire VM and it\[aq]s configuration - --display : Select display backend. \[aq]sdl\[aq] (default), \[aq]gtk\[aq], \[aq]none\[aq], or \[aq]spice\[aq] + --display : Select display backend. \[aq]sdl\[aq] (default), \[aq]gtk\[aq], \[aq]none\[aq], \[aq]spice\[aq] or \[aq]spice-app\[aq] --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers --screen <screen> : Use specified screen to determine the window size. diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 66a98e7..b98f373 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: July 30, 2022 +date: August 1, 2022 footer: quickemu header: Quickemu User Manual section: 1 @@ -255,6 +255,10 @@ with your preferred flavour. `quickget` also supports: +## Other Operating Systems + +`quickget` also supports: + - `alma` (Alma Linux) - `alpine` (Alpine Linux) - `android` (Android x86) @@ -466,7 +470,7 @@ Here are the usage instructions: --braille : Enable braille support. Requires SDL. --delete-disk : Delete the disk image and EFI variables --delete-vm : Delete the entire VM and it's configuration - --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice' + --display : Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or 'spice-app' --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers --screen <screen> : Use specified screen to determine the window size. @@ -494,6 +498,8 @@ Here are the usage instructions: --extra_args <arguments> : Pass additional arguments to qemu --version : Print version + + ## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index 5fa43b7..d0f9480 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "July 30, 2022" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "August 1, 2022" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index 8ff9ba7..e533f00 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: July 30, 2022 +date: August 1, 2022 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index 3bcc359..a3899f2 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "July 30, 2022" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "August 1, 2022" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -110,6 +110,9 @@ All the official Ubuntu flavours are supported, just replace .SS Other Operating Systems .PP \f[V]quickget\f[R] also supports: +.SS Other Operating Systems +.PP +\f[V]quickget\f[R] also supports: .IP \[bu] 2 \f[V]alma\f[R] (Alma Linux) .IP \[bu] 2 diff --git a/docs/quickget.1.md b/docs/quickget.1.md index e34b73a..04c163c 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: July 30, 2022 +date: August 1, 2022 footer: quickget header: Quickget User Manual section: 1 @@ -88,6 +88,10 @@ with your preferred flavour. `quickget` also supports: +## Other Operating Systems + +`quickget` also supports: + - `alma` (Alma Linux) - `alpine` (Alpine Linux) - `android` (Android x86) From 7e0c00bfe7bb1e28d18ce5047d0f6a6c224d72f1 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Mon, 1 Aug 2022 11:15:07 +0100 Subject: [PATCH 050/189] Last change hopefully --- README.md | 5 ++++- docs/quickemu.1 | 9 +++++++++ docs/quickemu.1.md | 4 ++++ docs/quickget.1 | 9 +++++++++ docs/quickget.1.md | 4 ++++ 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6a97658..4ff12b4 100644 --- a/README.md +++ b/README.md @@ -406,6 +406,10 @@ quickemu --vm windows-11.conf - Complete the installation as you normally would. - All relevant drivers and services should be installed automatically. +- A local adminstrator user account is automatically created, with + these credentials: + - Username: `Quickemu` + - Password: `quickemu` ### Regional versions @@ -691,7 +695,6 @@ cog.out(f"```\n\n{help}\n\n```\n\n") ``` <!-- [[[end]]] --> - ## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in diff --git a/docs/quickemu.1 b/docs/quickemu.1 index c069623..98a04c0 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -615,6 +615,15 @@ quickemu --vm windows-11.conf Complete the installation as you normally would. .IP \[bu] 2 All relevant drivers and services should be installed automatically. +.IP \[bu] 2 +A local adminstrator user account is automatically created, with these +credentials: +.RS 2 +.IP \[bu] 2 +Username: \f[V]Quickemu\f[R] +.IP \[bu] 2 +Password: \f[V]quickemu\f[R] +.RE .SS Regional versions .PP By default \f[V]quickget\f[R] will download the \f[I]\[lq]English diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index b98f373..61582a9 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -430,6 +430,10 @@ quickemu --vm windows-11.conf - Complete the installation as you normally would. - All relevant drivers and services should be installed automatically. +- A local adminstrator user account is automatically created, with + these credentials: + - Username: `Quickemu` + - Password: `quickemu` ### Regional versions diff --git a/docs/quickget.1 b/docs/quickget.1 index a3899f2..8d19e83 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -399,6 +399,15 @@ quickemu --vm windows-11.conf Complete the installation as you normally would. .IP \[bu] 2 All relevant drivers and services should be installed automatically. +.IP \[bu] 2 +A local adminstrator user account is automatically created, with these +credentials: +.RS 2 +.IP \[bu] 2 +Username: \f[V]Quickemu\f[R] +.IP \[bu] 2 +Password: \f[V]quickemu\f[R] +.RE .SS Regional versions .PP By default \f[V]quickget\f[R] will download the \f[I]\[lq]English diff --git a/docs/quickget.1.md b/docs/quickget.1.md index 04c163c..20cef24 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -263,6 +263,10 @@ quickemu --vm windows-11.conf - Complete the installation as you normally would. - All relevant drivers and services should be installed automatically. +- A local adminstrator user account is automatically created, with + these credentials: + - Username: `Quickemu` + - Password: `quickemu` ### Regional versions From 54908fa3dac8b50fd2923b0e2d6fa62e434eb769 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 1 Aug 2022 11:21:47 +0100 Subject: [PATCH 051/189] Bump the version to 4.0 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index debefd1..d39426a 100755 --- a/quickemu +++ b/quickemu @@ -1454,7 +1454,7 @@ EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="3.16" +readonly VERSION="4.0" # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) From 600ada52aee063c3b40bd8513bd178e444594de7 Mon Sep 17 00:00:00 2001 From: Mikael Bak <mikabak@protonmail.com> Date: Thu, 18 Aug 2022 10:44:09 +0200 Subject: [PATCH 052/189] Add reactos (#423) * Add initial support for ReactOS * Move code block to be able to override default cdrom settings --- quickemu | 51 ++++++++++++++++++++++++++++++++++++--------------- quickget | 29 +++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 15 deletions(-) diff --git a/quickemu b/quickemu index d39426a..c5e6f3c 100755 --- a/quickemu +++ b/quickemu @@ -509,6 +509,14 @@ function vm_boot() { MACHINE_TYPE="pc" NET_DEVICE="rtl8139" ;; + reactos) + CPU="-cpu qemu32,kvm=on" + if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then + CPU="${CPU},topoext" + fi + MACHINE_TYPE="pc" + NET_DEVICE="e1000" + ;; macos) #https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/ # A CPU with SSE4.1 support is required for >= macOS Sierra @@ -1003,6 +1011,27 @@ function vm_boot() { -drive if=pflash,format=raw,unit=1,file="${EFI_VARS}") fi + 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}") + iso="" + elif [ -n "${iso}" ] && [ "${guest_os}" == "reactos" ]; then + # shellcheck disable=SC2054 + # https://reactos.org/wiki/QEMU + args+=(-boot order=d + -drive if=ide,index=2,media=cdrom,file="${iso}") + iso="" + elif [ -n "${iso}" ] && [ "${guest_os}" == "windows" ] && [ -e "${VMDIR}/unattended.iso" ]; then + # Attach the unattended configuration to Windows guests when booting from ISO + # shellcheck disable=SC2054 + args+=(-drive media=cdrom,index=2,file="${VMDIR}/unattended.iso") + fi + if [ -n "${floppy}" ]; then # shellcheck disable=SC2054 args+=(-drive if=floppy,format=raw,file="${floppy}") @@ -1018,21 +1047,6 @@ function vm_boot() { args+=(-drive media=cdrom,index=1,file="${fixed_iso}") fi - 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}") - iso="" - elif [ -n "${iso}" ] && [ "${guest_os}" == "windows" ] && [ -e "${VMDIR}/unattended.iso" ]; then - # Attach the unattended configuration to Windows guests when booting from ISO - # shellcheck disable=SC2054 - args+=(-drive media=cdrom,index=2,file="${VMDIR}/unattended.iso") - fi - if [ "${guest_os}" == "macos" ]; then # shellcheck disable=SC2054 args+=(-device ahci,id=ahci @@ -1053,12 +1067,19 @@ function vm_boot() { 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}) + elif [ "${guest_os}" == "batocera" ] ; then # shellcheck disable=SC2054,SC2206 args+=(-device virtio-blk-pci,drive=BootDisk -drive id=BootDisk,if=none,format=raw,file="${img}" -device virtio-blk-pci,drive=SystemDisk -drive id=SystemDisk,if=none,format=qcow2,file="${disk_img}" ${STATUS_QUO}) + + elif [ "${guest_os}" == "reactos" ]; then + # shellcheck disable=SC2054,SC2206 + # https://reactos.org/wiki/QEMU + args+=(-drive if=ide,index=0,media=disk,file="${disk_img}") + else # shellcheck disable=SC2054,SC2206 args+=(-device virtio-blk-pci,drive=SystemDisk diff --git a/quickget b/quickget index de7eecf..dfbd61e 100755 --- a/quickget +++ b/quickget @@ -57,6 +57,7 @@ function pretty_name() { opensuse) PRETTY_NAME="openSUSE";; oraclelinux) PRETTY_NAME="Oracle Linux";; popos) PRETTY_NAME="Pop!_OS";; + reactos) PRETTY_NAME="ReactOS";; regolith) PRETTY_NAME="Regolith Linux";; rockylinux) PRETTY_NAME="Rocky Linux";; ubuntu-budgie) PRETTY_NAME="Ubuntu Budgie";; @@ -196,6 +197,7 @@ function os_support() { opensuse \ oraclelinux \ popos \ + reactos \ regolith \ rockylinux \ slackware \ @@ -437,6 +439,10 @@ function editions_popos() { echo intel nvidia } +function releases_reactos() { + echo latest +} + function releases_regolith() { echo focal impish } @@ -719,6 +725,9 @@ function make_vm_config() { openbsd) GUEST="openbsd" IMAGE_TYPE="iso";; + reactos) + GUEST="reactos" + IMAGE_TYPE="iso";; windows) GUEST="windows" IMAGE_TYPE="iso";; @@ -765,6 +774,11 @@ EOF echo "disk_size=\"2G\"" >> "${CONF_FILE}" echo "ram=\"128M\"" >> "${CONF_FILE}" ;; + reactos) + echo "boot=\"legacy\"" >> "${CONF_FILE}" + echo "disk_size=\"12G\"" >> "${CONF_FILE}" + echo "ram=\"2048M\"" >> "${CONF_FILE}" + ;; macos) echo "macos_release=\"${RELEASE}\"" >> "${CONF_FILE}";; esac @@ -1307,6 +1321,16 @@ function get_popos() { echo "${URL} ${HASH}" } +function get_reactos() { + local HASH="" + local URL="" + local TMPURL="" + + TMPURL=$(wget -q -S -O- --max-redirect=0 "https://sourceforge.net/projects/reactos/files/latest/download" 2>&1 | grep Location | cut -d' ' -f4) + URL=${TMPURL%\?*} + echo "${URL} ${HASH}" +} + function get_regolith() { local EDITION="${1:-}" local HASH="" @@ -1843,6 +1867,11 @@ create_vm() { ISO="${ISO/.gz/}" fi + if [ ${OS} == "reactos" ] && [[ $ISO =~ ".zip" ]]; then + unzip ${VM_PATH}/${ISO} -d ${VM_PATH} + ISO=$(ls ${VM_PATH} | grep -i '.iso' | grep -v '.zip') + fi + make_vm_config "${ISO}" } From 1b1bd84e6a06f7d98861cf425e4895f69b0ffede Mon Sep 17 00:00:00 2001 From: Graham Ashton <graham@effectif.com> Date: Mon, 1 Aug 2022 11:24:35 +0100 Subject: [PATCH 053/189] Add script to retrieve Windows product keys --- windowskey | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 windowskey diff --git a/windowskey b/windowskey new file mode 100755 index 0000000..c6a02af --- /dev/null +++ b/windowskey @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 + + +import html.parser +import os +import sys +import urllib.request + + +""" +Download Windows product keys from MicroSoft +""" + +key_page_url = "https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys" + + +def usage(): + script = os.path.basename(sys.argv[0]) + message = f"""Usage: {script} [windows-version] + +To specify the version of Windows you'd like, pass a string that matches the +name of the operating system you'd like to download. Case doesn't matter, so +you can use "windows 10" or "Windows 10". + +e.g. + + {script} "Windows 10" + {script} "enterprise" + +""" + print(message, file=sys.stderr) + sys.exit(0) + + +def download_page(url): + response = urllib.request.urlopen(url) + return response.read().decode("utf-8") + + +class WindowsKeyPageParser(html.parser.HTMLParser): + def __init__(self, *, convert_charrefs=True): + super().__init__(convert_charrefs=True) + self.product_keys = {} + self.parsing_os = False + + def handle_starttag(self, tag, attrs): + self.parsing_os = tag == "td" + + def handle_endtag(self, tag): + self.parsing_os = False + + def handle_data(self, data): + if self.parsing_os: + self.stash_table_cell(data) + + def stash_table_cell(self, data): + if "Windows" in data: + self.current_os = data + else: + product_key = data + self.product_keys[self.current_os] = product_key + + +def find_keys_for_all_versions(markup): + parser = WindowsKeyPageParser() + parser.feed(markup) + return parser.product_keys + + +if __name__ == "__main__": + try: + arg = sys.argv[1] + except IndexError: + windows_version = "" + else: + if arg in ["-h", "--help"]: + usage() + windows_version = arg + + markup = download_page(key_page_url) + product_keys = find_keys_for_all_versions(markup) + + for os_name, product_key in product_keys.items(): + if windows_version.lower() in os_name.lower(): + print(f"{os_name}: {product_key}") From 8e8c65eac6d0c4421165b2315df587503d44c31b Mon Sep 17 00:00:00 2001 From: 3nprob <74199244+3nprob@users.noreply.github.com> Date: Thu, 18 Aug 2022 08:45:10 +0000 Subject: [PATCH 054/189] Allow overriding some VM arguments via env vars (#519) * allow overriding MACHINE_TYPE,MAC_DISK_DEV,NET_DEVICE,SMM via env vars * allow overriding EFI_CODE,EFI_EXTRA_VARS --- quickemu | 124 +++++++++++++++++++++++++------------------------------ 1 file changed, 57 insertions(+), 67 deletions(-) diff --git a/quickemu b/quickemu index c5e6f3c..1d86dcc 100755 --- a/quickemu +++ b/quickemu @@ -212,7 +212,7 @@ function vm_boot() { local DISK_USED="" local DISPLAY_DEVICE="" local DISPLAY_RENDER="" - local EFI_CODE="" + local EFI_CODE="${EFI_CODE}" local EFI_VARS="" local GUEST_CPU_CORES="" local GUEST_CPU_LOGICAL_CORES="" @@ -226,13 +226,13 @@ function vm_boot() { local KERNEL_NODE="" local KERNEL_VER="?" local LSB_DESCRIPTION="Unknown OS" - local MACHINE_TYPE="q35" + local MACHINE_TYPE="${MACHINE_TYPE:-q35}" local MAC_BOOTLOADER="" local MAC_MISSING="" - local MAC_DISK_DEV="ide-hd,bus=ahci.2" - local NET_DEVICE="virtio-net" + local MAC_DISK_DEV="${MAC_DISK_DEV:-ide-hd,bus=ahci.2}" + local NET_DEVICE="${NET_DEVICE:-virtio-net}" local OSK="" - local SMM="off" + local SMM="${SMM:-off}" local USB_HOST_PASSTHROUGH_CONTROLLER="qemu-xhci" local VIDEO="" @@ -379,69 +379,59 @@ function vm_boot() { # does not support SMM. # 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 - 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 - 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/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.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/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}" - # Solus new place to hide - elif [ -e "/usr/share/edk2-ovmf/x64/OVMF_CODE.secboot.fd" ]; then - EFI_CODE="/usr/share/edk2-ovmf/x64/OVMF_CODE.secboot.fd" - efi_vars "/usr/share/edk2-ovmf/x64/OVMF_VARS.fd" "${EFI_VARS}" - else - echo "ERROR! SecureBoot was requested but no SecureBoot capable firmware was found." - echo " Please install OVMF firmware." - exit 1 + if [ ! -z "${EFI_CODE}" ] || [ ! -e "${EFI_CODE}" ]; then + case ${secureboot} in + on) + ovmfs=("/usr/share/OVMF/OVMF_CODE_4M.secboot.fd","/usr/share/OVMF/OVMF_VARS_4M.fd" \ + "/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd","/usr/share/edk2/ovmf/OVMF_VARS.fd" \ + "/usr/share/OVMF/x64/OVMF_CODE.secboot.fd","/usr/share/OVMF/x64/OVMF_VARS.fd" \ + "/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd","/usr/share/edk2-ovmf/OVMF_VARS.fd" \ + "/usr/share/qemu/ovmf-x86_64-smm-ms-code.bin","/usr/share/qemu/ovmf-x86_64-smm-ms-vars.bin" \ + "/usr/share/qemu/edk2-x86_64-secure-code.fd","/usr/share/qemu/edk2-x86_64-code.fd" \ + "/usr/share/edk2-ovmf/x64/OVMF_CODE.secboot.fd","/usr/share/edk2-ovmf/x64/OVMF_VARS.fd" + ) + ;; + *) + ovmfs=("/usr/share/OVMF/OVMF_CODE_4M.fd","/usr/share/OVMF/OVMF_VARS_4M.fd" \ + "/usr/share/edk2/ovmf/OVMF_CODE.fd","/usr/share/edk2/ovmf/OVMF_VARS.fd" \ + "/usr/share/OVMF/OVMF_CODE.fd","/usr/share/OVMF/OVMF_VARS.fd" \ + "/usr/share/OVMF/x64/OVMF_CODE.fd","/usr/share/OVMF/x64/OVMF_VARS.fd" \ + "/usr/share/edk2-ovmf/OVMF_CODE.fd","/usr/share/edk2-ovmf/OVMF_VARS.fd" \ + "/usr/share/qemu/ovmf-x86_64-4m-code.bin","/usr/share/qemu/ovmf-x86_64-4m-vars.bin" \ + "/usr/share/qemu/edk2-x86_64-code.fd","/usr/share/qemu/edk2-x86_64-code.fd" \ + "/usr/share/edk2-ovmf/x64/OVMF_CODE.fd","/usr/share/edk2-ovmf/x64/OVMF_VARS.fd" + ) + ;; + esac + # Attempt each EFI_CODE file one by one, selecting the corresponding code and vars + # when an existing file is found. + _IFS=$IFS + IFS="," + for f in "${ovmfs[@]}"; do + set -- $f; + if [ -e "${1}" ]; then + EFI_CODE="${1}" + EFI_EXTRA_VARS="${2}" fi - ;; - *) - if [ -e "/usr/share/OVMF/OVMF_CODE_4M.fd" ]; then - EFI_CODE="/usr/share/OVMF/OVMF_CODE_4M.fd" - efi_vars "/usr/share/OVMF/OVMF_VARS_4M.fd" "${EFI_VARS}" - 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/OVMF/OVMF_CODE.fd" ]; then - EFI_CODE="/usr/share/OVMF/OVMF_CODE.fd" - efi_vars "/usr/share/OVMF/OVMF_VARS.fd" "${EFI_VARS}" - elif [ -e "/usr/share/OVMF/x64/OVMF_CODE.fd" ]; then - EFI_CODE="/usr/share/OVMF/x64/OVMF_CODE.fd" - efi_vars "/usr/share/OVMF/x64/OVMF_VARS.fd" "${EFI_VARS}" - 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}" - # Solus - elif [ -e "/usr/share/edk2-ovmf/x64/OVMF_CODE.fd" ]; then - EFI_CODE="/usr/share/edk2-ovmf/x64/OVMF_CODE.fd" - efi_vars "/usr/share/edk2-ovmf/x64/OVMF_VARS.fd" "${EFI_VARS}" - else - echo "ERROR! EFI boot requested but no EFI firmware found." - echo " Please install OVMF firmware." - exit 1 - fi - ;; - esac + done + IFS=$_IFS + fi + if [ -z "${EFI_CODE}" ] || [ ! -e "${EFI_CODE}" ]; then + if [ "$secureboot" == "on" ]; then + echo "ERROR! SecureBoot was requested but no SecureBoot capable firmware was found." + else + echo "ERROR! EFI boot requested but no EFI firmware found." + fi + echo " Please install OVMF firmware." + exit 1 + fi + if [ ! -z "${EFI_EXTRA_VARS}" ]; then + if [ ! -e "${EFI_EXTRA_VARS}" ]; then + echo " - EFI: ERROR! EFI_EXTRA_VARS file ${EFI_EXTRA_VARS} does not exist." + exit 1 + fi + efi_vars "${EFI_EXTRA_VARS}" "${EFI_VARS}" + fi # Make sure EFI_VARS references an actual, writeable, file if [ ! -f "${EFI_VARS}" ] || [ ! -w "${EFI_VARS}" ]; then From e19a2ce837f5bfe567c9a84c45d98fb48416c4c8 Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Tue, 2 Aug 2022 22:18:06 +0100 Subject: [PATCH 055/189] Remove duplicate option (usb_controller) the default for `usb_controller` is set twice in `quickemu` script. Remove the second `usb_controller` default setting. --- quickemu | 2 -- 1 file changed, 2 deletions(-) diff --git a/quickemu b/quickemu index 1d86dcc..0a41287 100755 --- a/quickemu +++ b/quickemu @@ -1422,8 +1422,6 @@ keyboard="usb" keyboard_layout="en-us" # options: ps2, usb, tablet, virtio mouse="tablet" -# options: ehci, xhci -usb_controller="ehci" BRAILLE="" DELETE_DISK=0 From 573b2566cba64617c14a98b3e580af3120ce2069 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philclifford@users.noreply.github.com> Date: Thu, 18 Aug 2022 09:47:59 +0100 Subject: [PATCH 056/189] Add super-size for some Zorin options (#522) test the EDITION for those that need a large disk Co-authored-by: Martin Wimpress <304639+flexiondotorg@users.noreply.github.com> --- quickget | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/quickget b/quickget index dfbd61e..6488b58 100755 --- a/quickget +++ b/quickget @@ -774,6 +774,12 @@ EOF echo "disk_size=\"2G\"" >> "${CONF_FILE}" echo "ram=\"128M\"" >> "${CONF_FILE}" ;; + zorin) + case ${EDITION} in + education64|edulite64) + echo "disk_size=\"32G\"" >> "${CONF_FILE}";; + esac + ;; reactos) echo "boot=\"legacy\"" >> "${CONF_FILE}" echo "disk_size=\"12G\"" >> "${CONF_FILE}" From 6474505dc2dc41444498bc31afc13bf360c825eb Mon Sep 17 00:00:00 2001 From: Deihim Poornader <deihim007@gmail.com> Date: Sun, 7 Aug 2022 11:40:23 +0430 Subject: [PATCH 057/189] Update quickemu Limit spice to localhost, preventing potential unauthorized access. --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 0a41287..e552997 100755 --- a/quickemu +++ b/quickemu @@ -833,7 +833,7 @@ function vm_boot() { echo -n " --spice-shared-dir ${PUBLIC}" fi echo "${FULLSPICY}" - SPICE="${SPICE},port=${SPICE_PORT}" + SPICE="${SPICE},port=${SPICE_PORT},addr=127.0.0.1" fi if [ -n "${PUBLIC}" ]; then From 309057f9848548d70a9e7b66d6f576f3d3f70ca9 Mon Sep 17 00:00:00 2001 From: Deihim Poornader <deihim007@gmail.com> Date: Sun, 7 Aug 2022 11:49:07 +0430 Subject: [PATCH 058/189] Add udp port forward Add udp port forward, which can be useful for windows rdp udp acceleration. --- quickemu | 1 + 1 file changed, 1 insertion(+) diff --git a/quickemu b/quickemu index e552997..fc02ea2 100755 --- a/quickemu +++ b/quickemu @@ -808,6 +808,7 @@ function vm_boot() { GUEST_PORT=$(echo "${FORWARD}" | cut -d':' -f2) echo " - ${HOST_PORT} => ${GUEST_PORT}" NET="${NET},hostfwd=tcp::${HOST_PORT}-:${GUEST_PORT}" + NET="${NET},hostfwd=udp::${HOST_PORT}-:${GUEST_PORT}" done fi From 1522e4b1a4cd93b16125e2ff3c3c59562bed82b4 Mon Sep 17 00:00:00 2001 From: Jake Halaska <26490690+5Dev24@users.noreply.github.com> Date: Sun, 7 Aug 2022 06:11:56 -0500 Subject: [PATCH 059/189] Force IPv4 on android mirror --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index 6488b58..1b75636 100755 --- a/quickget +++ b/quickget @@ -845,8 +845,8 @@ function get_android() { ISO=$(echo "${JSON_REL}" | jq -r .n) HASH=$(echo "${JSON_REL}" | jq -r .hash.sha256) # Traverse the directories to find the .iso location - for DIR in $(wget -q -O- "${URL}" | grep -o -E '[0-9]{5}' | sort -ur); do - if wget -q -O- "${URL}/${DIR}" | grep "${ISO}" &>/dev/null; then + for DIR in $(wget -4 -q -O- "${URL}" | grep -o -E '[0-9]{5}' | sort -ur); do + if wget -4 -q -O- "${URL}/${DIR}" | grep "${ISO}" &>/dev/null; then URL="${URL}/${DIR}" break fi From 0a7a38b915594b747f431646b5752d0657bd7652 Mon Sep 17 00:00:00 2001 From: interorbital <106621171+interorbital@users.noreply.github.com> Date: Sun, 7 Aug 2022 12:15:56 +0300 Subject: [PATCH 060/189] added linuxmint 21 to quickget --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 1b75636..dbe8f08 100755 --- a/quickget +++ b/quickget @@ -367,7 +367,7 @@ function releases_kolibrios() { } function releases_linuxmint(){ - echo 20.2 20.3 + echo 20.2 20.3 21 } function editions_linuxmint(){ From 477d35dad7d66e8ec57f5f6f9d0882a44596c149 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Thu, 11 Aug 2022 02:27:54 +0100 Subject: [PATCH 061/189] try to support jammy daily testing --- quickget | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/quickget b/quickget index dbe8f08..adfdd04 100755 --- a/quickget +++ b/quickget @@ -491,6 +491,7 @@ function releases_ubuntu() { ;; esac echo ${LTS_SUPPORT} \ + jammy-daily \ daily-live \ daily-canary \ eol-4.10 \ @@ -1410,6 +1411,10 @@ function get_ubuntu() { if [[ "${RELEASE}" == "eol-"* ]]; then URL="https://old-releases.ubuntu.com/releases/${RELEASE/eol-/}" + elif [[ "${RELEASE}" == "jammy-daily" ]]; then + URL="https://cdimage.ubuntu.com/${OS}/jammy/daily-live/current" + VM_PATH="${OS}-jammy-live" + elif [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then URL="https://cdimage.ubuntu.com/${OS}/${RELEASE}/current" VM_PATH="${OS}-daily-live" From 94ee99a48e172c7c6b420af178f2e505dfcd8a69 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 18 Aug 2022 10:48:16 +0100 Subject: [PATCH 062/189] Add notes to work around MacOS App Store logins #474 This work around may work in some situations. --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 4ff12b4..3125723 100644 --- a/README.md +++ b/README.md @@ -389,6 +389,22 @@ There are some considerations when running macOS via Quickemu. webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). - Copy/paste via SPICE agent is **not available on macOS**. +### macOS App Store + +If you see *"Your device or computer could not be verified"* when you try to +login to the App Store, make sure that your wired ethernet device is `en0`. Use +`ifconfig` in a terminal to verify this. + +If the wired ethernet device is not `en0`, then then go to *System Preferences* -> *Network*, +delete all the network devices and apply the changes. Next, open a terminal and +run the following: + +```bash +sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist +``` + +Now reboot, and the App Store should work. + ## Windows 8.1, 10 & 11 Guests `quickget` can automatically download Windows 8.1, [Windows From 10c35369a1855ed9b28a105cd72f73c8e6a94eb6 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 18 Aug 2022 10:50:29 +0100 Subject: [PATCH 063/189] Don't pass-through the CPU for macOS guest on Intel CPU hosts. Close #502 --- quickemu | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/quickemu b/quickemu index fc02ea2..46b143e 100755 --- a/quickemu +++ b/quickemu @@ -511,14 +511,9 @@ function vm_boot() { #https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/ # A CPU with SSE4.1 support is required for >= macOS Sierra if check_cpu_flag sse4_1; then - case ${HOST_CPU_VENDOR} in - GenuineIntel) - CPU="-cpu host,kvm=on,vendor=GenuineIntel,+hypervisor,+invtsc,+kvm_pv_eoi,+kvm_pv_unhalt";; - AuthenticAMD|*) - # Used in past versions: +movbe,+smep,+xgetbv1,+xsavec,+avx2 - # Warn on AMD: +fma4,+pcid - CPU="-cpu Penryn,kvm=on,vendor=GenuineIntel,+aes,+avx,+bmi1,+bmi2,+fma,+hypervisor,+invtsc,+kvm_pv_eoi,+kvm_pv_unhalt,+popcnt,+ssse3,+sse4.2,vmware-cpuid-freq=on,+xsave,+xsaveopt,check";; - esac + # Used in past versions: +movbe,+smep,+xgetbv1,+xsavec,+avx2 + # Warn on AMD: +fma4,+pcid + CPU="-cpu Penryn,kvm=on,vendor=GenuineIntel,+aes,+avx,+bmi1,+bmi2,+fma,+hypervisor,+invtsc,+kvm_pv_eoi,+kvm_pv_unhalt,+popcnt,+ssse3,+sse4.2,vmware-cpuid-freq=on,+xsave,+xsaveopt,check" else echo "ERROR! macOS requires a CPU with SSE 4.1 support." exit 1 From 275f057cdd5e3040ba4c6878b1d7742e66bbd395 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 18 Aug 2022 12:55:47 +0100 Subject: [PATCH 064/189] Limit macOS Monterey to 2 CPU cores. Close #438 Post-install the cpu_cores=2 can be removed from the virtual machine configuration file. --- quickget | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/quickget b/quickget index adfdd04..4b93db3 100755 --- a/quickget +++ b/quickget @@ -786,7 +786,13 @@ EOF echo "disk_size=\"12G\"" >> "${CONF_FILE}" echo "ram=\"2048M\"" >> "${CONF_FILE}" ;; - macos) echo "macos_release=\"${RELEASE}\"" >> "${CONF_FILE}";; + macos) + echo "macos_release=\"${RELEASE}\"" >> "${CONF_FILE}" + # https://github.com/quickemu-project/quickemu/issues/438 + if [ "${RELEASE}" == "monterey" ]; then + echo "cpu_cores=2" >> "${CONF_FILE}" + fi + ;; esac # Enable TPM for Windows 11 From fd105ab8f565056864011a8d5c316a0ca61cf982 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 18 Aug 2022 12:57:24 +0100 Subject: [PATCH 065/189] White space clean up --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 46b143e..a4f7145 100755 --- a/quickemu +++ b/quickemu @@ -173,7 +173,7 @@ function enable_usb_passthrough() { done if [ "${USB_NOT_READY}" -eq 1 ]; then - echo " ERROR! USB permission changes are required 👆" + echo " ERROR! USB permission changes are required 👆" exit 1 fi fi From 74e72404b4119e37d9434a023e42c23e1977e701 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 18 Aug 2022 16:02:35 +0100 Subject: [PATCH 066/189] Automatically press any key when booting Windows install. Close #231 --- quickemu | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/quickemu b/quickemu index a4f7145..d29f7aa 100755 --- a/quickemu +++ b/quickemu @@ -1752,8 +1752,13 @@ if [ ${SHORTCUT} -eq 1 ]; then exit fi -if [ $VM_UP -eq 0 ]; then +if [ ${VM_UP} -eq 0 ]; then vm_boot + # If the VM being started is an uninstalled Windows VM then auto-skip the press-any key prompt. + if [ -n "${iso}" ] && [ "${guest_os}" == "windows" ]; then + sleep 3.5 + monitor_send_cmd "sendkey ret" + fi start_viewer else parse_ports_from_file From 3f05e41e1358bf5978818a557ee2fbf18f58fca2 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 18 Aug 2022 16:02:59 +0100 Subject: [PATCH 067/189] Clean up status messages --- quickemu | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/quickemu b/quickemu index d29f7aa..7735830 100755 --- a/quickemu +++ b/quickemu @@ -1196,7 +1196,6 @@ function vm_boot() { function start_viewer { errno=0 if [ "${VIEWER}" != "none" ]; then - echo "---" # If output is 'none' then SPICE was requested. if [ "${OUTPUT}" == "spice" ]; then @@ -1204,11 +1203,11 @@ function start_viewer { # show via viewer: remote-viewer if [ -n "${PUBLIC}" ]; then - echo " - Start viewer: ${VIEWER} --title \"${VMNAME}\" --spice-shared-dir \"${PUBLIC}\" ${FULLSPICY} \"spice://localhost:${SPICE_PORT}\" >/dev/null 2>&1 &" + echo " - Viewer: ${VIEWER} --title \"${VMNAME}\" --spice-shared-dir \"${PUBLIC}\" ${FULLSPICY} \"spice://localhost:${SPICE_PORT}\" >/dev/null 2>&1 &" ${VIEWER} --title "${VMNAME}" --spice-shared-dir "${PUBLIC}" ${FULLSPICY} "spice://localhost:${SPICE_PORT}" >/dev/null 2>&1 & errno=$? else - echo " - Start viewer: ${VIEWER} --title \"${VMNAME}\" ${FULLSPICY} \"spice://localhost:${SPICE_PORT}\" >/dev/null 2>&1 &" + echo " - Viewer: ${VIEWER} --title \"${VMNAME}\" ${FULLSPICY} \"spice://localhost:${SPICE_PORT}\" >/dev/null 2>&1 &" ${VIEWER} --title "${VMNAME}" ${FULLSPICY} "spice://localhost:${SPICE_PORT}" >/dev/null 2>&1 & errno=$? fi @@ -1217,11 +1216,11 @@ function start_viewer { # show via viewer: spicy if [ -n "${PUBLIC}" ]; then - echo " - Start viewer: ${VIEWER} --title \"${VMNAME}\" --port \"${SPICE_PORT}\" --spice-shared-dir \"${PUBLIC}\" \"${FULLSPICY}\" >/dev/null 2>&1 &" + echo " - Viewer: ${VIEWER} --title \"${VMNAME}\" --port \"${SPICE_PORT}\" --spice-shared-dir \"${PUBLIC}\" \"${FULLSPICY}\" >/dev/null 2>&1 &" ${VIEWER} --title "${VMNAME}" --port "${SPICE_PORT}" --spice-shared-dir "${PUBLIC}" "${FULLSPICY}" >/dev/null 2>&1 & errno=$? else - echo " - Start viewer: ${VIEWER} --title \"${VMNAME}\" --port \"${SPICE_PORT}\" \"${FULLSPICY}\" >/dev/null 2>&1 &" + echo " - Viewer: ${VIEWER} --title \"${VMNAME}\" --port \"${SPICE_PORT}\" \"${FULLSPICY}\" >/dev/null 2>&1 &" ${VIEWER} --title "${VMNAME}" --port "${SPICE_PORT}" "${FULLSPICY}" >/dev/null 2>&1 & errno=$? fi @@ -1360,14 +1359,13 @@ function monitor_send_cmd { return fi - case "${monitor_channel}" in socket) - echo -e " - MON-SEND: ${MSG}" + echo -e " - Sending: ${MSG}" echo -e "${MSG}" | socat -,shut-down unix-connect:"${VM_MONITOR_SOCKETPATH}" 2>&1 > /dev/null ;; telnet) - echo -e " - MON-SEND: ${MSG}" + echo -e " - Sending: ${MSG}" echo -e "${MSG}" | socat - tcp:"${MONITOR_TELNET_HOST}":"${MONITOR_TELNET_PORT}" 2>&1 > /dev/null ;; *) From 13abd0c5a7a302e7606864caf4db72cff53eb1ca Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 18 Aug 2022 17:51:31 +0100 Subject: [PATCH 068/189] Move MSR warning to an appropriate section of the status messages --- quickemu | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/quickemu b/quickemu index 7735830..98fab07 100755 --- a/quickemu +++ b/quickemu @@ -336,6 +336,11 @@ function vm_boot() { boot=${boot,,} guest_os=${guest_os,,} + if [ "${guest_os}" == "macos" ] || [ "${guest_os}" == "windows" ]; then + # Display MSRs alert if the guest is macOS or windows + ignore_msrs_alert + fi + # Always Boot macOS using EFI if [ "${guest_os}" == "macos" ]; then boot="efi" @@ -636,11 +641,6 @@ function vm_boot() { img="" fi - if [ "${guest_os}" == "macos" ] || [ "${guest_os}" == "windows" ]; then - # Display MSRs alert if the guest is macOS or windows - ignore_msrs_alert - fi - # Has the status quo been requested? if [ "${STATUS_QUO}" == "-snapshot" ]; then if [ -z "${img}" ] && [ -z "${iso}" ]; then From d8417a6abefa9d9ed6e6284f7365899af8276ac5 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 18 Aug 2022 17:51:55 +0100 Subject: [PATCH 069/189] Make shellcheck happy --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 98fab07..2606407 100755 --- a/quickemu +++ b/quickemu @@ -384,7 +384,7 @@ function vm_boot() { # does not support SMM. # https://bugzilla.redhat.com/show_bug.cgi?id=1929357#c5 - if [ ! -z "${EFI_CODE}" ] || [ ! -e "${EFI_CODE}" ]; then + if [ -n "${EFI_CODE}" ] || [ ! -e "${EFI_CODE}" ]; then case ${secureboot} in on) ovmfs=("/usr/share/OVMF/OVMF_CODE_4M.secboot.fd","/usr/share/OVMF/OVMF_VARS_4M.fd" \ From c147560731ec81b8f213d9498670e57232e8e3c6 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:16:54 +0100 Subject: [PATCH 070/189] Refactor guest tweak for Batocera, KolobriOS, ReactOS, Haiku & FreeDOS --- quickemu | 32 ++++++++++---------------------- quickget | 8 ++++++-- 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/quickemu b/quickemu index 2606407..c4eb32a 100755 --- a/quickemu +++ b/quickemu @@ -464,7 +464,7 @@ function vm_boot() { # Make any OS specific adjustments case ${guest_os} in - *bsd|haiku|freedos|linux) + batocera|*bsd|freedos|haiku|linux) CPU="-cpu host,kvm=on" if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then CPU="${CPU},topoext" @@ -472,7 +472,7 @@ function vm_boot() { if [ "${guest_os}" == "freebsd" ] || [ "${guest_os}" == "ghostbsd" ]; then MOUSE="usb" - elif [ "${guest_os}" == "haiku" ] || [ "${guest_os}" == "freedos" ]; then + elif [ "${guest_os}" == "batocera" ] || [ "${guest_os}" == "freedos" ] || [ "${guest_os}" == "haiku" ]; then MACHINE_TYPE="pc" NET_DEVICE="rtl8139" fi @@ -482,35 +482,23 @@ function vm_boot() { SMM="on" fi - if [ -z "${disk_size}" ]; then disk_size="16G" fi ;; - batocera) - CPU="-cpu host,kvm=on" - if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then - CPU="${CPU},topoext" - fi - MACHINE_TYPE="pc" - NET_DEVICE="rtl8139" - disk_size="8G" - ;; - kolibrios) + kolibrios|reactos) CPU="-cpu qemu32,kvm=on" if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then CPU="${CPU},topoext" fi MACHINE_TYPE="pc" - NET_DEVICE="rtl8139" - ;; - reactos) - CPU="-cpu qemu32,kvm=on" - if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then - CPU="${CPU},topoext" - fi - MACHINE_TYPE="pc" - NET_DEVICE="e1000" + case ${guest_os} in + kolibrios) NET_DEVICE="rtl8139";; + reactos) + NET_DEVICE="e1000" + KEYBOARD="ps2" + ;; + esac ;; macos) #https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/ diff --git a/quickget b/quickget index 4b93db3..0dd1d7d 100755 --- a/quickget +++ b/quickget @@ -759,8 +759,12 @@ EOF # OS specific tweaks case ${OS} in - alma|centos-stream|oraclelinux|rockylinux) echo "disk_size=\"32G\"" >> "${CONF_FILE}";; - dragonflybsd|haiku|openbsd|netbsd|slackware|tails) echo "boot=\"legacy\"" >> "${CONF_FILE}";; + alma|centos-stream|oraclelinux|rockylinux) + echo "disk_size=\"32G\"" >> "${CONF_FILE}";; + batocera) + echo "disk_size=\"8G\"" >> "${CONF_FILE}";; + dragonflybsd|haiku|openbsd|netbsd|slackware|tails) + echo "boot=\"legacy\"" >> "${CONF_FILE}";; deepin) echo "disk_size=\"64G\"" >> "${CONF_FILE}" echo "ram=\"4G\"" >> "${CONF_FILE}" From 02e0a9e55a04b51aa950701eb3d5e0ae31ba13ae Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:17:58 +0100 Subject: [PATCH 071/189] Document how to enable audio in macOS guests. Close #337 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3125723..11cb154 100644 --- a/README.md +++ b/README.md @@ -382,8 +382,8 @@ There are some considerations when running macOS via Quickemu. - UHCI (USB 2.0) on macOS Catalina and earlier. - XHCI (USB 3.0) on macOS Big Sur and newer. - Display resolution can only be changed via macOS System Preferences. -- Full Duplex audio works on macOS High Sierra, Mojave and Catalina. - - **macOS Big Sur and Monterey have no audio at all**. +- **Full Duplex audio requires [VoodooHDA OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB audio-device to the macOS guest VM**. + - NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and [System Integrity Protection (SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) need to be disabled to install VoodooHDA OC - File sharing between guest and host is available via [virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). From 2071816ede19fd51109f20d99d2fff7481f85d90 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:20:06 +0100 Subject: [PATCH 072/189] Add initial support for macOS Ventura --- quickemu | 31 ++++++++++++++++++++++--------- quickget | 2 ++ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/quickemu b/quickemu index c4eb32a..0d6e6d2 100755 --- a/quickemu +++ b/quickemu @@ -503,14 +503,27 @@ function vm_boot() { macos) #https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/ # A CPU with SSE4.1 support is required for >= macOS Sierra - if check_cpu_flag sse4_1; then - # Used in past versions: +movbe,+smep,+xgetbv1,+xsavec,+avx2 - # Warn on AMD: +fma4,+pcid - CPU="-cpu Penryn,kvm=on,vendor=GenuineIntel,+aes,+avx,+bmi1,+bmi2,+fma,+hypervisor,+invtsc,+kvm_pv_eoi,+kvm_pv_unhalt,+popcnt,+ssse3,+sse4.2,vmware-cpuid-freq=on,+xsave,+xsaveopt,check" - else - echo "ERROR! macOS requires a CPU with SSE 4.1 support." - exit 1 - fi + # A CPU with AVX2 support is required for >= macOS Ventura + case ${macos_release} in + ventura) + if check_cpu_flag sse4_1 && check_cpu_flag avx2; then + CPU="-cpu Haswell,kvm=on,vendor=GenuineIntel,+hypervisor,+invtsc,+kvm_pv_eoi,+kvm_pv_unhalt" + else + echo "ERROR! macOS ${macos_release} requires a CPU with SSE 4.1 and AVX2 support." + exit 1 + fi + ;; + *) + if check_cpu_flag sse4_1; then + # Used in past versions: +movbe,+smep,+xgetbv1,+xsavec,+avx2 + # Warn on AMD: +fma4,+pcid + CPU="-cpu Penryn,kvm=on,vendor=GenuineIntel,+aes,+avx,+bmi1,+bmi2,+fma,+hypervisor,+invtsc,+kvm_pv_eoi,+kvm_pv_unhalt,+popcnt,+ssse3,+sse4.2,vmware-cpuid-freq=on,+xsave,+xsaveopt,check" + else + echo "ERROR! macOS ${macos_release} requires a CPU with SSE 4.1 support." + exit 1 + fi + ;; + esac OSK=$(echo "bheuneqjbexolgurfrjbeqfthneqrqcyrnfrqbagfgrny(p)NccyrPbzchgreVap" | tr 'A-Za-z' 'N-ZA-Mn-za-m') # Disable S3 support in the VM to prevent macOS suspending during install @@ -529,7 +542,7 @@ function vm_boot() { NET_DEVICE="vmxnet3" USB_HOST_PASSTHROUGH_CONTROLLER="usb-ehci" ;; - big-sur|monterey) + big-sur|monterey|ventura) BALLOON="-device virtio-balloon" MAC_DISK_DEV="virtio-blk-pci" NET_DEVICE="virtio-net" diff --git a/quickget b/quickget index 0dd1d7d..ea21f06 100755 --- a/quickget +++ b/quickget @@ -1164,6 +1164,7 @@ function get_macos() { local CWD="" local MACRECOVERY="" local MLB="" + local OS_TYPE="default" case ${RELEASE} in high-sierra) @@ -1214,6 +1215,7 @@ function get_macos() { ${MACRECOVERY} \ --board-id "${BOARD_ID}" \ --mlb "${MLB}" \ + --os-type "${OS_TYPE}" \ --basename RecoveryImage \ --outdir "${VM_PATH}" \ download From 9b5a6a44acf2690952008cd5225d1911d5ae3b25 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:33:50 +0100 Subject: [PATCH 073/189] Ensure only one scanout is present. Ref #222 Run QEMU with '-vga none' to avoid having two scanouts, one for VGA and another for virtio-vga-gl. - Workaround for a GTK assertion failure in gtk_widget_get_realized(). - Allows seamless mouse in macOS when using the qxl-vga device. - Enables sane default resolutions in all support macOS versions. --- quickemu | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/quickemu b/quickemu index 0d6e6d2..7030280 100755 --- a/quickemu +++ b/quickemu @@ -234,6 +234,7 @@ function vm_boot() { local OSK="" local SMM="${SMM:-off}" local USB_HOST_PASSTHROUGH_CONTROLLER="qemu-xhci" + local VGA="" local VIDEO="" KERNEL_NAME=$(uname --kernel-name) @@ -707,12 +708,9 @@ function vm_boot() { *) DISPLAY_DEVICE="virtio-vga";; esac elif [ "${guest_os}" == "macos" ]; then - # Displays in System Preferences can be used to select a resolution if: - # - Mojave only offers 4:3 resolutions - # - High Sierra will run at the default 1920x1080 only. - # QXL prevents seamless mouse working with a SPICE client - # - https://github.com/wimpysworld/quickemu/issues/222 - DISPLAY_DEVICE="VGA" + # qxl-vga supports seamless mouse and sane resolutions if only one scanout + # is used. Which is whay '-vga none' is added to the QEMU command line. + DISPLAY_DEVICE="qxl-vga" elif [ "${guest_os}" == "windows" ]; then DISPLAY_DEVICE="qxl-vga" else @@ -775,8 +773,15 @@ function vm_boot() { VIDEO="${VIDEO},max_outputs=${max_outputs}" fi + # Run QEMU with '-vga none' to avoid having two scanouts, one for VGA and + # another for virtio-vga-gl. This works around a GTK assertion failure and + # allows seamless mouse in macOS when using the qxl-vga device. + # https://www.collabora.com/news-and-blog/blog/2021/11/26/venus-on-qemu-enabling-new-virtual-vulkan-driver/ + # https://github.com/quickemu-project/quickemu/issues/222 + VGA="-vga none" + # Add fullscreen options - VIDEO="${VIDEO} ${FULLSCREEN}" + VIDEO="${VGA} ${VIDEO} ${FULLSCREEN}" # Set the hostname of the VM local NET="user,hostname=${VMNAME}" From d0a59e161df730e4f395e616d88b879ca9677277 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:35:08 +0100 Subject: [PATCH 074/189] Configure audio device to best match the display --- quickemu | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/quickemu b/quickemu index 7030280..b99aa90 100755 --- a/quickemu +++ b/quickemu @@ -662,8 +662,9 @@ function vm_boot() { # Setup the appropriate audio device based on the display output case ${OUTPUT} in - spice|spice-app|none) AUDIO_DEV="spice,id=audio0";; - *) AUDIO_DEV="pa,id=audio0,out.mixing-engine=off,out.stream-name=${LAUNCHER}-${VMNAME},in.stream-name=${LAUNCHER}-${VMNAME}";; + none|spice|spice-app) AUDIO_DEV="spice,id=audio0";; + sdl) AUDIO_DEV="sdl,id=audio0";; + *) AUDIO_DEV="pa,id=audio0";; esac # Determine a sane resolution for Linux guests. From d94f0403c2e9912ca533964c2a5c5ed22c6c7b60 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:39:13 +0100 Subject: [PATCH 075/189] Consolidate macOS BOARD_IDs and MLBs --- quickget | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/quickget b/quickget index ea21f06..d1cb7d5 100755 --- a/quickget +++ b/quickget @@ -1163,7 +1163,7 @@ function get_macos() { local BOARD_ID="" local CWD="" local MACRECOVERY="" - local MLB="" + local MLB="00000000000000000" local OS_TYPE="default" case ${RELEASE} in @@ -1174,11 +1174,10 @@ function get_macos() { BOARD_ID="Mac-7BA5B2DFE22DDD8C" MLB="00000000000KXPG00";; catalina) - BOARD_ID="Mac-CFF7D910A743CAAF" + BOARD_ID="Mac-C3EC7CD22292981F" MLB="00000000000PHCD00";; big-sur) - BOARD_ID="Mac-35C1E88140C3E6CF" - MLB="00000000000000000";; + BOARD_ID="Mac-3CBD00234E554E41";; monterey) BOARD_ID="Mac-06F11F11946D27C5" MLB="00000000000000000";; From 55384b70b76efd37c970652b4279854db3c46133 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:40:22 +0100 Subject: [PATCH 076/189] White space and comments --- quickemu | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/quickemu b/quickemu index b99aa90..f0b1e8c 100755 --- a/quickemu +++ b/quickemu @@ -928,7 +928,6 @@ function vm_boot() { -device ccid-card-passthru,chardev=ccid ) - # setup usb-controller [ -z "${USB_CONTROLLER}" ] && USB_CONTROLLER="$usb_controller" if [ "${USB_CONTROLLER}" == "ehci" ]; then @@ -1014,8 +1013,8 @@ function vm_boot() { args+=(-drive media=cdrom,index=2,file="${iso}") iso="" elif [ -n "${iso}" ] && [ "${guest_os}" == "reactos" ]; then - # shellcheck disable=SC2054 # https://reactos.org/wiki/QEMU + # shellcheck disable=SC2054 args+=(-boot order=d -drive if=ide,index=2,media=cdrom,file="${iso}") iso="" @@ -1069,8 +1068,8 @@ function vm_boot() { -drive id=SystemDisk,if=none,format=qcow2,file="${disk_img}" ${STATUS_QUO}) elif [ "${guest_os}" == "reactos" ]; then - # shellcheck disable=SC2054,SC2206 # https://reactos.org/wiki/QEMU + # shellcheck disable=SC2054,SC2206 args+=(-drive if=ide,index=0,media=disk,file="${disk_img}") else From 92f3466d08378d2e1447a1d8ba1174c440d7d967 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:40:57 +0100 Subject: [PATCH 077/189] Make shellcheck happy --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index f0b1e8c..238a0d9 100755 --- a/quickemu +++ b/quickemu @@ -789,7 +789,7 @@ function vm_boot() { echo -n "" > "${VMDIR}/${VMNAME}.ports" - if [ -z "$SSH_PORT" ]; then + if [ -z "${SSH_PORT}" ]; then # Find a free port to expose ssh to the guest SSH_PORT=$(get_port 22220 9) fi From c22d0355b927296bc43be26299f94d184e446c29 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:42:58 +0100 Subject: [PATCH 078/189] Refactor Display: status message --- quickemu | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/quickemu b/quickemu index 238a0d9..f6c5270 100755 --- a/quickemu +++ b/quickemu @@ -718,8 +718,6 @@ function vm_boot() { DISPLAY_DEVICE="qxl-vga" fi - echo -n " - Display: ${OUTPUT^^}, ${DISPLAY_DEVICE}" - # Map Quickemu OUTPUT to QEMU -display case ${OUTPUT} in gtk) @@ -749,9 +747,9 @@ function vm_boot() { else DISPLAY_DEVICE="${DISPLAY_DEVICE},virgl=on" fi - echo ", GL (${gl}), VirGL (on)" + echo " - Display: ${OUTPUT^^}, ${DISPLAY_DEVICE}, GL (${gl}), VirGL (on)" else - echo ", GL (${gl}), VirGL (off)" + echo " - Display: ${OUTPUT^^}, ${DISPLAY_DEVICE}, GL (${gl}), VirGL (off)" fi # Build the video configuration From b6dbfcbc3534b71a7cd578298261631c05796d1f Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:48:26 +0100 Subject: [PATCH 079/189] Optimise GPU acceleration for Linux guests --- quickemu | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/quickemu b/quickemu index f6c5270..3092ebb 100755 --- a/quickemu +++ b/quickemu @@ -705,8 +705,10 @@ function vm_boot() { # https://www.kraxel.org/blog/2019/09/display-devices-in-qemu/ if [ "${guest_os}" == "linux" ]; then case ${OUTPUT} in - none|spice) DISPLAY_DEVICE="qxl-vga";; - *) DISPLAY_DEVICE="virtio-vga";; + none|spice|spice-app) + DISPLAY_DEVICE="virtio-gpu";; + *) + DISPLAY_DEVICE="virtio-vga";; esac elif [ "${guest_os}" == "macos" ]; then # qxl-vga supports seamless mouse and sane resolutions if only one scanout @@ -741,7 +743,8 @@ function vm_boot() { DISPLAY_RENDER="${OUTPUT},gl=${gl}";; esac - if [ "${gl}" == "on" ] && [[ "${DISPLAY_DEVICE}" == *"virtio"* ]]; then + # https://www.kraxel.org/blog/2021/05/virtio-gpu-qemu-graphics-update/ + if [ "${gl}" == "on" ] && [ "${DISPLAY_DEVICE}" == "virtio-vga" ]; then if [ "${QEMU_VER_SHORT}" -ge 61 ]; then DISPLAY_DEVICE="${DISPLAY_DEVICE}-gl" else From eba2d52ba026fa2e69f904cd27e223bdcc4b3de2 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:49:08 +0100 Subject: [PATCH 080/189] Optimise GPU acceleration for Windows guests --- quickemu | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 3092ebb..7a259be 100755 --- a/quickemu +++ b/quickemu @@ -715,7 +715,12 @@ function vm_boot() { # is used. Which is whay '-vga none' is added to the QEMU command line. DISPLAY_DEVICE="qxl-vga" elif [ "${guest_os}" == "windows" ]; then - DISPLAY_DEVICE="qxl-vga" + case ${OUTPUT} in + # virtio-gpu "works" with gtk but is limited to 1024x1024 and exhibits other issues. + # https://kevinlocke.name/bits/2021/12/10/windows-11-guest-virtio-libvirt/#video + gtk|none|spice) DISPLAY_DEVICE="qxl-vga";; + sdl|spice-app) DISPLAY_DEVICE="virtio-vga";; + esac else DISPLAY_DEVICE="qxl-vga" fi From 1b151955b0bc467452445c5b9acf528fb3c359bd Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:49:59 +0100 Subject: [PATCH 081/189] Refactor DISPLAY_RENDERER configuration --- quickemu | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/quickemu b/quickemu index 7a259be..4a4a9bd 100755 --- a/quickemu +++ b/quickemu @@ -727,25 +727,11 @@ function vm_boot() { # Map Quickemu OUTPUT to QEMU -display case ${OUTPUT} in - gtk) - DISPLAY_RENDER="${OUTPUT},grab-on-hover=on,zoom-to-fit=off" - # GL is not working with GTK and virtio-vga - if [ "${DISPLAY_DEVICE}" == "virtio-vga" ]; then - gl="off" - fi - ;; - none|spice) - DISPLAY_RENDER="none";; - # spice-app has a bug where using spice-app,gl=off seems to enable gl, but - # if the gl param is omitted it works fine. - spice-app) - DISPLAY_RENDER="${OUTPUT}" - if [[ "${gl}" == "on" ]]; then - DISPLAY_RENDER+=",gl=on" - fi - ;; - *) - DISPLAY_RENDER="${OUTPUT},gl=${gl}";; + gtk) DISPLAY_RENDER="${OUTPUT},grab-on-hover=on,zoom-to-fit=off,gl=${gl}";; + none|spice) DISPLAY_RENDER="none";; + sdl) DISPLAY_RENDER="${OUTPUT},gl=${gl}";; + spice-app) DISPLAY_RENDER="${OUTPUT},gl=${gl}";; + *) DISPLAY_RENDER="${OUTPUT}";; esac # https://www.kraxel.org/blog/2021/05/virtio-gpu-qemu-graphics-update/ From 0ee102dc4badeb02046495cdd44a6b6f298cd4a5 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 17:56:39 +0100 Subject: [PATCH 082/189] Do not enable SPICE when GTK or SDL are the selected display. Fixes #466 QEMU 7.0 introduces a change/regression where it is not possible to use GL accerlation via GTK/SDL displays and also bring up SPICE: https://gitlab.com/qemu-project/qemu/-/issues/1036 This patch prevents Quickemu from bringing up SPICE when GTK or SDK are selected as the display. --- quickemu | 97 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 56 insertions(+), 41 deletions(-) diff --git a/quickemu b/quickemu index 4a4a9bd..cc2ab7e 100755 --- a/quickemu +++ b/quickemu @@ -806,42 +806,52 @@ function vm_boot() { done fi - local SPICE="disable-ticketing=on" - if [ -z "${SPICE_PORT}" ]; then - # Find a free port for spice - SPICE_PORT=$(get_port 5930 9) + if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice" ] || [ "${OUTPUT}" == "spice-app" ]; then + local SPICE="disable-ticketing=on" + # gl=on can be use with 'spice' too, but only over local connections (not tcp ports) + if [ "${OUTPUT}" == "spice-app" ]; then + SPICE+=",gl=${gl}" + fi + + # TODO: Don't use ports so local-only connections can be used with gl=on + if [ -z "${SPICE_PORT}" ]; then + # Find a free port for spice + SPICE_PORT=$(get_port 5930 9) + fi + + if [ -z "${SPICE_PORT}" ]; then + echo " - SPICE: All SPICE ports have been exhausted." + if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice" ] || [ "${OUTPUT}" == "spice-app" ]; then + echo " ERROR! Requested SPICE display, but no SPICE ports are free." + exit 1 + fi + else + if [ "${OUTPUT}" == "spice-app" ]; then + echo " - SPICE: Enabled" + else + echo "spice,${SPICE_PORT}" >> "${VMDIR}/${VMNAME}.ports" + echo -n " - SPICE: On host: spicy --title \"${VMNAME}\" --port ${SPICE_PORT}" + if [ "${guest_os}" != "macos" ] && [ -n "${PUBLIC}" ]; then + echo -n " --spice-shared-dir ${PUBLIC}" + fi + echo "${FULLSPICY}" + SPICE="${SPICE},port=${SPICE_PORT},addr=127.0.0.1" + fi + fi fi - if [ -z "${SPICE_PORT}" ]; then - echo " - SPICE: All SPICE ports have been exhausted." - if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice" ] || [ "${OUTPUT}" == "spice-app" ]; then - echo " ERROR! Requested SPICE display, but no SPICE ports are free." - exit 1 - fi - else - if [ "${OUTPUT}" == "spice-app" ]; then - echo " - SPICE: Enabled" - else - echo "spice,${SPICE_PORT}" >> "${VMDIR}/${VMNAME}.ports" - echo -n " - SPICE: On host: spicy --title \"${VMNAME}\" --port ${SPICE_PORT}" - if [ "${guest_os}" != "macos" ] && [ -n "${PUBLIC}" ]; then - echo -n " --spice-shared-dir ${PUBLIC}" - fi - echo "${FULLSPICY}" - SPICE="${SPICE},port=${SPICE_PORT},addr=127.0.0.1" - fi - - if [ -n "${PUBLIC}" ]; then - case ${guest_os} in - macos) + if [ -n "${PUBLIC}" ]; then + case ${guest_os} in + macos) + if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice" ] || [ "${OUTPUT}" == "spice-app" ]; then # Reference: https://gitlab.gnome.org/GNOME/phodav/-/issues/5 echo " - WebDAV: On guest: build spice-webdavd (https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24)" echo " - WebDAV: On guest: Finder -> Connect to Server -> http://localhost:9843/" - ;; - *) - echo " - WebDAV: On guest: dav://localhost:9843/";; - esac - fi + fi + ;; + *) + echo " - WebDAV: On guest: dav://localhost:9843/";; + esac fi if [ "${guest_os}" != "windows" ] && [ -n "${PUBLIC}" ]; then @@ -896,16 +906,21 @@ function vm_boot() { ${VIDEO} -display ${DISPLAY_RENDER} -audiodev ${AUDIO_DEV} -device intel-hda -device hda-duplex,audiodev=audio0 - -rtc base=localtime,clock=host,driftfix=slew - -spice ${SPICE} - -device virtio-serial-pci - -chardev socket,id=agent0,path="${VMDIR}/${VMNAME}-agent.sock",server=on,wait=off - -device virtserialport,chardev=agent0,name=org.qemu.guest_agent.0 - -chardev spicevmc,id=vdagent0,name=vdagent - -device virtserialport,chardev=vdagent0,name=com.redhat.spice.0 - -chardev spiceport,id=webdav0,name=org.spice-space.webdav.0 - -device virtserialport,chardev=webdav0,name=org.spice-space.webdav.0 - -device virtio-rng-pci,rng=rng0 + -rtc base=localtime,clock=host,driftfix=slew) + + # Only enable SPICE is using SPICE display + if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice" ] || [ "${OUTPUT}" == "spice-app" ]; then + args+=(-spice ${SPICE} + -device virtio-serial-pci + -chardev socket,id=agent0,path="${VMDIR}/${VMNAME}-agent.sock",server=on,wait=off + -device virtserialport,chardev=agent0,name=org.qemu.guest_agent.0 + -chardev spicevmc,id=vdagent0,name=vdagent + -device virtserialport,chardev=vdagent0,name=com.redhat.spice.0 + -chardev spiceport,id=webdav0,name=org.spice-space.webdav.0 + -device virtserialport,chardev=webdav0,name=org.spice-space.webdav.0) + fi + + args+=(-device virtio-rng-pci,rng=rng0 -object rng-random,id=rng0,filename=/dev/urandom -device ${USB_HOST_PASSTHROUGH_CONTROLLER},id=spicepass -chardev spicevmc,id=usbredirchardev1,name=usbredir From c1c9aacaa8875f16ce232c0c25d4b6a0093db866 Mon Sep 17 00:00:00 2001 From: Robin Edser <75099866+fossrob@users.noreply.github.com> Date: Fri, 19 Aug 2022 07:14:22 +0100 Subject: [PATCH 083/189] Small README Typo in first example Very subtle but important typo. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 11cb154..0542395 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ way to do it for you. For example: ``` bash quickget ubuntu-mate 22.04 -quickemu --vm ubuntu-mate-22.04-.conf +quickemu --vm ubuntu-mate-22.04.conf ``` The original objective of the project was to enable quick testing of From ae57996d54f61024bd9f1ec53ec718d5d53f8a3f Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 18:47:38 +0100 Subject: [PATCH 084/189] Configure network via VM configuration file. Fixes #478 #418 --- README.md | 20 +++++++++++++++++++- quickemu | 21 ++++++++++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0542395..b3c7254 100644 --- a/README.md +++ b/README.md @@ -603,12 +603,30 @@ In the example above: - Port 8123 on the host is forwarded to port 8123 on the guest. - Port 8888 on the host is forwarded to port 80 on the guest. +# Disable networking + +To completely disable all network interfaces in a guest VM add this additional +line to your virtual machine configuration: + +- `network="none"` + +# Restricted networking + +You can isolate the guest from the host (and broader network) using the restrict +option, which will restrict networking to just the guest and any virtual devices. + +This can be used to prevent software running inside the guest from phoning home +while still providing a network inside the guest. Add this additional line to +your virtual machine configuration: + +- `network="restrict"` + # Bridged networking Connect your virtual machine to a preconfigured network bridge. Add an additional line to your virtual machine configuration -- `bridge="br0"` +- `network="br0"` # USB redirection diff --git a/quickemu b/quickemu index cc2ab7e..aa91577 100755 --- a/quickemu +++ b/quickemu @@ -992,11 +992,26 @@ function vm_boot() { echo "WARNING! Unknown mouse value: '${MOUSE}; Fallback to ps2'" fi + # $bridge backwards compatibility for Quickemu <= 4.0 if [ -n "${bridge}" ]; then - # Enable bridge mode networking + network="${bridge}" + fi + + if [ "${network}" == "none" ]; then + # Disbale all networking + echo " - Network: Disabled" + args+=(-nic none) + elif [ "${network}" == "restrict" ]; then + echo " - Network: Restricted (${NET_DEVICE})" # shellcheck disable=SC2054,SC2206 - args+=(-nic bridge,br=${bridge},model=virtio-net-pci) + args+=(-device ${NET_DEVICE},netdev=nic -netdev ${NET},restrict=y,id=nic) + elif [ -n "${network}" ]; then + # Enable bridge mode networking + echo " - Network: Bridged (${network})" + # shellcheck disable=SC2054,SC2206 + args+=(-nic bridge,br=${network},model=virtio-net-pci) else + echo " - Network: User (${NET_DEVICE})" # shellcheck disable=SC2054,SC2206 args+=(-device ${NET_DEVICE},netdev=nic -netdev ${NET},id=nic) fi @@ -1394,7 +1409,6 @@ function monitor_send_cmd { # Lowercase variables are used in the VM config file only boot="efi" -bridge="" cpu_cores="" disk_img="" disk_size="" @@ -1405,6 +1419,7 @@ guest_os="linux" img="" iso="" macos_release="" +network="" port_forwards=() preallocation="off" ram="" From d669c4ca2ab8b3da552d72f073b0d2580c9945c1 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Tue, 22 Feb 2022 01:51:34 +0000 Subject: [PATCH 085/189] parent ef4ca6b6768c0ae4bc19055b7c59f23816510be3 author Phil Clifford <philip.clifford@gmail.com> 1645494694 +0000 committer Phil Clifford <philip.clifford@gmail.com> 1645926095 +0000 rebasing upstream while trying to keep up --- README.md | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b3c7254..b7899c1 100644 --- a/README.md +++ b/README.md @@ -31,17 +31,13 @@ Windows**. - **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 @@ -67,8 +63,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) @@ -272,7 +267,7 @@ with your preferred flavour. - `popos` (Pop!\_OS) - `regolith` (Regolith Linux) - `rockylinux` (Rocky Linux) -- `slackware` (Slackware) +- `slackware` (Slackware Linux) - `solus` (Solus) - `tails` (Tails) - `void` (Void Linux) From 8bb24f69c0f795d41fe46f6e31ddde692aa1d4f5 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 19 Aug 2022 20:10:21 +0100 Subject: [PATCH 086/189] Updated for commits direct to README --- README.md | 125 ++++++++++++++++++++++------------------ build-docs | 2 +- docs/quickemu.1 | 43 +++++++++++--- docs/quickemu.1.md | 37 +++++++++--- docs/quickemu_conf.1 | 23 +++++++- docs/quickemu_conf.1.md | 23 +++++++- docs/quickget.1 | 37 ++++++++++-- docs/quickget.1.md | 28 ++++++++- 8 files changed, 228 insertions(+), 90 deletions(-) diff --git a/README.md b/README.md index b7899c1..798b281 100644 --- a/README.md +++ b/README.md @@ -31,13 +31,17 @@ Windows**. - **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 @@ -63,7 +67,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) @@ -265,9 +270,10 @@ with your preferred flavour. - `opensuse` (openSUSE) - `oraclelinux` (Oracle Linux) - `popos` (Pop!\_OS) +- `reactos` (ReactOS) - `regolith` (Regolith Linux) - `rockylinux` (Rocky Linux) -- `slackware` (Slackware Linux) +- `slackware` (Slackware) - `solus` (Solus) - `tails` (Tails) - `void` (Void Linux) @@ -377,8 +383,13 @@ There are some considerations when running macOS via Quickemu. - UHCI (USB 2.0) on macOS Catalina and earlier. - XHCI (USB 3.0) on macOS Big Sur and newer. - Display resolution can only be changed via macOS System Preferences. -- **Full Duplex audio requires [VoodooHDA OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB audio-device to the macOS guest VM**. - - NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and [System Integrity Protection (SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) need to be disabled to install VoodooHDA OC +- **Full Duplex audio requires [VoodooHDA + OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB + audio-device to the macOS guest VM**. +- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and + [System Integrity Protection + (SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) + need to be disabled to install VoodooHDA OC - File sharing between guest and host is available via [virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). @@ -386,15 +397,15 @@ There are some considerations when running macOS via Quickemu. ### macOS App Store -If you see *"Your device or computer could not be verified"* when you try to -login to the App Store, make sure that your wired ethernet device is `en0`. Use -`ifconfig` in a terminal to verify this. +If you see *"Your device or computer could not be verified"* when you +try to login to the App Store, make sure that your wired ethernet device +is `en0`. Use `ifconfig` in a terminal to verify this. -If the wired ethernet device is not `en0`, then then go to *System Preferences* -> *Network*, -delete all the network devices and apply the changes. Next, open a terminal and -run the following: +If the wired ethernet device is not `en0`, then then go to *System +Preferences* -\> *Network*, delete all the network devices and apply the +changes. Next, open a terminal and run the following: -```bash +``` bash sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist ``` @@ -600,19 +611,20 @@ In the example above: # Disable networking -To completely disable all network interfaces in a guest VM add this additional -line to your virtual machine configuration: +To completely disable all network interfaces in a guest VM add this +additional line to your virtual machine configuration: - `network="none"` # Restricted networking -You can isolate the guest from the host (and broader network) using the restrict -option, which will restrict networking to just the guest and any virtual devices. +You can isolate the guest from the host (and broader network) using the +restrict option, which will restrict networking to just the guest and +any virtual devices. -This can be used to prevent software running inside the guest from phoning home -while still providing a network inside the guest. Add this additional line to -your virtual machine configuration: +This can be used to prevent software running inside the guest from +phoning home while still providing a network inside the guest. Add this +additional line to your virtual machine configuration: - `network="restrict"` @@ -680,46 +692,45 @@ import cog # cannot use check_result() because of non-zero return result=subprocess.run(["./quickemu", "--help"], capture_output=True, text=True) help=result.stdout -cog.out(f"```\n\n{help}\n\n```\n\n") +cog.out(f"\n```\n{help}\n```\n") ]]] --> + ``` +Usage + quickemu --vm ubuntu.conf - Usage - quickemu --vm ubuntu.conf - - You can also pass optional parameters - --braille : Enable braille support. Requires SDL. - --delete-disk : Delete the disk image and EFI variables - --delete-vm : Delete the entire VM and it's configuration - --display : Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or 'spice-app' - --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) - --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers - --screen <screen> : Use specified screen to determine the window size. - --shortcut : Create a desktop shortcut - --snapshot apply <tag> : Apply/restore a snapshot. - --snapshot create <tag> : Create a snapshot. - --snapshot delete <tag> : Delete a snapshot. - --snapshot info : Show disk/snapshot info. - --status-quo : Do not commit any changes to disk/snapshot. - --viewer <viewer> : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none' - --ssh-port <port> : Set ssh-port manually - --spice-port <port> : Set spice-port manually - --public-dir <path> : expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '<directory>', 'none' - --monitor <type> : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none' - --monitor-telnet-host <ip/host> : Set telnet host for monitor. (default: 'localhost') - --monitor-telnet-port <port> : Set telnet port for monitor. (default: '4440') - --monitor-cmd <cmd> : Send command to monitor if available. (Example: system_powerdown) - --serial <type> : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none' - --serial-telnet-host <ip/host> : Set telnet host for serial. (default: 'localhost') - --serial-telnet-port <port> : Set telnet port for serial. (default: '6660') - --keyboard <type> : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio' - --keyboard_layout <layout> : Set keyboard layout. - --mouse <type> : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio' - --usb-controller <type> : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none' - --extra_args <arguments> : Pass additional arguments to qemu - --version : Print version - +You can also pass optional parameters + --braille : Enable braille support. Requires SDL. + --delete-disk : Delete the disk image and EFI variables + --delete-vm : Delete the entire VM and it's configuration + --display : Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or 'spice-app' + --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) + --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers + --screen <screen> : Use specified screen to determine the window size. + --shortcut : Create a desktop shortcut + --snapshot apply <tag> : Apply/restore a snapshot. + --snapshot create <tag> : Create a snapshot. + --snapshot delete <tag> : Delete a snapshot. + --snapshot info : Show disk/snapshot info. + --status-quo : Do not commit any changes to disk/snapshot. + --viewer <viewer> : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none' + --ssh-port <port> : Set ssh-port manually + --spice-port <port> : Set spice-port manually + --public-dir <path> : expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '<directory>', 'none' + --monitor <type> : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none' + --monitor-telnet-host <ip/host> : Set telnet host for monitor. (default: 'localhost') + --monitor-telnet-port <port> : Set telnet port for monitor. (default: '4440') + --monitor-cmd <cmd> : Send command to monitor if available. (Example: system_powerdown) + --serial <type> : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none' + --serial-telnet-host <ip/host> : Set telnet host for serial. (default: 'localhost') + --serial-telnet-port <port> : Set telnet port for serial. (default: '6660') + --keyboard <type> : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio' + --keyboard_layout <layout> : Set keyboard layout. + --mouse <type> : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio' + --usb-controller <type> : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none' + --extra_args <arguments> : Pass additional arguments to qemu + --version : Print version ``` <!-- [[[end]]] --> diff --git a/build-docs b/build-docs index c881d8e..aa63963 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit c881d8e4862a5810a4793f34626181667fde8f89 +Subproject commit aa63963073cda6f776dbbefc60b784a5425be6a9 diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 98a04c0..8cb668d 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 2.18 +.\" Automatically generated by Pandoc 2.19 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "August 1, 2022" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "August 19, 2022" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -75,8 +75,8 @@ Do not commit any changes to disk/snapshot. Print version .SH EXAMPLES .TP -\f[B]quickemu \[en]vm ubuntu-mate-22.04-.conf\f[R] -Launches the VM specified in the file \f[I]ubuntu-mate-22.04-.conf\f[R] +\f[B]quickemu \[en]vm ubuntu-mate-22.04.conf\f[R] +Launches the VM specified in the file \f[I]ubuntu-mate-22.04.conf\f[R] .SS Introduction .PP Quickly create and run highly optimised desktop virtual machines for @@ -88,7 +88,7 @@ For example: .nf \f[C] quickget ubuntu-mate 22.04 -quickemu --vm ubuntu-mate-22.04-.conf +quickemu --vm ubuntu-mate-22.04.conf \f[R] .fi .PP @@ -400,6 +400,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]popos\f[R] (Pop!_OS) .IP \[bu] 2 +\f[V]reactos\f[R] (ReactOS) +.IP \[bu] 2 \f[V]regolith\f[R] (Regolith Linux) .IP \[bu] 2 \f[V]rockylinux\f[R] (Rocky Linux) @@ -585,17 +587,40 @@ XHCI (USB 3.0) on macOS Big Sur and newer. .IP \[bu] 2 Display resolution can only be changed via macOS System Preferences. .IP \[bu] 2 -Full Duplex audio works on macOS High Sierra, Mojave and Catalina. -.RS 2 +\f[B]Full Duplex audio requires VoodooHDA +OC (https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB +audio-device to the macOS guest VM\f[R]. .IP \[bu] 2 -\f[B]macOS Big Sur and Monterey have no audio at all\f[R]. -.RE +NOTE! +Gatekeeper (https://disable-gatekeeper.github.io/) and System Integrity +Protection +(SIP) (https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) +need to be disabled to install VoodooHDA OC .IP \[bu] 2 File sharing between guest and host is available via virtio-9p (https://wiki.qemu.org/Documentation/9psetup) and SPICE webdavd (https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). .IP \[bu] 2 Copy/paste via SPICE agent is \f[B]not available on macOS\f[R]. +.SS macOS App Store +.PP +If you see \f[I]\[lq]Your device or computer could not be +verified\[rq]\f[R] when you try to login to the App Store, make sure +that your wired ethernet device is \f[V]en0\f[R]. +Use \f[V]ifconfig\f[R] in a terminal to verify this. +.PP +If the wired ethernet device is not \f[V]en0\f[R], then then go to +\f[I]System Preferences\f[R] -> \f[I]Network\f[R], delete all the +network devices and apply the changes. +Next, open a terminal and run the following: +.IP +.nf +\f[C] +sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist +\f[R] +.fi +.PP +Now reboot, and the App Store should work. .SS Windows 8.1, 10 & 11 Guests .PP \f[V]quickget\f[R] can automatically download Windows 8.1, Windows diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 61582a9..04d1ae4 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: August 1, 2022 +date: August 19, 2022 footer: quickemu header: Quickemu User Manual section: 1 @@ -68,8 +68,8 @@ You can also pass optional parameters # EXAMPLES -**quickemu --vm ubuntu-mate-22.04-.conf** -: Launches the VM specified in the file *ubuntu-mate-22.04-.conf* +**quickemu --vm ubuntu-mate-22.04.conf** +: Launches the VM specified in the file *ubuntu-mate-22.04.conf* ## Introduction @@ -80,7 +80,7 @@ way to do it for you. For example: ``` bash quickget ubuntu-mate 22.04 -quickemu --vm ubuntu-mate-22.04-.conf +quickemu --vm ubuntu-mate-22.04.conf ``` The original objective of the project was to enable quick testing of @@ -294,6 +294,7 @@ with your preferred flavour. - `opensuse` (openSUSE) - `oraclelinux` (Oracle Linux) - `popos` (Pop!\_OS) +- `reactos` (ReactOS) - `regolith` (Regolith Linux) - `rockylinux` (Rocky Linux) - `slackware` (Slackware) @@ -406,13 +407,34 @@ There are some considerations when running macOS via Quickemu. - UHCI (USB 2.0) on macOS Catalina and earlier. - XHCI (USB 3.0) on macOS Big Sur and newer. - Display resolution can only be changed via macOS System Preferences. -- Full Duplex audio works on macOS High Sierra, Mojave and Catalina. - - **macOS Big Sur and Monterey have no audio at all**. +- **Full Duplex audio requires [VoodooHDA + OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB + audio-device to the macOS guest VM**. +- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and + [System Integrity Protection + (SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) + need to be disabled to install VoodooHDA OC - File sharing between guest and host is available via [virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). - Copy/paste via SPICE agent is **not available on macOS**. +### macOS App Store + +If you see *"Your device or computer could not be verified"* when you +try to login to the App Store, make sure that your wired ethernet device +is `en0`. Use `ifconfig` in a terminal to verify this. + +If the wired ethernet device is not `en0`, then then go to *System +Preferences* -\> *Network*, delete all the network devices and apply the +changes. Next, open a terminal and run the following: + +``` bash +sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist +``` + +Now reboot, and the App Store should work. + ## Windows 8.1, 10 & 11 Guests `quickget` can automatically download Windows 8.1, [Windows @@ -466,7 +488,6 @@ secureboot="on" Here are the usage instructions: - Usage quickemu --vm ubuntu.conf @@ -502,8 +523,6 @@ Here are the usage instructions: --extra_args <arguments> : Pass additional arguments to qemu --version : Print version - - ## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index d0f9480..63471eb 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 2.18 +.\" Automatically generated by Pandoc 2.19 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "August 1, 2022" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "August 19, 2022" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP @@ -207,12 +207,29 @@ In the example above: Port 8123 on the host is forwarded to port 8123 on the guest. .IP \[bu] 2 Port 8888 on the host is forwarded to port 80 on the guest. +.SH Disable networking +.PP +To completely disable all network interfaces in a guest VM add this +additional line to your virtual machine configuration: +.IP \[bu] 2 +\f[V]network=\[dq]none\[dq]\f[R] +.SH Restricted networking +.PP +You can isolate the guest from the host (and broader network) using the +restrict option, which will restrict networking to just the guest and +any virtual devices. +.PP +This can be used to prevent software running inside the guest from +phoning home while still providing a network inside the guest. +Add this additional line to your virtual machine configuration: +.IP \[bu] 2 +\f[V]network=\[dq]restrict\[dq]\f[R] .SH Bridged networking .PP Connect your virtual machine to a preconfigured network bridge. Add an additional line to your virtual machine configuration .IP \[bu] 2 -\f[V]bridge=\[dq]br0\[dq]\f[R] +\f[V]network=\[dq]br0\[dq]\f[R] .SH USB redirection .PP Quickemu supports USB redirection via SPICE pass-through and host diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index e533f00..84ce1ad 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: August 1, 2022 +date: August 19, 2022 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 @@ -180,12 +180,31 @@ In the example above: - Port 8123 on the host is forwarded to port 8123 on the guest. - Port 8888 on the host is forwarded to port 80 on the guest. +# Disable networking + +To completely disable all network interfaces in a guest VM add this +additional line to your virtual machine configuration: + +- `network="none"` + +# Restricted networking + +You can isolate the guest from the host (and broader network) using the +restrict option, which will restrict networking to just the guest and +any virtual devices. + +This can be used to prevent software running inside the guest from +phoning home while still providing a network inside the guest. Add this +additional line to your virtual machine configuration: + +- `network="restrict"` + # Bridged networking Connect your virtual machine to a preconfigured network bridge. Add an additional line to your virtual machine configuration -- `bridge="br0"` +- `network="br0"` # USB redirection diff --git a/docs/quickget.1 b/docs/quickget.1 index 8d19e83..2e85efe 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 2.18 +.\" Automatically generated by Pandoc 2.19 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "August 1, 2022" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "August 19, 2022" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -184,6 +184,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]popos\f[R] (Pop!_OS) .IP \[bu] 2 +\f[V]reactos\f[R] (ReactOS) +.IP \[bu] 2 \f[V]regolith\f[R] (Regolith Linux) .IP \[bu] 2 \f[V]rockylinux\f[R] (Rocky Linux) @@ -369,17 +371,40 @@ XHCI (USB 3.0) on macOS Big Sur and newer. .IP \[bu] 2 Display resolution can only be changed via macOS System Preferences. .IP \[bu] 2 -Full Duplex audio works on macOS High Sierra, Mojave and Catalina. -.RS 2 +\f[B]Full Duplex audio requires VoodooHDA +OC (https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB +audio-device to the macOS guest VM\f[R]. .IP \[bu] 2 -\f[B]macOS Big Sur and Monterey have no audio at all\f[R]. -.RE +NOTE! +Gatekeeper (https://disable-gatekeeper.github.io/) and System Integrity +Protection +(SIP) (https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) +need to be disabled to install VoodooHDA OC .IP \[bu] 2 File sharing between guest and host is available via virtio-9p (https://wiki.qemu.org/Documentation/9psetup) and SPICE webdavd (https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). .IP \[bu] 2 Copy/paste via SPICE agent is \f[B]not available on macOS\f[R]. +.SS macOS App Store +.PP +If you see \f[I]\[lq]Your device or computer could not be +verified\[rq]\f[R] when you try to login to the App Store, make sure +that your wired ethernet device is \f[V]en0\f[R]. +Use \f[V]ifconfig\f[R] in a terminal to verify this. +.PP +If the wired ethernet device is not \f[V]en0\f[R], then then go to +\f[I]System Preferences\f[R] -> \f[I]Network\f[R], delete all the +network devices and apply the changes. +Next, open a terminal and run the following: +.IP +.nf +\f[C] +sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist +\f[R] +.fi +.PP +Now reboot, and the App Store should work. .SS Windows 8.1, 10 & 11 Guests .PP \f[V]quickget\f[R] can automatically download Windows 8.1, Windows diff --git a/docs/quickget.1.md b/docs/quickget.1.md index 20cef24..ce09197 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: August 1, 2022 +date: August 19, 2022 footer: quickget header: Quickget User Manual section: 1 @@ -127,6 +127,7 @@ with your preferred flavour. - `opensuse` (openSUSE) - `oraclelinux` (Oracle Linux) - `popos` (Pop!\_OS) +- `reactos` (ReactOS) - `regolith` (Regolith Linux) - `rockylinux` (Rocky Linux) - `slackware` (Slackware) @@ -239,13 +240,34 @@ There are some considerations when running macOS via Quickemu. - UHCI (USB 2.0) on macOS Catalina and earlier. - XHCI (USB 3.0) on macOS Big Sur and newer. - Display resolution can only be changed via macOS System Preferences. -- Full Duplex audio works on macOS High Sierra, Mojave and Catalina. - - **macOS Big Sur and Monterey have no audio at all**. +- **Full Duplex audio requires [VoodooHDA + OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB + audio-device to the macOS guest VM**. +- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and + [System Integrity Protection + (SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) + need to be disabled to install VoodooHDA OC - File sharing between guest and host is available via [virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24). - Copy/paste via SPICE agent is **not available on macOS**. +### macOS App Store + +If you see *"Your device or computer could not be verified"* when you +try to login to the App Store, make sure that your wired ethernet device +is `en0`. Use `ifconfig` in a terminal to verify this. + +If the wired ethernet device is not `en0`, then then go to *System +Preferences* -\> *Network*, delete all the network devices and apply the +changes. Next, open a terminal and run the following: + +``` bash +sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist +``` + +Now reboot, and the App Store should work. + ## Windows 8.1, 10 & 11 Guests `quickget` can automatically download Windows 8.1, [Windows From 2e15b1219fc64ecd6256fd9567066712d8deb1e2 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 21:15:36 +0100 Subject: [PATCH 087/189] Allow persist MAC addresses for bridged interfaces. Fixes #287 --- README.md | 10 +++++++++- docs/quickemu_conf.1.md | 14 ++++++++++++-- quickemu | 10 +++++++++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 798b281..b44f342 100644 --- a/README.md +++ b/README.md @@ -631,10 +631,18 @@ additional line to your virtual machine configuration: # Bridged networking Connect your virtual machine to a preconfigured network bridge. Add an -additional line to your virtual machine configuration +additional line to your virtual machine configuration: - `network="br0"` +If you want to have a persistent MAC address for your bridged network interface +in the gust VM you can add `macaddr` to the virtual machine configuration. QEMU +requires that the MAC address is in the range: **52:54:00:AB:00:00 - 52:54:00:AB:FF:FF** + +So you can generate your own MAC addresses with: + +- `macaddr="52:54:00:AB:51:AE"` + # USB redirection Quickemu supports USB redirection via SPICE pass-through and host diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index 84ce1ad..45feee7 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -26,7 +26,6 @@ These are the options and defaults for the \<vm\>.conf file ``` bash # Lowercase variables are used in the VM config file only boot="efi" -bridge="" cpu_cores="" disk_img="" disk_size="" @@ -35,7 +34,9 @@ floppy="" guest_os="linux" img="" iso="" +macaddr="" macos_release="" +network="" port_forwards=() preallocation="off" ram="" @@ -77,6 +78,7 @@ disk_img="windows-11/disk.qcow2" iso="windows-11/Win11_EnglishInternational_x64.iso" fixed_iso="windows-11/virtio-win.iso" tpm="on" +secureboot="on" ``` - `guest_os="windows"` instructs `quickemu` to optimise for Windows. @@ -202,10 +204,18 @@ additional line to your virtual machine configuration: # Bridged networking Connect your virtual machine to a preconfigured network bridge. Add an -additional line to your virtual machine configuration +additional line to your virtual machine configuration: - `network="br0"` +If you want to have a persistent MAC address for your bridged network interface +in the gust VM you can add `macaddr` to the virtual machine configuration. QEMU +requires that the MAC address is in the range: **52:54:00:AB:00:00 - 52:54:00:AB:FF:FF** + +So you can generate your own MAC addresses with: + +- `macaddr="52:54:00:AB:51:AE"` + # USB redirection Quickemu supports USB redirection via SPICE pass-through and host diff --git a/quickemu b/quickemu index aa91577..e096602 100755 --- a/quickemu +++ b/quickemu @@ -1008,8 +1008,15 @@ function vm_boot() { elif [ -n "${network}" ]; then # Enable bridge mode networking echo " - Network: Bridged (${network})" + + # If a persistent MAC address is provided, use it. + local MAC="" + if [ -n "${macaddr}" ]; then + MAC=",mac=${macaddr}" + fi + # shellcheck disable=SC2054,SC2206 - args+=(-nic bridge,br=${network},model=virtio-net-pci) + args+=(-nic bridge,br=${network},model=virtio-net-pci${MAC}) else echo " - Network: User (${NET_DEVICE})" # shellcheck disable=SC2054,SC2206 @@ -1418,6 +1425,7 @@ floppy="" guest_os="linux" img="" iso="" +macaddr="" macos_release="" network="" port_forwards=() From b05208c8920c7c68c9506caa6e30fbf50884b963 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 22:39:43 +0100 Subject: [PATCH 088/189] Catch reconfigured USB devices for pass-through. Close #433 --- quickemu | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/quickemu b/quickemu index e096602..35e98d8 100755 --- a/quickemu +++ b/quickemu @@ -162,7 +162,10 @@ function enable_usb_passthrough() { USB_BUS=$(lsusb -d "${VENDOR_ID}:${PRODUCT_ID}" | cut -d' ' -f2) USB_DEV=$(lsusb -d "${VENDOR_ID}:${PRODUCT_ID}" | cut -d' ' -f4 | cut -d':' -f1) USB_NAME=$(lsusb -d "${VENDOR_ID}:${PRODUCT_ID}" | cut -d' ' -f7-) - if [ -w "/dev/bus/usb/${USB_BUS}/${USB_DEV}" ]; then + if [ -z "${USB_NAME}" ]; then + echo " ! USB device ${VENDOR_ID}:${PRODUCT_ID} not found. Check your configuration" + continue + elif [ -w "/dev/bus/usb/${USB_BUS}/${USB_DEV}" ]; then echo " o ${USB_NAME} on bus ${USB_BUS} device ${USB_DEV} is accessible." else echo " x ${USB_NAME} on bus ${USB_BUS} device ${USB_DEV} needs permission changes:" From b19188c2ddca3553bbb08f254e445e7d3e3c654f Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 23:46:31 +0100 Subject: [PATCH 089/189] Update comment --- quickemu | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/quickemu b/quickemu index 35e98d8..00cc27e 100755 --- a/quickemu +++ b/quickemu @@ -1680,8 +1680,7 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then fi viewer_param_check - # Set the default 3d acceleration. Will be overridden to "off" if - # DISPLAY_DEVICE is determined to be virtio-vga since it doesn't work there. + # Set the default 3D acceleration. if [ -z "${gl}" ]; then gl="on" fi From d1d7920f0a7a7cf1670f9879e0b49dd877cf7060 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 19 Aug 2022 23:46:51 +0100 Subject: [PATCH 090/189] Bump version to 4.1 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 00cc27e..144d8de 100755 --- a/quickemu +++ b/quickemu @@ -1496,7 +1496,7 @@ EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="4.0" +readonly VERSION="4.1" # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) From cc62b5ac78833e204fcb306656b358f42d22edc7 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 19 Aug 2022 22:36:32 +0100 Subject: [PATCH 091/189] Incorporate additional changes into generation --- README.md | 7 ++++--- build-docs | 2 +- docs/quickemu_conf.1 | 16 ++++++++++++++-- docs/quickemu_conf.1.md | 7 ++++--- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index b44f342..10fd614 100644 --- a/README.md +++ b/README.md @@ -635,9 +635,10 @@ additional line to your virtual machine configuration: - `network="br0"` -If you want to have a persistent MAC address for your bridged network interface -in the gust VM you can add `macaddr` to the virtual machine configuration. QEMU -requires that the MAC address is in the range: **52:54:00:AB:00:00 - 52:54:00:AB:FF:FF** +If you want to have a persistent MAC address for your bridged network +interface in the guest VM you can add `macaddr` to the virtual machine +configuration. QEMU requires that the MAC address is in the range: +**52:54:00:AB:00:00 - 52:54:00:AB:FF:FF** So you can generate your own MAC addresses with: diff --git a/build-docs b/build-docs index aa63963..767adf6 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit aa63963073cda6f776dbbefc60b784a5425be6a9 +Subproject commit 767adf6ba0d7c69af481cc3a87c31bd17d484cdd diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index 63471eb..497318d 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -35,7 +35,6 @@ These are the options and defaults for the <vm>.conf file \f[C] # Lowercase variables are used in the VM config file only boot=\[dq]efi\[dq] -bridge=\[dq]\[dq] cpu_cores=\[dq]\[dq] disk_img=\[dq]\[dq] disk_size=\[dq]\[dq] @@ -44,7 +43,9 @@ floppy=\[dq]\[dq] guest_os=\[dq]linux\[dq] img=\[dq]\[dq] iso=\[dq]\[dq] +macaddr=\[dq]\[dq] macos_release=\[dq]\[dq] +network=\[dq]\[dq] port_forwards=() preallocation=\[dq]off\[dq] ram=\[dq]\[dq] @@ -97,6 +98,7 @@ disk_img=\[dq]windows-11/disk.qcow2\[dq] iso=\[dq]windows-11/Win11_EnglishInternational_x64.iso\[dq] fixed_iso=\[dq]windows-11/virtio-win.iso\[dq] tpm=\[dq]on\[dq] +secureboot=\[dq]on\[dq] \f[R] .fi .IP \[bu] 2 @@ -227,9 +229,19 @@ Add this additional line to your virtual machine configuration: .SH Bridged networking .PP Connect your virtual machine to a preconfigured network bridge. -Add an additional line to your virtual machine configuration +Add an additional line to your virtual machine configuration: .IP \[bu] 2 \f[V]network=\[dq]br0\[dq]\f[R] +.PP +If you want to have a persistent MAC address for your bridged network +interface in the guest VM you can add \f[V]macaddr\f[R] to the virtual +machine configuration. +QEMU requires that the MAC address is in the range: +\f[B]52:54:00:AB:00:00 - 52:54:00:AB:FF:FF\f[R] +.PP +So you can generate your own MAC addresses with: +.IP \[bu] 2 +\f[V]macaddr=\[dq]52:54:00:AB:51:AE\[dq]\f[R] .SH USB redirection .PP Quickemu supports USB redirection via SPICE pass-through and host diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index 45feee7..c165ab7 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -208,9 +208,10 @@ additional line to your virtual machine configuration: - `network="br0"` -If you want to have a persistent MAC address for your bridged network interface -in the gust VM you can add `macaddr` to the virtual machine configuration. QEMU -requires that the MAC address is in the range: **52:54:00:AB:00:00 - 52:54:00:AB:FF:FF** +If you want to have a persistent MAC address for your bridged network +interface in the guest VM you can add `macaddr` to the virtual machine +configuration. QEMU requires that the MAC address is in the range: +**52:54:00:AB:00:00 - 52:54:00:AB:FF:FF** So you can generate your own MAC addresses with: From 0185369632bad472b6a208036a3c29d1f4b63533 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Thu, 1 Sep 2022 01:01:49 +0100 Subject: [PATCH 092/189] Removed spurious duplication from documentation Co-authored-by: mk3z <mk3z@users.noreply.github.com> --- README.md | 5 +---- build-docs | 2 +- docs/quickemu.1 | 7 ++----- docs/quickemu.1.md | 6 +----- docs/quickemu_conf.1 | 4 ++-- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 7 ++----- docs/quickget.1.md | 6 +----- 8 files changed, 11 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 10fd614..981e5dd 100644 --- a/README.md +++ b/README.md @@ -231,10 +231,6 @@ with your preferred flavour. `quickget` also supports: -## Other Operating Systems - -`quickget` also supports: - - `alma` (Alma Linux) - `alpine` (Alpine Linux) - `android` (Android x86) @@ -742,6 +738,7 @@ You can also pass optional parameters --version : Print version ``` + <!-- [[[end]]] --> ## Desktop shortcuts diff --git a/build-docs b/build-docs index 767adf6..da4705f 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 767adf6ba0d7c69af481cc3a87c31bd17d484cdd +Subproject commit da4705f350bb95c08dfd7e31627285ffc8019045 diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 8cb668d..19493ed 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 2.19 +.\" Automatically generated by Pandoc 2.19.2 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "August 19, 2022" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "September 1, 2022" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -326,9 +326,6 @@ All the official Ubuntu flavours are supported, just replace .SS Other Operating Systems .PP \f[V]quickget\f[R] also supports: -.SS Other Operating Systems -.PP -\f[V]quickget\f[R] also supports: .IP \[bu] 2 \f[V]alma\f[R] (Alma Linux) .IP \[bu] 2 diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 04d1ae4..3279bed 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: August 19, 2022 +date: September 1, 2022 footer: quickemu header: Quickemu User Manual section: 1 @@ -255,10 +255,6 @@ with your preferred flavour. `quickget` also supports: -## Other Operating Systems - -`quickget` also supports: - - `alma` (Alma Linux) - `alpine` (Alpine Linux) - `android` (Android x86) diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index 497318d..c012bdd 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 2.19 +.\" Automatically generated by Pandoc 2.19.2 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "August 19, 2022" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "September 1, 2022" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index c165ab7..6c52fed 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: August 19, 2022 +date: September 1, 2022 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index 2e85efe..911c807 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 2.19 +.\" Automatically generated by Pandoc 2.19.2 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "August 19, 2022" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "September 1, 2022" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -110,9 +110,6 @@ All the official Ubuntu flavours are supported, just replace .SS Other Operating Systems .PP \f[V]quickget\f[R] also supports: -.SS Other Operating Systems -.PP -\f[V]quickget\f[R] also supports: .IP \[bu] 2 \f[V]alma\f[R] (Alma Linux) .IP \[bu] 2 diff --git a/docs/quickget.1.md b/docs/quickget.1.md index ce09197..a3693f9 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: August 19, 2022 +date: September 1, 2022 footer: quickget header: Quickget User Manual section: 1 @@ -88,10 +88,6 @@ with your preferred flavour. `quickget` also supports: -## Other Operating Systems - -`quickget` also supports: - - `alma` (Alma Linux) - `alpine` (Alpine Linux) - `android` (Android x86) From e03c5e76ba2205bae197aacb2d5ff27698f4868c Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Sun, 11 Sep 2022 11:54:45 +0100 Subject: [PATCH 093/189] debian 11.5 and 10.13 released --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index d1cb7d5..7d4c3c7 100755 --- a/quickget +++ b/quickget @@ -263,7 +263,7 @@ function editions_centos-stream() { } function releases_debian() { - echo 10.11.0 11.2.0 11.3.0 11.4.0 + echo 10.11.0 10.12.0 10.13.0 11.2.0 11.3.0 11.4.0 11.5.0 } function editions_debian() { @@ -939,7 +939,7 @@ function get_debian() { local URL="" case ${RELEASE} in - 11.4.0) URL="https://cdimage.debian.org/debian-cd/${RELEASE}-live/amd64/iso-hybrid";; + 11.5.0) URL="https://cdimage.debian.org/debian-cd/${RELEASE}-live/amd64/iso-hybrid";; *) URL="https://cdimage.debian.org/cdimage/archive/${RELEASE}-live/amd64/iso-hybrid/";; esac From 7641ab5038c930e805f1e333288bdf3177158a6c Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Mon, 12 Sep 2022 02:08:45 +0100 Subject: [PATCH 094/189] MX 21.2 released --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 7d4c3c7..6ebd65d 100755 --- a/quickget +++ b/quickget @@ -382,7 +382,7 @@ function releases_lmde(){ } function releases_mxlinux(){ - echo 21.1 + echo 21.2 } function editions_mxlinux(){ From 0317b5e75d66f2533dbea976eceb4e148c7fae25 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Mon, 12 Sep 2022 02:49:07 +0100 Subject: [PATCH 095/189] devuan chimaera 4.0.2 released --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 6ebd65d..58f1b85 100755 --- a/quickget +++ b/quickget @@ -984,7 +984,7 @@ function get_devuan() { case ${RELEASE} in beowulf) ISO="devuan_${RELEASE}_3.1.1_amd64_desktop-live.iso";; - chimaera) ISO="devuan_${RELEASE}_4.0.0_amd64_desktop-live.iso";; + chimaera) ISO="devuan_${RELEASE}_4.0.2_amd64_desktop-live.iso";; esac HASH=$(wget -q -O- "${URL}/SHASUMS.txt" | grep "${ISO}" | cut -d' ' -f1) echo "${URL}/${ISO} ${HASH}" From 1a238de11341a5ced2315b121111f1061d936c2e Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Mon, 12 Sep 2022 03:21:09 +0100 Subject: [PATCH 096/189] deepin releases 20.6 and 20.7 added --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 58f1b85..9872233 100755 --- a/quickget +++ b/quickget @@ -271,7 +271,7 @@ function editions_debian() { } function releases_deepin() { - echo 20 20.1 20.2 20.2.1 20.2.2 20.2.3 20.2.4 20.3 20.4 20.5 + echo 20 20.1 20.2 20.2.1 20.2.2 20.2.3 20.2.4 20.3 20.4 20.5 20.6 20.7 } function releases_devuan() { From 0ef66eb0e7d8123b3d172398345a58b4ca1c4d6c Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 19 Sep 2022 10:43:14 +0100 Subject: [PATCH 097/189] Add socat to requirements. Close #556 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b44f342..7965db5 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/wat - [usbutils](https://github.com/gregkh/usbutils) - [util-linux](https://github.com/karelzak/util-linux) - [sed](https://www.gnu.org/software/sed/) +- [socat](http://www.dest-unreach.org/socat/) - [spicy](https://gitlab.freedesktop.org/spice/spice-gtk) - [swtpm](https://github.com/stefanberger/swtpm) - [Wget](https://www.gnu.org/software/wget/) From 71b4505e1ef19b7d04f5feb232c34b1d627c6ab1 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 19 Sep 2022 11:01:43 +0100 Subject: [PATCH 098/189] Fix Windows download on IPv6 enabled hosts. Close #537 --- quickget | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/quickget b/quickget index 9872233..0de2341 100755 --- a/quickget +++ b/quickget @@ -1799,7 +1799,7 @@ function get_windows() { esac echo "Getting Windows ${RELEASE} URL..." - WINDOWS_VERSIONS=$(wget -q -O- "https://tb.rg-adguard.net/php/get_version.php?type_id=1" | jq '.versions | sort_by(-(.version_id | tonumber))') + WINDOWS_VERSIONS=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_version.php?type_id=1" | jq '.versions | sort_by(-(.version_id | tonumber))') dbg_windows "${WINDOWS_VERSIONS}" LATEST_WINDOWS_VERSION=$(echo "${WINDOWS_VERSIONS}" | jq -c 'map(select(.name | contains("Windows '"${RELEASE}"'")))['${INDEX}']') dbg_windows "${LATEST_WINDOWS_VERSION}" @@ -1809,20 +1809,20 @@ function get_windows() { dbg_windows "${VERSION_ID}" case ${RELEASE} in - 8) EDITION_ID=$(wget -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows 8.1 Pro + Core").edition_id');; - 10|11) EDITION_ID=$(wget -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows '"${RELEASE}"'").edition_id');; + 8) EDITION_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows 8.1 Pro + Core").edition_id');; + 10|11) EDITION_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows '"${RELEASE}"'").edition_id');; esac dbg_windows "${EDITION_ID}" - LANGUAGE_ID=$(wget -q -O- "https://tb.rg-adguard.net/php/get_language.php?edition_id=${EDITION_ID}&lang=name_${LANG_CODE}" | jq -r '.languages[] | select(.name_'${LANG_CODE}'=="'"${LANG_EDITION}"'").language_id') + LANGUAGE_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_language.php?edition_id=${EDITION_ID}&lang=name_${LANG_CODE}" | jq -r '.languages[] | select(.name_'${LANG_CODE}'=="'"${LANG_EDITION}"'").language_id') dbg_windows "${LANGUAGE_ID}" - ARCH_INFO=$(wget -q -O- "https://tb.rg-adguard.net/php/get_arch.php?language_id=${LANGUAGE_ID}") + ARCH_INFO=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_arch.php?language_id=${LANGUAGE_ID}") dbg_windows "${ARCH_INFO}" FILE_NAME=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).name') dbg_windows "${FILE_NAME}" ARCH_ID=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).arch_id') dbg_windows "${ARCH_ID}" - DOWNLOAD_INFO=$(wget -q -O- "https://tb.rg-adguard.net/dl.php?fileName=${ARCH_ID}&lang=en") + DOWNLOAD_INFO=$(wget -4 -q -O- "https://tb.rg-adguard.net/dl.php?fileName=${ARCH_ID}&lang=en") dbg_windows "${DOWNLOAD_INFO}" DOWNLOAD_SHA1=$(echo "${DOWNLOAD_INFO}" | sed -e 's/<[^>]*>//g' | grep -o -P '(?<=SHA1: ).*(?= expire)' | sed 's/Link//') dbg_windows "${DOWNLOAD_SHA1}" From ddfc8064358945b699158ffd49bc1b2d4effe27f Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 19 Sep 2022 11:21:36 +0100 Subject: [PATCH 099/189] Drop Regolith. Close #551 --- quickget | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/quickget b/quickget index 0de2341..be89aac 100755 --- a/quickget +++ b/quickget @@ -58,7 +58,6 @@ function pretty_name() { oraclelinux) PRETTY_NAME="Oracle Linux";; popos) PRETTY_NAME="Pop!_OS";; reactos) PRETTY_NAME="ReactOS";; - regolith) PRETTY_NAME="Regolith Linux";; rockylinux) PRETTY_NAME="Rocky Linux";; ubuntu-budgie) PRETTY_NAME="Ubuntu Budgie";; ubuntukylin) PRETTY_NAME="Ubuntu Kylin";; @@ -198,7 +197,6 @@ function os_support() { oraclelinux \ popos \ reactos \ - regolith \ rockylinux \ slackware \ solus \ @@ -443,14 +441,6 @@ function releases_reactos() { echo latest } -function releases_regolith() { - echo focal impish -} - -function editions_regolith() { - echo 1.6.0 2.0.0 -} - function releases_rockylinux() { echo 8.3 8.4 8.5 9.0 } @@ -1349,20 +1339,6 @@ function get_reactos() { echo "${URL} ${HASH}" } -function get_regolith() { - local EDITION="${1:-}" - local HASH="" - local ISO="Regolith_${EDITION}_${RELEASE}.iso" - local URL="" - - case ${EDITION} in - 1.6.0) URL="https://github.com/regolith-linux/regolith-ubuntu-iso-builder/releases/download/release-release-${RELEASE}-${RELEASE}_standard-${EDITION}";; - 2.0.0) URL="https://github.com/regolith-linux/regolith-ubuntu-iso-builder/releases/download/regolith-linux-2.0-${RELEASE}-latest";; - esac - HASH=$(wget -q -O- "${URL}/SHA256SUMS" | cut -d' ' -f1) - echo "${URL}/${ISO} ${HASH}" -} - function get_rockylinux() { local EDITION="${1:-}" local HASH="" @@ -1950,18 +1926,6 @@ if [ -n "${2}" ]; then fi fi - # Workaround for Regolith - if [ "${OS}" == "regolith" ]; then - if [ "${RELEASE}" == "focal" ] && [ "${EDITION}" == "2.0.0" ]; then - echo "WARNING! $(pretty_name "${OS}") ${EDITION} is not available for ${RELEASE}" - EDITION="1.6.0" - echo " - Setting edition to: ${EDITION}" - elif [ "${RELEASE}" == "impish" ] && [ "${EDITION}" == "1.6.0" ]; then - echo "WARNING! $(pretty_name "${OS}") ${EDITION} is not available for ${RELEASE}" - EDITION="2.0.0" - echo " - Setting edition to: ${EDITION}" - fi - fi # Handle odd missing fedora cominations if [[ $OS == fedora ]] ; then if [[ ${RELEASE} = "33" && ${EDITION} = "i3" ]] || [[ ${RELEASE} = "34" && ${EDITION} = "Cinnamon" ]] ; then From 9793041b892c1327baed0ce6e35f33e747b038b9 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 19 Sep 2022 11:26:00 +0100 Subject: [PATCH 100/189] Fix MX Linux and ReactOS download. Close #557 --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index be89aac..a8b7c82 100755 --- a/quickget +++ b/quickget @@ -380,7 +380,7 @@ function releases_lmde(){ } function releases_mxlinux(){ - echo 21.2 + echo 21.2.1 } function editions_mxlinux(){ @@ -1334,7 +1334,7 @@ function get_reactos() { local URL="" local TMPURL="" - TMPURL=$(wget -q -S -O- --max-redirect=0 "https://sourceforge.net/projects/reactos/files/latest/download" 2>&1 | grep Location | cut -d' ' -f4) + TMPURL=$(wget -q -S -O- --max-redirect=0 "https://sourceforge.net/projects/reactos/files/latest/download" 2>&1 | grep -i Location | cut -d' ' -f4) URL=${TMPURL%\?*} echo "${URL} ${HASH}" } From 5b14be93e0d9e43d11c02e8b6f58064f0bb9506a Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 19 Sep 2022 11:32:44 +0100 Subject: [PATCH 101/189] Bump version to 4.2 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 144d8de..06cf346 100755 --- a/quickemu +++ b/quickemu @@ -1496,7 +1496,7 @@ EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="4.1" +readonly VERSION="4.2" # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) From d07b719429d3e4fdda84e74ffae25acab05474a5 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 19 Sep 2022 13:25:09 +0100 Subject: [PATCH 102/189] Suppress warnings --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index a8b7c82..5d098ce 100755 --- a/quickget +++ b/quickget @@ -1212,7 +1212,7 @@ function get_macos() { if [ -e "${VM_PATH}/RecoveryImage.dmg" ] && [ ! -e "${VM_PATH}/RecoveryImage.img" ]; then echo "Converting RecoveryImage..." - qemu-img convert "${VM_PATH}/RecoveryImage.dmg" -O raw "${VM_PATH}/RecoveryImage.img" + qemu-img convert "${VM_PATH}/RecoveryImage.dmg" -O raw "${VM_PATH}/RecoveryImage.img" 2>/dev/null fi make_vm_config RecoveryImage.img From dc86cd6098d6eff551fe3f86a9feb41901374097 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Tue, 20 Sep 2022 11:34:02 +0100 Subject: [PATCH 103/189] Add macOS Ventura placeholder to quickget --- quickget | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/quickget b/quickget index 5d098ce..e680ea4 100755 --- a/quickget +++ b/quickget @@ -388,7 +388,7 @@ function editions_mxlinux(){ } function releases_macos() { - echo high-sierra mojave catalina big-sur monterey + echo high-sierra mojave catalina big-sur monterey ventura } function releases_manjaro() { @@ -1157,20 +1157,39 @@ function get_macos() { local OS_TYPE="default" case ${RELEASE} in - high-sierra) - BOARD_ID="Mac-7BA5B2D9E42DDD94" + lion) #10.7 + BOARD_ID="Mac-2E6FAB96566FE58C" + MLB="00000000000F25Y00";; + mountainlion) #10.8 + BOARD_ID="Mac-7DF2A3B5E5D671ED" + MLB="00000000000F65100";; + mavericks) #10.9 + BOARD_ID="Mac-F60DEB81FF30ACF6" + MLB="00000000000FNN100";; + yosemite) #10.10 + BOARD_ID="Mac-E43C1C25D4880AD6" + MLB="00000000000GDVW00";; + elcapitan) #10.11 + BOARD_ID="Mac-FFE5EF870D7BA81A" + MLB="00000000000GQRX00";; + sierra) #10.12 + BOARD_ID="Mac-77F17D7DA9285301" + MLB="00000000000J0DX00";; + high-sierra) #10.13 + BOARD_ID="Mac-BE088AF8C5EB4FA2" MLB="00000000000J80300";; - mojave) + mojave) #10.14 BOARD_ID="Mac-7BA5B2DFE22DDD8C" MLB="00000000000KXPG00";; - catalina) - BOARD_ID="Mac-C3EC7CD22292981F" - MLB="00000000000PHCD00";; - big-sur) - BOARD_ID="Mac-3CBD00234E554E41";; - monterey) - BOARD_ID="Mac-06F11F11946D27C5" - MLB="00000000000000000";; + catalina) #10.15 + BOARD_ID="Mac-00BE6ED71E35EB86";; + big-sur) #11 + BOARD_ID="Mac-42FD25EABCABB274";; + monterey) #12 + BOARD_ID="Mac-E43C1C25D4880AD6";; + ventura) #13 + echo "ERROR! Not yet supported: ${RELEASE}" + exit 1;; *) echo "ERROR! Unknown release: ${RELEASE}" releases_macos exit 1;; From c4565b77f98573660ba00af35d55a1f20f674d21 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philclifford@users.noreply.github.com> Date: Tue, 20 Sep 2022 11:35:38 +0100 Subject: [PATCH 104/189] fix for dynamically selecting debian releases (#547) * fix for dynamically selecting debian releases * MX 21.2 released * devuan chimaera 4.0.2 released * deepin releases 20.6 and 20.7 added * fix for dynamically selecting debian releases --- quickget | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) mode change 100755 => 100644 quickget diff --git a/quickget b/quickget old mode 100755 new mode 100644 index e680ea4..a772896 --- a/quickget +++ b/quickget @@ -261,7 +261,10 @@ function editions_centos-stream() { } function releases_debian() { - echo 10.11.0 10.12.0 10.13.0 11.2.0 11.3.0 11.4.0 11.5.0 + DEBCURRENT=$(wget -q https://cdimage.debian.org/debian-cd/ -O- |grep '\.[0-9]/'|cut -d\> -f9|cut -d\/ -f1) + local DEBOLD=$(wget -q https://cdimage.debian.org/cdimage/archive/ -O- |grep -e '>[1-9][0-9]\.'|grep -v 'live' | cut -d\> -f9|cut -d\/ -f1 ) + + echo ${DEBOLD} ${DEBCURRENT} } function editions_debian() { @@ -928,8 +931,9 @@ function get_debian() { local ISO="debian-live-${RELEASE}-amd64-${EDITION}.iso" local URL="" - case ${RELEASE} in - 11.5.0) URL="https://cdimage.debian.org/debian-cd/${RELEASE}-live/amd64/iso-hybrid";; + DEBCURRENT=$(wget -q https://cdimage.debian.org/debian-cd/ -O- |grep '\.[0-9]/'|cut -d\> -f9|cut -d\/ -f1) + case ${RELEASE} in + "${DEBCURRENT}") URL="https://cdimage.debian.org/debian-cd/${RELEASE}-live/amd64/iso-hybrid";; *) URL="https://cdimage.debian.org/cdimage/archive/${RELEASE}-live/amd64/iso-hybrid/";; esac From bf3fb1692130053134c4f5775503aaf564219c67 Mon Sep 17 00:00:00 2001 From: giladwo <25708271+giladwo@users.noreply.github.com> Date: Sun, 11 Sep 2022 18:58:42 +0300 Subject: [PATCH 105/189] Replace shallow clone with partial clone As recommended in https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/#user-content-quick-summary. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e65591f..c249c77 100644 --- a/README.md +++ b/README.md @@ -160,7 +160,7 @@ sudo apt install quickemu ## Other Linux ``` bash -git clone --depth=1 https://github.com/wimpysworld/quickemu +git clone --filter=blob:none https://github.com/wimpysworld/quickemu cd quickemu ``` From 5a711439dae8b31fe1138e2684b53fbcb315acf3 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Mon, 19 Sep 2022 11:41:22 +0100 Subject: [PATCH 106/189] updated docs for release 4.2 --- README.md | 18 ++++++++---------- build-docs | 2 +- docs/quickemu.1 | 22 +++++++++++----------- docs/quickemu.1.md | 20 ++++++++++---------- docs/quickemu_conf.1 | 2 +- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 20 +++++++++----------- docs/quickget.1.md | 19 +++++++++---------- 8 files changed, 50 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index c249c77..c29dea1 100644 --- a/README.md +++ b/README.md @@ -193,11 +193,11 @@ quickemu --vm ubuntu-22.04.conf - Complete the installation as normal. - Post-install: - - Install the SPICE agent (`spice-vdagent`) to enable copy/paste - and USB redirection + - Install the SPICE agent (`spice-vdagent`) in the guest to enable + copy/paste and USB redirection - `sudo apt install spice-vdagent` - - Install the SPICE WebDAV agent (`spice-webdavd`) to enable file - sharing. + - Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to + enable file sharing. - `sudo apt install spice-webdavd` ### Ubuntu devel (daily-live) images @@ -268,7 +268,6 @@ with your preferred flavour. - `oraclelinux` (Oracle Linux) - `popos` (Pop!\_OS) - `reactos` (ReactOS) -- `regolith` (Regolith Linux) - `rockylinux` (Rocky Linux) - `slackware` (Slackware) - `solus` (Solus) @@ -296,10 +295,10 @@ quickemu --vm debian-bullseye.conf - Complete the installation as normal. - Post-install: - - Install the SPICE agent (`spice-vdagent`) to enable copy/paste - and USB redirection. - - Install the SPICE WebDAV agent (`spice-webdavd`) to enable file - sharing. + - Install the SPICE agent (`spice-vdagent`) in the guest to enable + copy/paste and USB redirection. + - Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to + enable file sharing. ## macOS Guest @@ -739,7 +738,6 @@ You can also pass optional parameters --version : Print version ``` - <!-- [[[end]]] --> ## Desktop shortcuts diff --git a/build-docs b/build-docs index da4705f..b00b951 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit da4705f350bb95c08dfd7e31627285ffc8019045 +Subproject commit b00b951c83c5c18aafd57c0898c4cfd7394ef4f3 diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 19493ed..ea0bc84 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "September 1, 2022" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "September 19, 2022" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -182,6 +182,8 @@ util-linux (https://github.com/karelzak/util-linux) .IP \[bu] 2 sed (https://www.gnu.org/software/sed/) .IP \[bu] 2 +socat (http://www.dest-unreach.org/socat/) +.IP \[bu] 2 spicy (https://gitlab.freedesktop.org/spice/spice-gtk) .IP \[bu] 2 swtpm (https://github.com/stefanberger/swtpm) @@ -274,15 +276,15 @@ Complete the installation as normal. Post-install: .RS 2 .IP \[bu] 2 -Install the SPICE agent (\f[V]spice-vdagent\f[R]) to enable copy/paste -and USB redirection +Install the SPICE agent (\f[V]spice-vdagent\f[R]) in the guest to enable +copy/paste and USB redirection .RS 2 .IP \[bu] 2 \f[V]sudo apt install spice-vdagent\f[R] .RE .IP \[bu] 2 -Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) to enable file -sharing. +Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) in the guest to +enable file sharing. .RS 2 .IP \[bu] 2 \f[V]sudo apt install spice-webdavd\f[R] @@ -399,8 +401,6 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]reactos\f[R] (ReactOS) .IP \[bu] 2 -\f[V]regolith\f[R] (Regolith Linux) -.IP \[bu] 2 \f[V]rockylinux\f[R] (Rocky Linux) .IP \[bu] 2 \f[V]slackware\f[R] (Slackware) @@ -442,11 +442,11 @@ Complete the installation as normal. Post-install: .RS 2 .IP \[bu] 2 -Install the SPICE agent (\f[V]spice-vdagent\f[R]) to enable copy/paste -and USB redirection. +Install the SPICE agent (\f[V]spice-vdagent\f[R]) in the guest to enable +copy/paste and USB redirection. .IP \[bu] 2 -Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) to enable file -sharing. +Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) in the guest to +enable file sharing. .RE .SS macOS Guest .PP diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 3279bed..49a4393 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: September 1, 2022 +date: September 19, 2022 footer: quickemu header: Quickemu User Manual section: 1 @@ -145,6 +145,7 @@ QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/wat - [usbutils](https://github.com/gregkh/usbutils) - [util-linux](https://github.com/karelzak/util-linux) - [sed](https://www.gnu.org/software/sed/) +- [socat](http://www.dest-unreach.org/socat/) - [spicy](https://gitlab.freedesktop.org/spice/spice-gtk) - [swtpm](https://github.com/stefanberger/swtpm) - [Wget](https://www.gnu.org/software/wget/) @@ -216,11 +217,11 @@ quickemu --vm ubuntu-22.04.conf - Complete the installation as normal. - Post-install: - - Install the SPICE agent (`spice-vdagent`) to enable copy/paste - and USB redirection + - Install the SPICE agent (`spice-vdagent`) in the guest to enable + copy/paste and USB redirection - `sudo apt install spice-vdagent` - - Install the SPICE WebDAV agent (`spice-webdavd`) to enable file - sharing. + - Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to + enable file sharing. - `sudo apt install spice-webdavd` ### Ubuntu devel (daily-live) images @@ -291,7 +292,6 @@ with your preferred flavour. - `oraclelinux` (Oracle Linux) - `popos` (Pop!\_OS) - `reactos` (ReactOS) -- `regolith` (Regolith Linux) - `rockylinux` (Rocky Linux) - `slackware` (Slackware) - `solus` (Solus) @@ -319,10 +319,10 @@ quickemu --vm debian-bullseye.conf - Complete the installation as normal. - Post-install: - - Install the SPICE agent (`spice-vdagent`) to enable copy/paste - and USB redirection. - - Install the SPICE WebDAV agent (`spice-webdavd`) to enable file - sharing. + - Install the SPICE agent (`spice-vdagent`) in the guest to enable + copy/paste and USB redirection. + - Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to + enable file sharing. ## macOS Guest diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index c012bdd..e7152f9 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "September 1, 2022" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "September 19, 2022" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index 6c52fed..ebfc296 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: September 1, 2022 +date: September 19, 2022 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index 911c807..1bf86c5 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "September 1, 2022" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "September 19, 2022" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -58,15 +58,15 @@ Complete the installation as normal. Post-install: .RS 2 .IP \[bu] 2 -Install the SPICE agent (\f[V]spice-vdagent\f[R]) to enable copy/paste -and USB redirection +Install the SPICE agent (\f[V]spice-vdagent\f[R]) in the guest to enable +copy/paste and USB redirection .RS 2 .IP \[bu] 2 \f[V]sudo apt install spice-vdagent\f[R] .RE .IP \[bu] 2 -Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) to enable file -sharing. +Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) in the guest to +enable file sharing. .RS 2 .IP \[bu] 2 \f[V]sudo apt install spice-webdavd\f[R] @@ -183,8 +183,6 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]reactos\f[R] (ReactOS) .IP \[bu] 2 -\f[V]regolith\f[R] (Regolith Linux) -.IP \[bu] 2 \f[V]rockylinux\f[R] (Rocky Linux) .IP \[bu] 2 \f[V]slackware\f[R] (Slackware) @@ -226,11 +224,11 @@ Complete the installation as normal. Post-install: .RS 2 .IP \[bu] 2 -Install the SPICE agent (\f[V]spice-vdagent\f[R]) to enable copy/paste -and USB redirection. +Install the SPICE agent (\f[V]spice-vdagent\f[R]) in the guest to enable +copy/paste and USB redirection. .IP \[bu] 2 -Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) to enable file -sharing. +Install the SPICE WebDAV agent (\f[V]spice-webdavd\f[R]) in the guest to +enable file sharing. .RE .SS macOS Guest .PP diff --git a/docs/quickget.1.md b/docs/quickget.1.md index a3693f9..8bd385a 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: September 1, 2022 +date: September 19, 2022 footer: quickget header: Quickget User Manual section: 1 @@ -49,11 +49,11 @@ quickemu --vm ubuntu-22.04.conf - Complete the installation as normal. - Post-install: - - Install the SPICE agent (`spice-vdagent`) to enable copy/paste - and USB redirection + - Install the SPICE agent (`spice-vdagent`) in the guest to enable + copy/paste and USB redirection - `sudo apt install spice-vdagent` - - Install the SPICE WebDAV agent (`spice-webdavd`) to enable file - sharing. + - Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to + enable file sharing. - `sudo apt install spice-webdavd` ### Ubuntu devel (daily-live) images @@ -124,7 +124,6 @@ with your preferred flavour. - `oraclelinux` (Oracle Linux) - `popos` (Pop!\_OS) - `reactos` (ReactOS) -- `regolith` (Regolith Linux) - `rockylinux` (Rocky Linux) - `slackware` (Slackware) - `solus` (Solus) @@ -152,10 +151,10 @@ quickemu --vm debian-bullseye.conf - Complete the installation as normal. - Post-install: - - Install the SPICE agent (`spice-vdagent`) to enable copy/paste - and USB redirection. - - Install the SPICE WebDAV agent (`spice-webdavd`) to enable file - sharing. + - Install the SPICE agent (`spice-vdagent`) in the guest to enable + copy/paste and USB redirection. + - Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to + enable file sharing. ## macOS Guest From ed7bffda8df9ac26eb485774a3f7382646f0bdc2 Mon Sep 17 00:00:00 2001 From: Michael Tinsay <mike.tinsay@moldex.com.ph> Date: Tue, 20 Sep 2022 12:55:50 +0800 Subject: [PATCH 107/189] Additional note on filesystem to use --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c29dea1..d343b29 100644 --- a/README.md +++ b/README.md @@ -322,7 +322,11 @@ supported. - On macOS Mojave and High Sierra - Select `QEMU HARDDISK Media` (\~103.08GB) from the list and click **Erase**. - - Enter a `Name:` for the disk and click **Erase**. + - Enter a `Name:` for the disk + - If your installing macOS Mojave or later (Catalina, Big Sur, + and Monterey), choose any of the APFS options as the filesystem. + MacOS Extended may not work. + - Click **Erase**. - Click **Done**. - Close Disk Utility - From **macOS Utilities** From a29dcef6ed8208cac14bd920074925effb983733 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Tue, 20 Sep 2022 13:02:48 +0100 Subject: [PATCH 108/189] Apply display= if set in the VM configuration. Close #520 --- quickemu | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/quickemu b/quickemu index 06cf346..949130d 100755 --- a/quickemu +++ b/quickemu @@ -1422,6 +1422,7 @@ boot="efi" cpu_cores="" disk_img="" disk_size="" +display="" extra_args="" fixed_iso="" floppy="" @@ -1665,6 +1666,10 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then disk_size="${disk}" fi + if [ -n "${display}" ]; then + OUTPUT="${display}" + fi + # Set the default OUTPUT if not provided by user if [ -z "${OUTPUT}" ]; then OUTPUT="sdl" @@ -1674,6 +1679,7 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then if [ -n "${BRAILLE}" ]; then OUTPUT="sdl" fi + display_param_check if [ -z "${VIEWER}" ]; then VIEWER="${viewer}" From e97b57352c5bca641337db691d91a925b191120d Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Tue, 20 Sep 2022 13:53:59 +0100 Subject: [PATCH 109/189] Do not use SDL for audio. Close #542 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The QEMU manpage states: "This backend is available on most systems, but you should use your platform’s native backend if possible." --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 949130d..380fa1b 100755 --- a/quickemu +++ b/quickemu @@ -664,9 +664,9 @@ function vm_boot() { fi # Setup the appropriate audio device based on the display output + # https://www.kraxel.org/blog/2020/01/qemu-sound-audiodev/ case ${OUTPUT} in none|spice|spice-app) AUDIO_DEV="spice,id=audio0";; - sdl) AUDIO_DEV="sdl,id=audio0";; *) AUDIO_DEV="pa,id=audio0";; esac From 8c1d8671103bfa7c456383f51e345f8e100e040a Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Tue, 20 Sep 2022 14:18:19 +0100 Subject: [PATCH 110/189] Enable grab-on-hover for SDL. Fixes #541 --- quickemu | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/quickemu b/quickemu index 380fa1b..d60a43a 100755 --- a/quickemu +++ b/quickemu @@ -1223,6 +1223,10 @@ function vm_boot() { SHELL_ARGS="${SHELL_ARGS//Quickemu Project/\"Quickemu Project\"}" if [ ${VM_UP} -eq 0 ]; then + # Enable grab-on-hover for SDL: https://github.com/quickemu-project/quickemu/issues/541 + case "${OUTPUT}" in + sdl) export SDL_MOUSE_FOCUS_CLICKTHROUGH=1;; + esac echo "${QEMU}" "${SHELL_ARGS}" >> "${VMDIR}/${VMNAME}.sh" ${QEMU} "${args[@]}" > "${VMDIR}/${VMNAME}.log" & sleep 0.25 From 3b893afbe74bc01a8fe7e2c3d156b605dc0c30d8 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Thu, 22 Sep 2022 02:32:33 +0100 Subject: [PATCH 111/189] Add later and missed documentation updates in 4.2 to builder Include change from PR 548 - replace shallow with unblobby clone Catch up with macOS note from merged PR 559 - note on macOS filesystems Co-authored-by: giladwo <giladwo@users.noreply.github.com> Co-authored-by: tinsami1 <tinsami1@users.noreply.github.com> --- README.md | 6 +++--- build-docs | 2 +- docs/quickemu.1 | 12 ++++++++++-- docs/quickemu.1.md | 8 ++++++-- docs/quickemu_conf.1 | 2 +- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 12 ++++++++++-- docs/quickget.1.md | 8 ++++++-- 8 files changed, 38 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index d343b29..41260a8 100644 --- a/README.md +++ b/README.md @@ -323,9 +323,9 @@ supported. - Select `QEMU HARDDISK Media` (\~103.08GB) from the list and click **Erase**. - Enter a `Name:` for the disk - - If your installing macOS Mojave or later (Catalina, Big Sur, - and Monterey), choose any of the APFS options as the filesystem. - MacOS Extended may not work. + - If you are installing macOS Mojave or later (Catalina, Big + Sur, and Monterey), choose any of the APFS options as the + filesystem. MacOS Extended may not work. - Click **Erase**. - Click **Done**. - Close Disk Utility diff --git a/build-docs b/build-docs index b00b951..7cf8e3d 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit b00b951c83c5c18aafd57c0898c4cfd7394ef4f3 +Subproject commit 7cf8e3d597a1838d3ae21a2fa36297a736f35146 diff --git a/docs/quickemu.1 b/docs/quickemu.1 index ea0bc84..9a7050c 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "September 19, 2022" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "September 22, 2022" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -486,7 +486,15 @@ click \f[B]Erase\f[R]. .RE .RE .IP \[bu] 2 -Enter a \f[V]Name:\f[R] for the disk and click \f[B]Erase\f[R]. +Enter a \f[V]Name:\f[R] for the disk +.RS 2 +.IP \[bu] 2 +If you are installing macOS Mojave or later (Catalina, Big Sur, and +Monterey), choose any of the APFS options as the filesystem. +MacOS Extended may not work. +.RE +.IP \[bu] 2 +Click \f[B]Erase\f[R]. .IP \[bu] 2 Click \f[B]Done\f[R]. .IP \[bu] 2 diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 49a4393..c11d582 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: September 19, 2022 +date: September 22, 2022 footer: quickemu header: Quickemu User Manual section: 1 @@ -346,7 +346,11 @@ supported. - On macOS Mojave and High Sierra - Select `QEMU HARDDISK Media` (\~103.08GB) from the list and click **Erase**. - - Enter a `Name:` for the disk and click **Erase**. + - Enter a `Name:` for the disk + - If you are installing macOS Mojave or later (Catalina, Big + Sur, and Monterey), choose any of the APFS options as the + filesystem. MacOS Extended may not work. + - Click **Erase**. - Click **Done**. - Close Disk Utility - From **macOS Utilities** diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index e7152f9..8ff3ab6 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "September 19, 2022" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "September 22, 2022" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index ebfc296..cdf3adb 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: September 19, 2022 +date: September 22, 2022 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index 1bf86c5..6f98763 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "September 19, 2022" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "September 22, 2022" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -268,7 +268,15 @@ click \f[B]Erase\f[R]. .RE .RE .IP \[bu] 2 -Enter a \f[V]Name:\f[R] for the disk and click \f[B]Erase\f[R]. +Enter a \f[V]Name:\f[R] for the disk +.RS 2 +.IP \[bu] 2 +If you are installing macOS Mojave or later (Catalina, Big Sur, and +Monterey), choose any of the APFS options as the filesystem. +MacOS Extended may not work. +.RE +.IP \[bu] 2 +Click \f[B]Erase\f[R]. .IP \[bu] 2 Click \f[B]Done\f[R]. .IP \[bu] 2 diff --git a/docs/quickget.1.md b/docs/quickget.1.md index 8bd385a..e237578 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: September 19, 2022 +date: September 22, 2022 footer: quickget header: Quickget User Manual section: 1 @@ -178,7 +178,11 @@ supported. - On macOS Mojave and High Sierra - Select `QEMU HARDDISK Media` (\~103.08GB) from the list and click **Erase**. - - Enter a `Name:` for the disk and click **Erase**. + - Enter a `Name:` for the disk + - If you are installing macOS Mojave or later (Catalina, Big + Sur, and Monterey), choose any of the APFS options as the + filesystem. MacOS Extended may not work. + - Click **Erase**. - Click **Done**. - Close Disk Utility - From **macOS Utilities** From 747aaf6b45a796a22d34c7a0b4cb9f24c5c089ec Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Thu, 22 Sep 2022 02:36:59 +0100 Subject: [PATCH 112/189] Make quickget executable again somwhere an executable bit or three dropped off --- quickget | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 quickget diff --git a/quickget b/quickget old mode 100644 new mode 100755 From 19b9e8e910b2caa176d1270283edc2e45a60361f Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 22 Sep 2022 09:12:46 +0100 Subject: [PATCH 113/189] Drop -smbios --- quickemu | 1 - 1 file changed, 1 deletion(-) diff --git a/quickemu b/quickemu index d60a43a..42f2f3f 100755 --- a/quickemu +++ b/quickemu @@ -905,7 +905,6 @@ function vm_boot() { -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}" ${VIDEO} -display ${DISPLAY_RENDER} -audiodev ${AUDIO_DEV} -device intel-hda -device hda-duplex,audiodev=audio0 From 62b258c2963f068f33f1f0469582341ba6894903 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 22 Sep 2022 09:13:48 +0100 Subject: [PATCH 114/189] Refactor GUEST_TWEAKS for Windows --- quickemu | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/quickemu b/quickemu index 42f2f3f..2758d99 100755 --- a/quickemu +++ b/quickemu @@ -572,11 +572,9 @@ function vm_boot() { if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then CPU="${CPU},topoext" fi - GUEST_TWEAKS="-no-hpet -global kvm-pit.lost_tick_policy=discard" - # Disable S3 support in the VM to ensure Windows can boot with SecureBoot enabled # - https://wiki.archlinux.org/title/QEMU#VM_does_not_boot_when_using_a_Secure_Boot_enabled_OVMF - GUEST_TWEAKS="${GUEST_TWEAKS} -global ICH9-LPC.disable_s3=1" + GUEST_TWEAKS="-no-hpet -global kvm-pit.lost_tick_policy=discard -global ICH9-LPC.disable_s3=1" if [ -z "${disk_size}" ]; then disk_size="64G" From ddbbc23d3447ceb1503bf549a000e0cace5cc723 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 22 Sep 2022 09:16:41 +0100 Subject: [PATCH 115/189] Replace discrete Hyper-V Enlightenments with hv_passthrough https://www.qemu.org/docs/master/system/i386/hyperv.html#supplementary-features --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 2758d99..8a72223 100755 --- a/quickemu +++ b/quickemu @@ -568,7 +568,7 @@ function vm_boot() { fi ;; windows) - CPU="-cpu host,kvm=on,+hypervisor,+invtsc,l3-cache=on,migratable=no,hv_frequencies,kvm_pv_unhalt,hv_reenlightenment,hv_relaxed,hv_spinlocks=8191,hv_stimer,hv_synic,hv_time,hv_vapic,hv_vendor_id=1234567890ab,hv_vpindex" + CPU="-cpu host,kvm=on,+hypervisor,+invtsc,l3-cache=on,migratable=no,hv_passthrough" if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then CPU="${CPU},topoext" fi From 40bc25fe8730f95d5b9091c190b6ff27929f6082 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 22 Sep 2022 09:16:57 +0100 Subject: [PATCH 116/189] Correct permissions --- quickget | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 quickget diff --git a/quickget b/quickget old mode 100644 new mode 100755 From 7db5167caceab9fd768b220194eb93ce4af00e0f Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Thu, 22 Sep 2022 09:18:25 +0100 Subject: [PATCH 117/189] Bump version to 4.3 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 8a72223..52ac41b 100755 --- a/quickemu +++ b/quickemu @@ -1498,7 +1498,7 @@ EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="4.2" +readonly VERSION="4.3" # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) From 72432bfad79a3ebdeca8ab70b308c12220538c02 Mon Sep 17 00:00:00 2001 From: Mikael Bak <mikabak@tuta.io> Date: Mon, 3 Oct 2022 23:23:19 +0200 Subject: [PATCH 118/189] Add Archcraft --- quickget | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/quickget b/quickget index a772896..1e60e7b 100755 --- a/quickget +++ b/quickget @@ -34,6 +34,7 @@ function pretty_name() { alpine) PRETTY_NAME="Alpine Linux";; android) PRETTY_NAME="Android x86";; archlinux) PRETTY_NAME="Arch Linux";; + archcraft) PRETTY_NAME="Archcraft";; arcolinux) PRETTY_NAME="Arco Linux";; cachyos) PRETTY_NAME="CachyOS";; centos-stream) PRETTY_NAME="CentOS Stream";; @@ -162,6 +163,7 @@ function os_support() { alpine \ android \ archlinux \ + archcraft \ arcolinux \ batocera \ cachyos \ @@ -236,6 +238,10 @@ function releases_archlinux() { echo latest } +function releases_archcraft() { + echo latest +} + function releases_arcolinux() { echo v21.09.11 v21.11.05 v22.01.10 } @@ -867,6 +873,16 @@ function get_archlinux() { echo "${URL}/${ISO} ${HASH}" } +function get_archcraft() { + local HASH="" + local URL="" + local TMPURL="" + + TMPURL=$(wget -q -S -O- --max-redirect=0 "https://sourceforge.net/projects/archcraft/files/latest/download" 2>&1 | grep -i Location | cut -d' ' -f4) + URL=${TMPURL%\?*} + echo "${URL} ${HASH}" +} + function get_arcolinux() { local EDITION="${1:-}" local HASH="" From c28db241842d7d81893bb84dbf45261c5cd7d6b3 Mon Sep 17 00:00:00 2001 From: interorbital <106621171+interorbital@users.noreply.github.com> Date: Thu, 20 Oct 2022 22:08:30 +0300 Subject: [PATCH 119/189] added the 22.10 version for ubuntu and all quickemu-supported ubuntu flavors --- quickget | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/quickget b/quickget index 1e60e7b..23519b3 100755 --- a/quickget +++ b/quickget @@ -478,6 +478,8 @@ function releases_tails() { function releases_ubuntu() { local LTS_SUPPORT="14.04 16.04 18.04 20.04 22.04" + local INTERIM_SUPPORT="22.10" + case "${OS}" in kubuntu|lubuntu|ubuntukylin|\ ubuntu-mate|ubuntustudio|xubuntu) @@ -489,7 +491,11 @@ function releases_ubuntu() { LTS_SUPPORT="${LTS_SUPPORT/14.04 16.04 /}" ;; esac + + INTERIM_SUPPORT="${INTERIM_SUPPORT/22.10 /}" + echo ${LTS_SUPPORT} \ + ${INTERIM_SUPPORT} \ jammy-daily \ daily-live \ daily-canary \ @@ -529,6 +535,7 @@ function releases_ubuntu() { eol-21.04 \ eol-21.10 \ ; + } function releases_void() { @@ -2015,6 +2022,7 @@ else echo -n " - Releases: " releases_ubuntu | sed -Ee 's/eol-\S+//g' # hide eol releases ;; + *) echo -n " - Releases: " releases_"${OS}" From bfd7a05ff15d614e90608ccce524acfc88a44aeb Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Mon, 17 Oct 2022 20:07:15 +0100 Subject: [PATCH 120/189] OpenBSD: Fix download of versions 6.8 & 6.9 The CDN we were using in QuickGet only carries version 7.0 and 7.1. By switching to a different CDN provided for the OpenBSD Community (listed on https://www.openbsd.org/ftp.html) we can regain access to version 6.8 and 6.9. --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 23519b3..42b7782 100755 --- a/quickget +++ b/quickget @@ -1323,7 +1323,7 @@ function get_nixos() { function get_openbsd() { local HASH="" local ISO="install${RELEASE//\./}.iso" - local URL="https://cdn.openbsd.org/pub/OpenBSD/${RELEASE}/amd64" + local URL="https://mirror.leaseweb.com/pub/OpenBSD/${RELEASE}/amd64" HASH=$(wget -q -O- "${URL}/SHA256" | grep "${ISO}" | cut -d' ' -f4) echo "${URL}/${ISO} ${HASH}" } From fb8deb10e8dab766696c173fd10a58d0749841ab Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Mon, 17 Oct 2022 20:22:46 +0100 Subject: [PATCH 121/189] Defaults: Switch default disk from virtio-blk-pci to virtio-scsi-pci Currently, the virtio specification does not include provision for the TRIM (aka DISCARD) command that allows a guest operating system to signal the disk hardware that blocks have become unused so that the underlying device may clear the physical data. The TRIM/DISCARD command was introduced for SSD disks as an extension to the AHCI specification that is used in SATA systems. With Virtual Machines we can use this command to tell QEMU's Qcow2 driver to reclaim unused space in the disk image. This ensures the disk image file is kept to the smallest size possible where without the TRIM/DISCARD command it grows to it's maximum configured size and never shrinks again when data is deleted. Let's swap our default disk driver from `virtio-blk-pci` which does not support TRIM to `virtio-scsi-pci` which does. --- quickemu | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/quickemu b/quickemu index 52ac41b..0b7386e 100755 --- a/quickemu +++ b/quickemu @@ -1103,8 +1103,9 @@ function vm_boot() { else # shellcheck disable=SC2054,SC2206 - args+=(-device virtio-blk-pci,drive=SystemDisk - -drive id=SystemDisk,if=none,format=qcow2,file="${disk_img}" ${STATUS_QUO}) + args+=(-device virtio-scsi-pci,id=scsi0 + -device scsi-hd,drive=SystemDisk,bus=scsi0.0,lun=0,rotation_rate=1 + -drive id=SystemDisk,if=none,format=qcow2,discard=unmap,file="${disk_img}" ${STATUS_QUO}) fi # https://wiki.qemu.org/Documentation/9psetup From 881adb289a820e0b72ee5f2a81ae3461b96e07c8 Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Mon, 17 Oct 2022 20:25:42 +0100 Subject: [PATCH 122/189] macOS: swap disk controller from virtio-blk-pci to ahci Currently, the virtio specification does not include provision for the TRIM (aka DISCARD) command that allows a guest operating system to signal the disk hardware that blocks have become unused so that the underlying device may clear the physical data. The TRIM/DISCARD command was introduced for SSD disks as an extension to the AHCI specification that is used in SATA systems. With Virtual Machines we can use this command to tell QEMU's Qcow2 driver to reclaim unused space in the disk image. This ensures the disk image file is kept to the smallest size possible where without the TRIM/DISCARD command it grows to it's maximum configured size and never shrinks again when data is deleted. Let's swap our default disk driver from `virtio-blk-pci` which does not support TRIM to `ahci` which does. (We cannot use `virtio-scsi-pci` when running macOS, like we do in our default disk device, because macOS does not support SCSI disks at all on x86_64 systems.) --- quickemu | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/quickemu b/quickemu index 0b7386e..eed9f59 100755 --- a/quickemu +++ b/quickemu @@ -542,13 +542,13 @@ function vm_boot() { case ${macos_release} in catalina) BALLOON="" - MAC_DISK_DEV="virtio-blk-pci" + MAC_DISK_DEV="ide-hd,bus=ahci.2" NET_DEVICE="vmxnet3" USB_HOST_PASSTHROUGH_CONTROLLER="usb-ehci" ;; big-sur|monterey|ventura) BALLOON="-device virtio-balloon" - MAC_DISK_DEV="virtio-blk-pci" + MAC_DISK_DEV="ide-hd,bus=ahci.2" NET_DEVICE="virtio-net" USB_HOST_PASSTHROUGH_CONTROLLER="nec-usb-xhci" GUEST_TWEAKS="${GUEST_TWEAKS} -global nec-usb-xhci.msi=off" @@ -1071,18 +1071,19 @@ function vm_boot() { if [ "${guest_os}" == "macos" ]; then # shellcheck disable=SC2054 args+=(-device ahci,id=ahci - -device ide-hd,bus=ahci.0,drive=BootLoader,bootindex=0 - -drive id=BootLoader,if=none,format=qcow2,file="${MAC_BOOTLOADER}") + -device ide-hd,bus=ahci.0,drive=BootLoader,bootindex=0,rotation_rate=1 + -drive id=BootLoader,if=none,format=qcow2,discard=unmap,file="${MAC_BOOTLOADER}") if [ -n "${img}" ]; then # shellcheck disable=SC2054 - args+=(-device ide-hd,bus=ahci.1,drive=RecoveryImage - -drive id=RecoveryImage,if=none,format=raw,file="${img}") + args+=(-device ide-hd,bus=ahci.1,drive=RecoveryImage,rotation_rate=1 + -drive id=RecoveryImage,if=none,format=raw,discard=unmap,file="${img}") fi # shellcheck disable=SC2054,SC2206 - args+=(-device ${MAC_DISK_DEV},drive=SystemDisk - -drive id=SystemDisk,if=none,format=qcow2,file="${disk_img}" ${STATUS_QUO}) + args+=(-device ${MAC_DISK_DEV},drive=SystemDisk,rotation_rate=1 + -drive id=SystemDisk,if=none,format=qcow2,discard=unmap,file="${disk_img}" ${STATUS_QUO}) + elif [ "${guest_os}" == "kolibrios" ]; then # shellcheck disable=SC2054,SC2206 args+=(-device ahci,id=ahci From 6f3bc41750b0787adc4078b60bdf2002be0bb252 Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Mon, 17 Oct 2022 20:48:31 +0100 Subject: [PATCH 123/189] README.md: drop mention of VirtIO Block Media in macOS docs The previous commit removes our usage of VirtIO Block Media as a backing for the macOS hard disk. We therefore need to drop our descriptions of this functionality now we're not using it any more. --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 41260a8..6aa7ec5 100644 --- a/README.md +++ b/README.md @@ -351,8 +351,6 @@ macos_release="catalina" particular macOS release. - For example VirtIO Network and Memory Ballooning are available in Big Sur and newer, but not previous releases. - - And VirtIO Block Media (disks) are supported/stable in Catalina - and newer. ### macOS compatibility @@ -370,9 +368,6 @@ There are some considerations when running macOS via Quickemu. - Optimised by default, but no GPU acceleration is available. - Host CPU vendor is detected and guest CPU is optimised accordingly. - - [VirtIO Block - Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is - used for the system disk where supported. - [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for the mouse. - VirtIO Network (`virtio-net`) is supported and enabled on macOS From dba3bb61c623d36d7504bf369f535a3128298114 Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Mon, 17 Oct 2022 20:51:05 +0100 Subject: [PATCH 124/189] README.md: Update macOS install steps with correct hard disk naming In a previous commit we dropped usage of VirtIO Block Media from backing the hard disk device in macOS guests. The instructions therefore are updated here to drop the split between macOS versions that we had previously enabled VirtIO Block Media disks and those we didn't. This simplifies the instructions to a single hard disk name for all supported macOS version installations. --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6aa7ec5..c4fae96 100644 --- a/README.md +++ b/README.md @@ -316,12 +316,8 @@ supported. - Use cursor keys and enter key to select the **macOS Base System** - From **macOS Utilities** - Click **Disk Utility** and **Continue** - - On macOS Catalina, Big Sur & Monterey - - Select `Apple Inc. VirtIO Block Media` from the list and - click **Erase**. - - On macOS Mojave and High Sierra - - Select `QEMU HARDDISK Media` (\~103.08GB) from the list - and click **Erase**. + - Select `QEMU HARDDISK Media` (\~103.08GB) from the list + and click **Erase**. - Enter a `Name:` for the disk - If you are installing macOS Mojave or later (Catalina, Big Sur, and Monterey), choose any of the APFS options as the From a437bc8a9961c6b1aeb66dd764a529fd47482404 Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Mon, 17 Oct 2022 21:00:53 +0100 Subject: [PATCH 125/189] README.md: Add instructions for enabling macOS TRIM support macOS refuses to enable TRIM on any disk models that are not in Apple's verified approval list. However, there is a command that you can run via `sudo` to forcibly tell macOS to enable TRIM even though the disk model is unsupported by Apple. Here we add the instructions to `README.md` for forcibly enabling TRIM support. --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index c4fae96..ae9d105 100644 --- a/README.md +++ b/README.md @@ -332,6 +332,28 @@ supported. **macOS Installer** - On the subsequent reboots use cursor keys and enter key to select the disk you named +- Once you have finished installing macOS you will be presented with an the out-of-the-box first-start wizard to configure various options and set up your username and password +- OPTIONAL: After you have concluded the out-of-the-box wizard, you may want to enable the TRIM feature that the computer industry created for SSD disks. This feature in our macOS installation will allow QuickEmu to compact (shrink) your macOS disk image whenever you delete files inside the Virtual Machine. Without this step your macOS disk image will only ever get larger and will not shrink even when you delete lots of data inside macOS. + - To enable TRIM, open the Terminal application and type the following command followed by pressing <kbd>enter</kbd> to tell macos to use the TRIM command on the hard disk when files are deleted: + ```bash + sudo trimforce enable + ``` + + You will be prompted to enter your account's password to gain the privilege needed. Once you've entered your password and pressed <kbd>enter</kbd> the command will request confirmation in the form of two questions that require you to type <kbd>y</kbd> (for a "yes" response) followed by <kbd>enter</kbd> to confirm. If you press <kbd>enter</kbd> without first typing <kbd>y</kbd> the system will consider that a negative response as though you said "no": + + ```plain + IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU. + Are you sure you with to proceed (y/N)? + ``` + + And a second confirmation once you've confirmed the previous one: + + ```plain + Your system will immediately reboot when this is complete. + Is this OK (y/N)? + ``` + + As the last message states, your system will automatically reboot as soon as the command completes. The default macOS configuration looks like this: From 215597eeadc5d150e969871d7e8733a7b829b62a Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 21 Oct 2022 08:49:14 +0100 Subject: [PATCH 126/189] Bump version to 4.4 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index eed9f59..b9440c8 100755 --- a/quickemu +++ b/quickemu @@ -1500,7 +1500,7 @@ EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="4.3" +readonly VERSION="4.4" # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) From 1fb683dd48433c561eafd2f48195d13b8c0ae00d Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 21 Oct 2022 10:52:38 +0100 Subject: [PATCH 127/189] Regenerated docs for 4.4 Release README and man pages regenerated incorporating documentation updates from Release 4.4 --- README.md | 58 +++++++++++++++++++++----------- build-docs | 2 +- docs/quickemu.1 | 73 +++++++++++++++++++++++++++++++---------- docs/quickemu.1.md | 59 ++++++++++++++++++++++++++------- docs/quickemu_conf.1 | 2 +- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 73 +++++++++++++++++++++++++++++++---------- docs/quickget.1.md | 59 ++++++++++++++++++++++++++------- 8 files changed, 247 insertions(+), 81 deletions(-) diff --git a/README.md b/README.md index ae9d105..8955477 100644 --- a/README.md +++ b/README.md @@ -235,6 +235,7 @@ with your preferred flavour. - `alma` (Alma Linux) - `alpine` (Alpine Linux) - `android` (Android x86) +- `archcraft` (Archcraft) - `archlinux` (Arch Linux) - `arcolinux` (Arco Linux) - `batocera` (Batocera) @@ -316,9 +317,9 @@ supported. - Use cursor keys and enter key to select the **macOS Base System** - From **macOS Utilities** - Click **Disk Utility** and **Continue** - - Select `QEMU HARDDISK Media` (\~103.08GB) from the list - and click **Erase**. - - Enter a `Name:` for the disk + - Select `QEMU HARDDISK Media` (\~103.08GB) from the list and + click **Erase**. + - Enter a `Name:` for the disk - If you are installing macOS Mojave or later (Catalina, Big Sur, and Monterey), choose any of the APFS options as the filesystem. MacOS Extended may not work. @@ -332,28 +333,43 @@ supported. **macOS Installer** - On the subsequent reboots use cursor keys and enter key to select the disk you named -- Once you have finished installing macOS you will be presented with an the out-of-the-box first-start wizard to configure various options and set up your username and password -- OPTIONAL: After you have concluded the out-of-the-box wizard, you may want to enable the TRIM feature that the computer industry created for SSD disks. This feature in our macOS installation will allow QuickEmu to compact (shrink) your macOS disk image whenever you delete files inside the Virtual Machine. Without this step your macOS disk image will only ever get larger and will not shrink even when you delete lots of data inside macOS. - - To enable TRIM, open the Terminal application and type the following command followed by pressing <kbd>enter</kbd> to tell macos to use the TRIM command on the hard disk when files are deleted: - ```bash - sudo trimforce enable - ``` +- Once you have finished installing macOS you will be presented with + an the out-of-the-box first-start wizard to configure various + options and set up your username and password +- OPTIONAL: After you have concluded the out-of-the-box wizard, you + may want to enable the TRIM feature that the computer industry + created for SSD disks. This feature in our macOS installation will + allow QuickEmu to compact (shrink) your macOS disk image whenever + you delete files inside the Virtual Machine. Without this step your + macOS disk image will only ever get larger and will not shrink even + when you delete lots of data inside macOS. + - To enable TRIM, open the Terminal application and type the + following command followed by pressing + command on the hard disk when files are deleted: - You will be prompted to enter your account's password to gain the privilege needed. Once you've entered your password and pressed <kbd>enter</kbd> the command will request confirmation in the form of two questions that require you to type <kbd>y</kbd> (for a "yes" response) followed by <kbd>enter</kbd> to confirm. If you press <kbd>enter</kbd> without first typing <kbd>y</kbd> the system will consider that a negative response as though you said "no": +``` bash +sudo trimforce enable +``` - ```plain - IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU. - Are you sure you with to proceed (y/N)? - ``` +You will be prompted to enter your account's password to gain the +privilege needed. Once you've entered your password and pressed +in the form of two questions that require you to type +response as though you said "no": - And a second confirmation once you've confirmed the previous one: +``` plain +IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU. +Are you sure you with to proceed (y/N)? +``` - ```plain - Your system will immediately reboot when this is complete. - Is this OK (y/N)? - ``` +And a second confirmation once you've confirmed the previous one: - As the last message states, your system will automatically reboot as soon as the command completes. +``` plain +Your system will immediately reboot when this is complete. +Is this OK (y/N)? +``` + +As the last message states, your system will automatically reboot as +soon as the command completes. The default macOS configuration looks like this: @@ -369,6 +385,8 @@ macos_release="catalina" particular macOS release. - For example VirtIO Network and Memory Ballooning are available in Big Sur and newer, but not previous releases. + - And VirtIO Block Media (disks) are supported/stable in Catalina + and newer. ### macOS compatibility diff --git a/build-docs b/build-docs index 7cf8e3d..83f2eab 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 7cf8e3d597a1838d3ae21a2fa36297a736f35146 +Subproject commit 83f2eab64f307de03be0f4ed5860c76f7883b7a7 diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 9a7050c..0226a81 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "September 22, 2022" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "October 21, 2022" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -335,6 +335,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]android\f[R] (Android x86) .IP \[bu] 2 +\f[V]archcraft\f[R] (Archcraft) +.IP \[bu] 2 \f[V]archlinux\f[R] (Arch Linux) .IP \[bu] 2 \f[V]arcolinux\f[R] (Arco Linux) @@ -471,23 +473,10 @@ From \f[B]macOS Utilities\f[R] Click \f[B]Disk Utility\f[R] and \f[B]Continue\f[R] .RS 2 .IP \[bu] 2 -On macOS Catalina, Big Sur & Monterey -.RS 2 -.IP \[bu] 2 -Select \f[V]Apple Inc. VirtIO Block Media\f[R] from the list and click -\f[B]Erase\f[R]. -.RE -.IP \[bu] 2 -On macOS Mojave and High Sierra -.RS 2 -.IP \[bu] 2 Select \f[V]QEMU HARDDISK Media\f[R] (\[ti]103.08GB) from the list and click \f[B]Erase\f[R]. -.RE -.RE .IP \[bu] 2 Enter a \f[V]Name:\f[R] for the disk -.RS 2 .IP \[bu] 2 If you are installing macOS Mojave or later (Catalina, Big Sur, and Monterey), choose any of the APFS options as the filesystem. @@ -516,6 +505,58 @@ Installer\f[R] On the subsequent reboots use cursor keys and enter key to select the disk you named .RE +.IP \[bu] 2 +Once you have finished installing macOS you will be presented with an +the out-of-the-box first-start wizard to configure various options and +set up your username and password +.IP \[bu] 2 +OPTIONAL: After you have concluded the out-of-the-box wizard, you may +want to enable the TRIM feature that the computer industry created for +SSD disks. +This feature in our macOS installation will allow QuickEmu to compact +(shrink) your macOS disk image whenever you delete files inside the +Virtual Machine. +Without this step your macOS disk image will only ever get larger and +will not shrink even when you delete lots of data inside macOS. +.RS 2 +.IP \[bu] 2 +To enable TRIM, open the Terminal application and type the following +command followed by pressing enter to tell macos to use the TRIM command +on the hard disk when files are deleted: +.RE +.IP +.nf +\f[C] +sudo trimforce enable +\f[R] +.fi +.PP +You will be prompted to enter your account\[cq]s password to gain the +privilege needed. +Once you\[cq]ve entered your password and pressed enter the command will +request confirmation in the form of two questions that require you to +type y (for a \[lq]yes\[rq] response) followed by enter to confirm. +If you press enter without first typing y the system will consider that +a negative response as though you said \[lq]no\[rq]: +.IP +.nf +\f[C] +IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU. +Are you sure you with to proceed (y/N)? +\f[R] +.fi +.PP +And a second confirmation once you\[cq]ve confirmed the previous one: +.IP +.nf +\f[C] +Your system will immediately reboot when this is complete. +Is this OK (y/N)? +\f[R] +.fi +.PP +As the last message states, your system will automatically reboot as +soon as the command completes. .PP The default macOS configuration looks like this: .IP @@ -568,10 +609,6 @@ Optimised by default, but no GPU acceleration is available. .IP \[bu] 2 Host CPU vendor is detected and guest CPU is optimised accordingly. .IP \[bu] 2 -VirtIO Block -Media (https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used -for the system disk where supported. -.IP \[bu] 2 VirtIO \f[V]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used for the mouse. .IP \[bu] 2 diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index c11d582..15a0b3c 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: September 22, 2022 +date: October 21, 2022 footer: quickemu header: Quickemu User Manual section: 1 @@ -259,6 +259,7 @@ with your preferred flavour. - `alma` (Alma Linux) - `alpine` (Alpine Linux) - `android` (Android x86) +- `archcraft` (Archcraft) - `archlinux` (Arch Linux) - `arcolinux` (Arco Linux) - `batocera` (Batocera) @@ -340,13 +341,9 @@ supported. - Use cursor keys and enter key to select the **macOS Base System** - From **macOS Utilities** - Click **Disk Utility** and **Continue** - - On macOS Catalina, Big Sur & Monterey - - Select `Apple Inc. VirtIO Block Media` from the list and - click **Erase**. - - On macOS Mojave and High Sierra - - Select `QEMU HARDDISK Media` (\~103.08GB) from the list - and click **Erase**. - - Enter a `Name:` for the disk + - Select `QEMU HARDDISK Media` (\~103.08GB) from the list and + click **Erase**. + - Enter a `Name:` for the disk - If you are installing macOS Mojave or later (Catalina, Big Sur, and Monterey), choose any of the APFS options as the filesystem. MacOS Extended may not work. @@ -360,6 +357,49 @@ supported. **macOS Installer** - On the subsequent reboots use cursor keys and enter key to select the disk you named +- Once you have finished installing macOS you will be presented with + an the out-of-the-box first-start wizard to configure various + options and set up your username and password +- OPTIONAL: After you have concluded the out-of-the-box wizard, you + may want to enable the TRIM feature that the computer industry + created for SSD disks. This feature in our macOS installation will + allow QuickEmu to compact (shrink) your macOS disk image whenever + you delete files inside the Virtual Machine. Without this step your + macOS disk image will only ever get larger and will not shrink even + when you delete lots of data inside macOS. + - To enable TRIM, open the Terminal application and type the + following command followed by pressing + `<kbd>`{=html}enter`</kbd>`{=html} to tell macos to use the TRIM + command on the hard disk when files are deleted: + +``` bash +sudo trimforce enable +``` + +You will be prompted to enter your account's password to gain the +privilege needed. Once you've entered your password and pressed +`<kbd>`{=html}enter`</kbd>`{=html} the command will request confirmation +in the form of two questions that require you to type +`<kbd>`{=html}y`</kbd>`{=html} (for a "yes" response) followed by +`<kbd>`{=html}enter`</kbd>`{=html} to confirm. If you press +`<kbd>`{=html}enter`</kbd>`{=html} without first typing +`<kbd>`{=html}y`</kbd>`{=html} the system will consider that a negative +response as though you said "no": + +``` plain +IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU. +Are you sure you with to proceed (y/N)? +``` + +And a second confirmation once you've confirmed the previous one: + +``` plain +Your system will immediately reboot when this is complete. +Is this OK (y/N)? +``` + +As the last message states, your system will automatically reboot as +soon as the command completes. The default macOS configuration looks like this: @@ -394,9 +434,6 @@ There are some considerations when running macOS via Quickemu. - Optimised by default, but no GPU acceleration is available. - Host CPU vendor is detected and guest CPU is optimised accordingly. - - [VirtIO Block - Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is - used for the system disk where supported. - [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for the mouse. - VirtIO Network (`virtio-net`) is supported and enabled on macOS diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index 8ff3ab6..7dc6c23 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "September 22, 2022" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "October 21, 2022" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index cdf3adb..09b9a31 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: September 22, 2022 +date: October 21, 2022 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index 6f98763..4e5fd85 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "September 22, 2022" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "October 21, 2022" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -117,6 +117,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]android\f[R] (Android x86) .IP \[bu] 2 +\f[V]archcraft\f[R] (Archcraft) +.IP \[bu] 2 \f[V]archlinux\f[R] (Arch Linux) .IP \[bu] 2 \f[V]arcolinux\f[R] (Arco Linux) @@ -253,23 +255,10 @@ From \f[B]macOS Utilities\f[R] Click \f[B]Disk Utility\f[R] and \f[B]Continue\f[R] .RS 2 .IP \[bu] 2 -On macOS Catalina, Big Sur & Monterey -.RS 2 -.IP \[bu] 2 -Select \f[V]Apple Inc. VirtIO Block Media\f[R] from the list and click -\f[B]Erase\f[R]. -.RE -.IP \[bu] 2 -On macOS Mojave and High Sierra -.RS 2 -.IP \[bu] 2 Select \f[V]QEMU HARDDISK Media\f[R] (\[ti]103.08GB) from the list and click \f[B]Erase\f[R]. -.RE -.RE .IP \[bu] 2 Enter a \f[V]Name:\f[R] for the disk -.RS 2 .IP \[bu] 2 If you are installing macOS Mojave or later (Catalina, Big Sur, and Monterey), choose any of the APFS options as the filesystem. @@ -298,6 +287,58 @@ Installer\f[R] On the subsequent reboots use cursor keys and enter key to select the disk you named .RE +.IP \[bu] 2 +Once you have finished installing macOS you will be presented with an +the out-of-the-box first-start wizard to configure various options and +set up your username and password +.IP \[bu] 2 +OPTIONAL: After you have concluded the out-of-the-box wizard, you may +want to enable the TRIM feature that the computer industry created for +SSD disks. +This feature in our macOS installation will allow QuickEmu to compact +(shrink) your macOS disk image whenever you delete files inside the +Virtual Machine. +Without this step your macOS disk image will only ever get larger and +will not shrink even when you delete lots of data inside macOS. +.RS 2 +.IP \[bu] 2 +To enable TRIM, open the Terminal application and type the following +command followed by pressing enter to tell macos to use the TRIM command +on the hard disk when files are deleted: +.RE +.IP +.nf +\f[C] +sudo trimforce enable +\f[R] +.fi +.PP +You will be prompted to enter your account\[cq]s password to gain the +privilege needed. +Once you\[cq]ve entered your password and pressed enter the command will +request confirmation in the form of two questions that require you to +type y (for a \[lq]yes\[rq] response) followed by enter to confirm. +If you press enter without first typing y the system will consider that +a negative response as though you said \[lq]no\[rq]: +.IP +.nf +\f[C] +IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU. +Are you sure you with to proceed (y/N)? +\f[R] +.fi +.PP +And a second confirmation once you\[cq]ve confirmed the previous one: +.IP +.nf +\f[C] +Your system will immediately reboot when this is complete. +Is this OK (y/N)? +\f[R] +.fi +.PP +As the last message states, your system will automatically reboot as +soon as the command completes. .PP The default macOS configuration looks like this: .IP @@ -350,10 +391,6 @@ Optimised by default, but no GPU acceleration is available. .IP \[bu] 2 Host CPU vendor is detected and guest CPU is optimised accordingly. .IP \[bu] 2 -VirtIO Block -Media (https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used -for the system disk where supported. -.IP \[bu] 2 VirtIO \f[V]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used for the mouse. .IP \[bu] 2 diff --git a/docs/quickget.1.md b/docs/quickget.1.md index e237578..c307883 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: September 22, 2022 +date: October 21, 2022 footer: quickget header: Quickget User Manual section: 1 @@ -91,6 +91,7 @@ with your preferred flavour. - `alma` (Alma Linux) - `alpine` (Alpine Linux) - `android` (Android x86) +- `archcraft` (Archcraft) - `archlinux` (Arch Linux) - `arcolinux` (Arco Linux) - `batocera` (Batocera) @@ -172,13 +173,9 @@ supported. - Use cursor keys and enter key to select the **macOS Base System** - From **macOS Utilities** - Click **Disk Utility** and **Continue** - - On macOS Catalina, Big Sur & Monterey - - Select `Apple Inc. VirtIO Block Media` from the list and - click **Erase**. - - On macOS Mojave and High Sierra - - Select `QEMU HARDDISK Media` (\~103.08GB) from the list - and click **Erase**. - - Enter a `Name:` for the disk + - Select `QEMU HARDDISK Media` (\~103.08GB) from the list and + click **Erase**. + - Enter a `Name:` for the disk - If you are installing macOS Mojave or later (Catalina, Big Sur, and Monterey), choose any of the APFS options as the filesystem. MacOS Extended may not work. @@ -192,6 +189,49 @@ supported. **macOS Installer** - On the subsequent reboots use cursor keys and enter key to select the disk you named +- Once you have finished installing macOS you will be presented with + an the out-of-the-box first-start wizard to configure various + options and set up your username and password +- OPTIONAL: After you have concluded the out-of-the-box wizard, you + may want to enable the TRIM feature that the computer industry + created for SSD disks. This feature in our macOS installation will + allow QuickEmu to compact (shrink) your macOS disk image whenever + you delete files inside the Virtual Machine. Without this step your + macOS disk image will only ever get larger and will not shrink even + when you delete lots of data inside macOS. + - To enable TRIM, open the Terminal application and type the + following command followed by pressing + `<kbd>`{=html}enter`</kbd>`{=html} to tell macos to use the TRIM + command on the hard disk when files are deleted: + +``` bash +sudo trimforce enable +``` + +You will be prompted to enter your account's password to gain the +privilege needed. Once you've entered your password and pressed +`<kbd>`{=html}enter`</kbd>`{=html} the command will request confirmation +in the form of two questions that require you to type +`<kbd>`{=html}y`</kbd>`{=html} (for a "yes" response) followed by +`<kbd>`{=html}enter`</kbd>`{=html} to confirm. If you press +`<kbd>`{=html}enter`</kbd>`{=html} without first typing +`<kbd>`{=html}y`</kbd>`{=html} the system will consider that a negative +response as though you said "no": + +``` plain +IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU. +Are you sure you with to proceed (y/N)? +``` + +And a second confirmation once you've confirmed the previous one: + +``` plain +Your system will immediately reboot when this is complete. +Is this OK (y/N)? +``` + +As the last message states, your system will automatically reboot as +soon as the command completes. The default macOS configuration looks like this: @@ -226,9 +266,6 @@ There are some considerations when running macOS via Quickemu. - Optimised by default, but no GPU acceleration is available. - Host CPU vendor is detected and guest CPU is optimised accordingly. - - [VirtIO Block - Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is - used for the system disk where supported. - [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for the mouse. - VirtIO Network (`virtio-net`) is supported and enabled on macOS From 813292e3051d5268bdd6804c8918b5ee41e158a5 Mon Sep 17 00:00:00 2001 From: DimitrisPa <pappasdimitris98@gmail.com> Date: Sat, 22 Oct 2022 18:31:12 +0300 Subject: [PATCH 128/189] OpenBSD 7.2 released --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 42b7782..49c6e7e 100755 --- a/quickget +++ b/quickget @@ -427,7 +427,7 @@ function editions_nixos(){ } function releases_openbsd(){ - echo 6.8 6.9 7.0 7.1 + echo 6.8 6.9 7.0 7.1 7.2 } function releases_opensuse(){ From 61772a5b89fe8c2ae932dbbea1a820ac3d954c08 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Sat, 22 Oct 2022 21:30:46 +0100 Subject: [PATCH 129/189] FreeBSD 13.1 released Release avaiability made dynamic --- quickget | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quickget b/quickget index 49c6e7e..5291611 100755 --- a/quickget +++ b/quickget @@ -321,7 +321,8 @@ function editions_fedora() { } function releases_freebsd(){ - echo 12.3 13.0 + local FBSD_RELEASES=$(curl -sL https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/|grep -e 'class="link"' |grep -v '\.\.'|cut -d\" -f4|tr -d '/') + echo ${FBSD_RELEASES} } function editions_freebsd(){ From 7dee1a37db6a1476a129af92b39fd3ba5fd74f50 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philclifford@users.noreply.github.com> Date: Sun, 20 Nov 2022 17:56:47 +0000 Subject: [PATCH 130/189] make OpenBSD release list dynamic (#574) * make OpenBSD release list dynamic * Regenerated docs for 4.4 Release README and man pages regenerated incorporating documentation updates from Release 4.4 * FreeBSD 13.1 released Release avaiability made dynamic --- quickget | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) mode change 100755 => 100644 quickget diff --git a/quickget b/quickget old mode 100755 new mode 100644 index 5291611..9d729a2 --- a/quickget +++ b/quickget @@ -428,7 +428,8 @@ function editions_nixos(){ } function releases_openbsd(){ - echo 6.8 6.9 7.0 7.1 7.2 + local OBSD_RELEASES=$(curl -sL https://mirror.leaseweb.com/pub/OpenBSD/|grep -e '6\.[8-9]/' -e '[7-9]\.'|cut -d\" -f4|tr -d '/') + echo ${OBSD_RELEASES} } function releases_opensuse(){ From 19248f783b2129969a4e7d2b94a19ed4c344cdfd Mon Sep 17 00:00:00 2001 From: szorfein <szorfein@protonmail.com> Date: Wed, 9 Nov 2022 15:00:25 +0000 Subject: [PATCH 131/189] links for base --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index 9d729a2..6b4f009 100644 --- a/quickget +++ b/quickget @@ -1487,8 +1487,8 @@ function get_void() { DATE=$(wget -q -O- "${URL}/sha256sum.txt" | head -n1 | cut -d'.' -f1 | cut -d'-' -f4) case ${EDITION} in - glibc) ISO="void-live-x86_64-${DATE}.iso";; - musl) ISO="void-live-x86_64-musl-${DATE}.iso";; + glibc) ISO="void-live-x86_64-${DATE}-base.iso";; + musl) ISO="void-live-x86_64-musl-${DATE}-base.iso";; xfce-glibc) ISO="void-live-x86_64-${DATE}-xfce.iso";; xfce-musl) ISO="void-live-x86_64-musl-${DATE}-xfce.iso";; esac From c32e290ba3f4785d89bb4bd12b18fb5f2fbda855 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Tue, 15 Nov 2022 18:48:12 +0000 Subject: [PATCH 132/189] Alma released 8.7 and 9.1-beta --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 6b4f009..a6ec784 100644 --- a/quickget +++ b/quickget @@ -215,7 +215,7 @@ function os_support() { } function releases_alma() { - echo 8.6 9.0 + echo 8.6 8.7 9.0 9.1-beta-1 } function editions_alma() { From 116923d7a8af8b7a58cc0c4f5378a90f29392f81 Mon Sep 17 00:00:00 2001 From: interorbital <106621171+interorbital@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:56:09 +0200 Subject: [PATCH 133/189] added fedora 37 --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 quickget diff --git a/quickget b/quickget old mode 100644 new mode 100755 index a6ec784..f72498a --- a/quickget +++ b/quickget @@ -300,7 +300,7 @@ function releases_endeavouros() { } function releases_fedora() { - echo 33 34 35 36 + echo 33 34 35 36 37 } function releases_batocera() { From 41b1e11cfea9e5d4f2da7146e64de1f60bd564b9 Mon Sep 17 00:00:00 2001 From: interorbital <106621171+interorbital@users.noreply.github.com> Date: Sun, 20 Nov 2022 21:00:27 +0200 Subject: [PATCH 134/189] Adding ubuntu unity (#584) * ubuntu unity * hiding previous releases from echo output * displaying ubuntu-unity releases more effectively * added ubuntu-unity to README * switch from if-not to else * remove redundant whitespace * added fedora 37 * removed fedora 37 * removed LTS_SUPPORT definitions --- README.md | 1 + quickget | 96 +++++++++++++++++++++++++++++++------------------------ 2 files changed, 55 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 8955477..c6866cf 100644 --- a/README.md +++ b/README.md @@ -225,6 +225,7 @@ with your preferred flavour. - `ubuntukylin` (Ubuntu Kylin) - `ubuntu-mate` (Ubuntu MATE) - `ubuntustudio` (Ubuntu Studio) +- `ubuntu-unity` (Ubuntu Unity) - `ubuntu` (Ubuntu) - `xubuntu` (Xubuntu) diff --git a/quickget b/quickget index f72498a..4c1988d 100755 --- a/quickget +++ b/quickget @@ -64,6 +64,7 @@ function pretty_name() { ubuntukylin) PRETTY_NAME="Ubuntu Kylin";; ubuntu-mate) PRETTY_NAME="Ubuntu MATE";; ubuntustudio) PRETTY_NAME="Ubuntu Studio";; + ubuntu-unity) PRETTY_NAME="Ubuntu Unity";; void) PRETTY_NAME="Void Linux";; zorin) PRETTY_NAME="Zorin OS";; *) PRETTY_NAME="${SIMPLE_NAME^}";; @@ -208,6 +209,7 @@ function os_support() { ubuntukylin \ ubuntu-mate \ ubuntustudio \ + ubuntu-unity \ void \ windows \ xubuntu \ @@ -492,52 +494,62 @@ function releases_ubuntu() { #after 16.04 LTS_SUPPORT="${LTS_SUPPORT/14.04 16.04 /}" ;; + ubuntu-unity) + INTERIM_SUPPORT="${INTERIM_SUPPORT}" + ;; esac INTERIM_SUPPORT="${INTERIM_SUPPORT/22.10 /}" - echo ${LTS_SUPPORT} \ - ${INTERIM_SUPPORT} \ - jammy-daily \ - 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 \ - ; - + if [ "${OS}" == "ubuntu-unity" ]; then + echo ${INTERIM_SUPPORT} \ + daily-live \ + daily-canary \ + ; + + else + echo ${LTS_SUPPORT} \ + ${INTERIM_SUPPORT} \ + jammy-daily \ + 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 \ + ; + fi } function releases_void() { From 050d8d740c0f55a59c06db791b0266077a51aff4 Mon Sep 17 00:00:00 2001 From: Yannick Mauray <yannick.mauray@gmail.com> Date: Tue, 22 Nov 2022 10:03:29 +0100 Subject: [PATCH 135/189] fix : update for CachyOS --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index 4c1988d..1abb77f 100755 --- a/quickget +++ b/quickget @@ -253,11 +253,11 @@ function editions_arcolinux() { } function releases_cachyos() { - echo 220731 + echo 220919 221023 } function editions_cachyos() { - echo kde gnome xfce + echo kde gnome } function releases_centos-stream() { From 24c01a0d18a1d0a6013b482d843b71a28bf983ea Mon Sep 17 00:00:00 2001 From: DimitrisPa <pappasdimitris98@gmail.com> Date: Thu, 1 Dec 2022 14:48:09 +0200 Subject: [PATCH 136/189] NixOS-22.11 released --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 1abb77f..e627da6 100755 --- a/quickget +++ b/quickget @@ -422,7 +422,7 @@ function releases_netbsd() { } function releases_nixos(){ - echo 21.05 21.11 22.05 + echo 21.05 21.11 22.05 22.11 } function editions_nixos(){ From 332f5b59f902e6bc866cdf5bd0b01cb348322183 Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Mon, 17 Oct 2022 20:22:46 +0100 Subject: [PATCH 137/189] Revert "Defaults: Switch default disk from virtio-blk-pci to virtio-scsi-pci" This reverts commit fb8deb10e8dab766696c173fd10a58d0749841ab. --- quickemu | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/quickemu b/quickemu index b9440c8..943d751 100755 --- a/quickemu +++ b/quickemu @@ -1104,9 +1104,8 @@ function vm_boot() { else # shellcheck disable=SC2054,SC2206 - args+=(-device virtio-scsi-pci,id=scsi0 - -device scsi-hd,drive=SystemDisk,bus=scsi0.0,lun=0,rotation_rate=1 - -drive id=SystemDisk,if=none,format=qcow2,discard=unmap,file="${disk_img}" ${STATUS_QUO}) + args+=(-device virtio-blk-pci,drive=SystemDisk + -drive id=SystemDisk,if=none,format=qcow2,file="${disk_img}" ${STATUS_QUO}) fi # https://wiki.qemu.org/Documentation/9psetup From 9a7ee718047aece5b7600307e33dcc88251a9921 Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Mon, 17 Oct 2022 20:25:42 +0100 Subject: [PATCH 138/189] Revert "macOS: swap disk controller from virtio-blk-pci to ahci" This reverts commit 881adb289a820e0b72ee5f2a81ae3461b96e07c8. --- quickemu | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/quickemu b/quickemu index 943d751..fb4dd53 100755 --- a/quickemu +++ b/quickemu @@ -542,13 +542,13 @@ function vm_boot() { case ${macos_release} in catalina) BALLOON="" - MAC_DISK_DEV="ide-hd,bus=ahci.2" + MAC_DISK_DEV="virtio-blk-pci" NET_DEVICE="vmxnet3" USB_HOST_PASSTHROUGH_CONTROLLER="usb-ehci" ;; big-sur|monterey|ventura) BALLOON="-device virtio-balloon" - MAC_DISK_DEV="ide-hd,bus=ahci.2" + MAC_DISK_DEV="virtio-blk-pci" NET_DEVICE="virtio-net" USB_HOST_PASSTHROUGH_CONTROLLER="nec-usb-xhci" GUEST_TWEAKS="${GUEST_TWEAKS} -global nec-usb-xhci.msi=off" @@ -1071,19 +1071,18 @@ function vm_boot() { if [ "${guest_os}" == "macos" ]; then # shellcheck disable=SC2054 args+=(-device ahci,id=ahci - -device ide-hd,bus=ahci.0,drive=BootLoader,bootindex=0,rotation_rate=1 - -drive id=BootLoader,if=none,format=qcow2,discard=unmap,file="${MAC_BOOTLOADER}") + -device ide-hd,bus=ahci.0,drive=BootLoader,bootindex=0 + -drive id=BootLoader,if=none,format=qcow2,file="${MAC_BOOTLOADER}") if [ -n "${img}" ]; then # shellcheck disable=SC2054 - args+=(-device ide-hd,bus=ahci.1,drive=RecoveryImage,rotation_rate=1 - -drive id=RecoveryImage,if=none,format=raw,discard=unmap,file="${img}") + args+=(-device ide-hd,bus=ahci.1,drive=RecoveryImage + -drive id=RecoveryImage,if=none,format=raw,file="${img}") fi # shellcheck disable=SC2054,SC2206 - args+=(-device ${MAC_DISK_DEV},drive=SystemDisk,rotation_rate=1 - -drive id=SystemDisk,if=none,format=qcow2,discard=unmap,file="${disk_img}" ${STATUS_QUO}) - + 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 From 28b549c886009eaf3b37897755b2db74d386eab8 Mon Sep 17 00:00:00 2001 From: Dani Llewellyn <diddledani@ubuntu.com> Date: Mon, 17 Oct 2022 20:48:31 +0100 Subject: [PATCH 139/189] Revert "README.md: drop mention of VirtIO Block Media in macOS docs" This reverts commit 6f3bc41750b0787adc4078b60bdf2002be0bb252. --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index c6866cf..c282643 100644 --- a/README.md +++ b/README.md @@ -405,6 +405,9 @@ There are some considerations when running macOS via Quickemu. - Optimised by default, but no GPU acceleration is available. - Host CPU vendor is detected and guest CPU is optimised accordingly. + - [VirtIO Block + Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is + used for the system disk where supported. - [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for the mouse. - VirtIO Network (`virtio-net`) is supported and enabled on macOS From d13509b5a7dcc175c2eb5fc8620237734ce88a2c Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Sun, 11 Dec 2022 20:47:44 +0000 Subject: [PATCH 140/189] Bump version to 4.5 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index fb4dd53..31471ea 100755 --- a/quickemu +++ b/quickemu @@ -1498,7 +1498,7 @@ EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="4.4" +readonly VERSION="4.5" # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) From c3d21b902944961fb144d5b8c27831522e0a0ca1 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Sun, 11 Dec 2022 22:24:36 +0000 Subject: [PATCH 141/189] docs: Regenerated man pages for 4.5 --- build-docs | 2 +- docs/quickemu.1 | 8 +++++++- docs/quickemu.1.md | 6 +++++- docs/quickemu_conf.1 | 2 +- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 8 +++++++- docs/quickget.1.md | 6 +++++- 7 files changed, 27 insertions(+), 7 deletions(-) diff --git a/build-docs b/build-docs index 83f2eab..297a1d4 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 83f2eab64f307de03be0f4ed5860c76f7883b7a7 +Subproject commit 297a1d4403ca0ddda062fdd086f4a00c8357452e diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 0226a81..9ee81fa 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "October 21, 2022" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "December 11, 2022" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -324,6 +324,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]ubuntu\f[R] (Ubuntu) .IP \[bu] 2 +\f[V]ubuntu-unity\f[R] (Ubuntu Unity) +.IP \[bu] 2 \f[V]xubuntu\f[R] (Xubuntu) .SS Other Operating Systems .PP @@ -609,6 +611,10 @@ Optimised by default, but no GPU acceleration is available. .IP \[bu] 2 Host CPU vendor is detected and guest CPU is optimised accordingly. .IP \[bu] 2 +VirtIO Block +Media (https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used +for the system disk where supported. +.IP \[bu] 2 VirtIO \f[V]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used for the mouse. .IP \[bu] 2 diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 15a0b3c..a26e3d8 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: October 21, 2022 +date: December 11, 2022 footer: quickemu header: Quickemu User Manual section: 1 @@ -250,6 +250,7 @@ with your preferred flavour. - `ubuntu-mate` (Ubuntu MATE) - `ubuntustudio` (Ubuntu Studio) - `ubuntu` (Ubuntu) +- `ubuntu-unity` (Ubuntu Unity) - `xubuntu` (Xubuntu) ## Other Operating Systems @@ -434,6 +435,9 @@ There are some considerations when running macOS via Quickemu. - Optimised by default, but no GPU acceleration is available. - Host CPU vendor is detected and guest CPU is optimised accordingly. + - [VirtIO Block + Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is + used for the system disk where supported. - [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for the mouse. - VirtIO Network (`virtio-net`) is supported and enabled on macOS diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index 7dc6c23..ee910b1 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "October 21, 2022" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "December 11, 2022" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index 09b9a31..2305dd5 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: October 21, 2022 +date: December 11, 2022 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index 4e5fd85..bf6d0bb 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "October 21, 2022" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "December 11, 2022" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -106,6 +106,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]ubuntu\f[R] (Ubuntu) .IP \[bu] 2 +\f[V]ubuntu-unity\f[R] (Ubuntu Unity) +.IP \[bu] 2 \f[V]xubuntu\f[R] (Xubuntu) .SS Other Operating Systems .PP @@ -391,6 +393,10 @@ Optimised by default, but no GPU acceleration is available. .IP \[bu] 2 Host CPU vendor is detected and guest CPU is optimised accordingly. .IP \[bu] 2 +VirtIO Block +Media (https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used +for the system disk where supported. +.IP \[bu] 2 VirtIO \f[V]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used for the mouse. .IP \[bu] 2 diff --git a/docs/quickget.1.md b/docs/quickget.1.md index c307883..50a5e35 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: October 21, 2022 +date: December 11, 2022 footer: quickget header: Quickget User Manual section: 1 @@ -82,6 +82,7 @@ with your preferred flavour. - `ubuntu-mate` (Ubuntu MATE) - `ubuntustudio` (Ubuntu Studio) - `ubuntu` (Ubuntu) +- `ubuntu-unity` (Ubuntu Unity) - `xubuntu` (Xubuntu) ## Other Operating Systems @@ -266,6 +267,9 @@ There are some considerations when running macOS via Quickemu. - Optimised by default, but no GPU acceleration is available. - Host CPU vendor is detected and guest CPU is optimised accordingly. + - [VirtIO Block + Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is + used for the system disk where supported. - [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for the mouse. - VirtIO Network (`virtio-net`) is supported and enabled on macOS From 23982c3f9da2c99d3fae333a0c6e89677bded499 Mon Sep 17 00:00:00 2001 From: Donny Kurnia <donnykurnia@gmail.com> Date: Wed, 14 Dec 2022 17:20:15 +0700 Subject: [PATCH 142/189] use long hv-* attributes for qemu 6.0.0 --- quickemu | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 31471ea..3cb2e87 100755 --- a/quickemu +++ b/quickemu @@ -568,7 +568,11 @@ function vm_boot() { fi ;; windows) - CPU="-cpu host,kvm=on,+hypervisor,+invtsc,l3-cache=on,migratable=no,hv_passthrough" + if [ "${QEMU_VER_SHORT}" -gt 60 ]; then + CPU="-cpu host,kvm=on,+hypervisor,+invtsc,l3-cache=on,migratable=no,hv_passthrough" + else + CPU="-cpu host,kvm=on,+hypervisor,+invtsc,l3-cache=on,migratable=no,hv_frequencies,kvm_pv_unhalt,hv_reenlightenment,hv_relaxed,hv_spinlocks=8191,hv_stimer,hv_synic,hv_time,hv_vapic,hv_vendor_id=1234567890ab,hv_vpindex" + fi if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then CPU="${CPU},topoext" fi From 9c9dcf65c0c3f8580c96465d4a8aa83545f9c384 Mon Sep 17 00:00:00 2001 From: DimitrisPa <pappasdimitris98@gmail.com> Date: Mon, 19 Dec 2022 15:25:30 +0200 Subject: [PATCH 143/189] Linux Mint 22.1 released --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index e627da6..2ec5584 100755 --- a/quickget +++ b/quickget @@ -377,7 +377,7 @@ function releases_kolibrios() { } function releases_linuxmint(){ - echo 20.2 20.3 21 + echo 20.2 20.3 21 21.1 } function editions_linuxmint(){ From 4b1bb51c5554d6f8f9abc33b25725f7b8a41f2ee Mon Sep 17 00:00:00 2001 From: George Sokianos <walkero@gmail.com> Date: Fri, 23 Dec 2022 20:59:49 +0000 Subject: [PATCH 144/189] Added Haiku r1beta4 --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 2ec5584..3b5c7ad 100755 --- a/quickget +++ b/quickget @@ -357,7 +357,7 @@ function editions_ghostbsd() { } function releases_haiku() { - echo r1beta3 + echo r1beta3 r1beta4 } function editions_haiku() { From e64f54ad52cfa1fc0799b2d3d808f2863e00e9f0 Mon Sep 17 00:00:00 2001 From: goosepirate <71612256+goosepirate@users.noreply.github.com> Date: Sat, 24 Dec 2022 00:00:40 -0500 Subject: [PATCH 145/189] Allocate 32G disk_size to popos --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 3b5c7ad..c3e6276 100755 --- a/quickget +++ b/quickget @@ -779,7 +779,7 @@ EOF # OS specific tweaks case ${OS} in - alma|centos-stream|oraclelinux|rockylinux) + alma|centos-stream|oraclelinux|popos|rockylinux) echo "disk_size=\"32G\"" >> "${CONF_FILE}";; batocera) echo "disk_size=\"8G\"" >> "${CONF_FILE}";; From d2a7eff80e2000d75a807ce9da28f7da90126d54 Mon Sep 17 00:00:00 2001 From: TenTypekMatus <119664251+TenTypekMatus@users.noreply.github.com> Date: Thu, 29 Dec 2022 11:46:17 +0100 Subject: [PATCH 146/189] Update quickget --- quickget | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/quickget b/quickget index c3e6276..1f810dd 100755 --- a/quickget +++ b/quickget @@ -67,6 +67,7 @@ function pretty_name() { ubuntu-unity) PRETTY_NAME="Ubuntu Unity";; void) PRETTY_NAME="Void Linux";; zorin) PRETTY_NAME="Zorin OS";; + truenas) PRETTY_NAME="TrueNAS";; *) PRETTY_NAME="${SIMPLE_NAME^}";; esac echo "${PRETTY_NAME}" @@ -204,6 +205,7 @@ function os_support() { slackware \ solus \ tails \ + truenas \ ubuntu \ ubuntu-budgie \ ubuntukylin \ @@ -480,6 +482,14 @@ function releases_tails() { echo stable } +function editions_truenas() { + echo core scale # enterprise is proprietary and paid +} + +function releases_truenas() { + +} + function releases_ubuntu() { local LTS_SUPPORT="14.04 16.04 18.04 20.04 22.04" local INTERIM_SUPPORT="22.10" From 66c5ff86b73c1548a8b8635f4942378d545c6fe3 Mon Sep 17 00:00:00 2001 From: Matus Mastena <Shadiness9530@proton.me> Date: Thu, 29 Dec 2022 12:29:32 +0100 Subject: [PATCH 147/189] Added initial support for TrueNAS --- quickget | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/quickget b/quickget index 1f810dd..092a339 100755 --- a/quickget +++ b/quickget @@ -487,7 +487,7 @@ function editions_truenas() { } function releases_truenas() { - + echo 22.12 13.0 } function releases_ubuntu() { @@ -759,6 +759,9 @@ function make_vm_config() { reactos) GUEST="reactos" IMAGE_TYPE="iso";; + truenas) + GUEST="truenas" + IMAGE_TYPE="iso";; windows) GUEST="windows" IMAGE_TYPE="iso";; @@ -809,6 +812,13 @@ EOF echo "disk_size=\"2G\"" >> "${CONF_FILE}" echo "ram=\"128M\"" >> "${CONF_FILE}" ;; + truenas) + echo + echo "boot=\"legacy\"" >> "${CONF_FILE}" + echo "bootdrive_size=\"5G\"" >> "${CONF_FILE}" # boot drive + echo "1stdrive_size=\"20G\"" >> "${CONF_FILE}" # for testing + echo "2nddrive_size=\"20G\"" >> "${CONF_FILE}" # again, for testing + ;; zorin) case ${EDITION} in education64|edulite64) @@ -1453,6 +1463,18 @@ function get_tails() { echo "${URL} ${HASH}" } +function get_truenas() { + local ISO="" + local URL="" + + if [[ "${RELEASE}" == "13.0"* ]] && [ "${OS}" == "CORE" ]; then + URL="$(wget https://download.freenas.org/13.0/STABLE/U3.1/x64/${OS}.iso)" + + elif [[ "${RELEASE}" == "22.12"]] && [ "${OS}" == "SCALE"]; then + URL="$(https://download.truenas.com/TrueNAS-SCALE-Bluefin/${RELEASE}.0/TrueNAS-${OS}-22.12.0.iso)" + fi +} + function get_ubuntu() { local ISO="" local HASH="" From b97ae012439ea7be7f39b33d9afd90560e0b20cc Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 23 Jan 2023 10:36:29 +0000 Subject: [PATCH 148/189] Fix syntax error --- quickget | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/quickget b/quickget index 092a339..99cfb11 100755 --- a/quickget +++ b/quickget @@ -1468,10 +1468,9 @@ function get_truenas() { local URL="" if [[ "${RELEASE}" == "13.0"* ]] && [ "${OS}" == "CORE" ]; then - URL="$(wget https://download.freenas.org/13.0/STABLE/U3.1/x64/${OS}.iso)" - - elif [[ "${RELEASE}" == "22.12"]] && [ "${OS}" == "SCALE"]; then - URL="$(https://download.truenas.com/TrueNAS-SCALE-Bluefin/${RELEASE}.0/TrueNAS-${OS}-22.12.0.iso)" + URL="$(wget https://download.freenas.org/13.0/STABLE/U3.1/x64/${OS}.iso)" + elif [[ "${RELEASE}" == "22.12"]] && [ "${OS}" == "SCALE" ]; then + URL="$(https://download.truenas.com/TrueNAS-SCALE-Bluefin/${RELEASE}.0/TrueNAS-${OS}-22.12.0.iso)" fi } From b1fc5373326c90e8b6b9e6da5fda71abfde358f5 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 23 Jan 2023 10:36:43 +0000 Subject: [PATCH 149/189] White space clean up --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index 99cfb11..d016c86 100755 --- a/quickget +++ b/quickget @@ -516,7 +516,7 @@ function releases_ubuntu() { daily-live \ daily-canary \ ; - + else echo ${LTS_SUPPORT} \ ${INTERIM_SUPPORT} \ @@ -813,7 +813,7 @@ EOF echo "ram=\"128M\"" >> "${CONF_FILE}" ;; truenas) - echo + echo echo "boot=\"legacy\"" >> "${CONF_FILE}" echo "bootdrive_size=\"5G\"" >> "${CONF_FILE}" # boot drive echo "1stdrive_size=\"20G\"" >> "${CONF_FILE}" # for testing From ce38ebdada58165c70552bb33e81240d53a86491 Mon Sep 17 00:00:00 2001 From: Ryan Barth <ryan@barth.tech> Date: Wed, 11 Jan 2023 23:10:05 -0800 Subject: [PATCH 150/189] add endeavouros releases up to 22_12 --- quickget | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/quickget b/quickget index d016c86..b33cb46 100755 --- a/quickget +++ b/quickget @@ -299,8 +299,13 @@ function releases_elementary() { function releases_endeavouros() { echo apollo_22_1 \ + artemis-22_6 \ + artemis_neo_22_7 \ + artemis_neo_22_8 \ + artemis_nova_22_9 \ atlantis-21_4 \ - atlantis_neo-21_5 + atlantis_neo-21_5 \ + cassini_22_12 } function releases_fedora() { From f97ceeabe97c07ab9db0759df74ce962b7f3ea64 Mon Sep 17 00:00:00 2001 From: Luca Weiss <luca@z3ntu.xyz> Date: Sat, 21 Jan 2023 13:16:45 +0100 Subject: [PATCH 151/189] Add Mageia --- docs/quickemu.1 | 2 ++ docs/quickemu.1.md | 1 + docs/quickget.1 | 2 ++ docs/quickget.1.md | 1 + quickget | 17 +++++++++++++++++ 5 files changed, 23 insertions(+) diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 9ee81fa..df61909 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -385,6 +385,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]lmde\f[R] (Linux Mint Debian Edition) .IP \[bu] 2 +\f[V]mageia\f[R] (Mageia) +.IP \[bu] 2 \f[V]manjaro\f[R] (Manjaro) .IP \[bu] 2 \f[V]mxlinux\f[R] (MX Linux) diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index a26e3d8..5e5f548 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -284,6 +284,7 @@ with your preferred flavour. - `kolibrios` (KolibriOS) - `linuxmint` (Linux Mint) - `lmde` (Linux Mint Debian Edition) +- `mageia` (Mageia) - `manjaro` (Manjaro) - `mxlinux` (MX Linux) - `netboot` (netboot.xyz) diff --git a/docs/quickget.1 b/docs/quickget.1 index bf6d0bb..b9171ea 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -167,6 +167,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]lmde\f[R] (Linux Mint Debian Edition) .IP \[bu] 2 +\f[V]mageia\f[R] (Mageia) +.IP \[bu] 2 \f[V]manjaro\f[R] (Manjaro) .IP \[bu] 2 \f[V]mxlinux\f[R] (MX Linux) diff --git a/docs/quickget.1.md b/docs/quickget.1.md index 50a5e35..140644e 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -116,6 +116,7 @@ with your preferred flavour. - `kolibrios` (KolibriOS) - `linuxmint` (Linux Mint) - `lmde` (Linux Mint Debian Edition) +- `mageia` (Mageia) - `manjaro` (Manjaro) - `mxlinux` (MX Linux) - `netboot` (netboot.xyz) diff --git a/quickget b/quickget index b33cb46..9f40cbf 100755 --- a/quickget +++ b/quickget @@ -49,6 +49,7 @@ function pretty_name() { kolibrios) PRETTY_NAME="KolibriOS";; linuxmint) PRETTY_NAME="Linux Mint";; lmde) PRETTY_NAME="Linux Mint Debian Edition";; + mageia) PRETTY_NAME="Mageia";; mxlinux) PRETTY_NAME="MX Linux";; netboot) PRETTY_NAME="netboot.xyz";; netbsd) PRETTY_NAME="NetBSD";; @@ -189,6 +190,7 @@ function os_support() { kubuntu \ linuxmint \ lmde \ + mageia \ manjaro \ mxlinux \ netboot \ @@ -398,6 +400,14 @@ function releases_lmde(){ echo 5 } +function releases_mageia(){ + echo 8 +} + +function editions_mageia(){ + echo Plasma GNOME Xfce +} + function releases_mxlinux(){ echo 21.2.1 } @@ -1303,6 +1313,13 @@ function get_macos() { make_vm_config RecoveryImage.img } +function get_mageia() { + local EDITION="${1:-}" + local ISO=$(wget -q https://www.mageia.org/en/downloads/get/?q="Mageia-${RELEASE}-Live-${EDITION}-x86_64.iso" -O- | grep 'click here'| grep -o 'href=.*\.iso'|cut -d\" -f2) + local HASH=$(wget -q -O- "${ISO}.sha512" | cut -d' ' -f1) + echo "${ISO} ${HASH}" +} + function get_manjaro() { local HASH="" local ISO="" From 66703ddd6c5431fe1772ed98bbe392a9bdeafdfe Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 23 Jan 2023 10:47:14 +0000 Subject: [PATCH 152/189] Fix more syntax errors in TrueNAS function --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index d016c86..d1888f3 100755 --- a/quickget +++ b/quickget @@ -1467,9 +1467,9 @@ function get_truenas() { local ISO="" local URL="" - if [[ "${RELEASE}" == "13.0"* ]] && [ "${OS}" == "CORE" ]; then + if [ "${RELEASE}" == "13.0" ] && [ "${OS}" == "CORE" ]; then URL="$(wget https://download.freenas.org/13.0/STABLE/U3.1/x64/${OS}.iso)" - elif [[ "${RELEASE}" == "22.12"]] && [ "${OS}" == "SCALE" ]; then + elif [ "${RELEASE}" == "22.12" ] && [ "${OS}" == "SCALE" ]; then URL="$(https://download.truenas.com/TrueNAS-SCALE-Bluefin/${RELEASE}.0/TrueNAS-${OS}-22.12.0.iso)" fi } From 809ad68fd868cf7e8d203cc91474c9d076f96282 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 23 Jan 2023 11:00:28 +0000 Subject: [PATCH 153/189] Acknowledgement that Windows downloads are not working automatically #6123 We'll investigate more robust solution to this issue. --- quickget | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quickget b/quickget index e125661..d3c507e 100755 --- a/quickget +++ b/quickget @@ -1924,7 +1924,8 @@ function get_windows() { MS_BASE_URL="https://software.download.prss.microsoft.com/" if [[ ! ${DOWNLOAD_URL} =~ ^${MS_BASE_URL} ]]; then - echo "Download URL not leading to Microsoft CDN" + echo "Download URL (${DOWNLOAD_URL}) not leading to Microsoft CDN" + echo "Please download a Windows .ISO manaully and configure quickemu accordingly" exit 1 fi From 75c80d89fd7c0146747a3ea9c7a766b9a3204a36 Mon Sep 17 00:00:00 2001 From: Alan Pope <alan@popey.com> Date: Tue, 31 Jan 2023 17:21:36 +0000 Subject: [PATCH 154/189] Add elementary 7.0 Hopefully I did this right. I tested locally, and it appears to download the 7.0 ISO correctly. --- quickget | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index d3c507e..ffe0c1b 100755 --- a/quickget +++ b/quickget @@ -296,7 +296,7 @@ function releases_dragonflybsd() { } function releases_elementary() { - echo 6.1 + echo 6.1 7.0 } function releases_endeavouros() { @@ -1067,7 +1067,14 @@ function get_dragonflybsd() { function get_elementary() { local HASH="" - local ISO="elementaryos-${RELEASE}-stable.20211218-rc.iso" + case ${RELEASE} in + 6.2) + local ISO="elementaryos-${RELEASE}-stable.20211218-rc.iso" + ;; + 7.0) + local ISO="elementaryos-${RELEASE}-stable.20230129rc.iso" + ;; + esac local URL="https://ams3.dl.elementary.io/download" echo "${URL}/$(date +%s | base64)/${ISO} ${HASH}" } From b46aca69c95a074f37d7ae9aea36c46623fc4cb9 Mon Sep 17 00:00:00 2001 From: hi-phile <510finn@gmail.com> Date: Wed, 25 Jan 2023 18:47:15 -0800 Subject: [PATCH 155/189] Added support for RebornOS in quickget Added support for RebornOS, tested and working. --- quickget | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/quickget b/quickget index ffe0c1b..38a1d30 100755 --- a/quickget +++ b/quickget @@ -60,6 +60,7 @@ function pretty_name() { oraclelinux) PRETTY_NAME="Oracle Linux";; popos) PRETTY_NAME="Pop!_OS";; reactos) PRETTY_NAME="ReactOS";; + rebornos) PRETTY_NAME="RebornOS";; rockylinux) PRETTY_NAME="Rocky Linux";; ubuntu-budgie) PRETTY_NAME="Ubuntu Budgie";; ubuntukylin) PRETTY_NAME="Ubuntu Kylin";; @@ -203,6 +204,7 @@ function os_support() { oraclelinux \ popos \ reactos \ + rebornos \ rockylinux \ slackware \ solus \ @@ -471,6 +473,16 @@ function releases_reactos() { echo latest } +function releases_rebornos() { + echo latest +} + +function get_rebornos() { + local ISO=$(curl -s 'https://www.rebornos.org/download/' | grep -ohE 'https://pub-cb7a4d4f7a974896b3bf40c52d1defbc.r2.dev/RebornOS-ISO/(rebornos_xfce_minimal|rebornos_iso)-[0-9]{4}.[0-9]{2}.[0-9]{2}-x86_64.iso' | tail -n1) + local HASH=$(curl -s 'https://www.rebornos.org/download/' | grep -ozP 'Checksum MD5:.*[0-9a-fA-F]{32}' | grep -zoP '[0-9a-fA-F]{32}' | cut -d '' -f1) + echo "${ISO} ${HASH}" +} + function releases_rockylinux() { echo 8.3 8.4 8.5 9.0 } From ce04397793c7be5e80b07e999a369e5a457073f3 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Mon, 23 Jan 2023 18:28:22 +0000 Subject: [PATCH 156/189] Correct basic error to get to downloading isos --- quickget | 50 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/quickget b/quickget index 38a1d30..d079702 100755 --- a/quickget +++ b/quickget @@ -62,6 +62,8 @@ function pretty_name() { reactos) PRETTY_NAME="ReactOS";; rebornos) PRETTY_NAME="RebornOS";; rockylinux) PRETTY_NAME="Rocky Linux";; + truenas-core) PRETTY_NAME="TrueNAS Core";; + truenas-scale) PRETTY_NAME="TrueNAS Scale";; ubuntu-budgie) PRETTY_NAME="Ubuntu Budgie";; ubuntukylin) PRETTY_NAME="Ubuntu Kylin";; ubuntu-mate) PRETTY_NAME="Ubuntu MATE";; @@ -69,7 +71,6 @@ function pretty_name() { ubuntu-unity) PRETTY_NAME="Ubuntu Unity";; void) PRETTY_NAME="Void Linux";; zorin) PRETTY_NAME="Zorin OS";; - truenas) PRETTY_NAME="TrueNAS";; *) PRETTY_NAME="${SIMPLE_NAME^}";; esac echo "${PRETTY_NAME}" @@ -209,7 +210,8 @@ function os_support() { slackware \ solus \ tails \ - truenas \ + truenas-core \ + truenas-scale \ ubuntu \ ubuntu-budgie \ ubuntukylin \ @@ -509,12 +511,19 @@ function releases_tails() { echo stable } -function editions_truenas() { - echo core scale # enterprise is proprietary and paid +function releases_truenas() { + if [[ $OS == truenas ]] ; then + echo "ERROR! The supported TrueNAS OS values are truenas-core or truenas-scale" + exit 1; + fi + } + +function releases_truenas-core() { + echo 12.0 13.0 } -function releases_truenas() { - echo 22.12 13.0 +function releases_truenas-scale() { + echo 22.02 22.12 } function releases_ubuntu() { @@ -786,7 +795,7 @@ function make_vm_config() { reactos) GUEST="reactos" IMAGE_TYPE="iso";; - truenas) + truenas*) GUEST="truenas" IMAGE_TYPE="iso";; windows) @@ -839,7 +848,7 @@ EOF echo "disk_size=\"2G\"" >> "${CONF_FILE}" echo "ram=\"128M\"" >> "${CONF_FILE}" ;; - truenas) + truenas-scale|truenas-core) echo echo "boot=\"legacy\"" >> "${CONF_FILE}" echo "bootdrive_size=\"5G\"" >> "${CONF_FILE}" # boot drive @@ -1504,15 +1513,27 @@ function get_tails() { echo "${URL} ${HASH}" } -function get_truenas() { +function get_truenas-scale() { local ISO="" local URL="" - if [ "${RELEASE}" == "13.0" ] && [ "${OS}" == "CORE" ]; then - URL="$(wget https://download.freenas.org/13.0/STABLE/U3.1/x64/${OS}.iso)" - elif [ "${RELEASE}" == "22.12" ] && [ "${OS}" == "SCALE" ]; then - URL="$(https://download.truenas.com/TrueNAS-SCALE-Bluefin/${RELEASE}.0/TrueNAS-${OS}-22.12.0.iso)" - fi + local DLINFO="https://www.truenas.com/download-truenas-scale/" + + URL=$(wget -q ${DLINFO} -O- | grep -o "\"https://.*${RELEASE}.*\.iso\""|cut -d\" -f2) + HASH=$(wget -q ${URL}.sha256 -O- | cut -d' ' -f1 ) + + echo "${URL} ${HASH}" +} + +function get_truenas-core() { + local ISO="" + local URL="" + + local DLINFO="https://www.truenas.com/download-truenas-core/" + URL=$(wget -q ${DLINFO} -O- | grep -o "\"https://.*${RELEASE}.*\.iso\""|cut -d\" -f2) + HASH=$(wget -q ${URL}.sha256 -O- | cut -d' ' -f1) + + echo "${URL} ${HASH}" } function get_ubuntu() { @@ -2068,6 +2089,7 @@ if [ -n "${2}" ]; then fi fi + VM_PATH="${OS}-${RELEASE}-${EDITION}" validate_release "releases_${OS}" create_vm "$("get_${OS}" "${EDITION}")" From e7480e182062fab8102e9ea9ee61af18f68ebd12 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Mon, 23 Jan 2023 18:47:19 +0000 Subject: [PATCH 157/189] comment out non-supported lines aimed at the conf --- quickget | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/quickget b/quickget index d079702..dc4adc2 100755 --- a/quickget +++ b/quickget @@ -851,9 +851,10 @@ EOF truenas-scale|truenas-core) echo echo "boot=\"legacy\"" >> "${CONF_FILE}" - echo "bootdrive_size=\"5G\"" >> "${CONF_FILE}" # boot drive - echo "1stdrive_size=\"20G\"" >> "${CONF_FILE}" # for testing - echo "2nddrive_size=\"20G\"" >> "${CONF_FILE}" # again, for testing + # the rest is non-functional + # echo "bootdrive_size=\"5G\"" >> "${CONF_FILE}" # boot drive + # echo "1stdrive_size=\"20G\"" >> "${CONF_FILE}" # for testing + # echo "2nddrive_size=\"20G\"" >> "${CONF_FILE}" # again, for testing ;; zorin) case ${EDITION} in From 9f1c3af1226498c46ff6ef61c2475254a8754512 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Thu, 2 Feb 2023 21:37:34 +0000 Subject: [PATCH 158/189] chore: regenerated docs for release --- README.md | 9 ++++++--- docs/quickemu.1 | 8 +++++++- docs/quickemu.1.md | 5 ++++- docs/quickemu_conf.1 | 2 +- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 8 +++++++- docs/quickget.1.md | 5 ++++- 7 files changed, 30 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c282643..907d6b1 100644 --- a/README.md +++ b/README.md @@ -225,8 +225,8 @@ with your preferred flavour. - `ubuntukylin` (Ubuntu Kylin) - `ubuntu-mate` (Ubuntu MATE) - `ubuntustudio` (Ubuntu Studio) -- `ubuntu-unity` (Ubuntu Unity) - `ubuntu` (Ubuntu) +- `ubuntu-unity` (Ubuntu Unity) - `xubuntu` (Xubuntu) ## Other Operating Systems @@ -260,6 +260,7 @@ with your preferred flavour. - `kolibrios` (KolibriOS) - `linuxmint` (Linux Mint) - `lmde` (Linux Mint Debian Edition) +- `mageia` (Mageia) - `manjaro` (Manjaro) - `mxlinux` (MX Linux) - `netboot` (netboot.xyz) @@ -270,10 +271,13 @@ with your preferred flavour. - `oraclelinux` (Oracle Linux) - `popos` (Pop!\_OS) - `reactos` (ReactOS) +- `rebornos` (RebornOS) - `rockylinux` (Rocky Linux) - `slackware` (Slackware) - `solus` (Solus) - `tails` (Tails) +- `truenas-core` (TrueNAS Core) +- `truenas-scale` (TrueNAS Scale) - `void` (Void Linux) - `zorin` (Zorin OS) @@ -776,9 +780,8 @@ You can also pass optional parameters --extra_args <arguments> : Pass additional arguments to qemu --version : Print version -``` <!-- [[[end]]] --> - +``` ## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in diff --git a/docs/quickemu.1 b/docs/quickemu.1 index df61909..70da5ad 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "December 11, 2022" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "February 2, 2023" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -407,6 +407,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]reactos\f[R] (ReactOS) .IP \[bu] 2 +\f[V]rebornos\f[R] (RebornOS) +.IP \[bu] 2 \f[V]rockylinux\f[R] (Rocky Linux) .IP \[bu] 2 \f[V]slackware\f[R] (Slackware) @@ -415,6 +417,10 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]tails\f[R] (Tails) .IP \[bu] 2 +\f[V]truenas-core\f[R] (TrueNAS Core) +.IP \[bu] 2 +\f[V]truenas-scale\f[R] (TrueNAS Scale) +.IP \[bu] 2 \f[V]void\f[R] (Void Linux) .IP \[bu] 2 \f[V]zorin\f[R] (Zorin OS) diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 5e5f548..31d8804 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: December 11, 2022 +date: February 2, 2023 footer: quickemu header: Quickemu User Manual section: 1 @@ -295,10 +295,13 @@ with your preferred flavour. - `oraclelinux` (Oracle Linux) - `popos` (Pop!\_OS) - `reactos` (ReactOS) +- `rebornos` (RebornOS) - `rockylinux` (Rocky Linux) - `slackware` (Slackware) - `solus` (Solus) - `tails` (Tails) +- `truenas-core` (TrueNAS Core) +- `truenas-scale` (TrueNAS Scale) - `void` (Void Linux) - `zorin` (Zorin OS) diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index ee910b1..8756639 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "December 11, 2022" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "February 2, 2023" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index 2305dd5..08977f4 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: December 11, 2022 +date: February 2, 2023 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index b9171ea..460ffc0 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "December 11, 2022" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "February 2, 2023" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -189,6 +189,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]reactos\f[R] (ReactOS) .IP \[bu] 2 +\f[V]rebornos\f[R] (RebornOS) +.IP \[bu] 2 \f[V]rockylinux\f[R] (Rocky Linux) .IP \[bu] 2 \f[V]slackware\f[R] (Slackware) @@ -197,6 +199,10 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]tails\f[R] (Tails) .IP \[bu] 2 +\f[V]truenas-core\f[R] (TrueNAS Core) +.IP \[bu] 2 +\f[V]truenas-scale\f[R] (TrueNAS Scale) +.IP \[bu] 2 \f[V]void\f[R] (Void Linux) .IP \[bu] 2 \f[V]zorin\f[R] (Zorin OS) diff --git a/docs/quickget.1.md b/docs/quickget.1.md index 140644e..64d0274 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: December 11, 2022 +date: February 2, 2023 footer: quickget header: Quickget User Manual section: 1 @@ -127,10 +127,13 @@ with your preferred flavour. - `oraclelinux` (Oracle Linux) - `popos` (Pop!\_OS) - `reactos` (ReactOS) +- `rebornos` (RebornOS) - `rockylinux` (Rocky Linux) - `slackware` (Slackware) - `solus` (Solus) - `tails` (Tails) +- `truenas-core` (TrueNAS Core) +- `truenas-scale` (TrueNAS Scale) - `void` (Void Linux) - `zorin` (Zorin OS) From 206c93d8e58bf623bece239cdb4ef5549429bba3 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 3 Feb 2023 18:04:57 +0000 Subject: [PATCH 159/189] Aligned config file options with current list --- README.md | 1 + build-docs | 2 +- docs/quickemu.1 | 2 +- docs/quickemu.1.md | 2 +- docs/quickemu_conf.1 | 22 +++++++++++++++++++++- docs/quickemu_conf.1.md | 22 +++++++++++++++++++++- docs/quickget.1 | 2 +- docs/quickget.1.md | 2 +- 8 files changed, 48 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 907d6b1..9e401eb 100644 --- a/README.md +++ b/README.md @@ -782,6 +782,7 @@ You can also pass optional parameters <!-- [[[end]]] --> ``` + ## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in diff --git a/build-docs b/build-docs index 297a1d4..43c38df 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 297a1d4403ca0ddda062fdd086f4a00c8357452e +Subproject commit 43c38df5ef08bada423b076274604951d5c13c0d diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 70da5ad..7d92369 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "February 2, 2023" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "February 3, 2023" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 31d8804..698bfd0 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 2, 2023 +date: February 3, 2023 footer: quickemu header: Quickemu User Manual section: 1 diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index 8756639..fa462dd 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "February 2, 2023" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "February 3, 2023" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP @@ -38,6 +38,8 @@ boot=\[dq]efi\[dq] cpu_cores=\[dq]\[dq] disk_img=\[dq]\[dq] disk_size=\[dq]\[dq] +display=\[dq]\[dq] +extra_args=\[dq]\[dq] fixed_iso=\[dq]\[dq] floppy=\[dq]\[dq] guest_os=\[dq]linux\[dq] @@ -52,6 +54,24 @@ ram=\[dq]\[dq] secureboot=\[dq]off\[dq] tpm=\[dq]off\[dq] usb_devices=() +viewer=\[dq]spicy\[dq] +ssh_port=\[dq]\[dq] +spice_port=\[dq]\[dq] +public_dir=\[dq]\[dq] +monitor=\[dq]socket\[dq] +monitor_telnet_port=\[dq]4440\[dq] +monitor_telnet_host=\[dq]localhost\[dq] +monitor_cmd=\[dq]\[dq] +serial=\[dq]socket\[dq] +serial_telnet_port=\[dq]6660\[dq] +serial_telnet_host=\[dq]localhost\[dq] +# options: ehci(USB2.0), xhci(USB3.0) +usb_controller=\[dq]ehci\[dq] +# options: ps2, usb, virtio +keyboard=\[dq]usb\[dq] +keyboard_layout=\[dq]en-us\[dq] +# options: ps2, usb, tablet, virtio +mouse=\[dq]tablet\[dq] \f[R] .fi .SH EXAMPLES diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index 08977f4..abc6cd1 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 2, 2023 +date: February 3, 2023 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 @@ -29,6 +29,8 @@ boot="efi" cpu_cores="" disk_img="" disk_size="" +display="" +extra_args="" fixed_iso="" floppy="" guest_os="linux" @@ -43,6 +45,24 @@ ram="" secureboot="off" tpm="off" usb_devices=() +viewer="spicy" +ssh_port="" +spice_port="" +public_dir="" +monitor="socket" +monitor_telnet_port="4440" +monitor_telnet_host="localhost" +monitor_cmd="" +serial="socket" +serial_telnet_port="6660" +serial_telnet_host="localhost" +# options: ehci(USB2.0), xhci(USB3.0) +usb_controller="ehci" +# options: ps2, usb, virtio +keyboard="usb" +keyboard_layout="en-us" +# options: ps2, usb, tablet, virtio +mouse="tablet" ``` # EXAMPLES diff --git a/docs/quickget.1 b/docs/quickget.1 index 460ffc0..e79fe6c 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "February 2, 2023" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "February 3, 2023" "quickget" "Quickget User Manual" .hy .SH NAME .PP diff --git a/docs/quickget.1.md b/docs/quickget.1.md index 64d0274..24abbca 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 2, 2023 +date: February 3, 2023 footer: quickget header: Quickget User Manual section: 1 From 40221ffe71b6b184cf191aca2e59ea430ec073d9 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 3 Feb 2023 14:11:57 +0000 Subject: [PATCH 160/189] Alma 9.1 is released --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index dc4adc2..15c5970 100755 --- a/quickget +++ b/quickget @@ -225,7 +225,7 @@ function os_support() { } function releases_alma() { - echo 8.6 8.7 9.0 9.1-beta-1 + echo 8.6 8.7 9.0 9.1 } function editions_alma() { From 9ab21571d0ec87c4f0637ef7c1158005a98db22b Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 3 Feb 2023 14:26:08 +0000 Subject: [PATCH 161/189] updated cachyos release --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 15c5970..8dec81d 100755 --- a/quickget +++ b/quickget @@ -261,7 +261,7 @@ function editions_arcolinux() { } function releases_cachyos() { - echo 220919 221023 + echo 230121 } function editions_cachyos() { From d4d95588926f9e6650bd14fa6a1953bb6fda667c Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 3 Feb 2023 14:41:49 +0000 Subject: [PATCH 162/189] Remove old release from elementary - they only present current release --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 8dec81d..9d9f087 100755 --- a/quickget +++ b/quickget @@ -300,7 +300,7 @@ function releases_dragonflybsd() { } function releases_elementary() { - echo 6.1 7.0 + echo 7.0 } function releases_endeavouros() { From eaa5f1cad295d0561fe90afbf4cd9cbaf29c64d6 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 3 Feb 2023 16:04:28 +0000 Subject: [PATCH 163/189] Update drgaonfly release to current Older isos are bzipped so until we handle that only current is available --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 9d9f087..019ca09 100755 --- a/quickget +++ b/quickget @@ -296,7 +296,7 @@ function releases_devuan() { } function releases_dragonflybsd() { - echo 6.2.1 + echo 6.4.0 } function releases_elementary() { From 9a3e5b3e01b7a41649fbd75bb280793670cd4465 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 3 Feb 2023 16:58:11 +0000 Subject: [PATCH 164/189] Update mxlinux to current release --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 019ca09..ea237e2 100755 --- a/quickget +++ b/quickget @@ -413,7 +413,7 @@ function editions_mageia(){ } function releases_mxlinux(){ - echo 21.2.1 + echo 21.3 } function editions_mxlinux(){ From 5da140262a7216655783c148babd83013a889198 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Fri, 3 Feb 2023 17:09:25 +0000 Subject: [PATCH 165/189] Updated for release of Rocky Linux 9.1 --- quickget | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index ea237e2..bbbbe84 100755 --- a/quickget +++ b/quickget @@ -486,7 +486,7 @@ function get_rebornos() { } function releases_rockylinux() { - echo 8.3 8.4 8.5 9.0 + echo 8.3 8.4 8.5 9.0 9.1 } # Rocky have renamed dvd1 -> dvd at 9.0 @@ -1477,7 +1477,7 @@ function get_rockylinux() { local URL="" case ${RELEASE} in - 9.0) URL="https://download.rockylinux.org/pub/rocky/${RELEASE}/isos/x86_64";; + 9.1) URL="https://download.rockylinux.org/pub/rocky/${RELEASE}/isos/x86_64";; *) URL="http://dl.rockylinux.org/vault/rocky/${RELEASE}/isos/x86_64/";; esac HASH=$(wget -q -O- "${URL}/CHECKSUM" | grep "SHA256" | grep "${ISO})" | cut -d' ' -f4) From f407fc9e2fde43cdba3bddca1350c6fe0a1e1e43 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Fri, 3 Feb 2023 23:09:34 +0000 Subject: [PATCH 166/189] Merge WIP build-docs --- build-docs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docs b/build-docs index 43c38df..297a1d4 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 43c38df5ef08bada423b076274604951d5c13c0d +Subproject commit 297a1d4403ca0ddda062fdd086f4a00c8357452e From 428640563927d5418ec5438171116d3bcd3919ae Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Mon, 23 Jan 2023 11:00:28 +0000 Subject: [PATCH 167/189] Revert "Acknowledgement that Windows downloads are not working automatically #6123" This reverts commit 809ad68fd868cf7e8d203cc91474c9d076f96282. --- quickget | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/quickget b/quickget index bbbbe84..e94b65a 100755 --- a/quickget +++ b/quickget @@ -1965,8 +1965,7 @@ function get_windows() { MS_BASE_URL="https://software.download.prss.microsoft.com/" if [[ ! ${DOWNLOAD_URL} =~ ^${MS_BASE_URL} ]]; then - echo "Download URL (${DOWNLOAD_URL}) not leading to Microsoft CDN" - echo "Please download a Windows .ISO manaully and configure quickemu accordingly" + echo "Download URL not leading to Microsoft CDN" exit 1 fi From 8d3cf4c1a7c6f0b7297fa4dbe250b6ab6cd4fd38 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Sat, 4 Feb 2023 00:06:37 +0000 Subject: [PATCH 168/189] Prompt the user to download the Windows iso manually. Closes #612 --- quickget | 120 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 72 insertions(+), 48 deletions(-) diff --git a/quickget b/quickget index e94b65a..b03b5ab 100755 --- a/quickget +++ b/quickget @@ -1907,12 +1907,19 @@ function dbg_windows() { # Adapted from https://gist.github.com/hongkongkiwi/15a5bf16437315df256c118c163607cb function get_windows() { + # Use the API to automatically download a Windows .iso image + # The API we were using is unmaintained and not currently functional + # 0 : Prompt for a manual ISO download + # 1 : Use the API for automated download + local API_GUIDED_DOWNLOAD=0 + local ARCH="x64" local INDEX=0 local LANG_CODE="en" local LANG_EDITION="${1}" local LATEST_WINDOWS_VERSION="" local WINDOWS_NAME="" + local WINDOWS_ISO_URL="" local VERSION_ID="" local EDITION_ID="" local LANGUAGE_ID="" @@ -1922,59 +1929,72 @@ function get_windows() { local DOWNLOAD_ID="" local DOWNLOAD_URL="" - # Ignore the most recent Windows 10 release for now. - case ${RELEASE} in - 10) INDEX=0;; - 11) INDEX=0;; - esac + if [ ${API_GUIDED_DOWNLOAD} -eq 1 ]; then + # Ignore the most recent Windows 10 release for now. + case ${RELEASE} in + 10) INDEX=0;; + 11) INDEX=0;; + esac - echo "Getting Windows ${RELEASE} URL..." - WINDOWS_VERSIONS=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_version.php?type_id=1" | jq '.versions | sort_by(-(.version_id | tonumber))') - dbg_windows "${WINDOWS_VERSIONS}" - LATEST_WINDOWS_VERSION=$(echo "${WINDOWS_VERSIONS}" | jq -c 'map(select(.name | contains("Windows '"${RELEASE}"'")))['${INDEX}']') - dbg_windows "${LATEST_WINDOWS_VERSION}" - WINDOWS_NAME=$(echo "${LATEST_WINDOWS_VERSION}" | jq -r .name) - dbg_windows "${WINDOWS_NAME}" - VERSION_ID=$(echo "${LATEST_WINDOWS_VERSION}" | jq -r .version_id) - dbg_windows "${VERSION_ID}" + echo "Getting Windows ${RELEASE} URL..." + WINDOWS_VERSIONS=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_version.php?type_id=1" | jq '.versions | sort_by(-(.version_id | tonumber))') + dbg_windows "${WINDOWS_VERSIONS}" + LATEST_WINDOWS_VERSION=$(echo "${WINDOWS_VERSIONS}" | jq -c 'map(select(.name | contains("Windows '"${RELEASE}"'")))['${INDEX}']') + dbg_windows "${LATEST_WINDOWS_VERSION}" + WINDOWS_NAME=$(echo "${LATEST_WINDOWS_VERSION}" | jq -r .name) + dbg_windows "${WINDOWS_NAME}" + VERSION_ID=$(echo "${LATEST_WINDOWS_VERSION}" | jq -r .version_id) + dbg_windows "${VERSION_ID}" - case ${RELEASE} in - 8) EDITION_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows 8.1 Pro + Core").edition_id');; - 10|11) EDITION_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows '"${RELEASE}"'").edition_id');; - esac - dbg_windows "${EDITION_ID}" + case ${RELEASE} in + 8) EDITION_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows 8.1 Pro + Core").edition_id');; + 10|11) EDITION_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows '"${RELEASE}"'").edition_id');; + esac + dbg_windows "${EDITION_ID}" - LANGUAGE_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_language.php?edition_id=${EDITION_ID}&lang=name_${LANG_CODE}" | jq -r '.languages[] | select(.name_'${LANG_CODE}'=="'"${LANG_EDITION}"'").language_id') - dbg_windows "${LANGUAGE_ID}" - ARCH_INFO=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_arch.php?language_id=${LANGUAGE_ID}") - dbg_windows "${ARCH_INFO}" - FILE_NAME=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).name') - dbg_windows "${FILE_NAME}" - ARCH_ID=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).arch_id') - dbg_windows "${ARCH_ID}" - DOWNLOAD_INFO=$(wget -4 -q -O- "https://tb.rg-adguard.net/dl.php?fileName=${ARCH_ID}&lang=en") - dbg_windows "${DOWNLOAD_INFO}" - DOWNLOAD_SHA1=$(echo "${DOWNLOAD_INFO}" | sed -e 's/<[^>]*>//g' | grep -o -P '(?<=SHA1: ).*(?= expire)' | sed 's/Link//') - dbg_windows "${DOWNLOAD_SHA1}" - DOWNLOAD_ID=$(echo "${DOWNLOAD_INFO}" | grep -oP '(?<=https:\/\/tb\.rg-adguard\.net/dl\.php\?go=)[0-9a-z]+') - dbg_windows "${DOWNLOAD_ID}" - REDIRECT_URL="https://tb.rg-adguard.net/dl.php?go=${DOWNLOAD_ID}" - dbg_windows "${REDIRECT_URL}" - DOWNLOAD_URL=$(curl --head --silent --write-out "%{redirect_url}\n" --output /dev/null "${REDIRECT_URL}") - dbg_windows "${DOWNLOAD_URL}" + LANGUAGE_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_language.php?edition_id=${EDITION_ID}&lang=name_${LANG_CODE}" | jq -r '.languages[] | select(.name_'${LANG_CODE}'=="'"${LANG_EDITION}"'").language_id') + dbg_windows "${LANGUAGE_ID}" + ARCH_INFO=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_arch.php?language_id=${LANGUAGE_ID}") + dbg_windows "${ARCH_INFO}" + FILE_NAME=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).name') + dbg_windows "${FILE_NAME}" + ARCH_ID=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).arch_id') + dbg_windows "${ARCH_ID}" + DOWNLOAD_INFO=$(wget -4 -q -O- "https://tb.rg-adguard.net/dl.php?fileName=${ARCH_ID}&lang=en") + dbg_windows "${DOWNLOAD_INFO}" + DOWNLOAD_SHA1=$(echo "${DOWNLOAD_INFO}" | sed -e 's/<[^>]*>//g' | grep -o -P '(?<=SHA1: ).*(?= expire)' | sed 's/Link//') + dbg_windows "${DOWNLOAD_SHA1}" + DOWNLOAD_ID=$(echo "${DOWNLOAD_INFO}" | grep -oP '(?<=https:\/\/tb\.rg-adguard\.net/dl\.php\?go=)[0-9a-z]+') + dbg_windows "${DOWNLOAD_ID}" + REDIRECT_URL="https://tb.rg-adguard.net/dl.php?go=${DOWNLOAD_ID}" + dbg_windows "${REDIRECT_URL}" + DOWNLOAD_URL=$(curl --head --silent --write-out "%{redirect_url}\n" --output /dev/null "${REDIRECT_URL}") + dbg_windows "${DOWNLOAD_URL}" - MS_BASE_URL="https://software.download.prss.microsoft.com/" - if [[ ! ${DOWNLOAD_URL} =~ ^${MS_BASE_URL} ]]; then - echo "Download URL not leading to Microsoft CDN" - exit 1 - fi + MS_BASE_URL="https://software.download.prss.microsoft.com/" + if [[ ! ${DOWNLOAD_URL} =~ ^${MS_BASE_URL} ]]; then + echo "Download URL not leading to Microsoft CDN" + exit 1 + fi - echo "Downloading ${WINDOWS_NAME}..." - web_get "${DOWNLOAD_URL}" "${VM_PATH}" "${FILE_NAME}" + echo "Downloading ${WINDOWS_NAME}..." + web_get "${DOWNLOAD_URL}" "${VM_PATH}" "${FILE_NAME}" - # Windows 10 doesn't include a SHA1, so only check the integrity if the SHA1 is available. - if [ -n "${DOWNLOAD_SHA1}" ]; then - check_hash "${FILE_NAME}" "${DOWNLOAD_SHA1}" + # Windows 10 doesn't include a SHA1, so only check the integrity if the SHA1 is available. + if [ -n "${DOWNLOAD_SHA1}" ]; then + check_hash "${FILE_NAME}" "${DOWNLOAD_SHA1}" + fi + else + case ${RELEASE} in + 10) WINDOWS_ISO_URL="https://www.microsoft.com/software-download/windows10";; + 11) WINDOWS_ISO_URL="https://www.microsoft.com/software-download/windows11";; + esac + echo "######################################################################" + echo "# Download a Windows ${RELEASE} .iso image from:" + echo "# - ${WINDOWS_ISO_URL}" + echo "# Put the .iso image in the ${VM_PATH} directory and rename" + echo "# it to windows-${RELEASE}.iso." + echo "######################################################################" fi web_get "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso" "${VM_PATH}" @@ -1991,7 +2011,11 @@ function get_windows() { mkisofs -quiet -l -o "${VM_PATH}/unattended.iso" "${VM_PATH}/unattended/" ;; esac - make_vm_config "${FILE_NAME}" "virtio-win.iso" + + case "${API_GUIDED_DOWNLOAD}" in + 0) make_vm_config "windows-${RELEASE}.iso" "virtio-win.iso";; + 1) make_vm_config "${FILE_NAME}" "virtio-win.iso";; + esac } create_vm() { From 61b73b63773fffdb4e05e43534d1684b816f0773 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Sat, 4 Feb 2023 00:16:01 +0000 Subject: [PATCH 169/189] Update README --- README.md | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 9e401eb..39c022f 100644 --- a/README.md +++ b/README.md @@ -452,13 +452,12 @@ Now reboot, and the App Store should work. ## Windows 8.1, 10 & 11 Guests -`quickget` can automatically download Windows 8.1, [Windows -10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and -[Windows -11](https://www.microsoft.com/en-gb/software-download/windows11) along -with the [VirtIO drivers for -Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) -and creates a virtual machine configuration. +`quickget` can not download +[Windows10](https://www.microsoft.com/software-download/windows10) and +[Windows 11](https://www.microsoft.com/software-download/windows11) automatically, +but does automatically create an optimised virtual machine configuration that +you can just add an Windows .iso image to. This configuration also includes the +[VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). ``` bash quickget windows 11 @@ -472,22 +471,12 @@ quickemu --vm windows-11.conf - Username: `Quickemu` - Password: `quickemu` -### Regional versions - -By default `quickget` will download the *"English International"* -release, but you can optionally specify one of the supported languages: -For example: - -``` bash -quickget windows 11 "Chinese (Traditional)" -``` - The default Windows 11 configuration looks like this: ``` bash guest_os="windows" disk_img="windows-11/disk.qcow2" -iso="windows-11/Win11_EnglishInternational_x64.iso" +iso="windows-11/windows-11.iso" fixed_iso="windows-11/virtio-win.iso" tpm="on" secureboot="on" From bacb7b1a8f5a61e741036a421366ef481bc357d3 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Sat, 4 Feb 2023 00:24:24 +0000 Subject: [PATCH 170/189] Bump the version to 4.6 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 3cb2e87..79ee129 100755 --- a/quickemu +++ b/quickemu @@ -1502,7 +1502,7 @@ EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="4.5" +readonly VERSION="4.6" # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) From c69fa6b43041713643dc9f8fd4002f873de9f456 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Sat, 4 Feb 2023 00:27:00 +0000 Subject: [PATCH 171/189] Win notes added to man pages --- README.md | 20 ++++++++++++++------ build-docs | 2 +- docs/quickemu.1 | 24 ++++++++++-------------- docs/quickemu.1.md | 23 ++++++++++------------- docs/quickemu_conf.1 | 2 +- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 24 ++++++++++-------------- docs/quickget.1.md | 23 ++++++++++------------- 8 files changed, 57 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index 39c022f..7915831 100644 --- a/README.md +++ b/README.md @@ -450,14 +450,22 @@ sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist Now reboot, and the App Store should work. -## Windows 8.1, 10 & 11 Guests +## Windows 10 & 11 Guests `quickget` can not download [Windows10](https://www.microsoft.com/software-download/windows10) and -[Windows 11](https://www.microsoft.com/software-download/windows11) automatically, -but does automatically create an optimised virtual machine configuration that -you can just add an Windows .iso image to. This configuration also includes the -[VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). +[Windows 11](https://www.microsoft.com/software-download/windows11) +automatically, but does automatically create an optimised virtual +machine configuration that you can just add an Windows .iso image to. +This configuration also includes the [VirtIO drivers for +Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). +`quickget` can automatically download Windows 8.1, [Windows +10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and +[Windows +11](https://www.microsoft.com/en-gb/software-download/windows11) along +with the [VirtIO drivers for +Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) +and creates a virtual machine configuration. ``` bash quickget windows 11 @@ -769,9 +777,9 @@ You can also pass optional parameters --extra_args <arguments> : Pass additional arguments to qemu --version : Print version +``` <!-- [[[end]]] --> ``` - ## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in diff --git a/build-docs b/build-docs index 297a1d4..43c38df 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 297a1d4403ca0ddda062fdd086f4a00c8357452e +Subproject commit 43c38df5ef08bada423b076274604951d5c13c0d diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 7d92369..39cefe8 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "February 3, 2023" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "February 4, 2023" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -677,8 +677,15 @@ sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist .fi .PP Now reboot, and the App Store should work. -.SS Windows 8.1, 10 & 11 Guests +.SS Windows 10 & 11 Guests .PP +\f[V]quickget\f[R] can not download +Windows10 (https://www.microsoft.com/software-download/windows10) and +Windows 11 (https://www.microsoft.com/software-download/windows11) +automatically, but does automatically create an optimised virtual +machine configuration that you can just add an Windows .iso image to. +This configuration also includes the VirtIO drivers for +Windows (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). \f[V]quickget\f[R] can automatically download Windows 8.1, Windows 10 (https://www.microsoft.com/en-gb/software-download/windows10ISO) and Windows 11 (https://www.microsoft.com/en-gb/software-download/windows11) @@ -705,17 +712,6 @@ Username: \f[V]Quickemu\f[R] .IP \[bu] 2 Password: \f[V]quickemu\f[R] .RE -.SS Regional versions -.PP -By default \f[V]quickget\f[R] will download the \f[I]\[lq]English -International\[rq]\f[R] release, but you can optionally specify one of -the supported languages: For example: -.IP -.nf -\f[C] -quickget windows 11 \[dq]Chinese (Traditional)\[dq] -\f[R] -.fi .PP The default Windows 11 configuration looks like this: .IP @@ -723,7 +719,7 @@ The default Windows 11 configuration looks like this: \f[C] guest_os=\[dq]windows\[dq] disk_img=\[dq]windows-11/disk.qcow2\[dq] -iso=\[dq]windows-11/Win11_EnglishInternational_x64.iso\[dq] +iso=\[dq]windows-11/windows-11.iso\[dq] fixed_iso=\[dq]windows-11/virtio-win.iso\[dq] tpm=\[dq]on\[dq] secureboot=\[dq]on\[dq] diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 698bfd0..54a8c1b 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 3, 2023 +date: February 4, 2023 footer: quickemu header: Quickemu User Manual section: 1 @@ -480,8 +480,15 @@ sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist Now reboot, and the App Store should work. -## Windows 8.1, 10 & 11 Guests +## Windows 10 & 11 Guests +`quickget` can not download +[Windows10](https://www.microsoft.com/software-download/windows10) and +[Windows 11](https://www.microsoft.com/software-download/windows11) +automatically, but does automatically create an optimised virtual +machine configuration that you can just add an Windows .iso image to. +This configuration also includes the [VirtIO drivers for +Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). `quickget` can automatically download Windows 8.1, [Windows 10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and [Windows @@ -502,22 +509,12 @@ quickemu --vm windows-11.conf - Username: `Quickemu` - Password: `quickemu` -### Regional versions - -By default `quickget` will download the *"English International"* -release, but you can optionally specify one of the supported languages: -For example: - -``` bash -quickget windows 11 "Chinese (Traditional)" -``` - The default Windows 11 configuration looks like this: ``` bash guest_os="windows" disk_img="windows-11/disk.qcow2" -iso="windows-11/Win11_EnglishInternational_x64.iso" +iso="windows-11/windows-11.iso" fixed_iso="windows-11/virtio-win.iso" tpm="on" secureboot="on" diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index fa462dd..a66ef36 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "February 3, 2023" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "February 4, 2023" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index abc6cd1..eb0db42 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 3, 2023 +date: February 4, 2023 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index e79fe6c..60484ee 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "February 3, 2023" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "February 4, 2023" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -459,8 +459,15 @@ sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist .fi .PP Now reboot, and the App Store should work. -.SS Windows 8.1, 10 & 11 Guests +.SS Windows 10 & 11 Guests .PP +\f[V]quickget\f[R] can not download +Windows10 (https://www.microsoft.com/software-download/windows10) and +Windows 11 (https://www.microsoft.com/software-download/windows11) +automatically, but does automatically create an optimised virtual +machine configuration that you can just add an Windows .iso image to. +This configuration also includes the VirtIO drivers for +Windows (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). \f[V]quickget\f[R] can automatically download Windows 8.1, Windows 10 (https://www.microsoft.com/en-gb/software-download/windows10ISO) and Windows 11 (https://www.microsoft.com/en-gb/software-download/windows11) @@ -487,17 +494,6 @@ Username: \f[V]Quickemu\f[R] .IP \[bu] 2 Password: \f[V]quickemu\f[R] .RE -.SS Regional versions -.PP -By default \f[V]quickget\f[R] will download the \f[I]\[lq]English -International\[rq]\f[R] release, but you can optionally specify one of -the supported languages: For example: -.IP -.nf -\f[C] -quickget windows 11 \[dq]Chinese (Traditional)\[dq] -\f[R] -.fi .PP The default Windows 11 configuration looks like this: .IP @@ -505,7 +501,7 @@ The default Windows 11 configuration looks like this: \f[C] guest_os=\[dq]windows\[dq] disk_img=\[dq]windows-11/disk.qcow2\[dq] -iso=\[dq]windows-11/Win11_EnglishInternational_x64.iso\[dq] +iso=\[dq]windows-11/windows-11.iso\[dq] fixed_iso=\[dq]windows-11/virtio-win.iso\[dq] tpm=\[dq]on\[dq] secureboot=\[dq]on\[dq] diff --git a/docs/quickget.1.md b/docs/quickget.1.md index 24abbca..c3e72e6 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 3, 2023 +date: February 4, 2023 footer: quickget header: Quickget User Manual section: 1 @@ -312,8 +312,15 @@ sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist Now reboot, and the App Store should work. -## Windows 8.1, 10 & 11 Guests +## Windows 10 & 11 Guests +`quickget` can not download +[Windows10](https://www.microsoft.com/software-download/windows10) and +[Windows 11](https://www.microsoft.com/software-download/windows11) +automatically, but does automatically create an optimised virtual +machine configuration that you can just add an Windows .iso image to. +This configuration also includes the [VirtIO drivers for +Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). `quickget` can automatically download Windows 8.1, [Windows 10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and [Windows @@ -334,22 +341,12 @@ quickemu --vm windows-11.conf - Username: `Quickemu` - Password: `quickemu` -### Regional versions - -By default `quickget` will download the *"English International"* -release, but you can optionally specify one of the supported languages: -For example: - -``` bash -quickget windows 11 "Chinese (Traditional)" -``` - The default Windows 11 configuration looks like this: ``` bash guest_os="windows" disk_img="windows-11/disk.qcow2" -iso="windows-11/Win11_EnglishInternational_x64.iso" +iso="windows-11/windows-11.iso" fixed_iso="windows-11/virtio-win.iso" tpm="on" secureboot="on" From 54d19096ade806df82f0c7b566069f2e5311180e Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Thu, 30 Mar 2023 03:08:44 +0100 Subject: [PATCH 172/189] Prepare for 23.04 and add Ubuntu Cinnamon --- quickget | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/quickget b/quickget index b03b5ab..62bb97b 100755 --- a/quickget +++ b/quickget @@ -65,9 +65,10 @@ function pretty_name() { truenas-core) PRETTY_NAME="TrueNAS Core";; truenas-scale) PRETTY_NAME="TrueNAS Scale";; ubuntu-budgie) PRETTY_NAME="Ubuntu Budgie";; - ubuntukylin) PRETTY_NAME="Ubuntu Kylin";; + ubuntucinnamon) PRETTY_NAME="Ubuntu Cinnamon";; + ubuntukylin) PRETTY_NAME="Ubuntu Kylin";; ubuntu-mate) PRETTY_NAME="Ubuntu MATE";; - ubuntustudio) PRETTY_NAME="Ubuntu Studio";; + ubuntustudio) PRETTY_NAME="Ubuntu Studio";; ubuntu-unity) PRETTY_NAME="Ubuntu Unity";; void) PRETTY_NAME="Void Linux";; zorin) PRETTY_NAME="Zorin OS";; @@ -214,6 +215,7 @@ function os_support() { truenas-scale \ ubuntu \ ubuntu-budgie \ + ubuntucinnamon \ ubuntukylin \ ubuntu-mate \ ubuntustudio \ @@ -528,7 +530,7 @@ function releases_truenas-scale() { function releases_ubuntu() { local LTS_SUPPORT="14.04 16.04 18.04 20.04 22.04" - local INTERIM_SUPPORT="22.10" + local INTERIM_SUPPORT="22.10 23.04" case "${OS}" in kubuntu|lubuntu|ubuntukylin|\ @@ -543,14 +545,16 @@ function releases_ubuntu() { ubuntu-unity) INTERIM_SUPPORT="${INTERIM_SUPPORT}" ;; + ubuntucinnamon) + INTERIM_SUPPORT="${INTERIM_SUPPORT/22.10 /}" + ;; esac - INTERIM_SUPPORT="${INTERIM_SUPPORT/22.10 /}" - if [ "${OS}" == "ubuntu-unity" ]; then + if [ "${OS}" == "ubuntu-unity" ] || [ "${OS}" == "ubuntucinnamon" ]; then echo ${INTERIM_SUPPORT} \ daily-live \ - daily-canary \ + daily-canary \ ; else From 245900df66366a6461334fb45eee5dbc922fb997 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt <aaronhoneycutt@proton.me> Date: Tue, 18 Apr 2023 10:13:47 -0600 Subject: [PATCH 173/189] Add Fedora 38 and other spins/editions --- quickget | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index 62bb97b..41c25c6 100755 --- a/quickget +++ b/quickget @@ -317,7 +317,7 @@ function releases_endeavouros() { } function releases_fedora() { - echo 33 34 35 36 37 + echo 33 34 35 36 37 38 } function releases_batocera() { @@ -326,6 +326,7 @@ function releases_batocera() { function editions_fedora() { echo Workstation \ + Budgie \ Cinnamon \ i3 \ KDE \ @@ -334,6 +335,9 @@ function editions_fedora() { Mate \ Xfce \ Silverblue \ + Sericea \ + Kinoite \ + Sway \ Server } @@ -1124,7 +1128,7 @@ function get_fedora() { local VARIANT="" case ${EDITION} in - Server|Silverblue|Workstation) VARIANT="${EDITION}";; + Server|Kinoite|Silverblue|Sericea|Workstation) VARIANT="${EDITION}";; *) VARIANT="Spins";; esac From eb608fb5ef3325d5c5e64216669534a1f9609b96 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt <aaronhoneycutt@proton.me> Date: Thu, 9 Mar 2023 06:56:47 -0700 Subject: [PATCH 174/189] Add custom size for NixOS as with the default a fresh install has 3% disk space left --- quickget | 3 +++ 1 file changed, 3 insertions(+) diff --git a/quickget b/quickget index 41c25c6..be21f05 100755 --- a/quickget +++ b/quickget @@ -856,6 +856,9 @@ EOF echo "disk_size=\"2G\"" >> "${CONF_FILE}" echo "ram=\"128M\"" >> "${CONF_FILE}" ;; + nixos) + echo "disk_size=\"25G\"" >> "${CONF_FILE}" + ;; truenas-scale|truenas-core) echo echo "boot=\"legacy\"" >> "${CONF_FILE}" From c4b71195c1ec4916c281805c02e0f7671f889462 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt <aaronhoneycutt@protonmail.com> Date: Fri, 17 Mar 2023 14:27:33 -0600 Subject: [PATCH 175/189] Move resize value --- quickget | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/quickget b/quickget index be21f05..7c53c0d 100755 --- a/quickget +++ b/quickget @@ -836,7 +836,7 @@ EOF # OS specific tweaks case ${OS} in - alma|centos-stream|oraclelinux|popos|rockylinux) + alma|centos-stream|oraclelinux|popos|rockylinux|nixos) echo "disk_size=\"32G\"" >> "${CONF_FILE}";; batocera) echo "disk_size=\"8G\"" >> "${CONF_FILE}";; @@ -856,9 +856,6 @@ EOF echo "disk_size=\"2G\"" >> "${CONF_FILE}" echo "ram=\"128M\"" >> "${CONF_FILE}" ;; - nixos) - echo "disk_size=\"25G\"" >> "${CONF_FILE}" - ;; truenas-scale|truenas-core) echo echo "boot=\"legacy\"" >> "${CONF_FILE}" From ecdfa193a38ac55af6a80e255122f1d61b5108c1 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Wed, 15 Mar 2023 19:25:38 +0000 Subject: [PATCH 176/189] Make NetBSD releases dynamic This obsoletes #675 but in case that gets closed here's an attempt to acknowlege a valuable heads-up. Co-authored-by: Kurt Kremitzki <kremitzki@users.noreply.github.com> --- quickget | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quickget b/quickget index 7c53c0d..d47116d 100755 --- a/quickget +++ b/quickget @@ -445,7 +445,8 @@ function releases_netboot() { } function releases_netbsd() { - echo 9.0 9.1 9.2 + local NBSD_RELEASES=$(curl -sL http://cdn.netbsd.org/pub/NetBSD/iso/ | grep -o -E '\"[[:digit:]]+\.[[:digit:]]+/\"' |tr -d '"/' |sort -nr ) + echo ${NBSD_RELEASES} } function releases_nixos(){ From 4d712e440cb1c6c1eb46e20d046852e1c803de45 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Wed, 15 Mar 2023 18:49:40 +0000 Subject: [PATCH 177/189] Make dragonfly releases dynamic Also support their .bz2 compressed isos, giving access to all releases back to 2017. Removing (or making optional) the .bz2 in the search will just return the current iso --- quickget | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/quickget b/quickget index d47116d..d6d8a7a 100755 --- a/quickget +++ b/quickget @@ -298,7 +298,10 @@ function releases_devuan() { } function releases_dragonflybsd() { - echo 6.4.0 + # If you remove "".bz2" from the end of the searched URL, you will get only the current release - currently 6.4.0 + # We could add a variable so this behaviour is optional/switchable (maybe from option or env) + DBSD_RELEASES=$(curl -sL http://mirror-master.dragonflybsd.org/iso-images/| grep -E -o '\"dfly-x86_64-.*_REL.iso.bz2\"' | grep -o -E '[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+' ) + echo $DBSD_RELEASES } function releases_elementary() { @@ -1089,7 +1092,7 @@ function get_devuan() { function get_dragonflybsd() { local HASH="" - local ISO="dfly-x86_64-${RELEASE}_REL.iso" + local ISO="dfly-x86_64-${RELEASE}_REL.iso.bz2" local URL="http://mirror-master.dragonflybsd.org/iso-images" HASH=$(wget -q -O- "${URL}/md5.txt" | grep "(${ISO})" | cut -d' ' -f4) @@ -2052,6 +2055,13 @@ create_vm() { ISO="${ISO/.gz/}" fi + # Could be other OS iso files compressed with bzip2 or gzip + # but for now we'll keep this to know cases + if [[ ${OS} == "dragonflybsd" ]] && [[ ${ISO} =~ ".bz2" ]]; then + bzip2 -d "${VM_PATH}/${ISO}" + ISO="${ISO/.bz2/}" + fi + if [ ${OS} == "reactos" ] && [[ $ISO =~ ".zip" ]]; then unzip ${VM_PATH}/${ISO} -d ${VM_PATH} ISO=$(ls ${VM_PATH} | grep -i '.iso' | grep -v '.zip') From 6e827af6f286bcab7ec20964fe43fb7289a240a5 Mon Sep 17 00:00:00 2001 From: zenobit <zen@osowoso.xyz> Date: Sun, 12 Mar 2023 01:53:51 +0100 Subject: [PATCH 178/189] siduction --- quickget | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/quickget b/quickget index d6d8a7a..a48144a 100755 --- a/quickget +++ b/quickget @@ -208,6 +208,7 @@ function os_support() { reactos \ rebornos \ rockylinux \ + siduction \ slackware \ solus \ tails \ @@ -505,6 +506,14 @@ function editions_rockylinux() { "dvd (dvd1 prior to 9.0)" } +function releases_siduction() { + echo latest +} + +function editions_siduction() { + echo kde lxqt nox xfce xorg +} + function releases_slackware() { echo 14.2 15.0 } @@ -1496,6 +1505,17 @@ function get_rockylinux() { echo "${URL}/${ISO} ${HASH}" } +function get_siduction() { + local HASH="" + local DATE="" + local ISO="" + local URL="https://mirrors.dotsrc.org/siduction/iso/Masters_of_War/${EDITION}" + DATE=$(wget -q -O- "${URL}"| grep .iso.md5 | cut -d'-' -f6 | cut -d'.' -f1) + HASH=$(wget -q -O- "${URL}/${ISO}.md5" | cut -d' ' -f1) + ISO="siduction-22.1.1-Masters_of_War-${EDITION}-amd64-${DATE}.iso" + echo "${URL}/${ISO} ${HASH}" +} + function get_slackware() { local HASH="" local ISO="slackware64-${RELEASE}-install-dvd.iso" From 564a2525854ee2bc8782410d48c13c2920ac326f Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Sat, 4 Feb 2023 13:20:36 +0000 Subject: [PATCH 179/189] Correction of debian dependencies Taken from : eagavi/quickemu@88682d2 Co-authored-by: eagavi <eagavi@users.noreply.github.com> --- README.md | 4 ++-- build-docs | 2 +- docs/quickemu.1 | 4 ++-- docs/quickemu.1.md | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 7915831..096a941 100644 --- a/README.md +++ b/README.md @@ -103,9 +103,9 @@ above requirements or their equivalents. These examples may save a little typing -Debian: +Debian (and direct derivatives such as MX Linux): - sudo apt install qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip + sudo apt install qemu bash coreutils ovmf grep jq lsb-base procps python3 genisoimage usbutils util-linux sed spice-client-gtk libtss2-tcti-swtpm0 wget xdg-user-dirs zsync unzip Fedora: diff --git a/build-docs b/build-docs index 43c38df..8080141 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 43c38df5ef08bada423b076274604951d5c13c0d +Subproject commit 80801415867ebbd343bfc49b5d7b9fa33a79759a diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 39cefe8..826c964 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -209,11 +209,11 @@ to install the above requirements or their equivalents. .PP These examples may save a little typing .PP -Debian: +Debian (and direct derivatives such as MX Linux): .IP .nf \f[C] -sudo apt install qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip +sudo apt install qemu bash coreutils ovmf grep jq lsb-base procps python3 genisoimage usbutils util-linux sed spice-client-gtk libtss2-tcti-swtpm0 wget xdg-user-dirs zsync unzip \f[R] .fi .PP diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 54a8c1b..9c35904 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -166,9 +166,9 @@ above requirements or their equivalents. These examples may save a little typing -Debian: +Debian (and direct derivatives such as MX Linux): - sudo apt install qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip + sudo apt install qemu bash coreutils ovmf grep jq lsb-base procps python3 genisoimage usbutils util-linux sed spice-client-gtk libtss2-tcti-swtpm0 wget xdg-user-dirs zsync unzip Fedora: From a99ca998f5c57943b9956f7a028217ac32c780b5 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Mon, 6 Feb 2023 23:27:33 +0000 Subject: [PATCH 180/189] added BlendOS --- quickget | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/quickget b/quickget index a48144a..2b4e58f 100755 --- a/quickget +++ b/quickget @@ -36,6 +36,7 @@ function pretty_name() { archlinux) PRETTY_NAME="Arch Linux";; archcraft) PRETTY_NAME="Archcraft";; arcolinux) PRETTY_NAME="Arco Linux";; + blendos) PRETTY_NAME="BlendOS";; cachyos) PRETTY_NAME="CachyOS";; centos-stream) PRETTY_NAME="CentOS Stream";; dragonflybsd) PRETTY_NAME="DragonFlyBSD";; @@ -172,6 +173,7 @@ function os_support() { archcraft \ arcolinux \ batocera \ + blendos \ cachyos \ centos-stream \ debian \ @@ -263,6 +265,10 @@ function editions_arcolinux() { echo large small } +function releases_blendos() { + echo 23.01 +} + function releases_cachyos() { echo 230121 } @@ -991,6 +997,13 @@ function get_arcolinux() { echo "${URL}/${ISO} ${HASH}" } +function get_blendos() { + local HASH="" + local URL="$(wget -q https://api.github.com/repos/blend-os/blendOS/releases -O- |grep 'browser_download_url'|grep ${RELEASE} | grep -o '\"http.*\.iso\"'| cut -d\" -f 2| head -1)" + HASH=$(wget -q -O- "${URL}.sha256sum" | cut -d' ' -f1) + echo "${URL} ${HASH}" +} + function get_batocera() { local HASH="" local URL="https://mirrors.o2switch.fr/batocera/x86_64/stable/last" From 6f8f99dc17455f651367cb23b9a6598e1314f0dc Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Tue, 7 Feb 2023 00:53:51 +0000 Subject: [PATCH 181/189] dynamic fetching of release tags also swap wgets for curls --- quickget | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/quickget b/quickget index 2b4e58f..44ffe4e 100755 --- a/quickget +++ b/quickget @@ -266,7 +266,8 @@ function editions_arcolinux() { } function releases_blendos() { - echo 23.01 + curl -s https://api.github.com/repos/blend-os/blendOS/releases |grep tag_name | grep -o -E '[[:digit:]]+\.[[:digit:]]+' + } function releases_cachyos() { @@ -999,8 +1000,8 @@ function get_arcolinux() { function get_blendos() { local HASH="" - local URL="$(wget -q https://api.github.com/repos/blend-os/blendOS/releases -O- |grep 'browser_download_url'|grep ${RELEASE} | grep -o '\"http.*\.iso\"'| cut -d\" -f 2| head -1)" - HASH=$(wget -q -O- "${URL}.sha256sum" | cut -d' ' -f1) + local URL="$(curl -s https://api.github.com/repos/blend-os/blendOS/releases |grep 'browser_download_url'|grep ${RELEASE} | grep -o '\"http.*\.iso\"'| cut -d\" -f 2| head -1)" + HASH=$(curl -s "${URL}.sha256sum" | cut -d' ' -f1) echo "${URL} ${HASH}" } From aba13b77d4620d4d307b024c0edf95ffe027bdd2 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Tue, 7 Feb 2023 02:57:53 +0000 Subject: [PATCH 182/189] Added BlendOS by regenerating docs --- README.md | 3 ++- docs/quickemu.1 | 4 +++- docs/quickemu.1.md | 3 ++- docs/quickemu_conf.1 | 2 +- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 4 +++- docs/quickget.1.md | 3 ++- 7 files changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 096a941..5f55a3b 100644 --- a/README.md +++ b/README.md @@ -240,6 +240,7 @@ with your preferred flavour. - `archlinux` (Arch Linux) - `arcolinux` (Arco Linux) - `batocera` (Batocera) +- `blendos` (BlendOS) - `cachyos` (CachyOS) - `centos-stream` (CentOS Stream) - `debian` (Debian) @@ -779,7 +780,7 @@ You can also pass optional parameters ``` <!-- [[[end]]] --> -``` + ## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 826c964..2c3e0e2 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "February 4, 2023" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "February 7, 2023" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -345,6 +345,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]batocera\f[R] (Batocera) .IP \[bu] 2 +\f[V]blendos\f[R] (BlendOS) +.IP \[bu] 2 \f[V]cachyos\f[R] (CachyOS) .IP \[bu] 2 \f[V]centos-stream\f[R] (CentOS Stream) diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 9c35904..f8e4db4 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 4, 2023 +date: February 7, 2023 footer: quickemu header: Quickemu User Manual section: 1 @@ -264,6 +264,7 @@ with your preferred flavour. - `archlinux` (Arch Linux) - `arcolinux` (Arco Linux) - `batocera` (Batocera) +- `blendos` (BlendOS) - `cachyos` (CachyOS) - `centos-stream` (CentOS Stream) - `debian` (Debian) diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index a66ef36..5e438e8 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "February 4, 2023" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "February 7, 2023" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index eb0db42..04c5572 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 4, 2023 +date: February 7, 2023 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index 60484ee..6819fbc 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "February 4, 2023" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "February 7, 2023" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -127,6 +127,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]batocera\f[R] (Batocera) .IP \[bu] 2 +\f[V]blendos\f[R] (BlendOS) +.IP \[bu] 2 \f[V]cachyos\f[R] (CachyOS) .IP \[bu] 2 \f[V]centos-stream\f[R] (CentOS Stream) diff --git a/docs/quickget.1.md b/docs/quickget.1.md index c3e72e6..cef5a9f 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 4, 2023 +date: February 7, 2023 footer: quickget header: Quickget User Manual section: 1 @@ -96,6 +96,7 @@ with your preferred flavour. - `archlinux` (Arch Linux) - `arcolinux` (Arco Linux) - `batocera` (Batocera) +- `blendos` (BlendOS) - `cachyos` (CachyOS) - `centos-stream` (CentOS Stream) - `debian` (Debian) From 31bba1073b24d9b695beb112b65536ca47c5c2b0 Mon Sep 17 00:00:00 2001 From: Phil Clifford <philclifford@users.noreply.github.com> Date: Wed, 26 Apr 2023 11:28:36 +0100 Subject: [PATCH 183/189] Add Endless OS (#642) Co-authored-by: Martin Wimpress <304639+flexiondotorg@users.noreply.github.com> --- quickget | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/quickget b/quickget index 44ffe4e..69b2e50 100755 --- a/quickget +++ b/quickget @@ -42,6 +42,7 @@ function pretty_name() { dragonflybsd) PRETTY_NAME="DragonFlyBSD";; elementary) PRETTY_NAME="elementary OS";; endeavouros) PRETTY_NAME="EndeavourOS";; + endless) PRETTY_NAME="Endless OS";; freebsd) PRETTY_NAME="FreeBSD";; freedos) PRETTY_NAME="FreeDOS";; garuda) PRETTY_NAME="Garuda Linux";; @@ -182,6 +183,7 @@ function os_support() { dragonflybsd \ elementary \ endeavouros \ + endless \ fedora \ freebsd \ freedos \ @@ -327,6 +329,14 @@ function releases_endeavouros() { cassini_22_12 } +function releases_endless() { + echo 5.0.0 +} + +function editions_endless() { + echo base en fr pt_BR es +} + function releases_fedora() { echo 33 34 35 36 37 38 } @@ -856,7 +866,7 @@ EOF # OS specific tweaks case ${OS} in - alma|centos-stream|oraclelinux|popos|rockylinux|nixos) + alma|centos-stream|endless|nixos|oraclelinux|popos|rockylinux) echo "disk_size=\"32G\"" >> "${CONF_FILE}";; batocera) echo "disk_size=\"8G\"" >> "${CONF_FILE}";; @@ -1146,6 +1156,34 @@ function get_endeavouros() { echo "${URL}/${ISO} ${HASH}" } +function get_endless() { + local HASH="" # No hash - there is a signature in .asc signed by + #https://d1anzknqnc1kmb.cloudfront.net/eos-image-keyring.gpg + # (4096R: CB50 0F7B C923 3FAD 32B4 E720 9E0C 1250 587A 279C) + local FILE_TS="" + # https://support.endlessos.org/en/installation/direct-download gives the info but computes the URLS in js + # so parsing out the useful info is not happening tonight + # Endless edition names are "base" for the small minimal one or the Language for the large full release + # The isos are stamped as they are finished so .... + case ${EDITION} in + base) + FILE_TS="230127-211122";; + fr) + FILE_TS="230127-213415";; + en) + FILE_TS="230127-212436";; + es) + FILE_TS="230127-212646";; + pt_BR) + FILE_TS="230127-220328";; + esac + + URL="https://images-dl.endlessm.com/release/${RELEASE}/eos-amd64-amd64/${EDITION}" + ISO="eos-eos${RELEASE:0:3}-amd64-amd64.${FILE_TS}.${EDITION}.iso" + + echo "${URL}/${ISO}" +} + function get_fedora() { local EDITION="${1:-}" local HASH="" From 8b256bb57dd8c924876731e8ddc8af2217baf11d Mon Sep 17 00:00:00 2001 From: zenobit <zen@osowoso.xyz> Date: Wed, 26 Apr 2023 12:31:43 +0200 Subject: [PATCH 184/189] Update cachyos to latest version (#666) --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 69b2e50..aa2117f 100755 --- a/quickget +++ b/quickget @@ -273,7 +273,7 @@ function releases_blendos() { } function releases_cachyos() { - echo 230121 + echo 2300305 } function editions_cachyos() { From 6a612bd104733dec60c27374cfce727d89b043fa Mon Sep 17 00:00:00 2001 From: deraffe <deraffe@users.noreply.github.com> Date: Tue, 11 Apr 2023 15:58:21 +0200 Subject: [PATCH 185/189] Fix aria2 using wrong destination directory If you have set a download directory in aria2's config, quickget will download files to the wrong directory. This overwrites that setting and downloads files to the correct location. Quote from `aria2c(1)`: > `-o, --out=<FILE>` > The file name of the downloaded file. It is > always relative to the directory given in > `--dir` option. --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index aa2117f..c174a84 100755 --- a/quickget +++ b/quickget @@ -741,7 +741,7 @@ function web_get() { fi if command -v aria2c &>/dev/null; then - if ! aria2c --stderr -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}" --dir "${DIR}" -o "${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 ba7621944d8ee504e929aea19346b9a46b522e99 Mon Sep 17 00:00:00 2001 From: zenobit <zen@osowoso.xyz> Date: Thu, 9 Mar 2023 15:37:50 +0100 Subject: [PATCH 186/189] VX-Linux --- quickget | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/quickget b/quickget index c174a84..3e259c8 100755 --- a/quickget +++ b/quickget @@ -73,6 +73,7 @@ function pretty_name() { ubuntustudio) PRETTY_NAME="Ubuntu Studio";; ubuntu-unity) PRETTY_NAME="Ubuntu Unity";; void) PRETTY_NAME="Void Linux";; + vxlinux) PRETTY_NAME="VX Linux";; zorin) PRETTY_NAME="Zorin OS";; *) PRETTY_NAME="${SIMPLE_NAME^}";; esac @@ -226,6 +227,7 @@ function os_support() { ubuntustudio \ ubuntu-unity \ void \ + vxlinux \ windows \ xubuntu \ zorin @@ -644,6 +646,10 @@ function editions_void() { echo glibc musl xfce-glibc xfce-musl } +function releases_vxlinux() { + echo 6.1 5.0 4.2 4.1 4.0 +} + function releases_windows() { echo 8 10 11 } @@ -1697,6 +1703,19 @@ function get_zorin() { echo "${URL} ${HASH}" } +function get_vxlinux() { + local HASH="" + local ISO="" + local URL="https://github.com/dessington/vx-linux/releases/download/${RELEASE}" + + if [ "$RELEASE" == "4.0" ]; then + ISO="vx-linux-4.0-qt.iso" + else + ISO="vx-linux-${RELEASE}.iso" + fi + echo "${URL}/${ISO} ${HASH}" +} + function unattended_windows() { cat << 'EOF' > "${1}" <?xml version="1.0" encoding="utf-8"?> From 994de923a8464bcfbefe998cc4596d82e85c59f0 Mon Sep 17 00:00:00 2001 From: zenobit <zen@osowoso.xyz> Date: Sun, 12 Mar 2023 02:04:32 +0100 Subject: [PATCH 187/189] Added vxlinux 6.1.2 --- quickget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickget b/quickget index 3e259c8..c0252ca 100755 --- a/quickget +++ b/quickget @@ -647,7 +647,7 @@ function editions_void() { } function releases_vxlinux() { - echo 6.1 5.0 4.2 4.1 4.0 + echo 6.1.2 6.1 5.0 4.2 4.1 4.0. } function releases_windows() { From cb6d6d2ad7e814d49e061e32583bb2da6f8db935 Mon Sep 17 00:00:00 2001 From: Martin Wimpress <code@flexion.org> Date: Wed, 26 Apr 2023 11:46:18 +0100 Subject: [PATCH 188/189] chore: bump version to 4.7 --- quickemu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickemu b/quickemu index 79ee129..e1a7df0 100755 --- a/quickemu +++ b/quickemu @@ -1502,7 +1502,7 @@ EXTRA_ARGS="" # shellcheck disable=SC2155 readonly LAUNCHER=$(basename "${0}") readonly DISK_MIN_SIZE=$((197632 * 8)) -readonly VERSION="4.6" +readonly VERSION="4.7" # TODO: Make this run the native architecture binary QEMU=$(command -v qemu-system-x86_64) From 7a87d5ac7e50ca23a8a90bb1b62777a808755cfb Mon Sep 17 00:00:00 2001 From: Phil Clifford <philip.clifford@gmail.com> Date: Wed, 26 Apr 2023 11:49:07 +0100 Subject: [PATCH 189/189] updated for new release --- README.md | 14 +++++--------- build-docs | 2 +- docs/quickemu.1 | 18 +++++++++--------- docs/quickemu.1.md | 14 +++++--------- docs/quickemu_conf.1 | 2 +- docs/quickemu_conf.1.md | 2 +- docs/quickget.1 | 18 +++++++++--------- docs/quickget.1.md | 14 +++++--------- 8 files changed, 36 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 5f55a3b..724e1b3 100644 --- a/README.md +++ b/README.md @@ -222,6 +222,7 @@ with your preferred flavour. - `kubuntu` (Kubuntu) - `lubuntu` (Lubuntu) - `ubuntu-budgie` (Ubuntu Budgie) +- `ubuntucinnamon` (Ubuntu Cinnamon) - `ubuntukylin` (Ubuntu Kylin) - `ubuntu-mate` (Ubuntu MATE) - `ubuntustudio` (Ubuntu Studio) @@ -249,10 +250,10 @@ with your preferred flavour. - `dragonflybsd` (DragonFlyBSD) - `elementary` (elementary OS) - `endeavouros` (EndeavourOS) +- `endless` (Endless OS) - `fedora` (Fedora) - `freebsd` (FreeBSD) - `freedos` (FreeDOS) -- `garuda` (Garuda Linux) - `gentoo` (Gentoo) - `ghostbsd` (GhostBSD) - `haiku` (Haiku) @@ -274,12 +275,14 @@ with your preferred flavour. - `reactos` (ReactOS) - `rebornos` (RebornOS) - `rockylinux` (Rocky Linux) +- `siduction` (Siduction) - `slackware` (Slackware) - `solus` (Solus) - `tails` (Tails) - `truenas-core` (TrueNAS Core) - `truenas-scale` (TrueNAS Scale) - `void` (Void Linux) +- `vxlinux` (VX Linux) - `zorin` (Zorin OS) Or you can download a Linux image and manually create a VM @@ -460,13 +463,6 @@ automatically, but does automatically create an optimised virtual machine configuration that you can just add an Windows .iso image to. This configuration also includes the [VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). -`quickget` can automatically download Windows 8.1, [Windows -10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and -[Windows -11](https://www.microsoft.com/en-gb/software-download/windows11) along -with the [VirtIO drivers for -Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) -and creates a virtual machine configuration. ``` bash quickget windows 11 @@ -780,7 +776,7 @@ You can also pass optional parameters ``` <!-- [[[end]]] --> - +``` ## Desktop shortcuts Desktop shortcuts can be created for a VM, the shortcuts are saved in diff --git a/build-docs b/build-docs index 8080141..9a4b74d 160000 --- a/build-docs +++ b/build-docs @@ -1 +1 @@ -Subproject commit 80801415867ebbd343bfc49b5d7b9fa33a79759a +Subproject commit 9a4b74daffbae575a547bc1272d6961992902215 diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 2c3e0e2..f1b3f98 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU" "1" "February 7, 2023" "quickemu" "Quickemu User Manual" +.TH "QUICKEMU" "1" "April 26, 2023" "quickemu" "Quickemu User Manual" .hy .SH NAME .PP @@ -316,6 +316,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]ubuntu-budgie\f[R] (Ubuntu Budgie) .IP \[bu] 2 +\f[V]ubuntucinnamon\f[R] (Ubuntu Cinnamon) +.IP \[bu] 2 \f[V]ubuntukylin\f[R] (Ubuntu Kylin) .IP \[bu] 2 \f[V]ubuntu-mate\f[R] (Ubuntu MATE) @@ -363,14 +365,14 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]endeavouros\f[R] (EndeavourOS) .IP \[bu] 2 +\f[V]endless\f[R] (Endless OS) +.IP \[bu] 2 \f[V]fedora\f[R] (Fedora) .IP \[bu] 2 \f[V]freebsd\f[R] (FreeBSD) .IP \[bu] 2 \f[V]freedos\f[R] (FreeDOS) .IP \[bu] 2 -\f[V]garuda\f[R] (Garuda Linux) -.IP \[bu] 2 \f[V]gentoo\f[R] (Gentoo) .IP \[bu] 2 \f[V]ghostbsd\f[R] (GhostBSD) @@ -413,6 +415,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]rockylinux\f[R] (Rocky Linux) .IP \[bu] 2 +\f[V]siduction\f[R] (Siduction) +.IP \[bu] 2 \f[V]slackware\f[R] (Slackware) .IP \[bu] 2 \f[V]solus\f[R] (Solus) @@ -425,6 +429,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]void\f[R] (Void Linux) .IP \[bu] 2 +\f[V]vxlinux\f[R] (VX Linux) +.IP \[bu] 2 \f[V]zorin\f[R] (Zorin OS) .PP Or you can download a Linux image and manually create a VM @@ -688,12 +694,6 @@ automatically, but does automatically create an optimised virtual machine configuration that you can just add an Windows .iso image to. This configuration also includes the VirtIO drivers for Windows (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). -\f[V]quickget\f[R] can automatically download Windows 8.1, Windows -10 (https://www.microsoft.com/en-gb/software-download/windows10ISO) and -Windows 11 (https://www.microsoft.com/en-gb/software-download/windows11) -along with the VirtIO drivers for -Windows (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) -and creates a virtual machine configuration. .IP .nf \f[C] diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index f8e4db4..18d3f41 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 7, 2023 +date: April 26, 2023 footer: quickemu header: Quickemu User Manual section: 1 @@ -246,6 +246,7 @@ with your preferred flavour. - `kubuntu` (Kubuntu) - `lubuntu` (Lubuntu) - `ubuntu-budgie` (Ubuntu Budgie) +- `ubuntucinnamon` (Ubuntu Cinnamon) - `ubuntukylin` (Ubuntu Kylin) - `ubuntu-mate` (Ubuntu MATE) - `ubuntustudio` (Ubuntu Studio) @@ -273,10 +274,10 @@ with your preferred flavour. - `dragonflybsd` (DragonFlyBSD) - `elementary` (elementary OS) - `endeavouros` (EndeavourOS) +- `endless` (Endless OS) - `fedora` (Fedora) - `freebsd` (FreeBSD) - `freedos` (FreeDOS) -- `garuda` (Garuda Linux) - `gentoo` (Gentoo) - `ghostbsd` (GhostBSD) - `haiku` (Haiku) @@ -298,12 +299,14 @@ with your preferred flavour. - `reactos` (ReactOS) - `rebornos` (RebornOS) - `rockylinux` (Rocky Linux) +- `siduction` (Siduction) - `slackware` (Slackware) - `solus` (Solus) - `tails` (Tails) - `truenas-core` (TrueNAS Core) - `truenas-scale` (TrueNAS Scale) - `void` (Void Linux) +- `vxlinux` (VX Linux) - `zorin` (Zorin OS) Or you can download a Linux image and manually create a VM @@ -490,13 +493,6 @@ automatically, but does automatically create an optimised virtual machine configuration that you can just add an Windows .iso image to. This configuration also includes the [VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). -`quickget` can automatically download Windows 8.1, [Windows -10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and -[Windows -11](https://www.microsoft.com/en-gb/software-download/windows11) along -with the [VirtIO drivers for -Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) -and creates a virtual machine configuration. ``` bash quickget windows 11 diff --git a/docs/quickemu_conf.1 b/docs/quickemu_conf.1 index 5e438e8..3967eeb 100644 --- a/docs/quickemu_conf.1 +++ b/docs/quickemu_conf.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKEMU_CONF" "1" "February 7, 2023" "quickemu_conf" "Quickemu Configuration Manual" +.TH "QUICKEMU_CONF" "1" "April 26, 2023" "quickemu_conf" "Quickemu Configuration Manual" .hy .SH NAME .PP diff --git a/docs/quickemu_conf.1.md b/docs/quickemu_conf.1.md index 04c5572..4c7396d 100644 --- a/docs/quickemu_conf.1.md +++ b/docs/quickemu_conf.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 7, 2023 +date: April 26, 2023 footer: quickemu_conf header: Quickemu Configuration Manual section: 1 diff --git a/docs/quickget.1 b/docs/quickget.1 index 6819fbc..b36e705 100644 --- a/docs/quickget.1 +++ b/docs/quickget.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "QUICKGET" "1" "February 7, 2023" "quickget" "Quickget User Manual" +.TH "QUICKGET" "1" "April 26, 2023" "quickget" "Quickget User Manual" .hy .SH NAME .PP @@ -98,6 +98,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]ubuntu-budgie\f[R] (Ubuntu Budgie) .IP \[bu] 2 +\f[V]ubuntucinnamon\f[R] (Ubuntu Cinnamon) +.IP \[bu] 2 \f[V]ubuntukylin\f[R] (Ubuntu Kylin) .IP \[bu] 2 \f[V]ubuntu-mate\f[R] (Ubuntu MATE) @@ -145,14 +147,14 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]endeavouros\f[R] (EndeavourOS) .IP \[bu] 2 +\f[V]endless\f[R] (Endless OS) +.IP \[bu] 2 \f[V]fedora\f[R] (Fedora) .IP \[bu] 2 \f[V]freebsd\f[R] (FreeBSD) .IP \[bu] 2 \f[V]freedos\f[R] (FreeDOS) .IP \[bu] 2 -\f[V]garuda\f[R] (Garuda Linux) -.IP \[bu] 2 \f[V]gentoo\f[R] (Gentoo) .IP \[bu] 2 \f[V]ghostbsd\f[R] (GhostBSD) @@ -195,6 +197,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]rockylinux\f[R] (Rocky Linux) .IP \[bu] 2 +\f[V]siduction\f[R] (Siduction) +.IP \[bu] 2 \f[V]slackware\f[R] (Slackware) .IP \[bu] 2 \f[V]solus\f[R] (Solus) @@ -207,6 +211,8 @@ All the official Ubuntu flavours are supported, just replace .IP \[bu] 2 \f[V]void\f[R] (Void Linux) .IP \[bu] 2 +\f[V]vxlinux\f[R] (VX Linux) +.IP \[bu] 2 \f[V]zorin\f[R] (Zorin OS) .PP Or you can download a Linux image and manually create a VM @@ -470,12 +476,6 @@ automatically, but does automatically create an optimised virtual machine configuration that you can just add an Windows .iso image to. This configuration also includes the VirtIO drivers for Windows (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). -\f[V]quickget\f[R] can automatically download Windows 8.1, Windows -10 (https://www.microsoft.com/en-gb/software-download/windows10ISO) and -Windows 11 (https://www.microsoft.com/en-gb/software-download/windows11) -along with the VirtIO drivers for -Windows (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) -and creates a virtual machine configuration. .IP .nf \f[C] diff --git a/docs/quickget.1.md b/docs/quickget.1.md index cef5a9f..5051be5 100644 --- a/docs/quickget.1.md +++ b/docs/quickget.1.md @@ -1,6 +1,6 @@ --- author: Martin Wimpress -date: February 7, 2023 +date: April 26, 2023 footer: quickget header: Quickget User Manual section: 1 @@ -78,6 +78,7 @@ with your preferred flavour. - `kubuntu` (Kubuntu) - `lubuntu` (Lubuntu) - `ubuntu-budgie` (Ubuntu Budgie) +- `ubuntucinnamon` (Ubuntu Cinnamon) - `ubuntukylin` (Ubuntu Kylin) - `ubuntu-mate` (Ubuntu MATE) - `ubuntustudio` (Ubuntu Studio) @@ -105,10 +106,10 @@ with your preferred flavour. - `dragonflybsd` (DragonFlyBSD) - `elementary` (elementary OS) - `endeavouros` (EndeavourOS) +- `endless` (Endless OS) - `fedora` (Fedora) - `freebsd` (FreeBSD) - `freedos` (FreeDOS) -- `garuda` (Garuda Linux) - `gentoo` (Gentoo) - `ghostbsd` (GhostBSD) - `haiku` (Haiku) @@ -130,12 +131,14 @@ with your preferred flavour. - `reactos` (ReactOS) - `rebornos` (RebornOS) - `rockylinux` (Rocky Linux) +- `siduction` (Siduction) - `slackware` (Slackware) - `solus` (Solus) - `tails` (Tails) - `truenas-core` (TrueNAS Core) - `truenas-scale` (TrueNAS Scale) - `void` (Void Linux) +- `vxlinux` (VX Linux) - `zorin` (Zorin OS) Or you can download a Linux image and manually create a VM @@ -322,13 +325,6 @@ automatically, but does automatically create an optimised virtual machine configuration that you can just add an Windows .iso image to. This configuration also includes the [VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/). -`quickget` can automatically download Windows 8.1, [Windows -10](https://www.microsoft.com/en-gb/software-download/windows10ISO) and -[Windows -11](https://www.microsoft.com/en-gb/software-download/windows11) along -with the [VirtIO drivers for -Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/) -and creates a virtual machine configuration. ``` bash quickget windows 11