From 0966654439b508172d0613777b8dd96129b0f919 Mon Sep 17 00:00:00 2001 From: Phil Clifford Date: Wed, 10 May 2023 02:30:42 +0100 Subject: [PATCH] initial icaros support Fetches and prepares VM but booting the iso tends to imitate Guru Meditation or black screen of limbo or boot loops. Will need more effort to get to a running live system --- quickemu | 10 ++++-- quickget | 93 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 89 insertions(+), 14 deletions(-) diff --git a/quickemu b/quickemu index 80578be..0eb8d66 100755 --- a/quickemu +++ b/quickemu @@ -468,7 +468,7 @@ function vm_boot() { # Make any OS specific adjustments case ${guest_os} in - batocera|*bsd|freedos|haiku|linux|*solaris) + icaros|batocera|*bsd|freedos|haiku|linux|*solaris) CPU="-cpu host,kvm=on" if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then CPU="${CPU},topoext" @@ -476,7 +476,7 @@ function vm_boot() { if [ "${guest_os}" == "freebsd" ] || [ "${guest_os}" == "ghostbsd" ]; then MOUSE="usb" - elif [ "${guest_os}" == "batocera" ] || [ "${guest_os}" == "freedos" ] || [ "${guest_os}" == "haiku" ]; then + elif [ "${guest_os}" == "icaros" ] || [ "${guest_os}" == "batocera" ] || [ "${guest_os}" == "freedos" ] || [ "${guest_os}" == "haiku" ]; then MACHINE_TYPE="pc" NET_DEVICE="rtl8139" fi @@ -1099,6 +1099,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}" == "icaros" ]; then + # shellcheck disable=SC2054,SC2206 + args+=(-device ahci,id=ahci + -device ide-hd,bus=ahci.0,drive=SystemDisk + -drive id=SystemDisk,if=none,index=1,format=qcow2,file="${disk_img}" ${STATUS_QUO} + -boot order=d,menu=on) elif [ "${guest_os}" == "batocera" ] ; then # shellcheck disable=SC2054,SC2206 diff --git a/quickget b/quickget index 7fe6382..5553ac7 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";; + icaros) PRETTY_NAME="icaros desktop";; blendos) PRETTY_NAME="BlendOS";; cachyos) PRETTY_NAME="CachyOS";; centos-stream) PRETTY_NAME="CentOS Stream";; @@ -195,6 +196,7 @@ function os_support() { gentoo \ ghostbsd \ haiku \ + icaros \ kali \ kdeneon \ kolibrios \ @@ -274,6 +276,12 @@ function releases_arcolinux() { function editions_arcolinux() { echo large small } +function editions_icaros() { + echo live light +} +function releases_icaros() { + echo 2.3.0 2.2.8 2.2.7 2.2.6 2.2.5 +} function releases_blendos() { local RLIST @@ -774,19 +782,19 @@ function web_get() { exit 1 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}" --dir "${DIR}" -o "${FILE}"; then + if command -v aria2c &>/dev/null; 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 + fi 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 - fi - echo #Necessary as aria2c in suppressed mode does not have new lines - else - if ! wget --quiet --continue --show-progress --progress=bar:force:noscroll "${URL}" -O "${DIR}/${FILE}"; then - echo "ERROR! Failed to download ${URL} with wget. Try running 'quickget' again." - exit 1 - fi - fi + else + if ! wget --quiet --continue --show-progress --progress=bar:force:noscroll "${URL}" -O "${DIR}/${FILE}"; then + echo "ERROR! Failed to download ${URL} with wget. Try running 'quickget' again." + exit 1 + fi + fi } function zsync_get() { @@ -837,6 +845,9 @@ function make_vm_config() { IMAGE_FILE="${1}" ISO_FILE="${2}" case "${OS}" in + icaros) + GUEST="icaros" + IMAGE_TYPE="iso";; batocera) GUEST="batocera" IMAGE_TYPE="img";; @@ -948,6 +959,9 @@ EOF echo "disk_size=\"12G\"" >> "${CONF_FILE}" echo "ram=\"2048M\"" >> "${CONF_FILE}" ;; + arosone|icaros) + echo "boot=\"legacy\"" >> "${CONF_FILE}" + ;; macos) echo "macos_release=\"${RELEASE}\"" >> "${CONF_FILE}" # https://github.com/quickemu-project/quickemu/issues/438 @@ -1051,6 +1065,56 @@ function get_arcolinux() { echo "${URL}/${ISO} ${HASH}" } +function get_icaros() { + + local EDITION="${1:-}" + local ISO="Icaros${EDITION^}_${RELEASE//./_}.zip" + local URL="http://www.icarosdesktop.com/icarosfiles/" + local HASH="" + case ${EDITION} in + Live|live) + case ${RELEASE} in + 2.3.0) + HASH="f2e4fdbc71f48e35dccfe6c26ae07a8f" # + ;; + 2.2.8) + HASH="abb77ec6968f3a0823ba527bc0f73ce2" + ;; + 2.2.7) + HASH="d75c1fdc3a3ec6813c0ae768ea43eb47" + ;; + 2.2.6) + HASH="a518574abd6fcbb846f9fd6ae7fa36ec" + ;; + 2.2.5) + HASH="a89ec32c30a10bd4c551bee3b902740d" + ;; + esac + ;; + Light|light) + case ${RELEASE} in + 2.3.0) + HASH="a469a92982842303bbe904efe1d09ea6" + ;; + 2.2.8) + HASH="d8a626c732a6ab3be256ab0007d72b94" + ;; + 2.2.7) + HASH="50a2dc2c544b38c48e44f865c84d7824" + ;; + 2.2.6) + HASH="57366ac7a629f8dbe8da999f9b84eb91" + ;; + 2.2.5) + HASH="e4f5817ec32086b698948c6fc899aec3" + ;; + esac + ;; + esac + + echo "${URL}"/"${ISO}" "${HASH}" + } + function get_blendos() { local EDITION="${1:-}" local HASH="" @@ -2246,6 +2310,11 @@ create_vm() { ISO=$(ls ${VM_PATH} | grep -i '.iso' | grep -v '.zip') fi + if [ ${OS} == "icaros" ] && [[ $ISO =~ ".zip" ]]; then + unzip -j ${VM_PATH}/${ISO} -d ${VM_PATH} + ISO=$(ls ${VM_PATH} | grep -i '.iso' | grep -v '.zip') + fi + make_vm_config "${ISO}" }