From 82be8d324ccb947a36c82476d6ea79d88f2a2101 Mon Sep 17 00:00:00 2001 From: Vitaliy Krylov Date: Thu, 23 Dec 2021 20:36:34 +0300 Subject: [PATCH] Improved support of KolibriOS: CD-ROM (iso), Disk, Internet and Audio are working now. Also added forced LiveCD booting (because release named latest-iso, not latest-img). Did some tweaks with '-machine' and '-cpu'. Now these VMs will run with 'qemu32' processor since KolibriOS throw an MTRR error (I didnt get how to fix it by any other way). --- quickemu | 31 ++++++++++++++++++++++++++++--- quickget | 1 - 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/quickemu b/quickemu index 78a3c74..f0a44a3 100755 --- a/quickemu +++ b/quickemu @@ -228,6 +228,7 @@ function vm_boot() { local KERNEL_NODE="" local KERNEL_VER="?" local LSB_DESCRIPTION="Unknown OS" + local MACHINETYPE="q35" local MAC_BOOTLOADER="" local MAC_MISSING="" local MAC_DISK_DEV="ide-hd,bus=ahci.2" @@ -451,7 +452,7 @@ function vm_boot() { # Make any OS specific adjustments case ${guest_os} in - freebsd|kolibrios|linux|openbsd) + freebsd|linux|openbsd) CPU="-cpu host,kvm=on" if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then CPU="${CPU},topoext" @@ -463,6 +464,18 @@ function vm_boot() { disk_size="16G" fi ;; + kolibrios) + CPU="-cpu qemu32,kvm=on" + if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then + CPU="${CPU},topoext" + fi + MACHINETYPE="pc" + NET_DEVICE="rtl8139" + GUEST_TWEAKS="-boot d" + if [ -z "${disk_size}" ]; then + disk_size="256M" + fi + ;; macos) #https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/ # A CPU with SSE4.1 support is required for >= macOS Sierra @@ -591,7 +604,7 @@ function vm_boot() { fi fi - if [ "${DISK_USED}" == "yes" ]; then + if [ "${DISK_USED}" == "yes" ] && [ "${guest_os}" != "kolibrios" ]; then # If there is a disk image that appears to be used do not boot from installation media. iso="" img="" @@ -833,7 +846,7 @@ function vm_boot() { # shellcheck disable=SC2054,SC2206,SC2140 args+=(-name ${VMNAME},process=${VMNAME} -pidfile "${VMDIR}/${VMNAME}.pid" - -enable-kvm -machine q35,smm=${SMM},vmport=off ${GUEST_TWEAKS} + -enable-kvm -machine ${MACHINETYPE},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}" @@ -891,6 +904,13 @@ function vm_boot() { args+=(-drive if=floppy,format=raw,file="${floppy}") fi + # Since there is bug (probably) in KolibriOS: cdrom indexes 0 or 1 make system show an extra unexisting iso, so we use index=2 + if [ -n "${iso}" ] && [ "${guest_os}" == "kolibrios" ]; then + # shellcheck disable=SC2054 + args+=(-drive media=cdrom,index=2,file="${iso}") + iso="" + fi + if [ -n "${iso}" ]; then # shellcheck disable=SC2054 args+=(-drive media=cdrom,index=0,file="${iso}") @@ -922,6 +942,11 @@ function vm_boot() { # shellcheck disable=SC2054,SC2206 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 + -device ide-hd,bus=ahci.0,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 f4fa47e..76f2cf3 100755 --- a/quickget +++ b/quickget @@ -612,7 +612,6 @@ EOF if [ "${OS}" == "kolibrios" ]; then echo "boot=\"legacy\"" >> "${OS}-${RELEASE}.conf" - echo "disk_size=\"256M\"" >> "${OS}-${RELEASE}.conf" fi if [ "${OS}" == "openbsd" ]; then