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
This commit is contained in:
Phil Clifford 2023-05-10 02:30:42 +01:00
parent 8ee0d3a207
commit 0966654439
No known key found for this signature in database
GPG Key ID: 3B0A3BA167A07F7D
2 changed files with 89 additions and 14 deletions

View File

@ -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

View File

@ -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}"
}