Merge branch 'master' into merging-fixes

This commit is contained in:
Martin Wimpress 2022-02-17 09:49:19 +00:00 committed by GitHub
commit b933bf77d5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 524 additions and 20 deletions

View file

@ -228,6 +228,7 @@ function vm_boot() {
local KERNEL_NODE=""
local KERNEL_VER="?"
local LSB_DESCRIPTION="Unknown OS"
local MACHINE_TYPE="q35"
local MAC_BOOTLOADER=""
local MAC_MISSING=""
local MAC_DISK_DEV="ide-hd,bus=ahci.2"
@ -383,7 +384,7 @@ function vm_boot() {
# 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
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
@ -392,9 +393,18 @@ function vm_boot() {
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.fd" ]; then
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/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/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}"
else
echo "ERROR! SecureBoot was requested but no SecureBoot capable firmware was found."
echo " Please install OVMF firmware."
@ -417,6 +427,12 @@ function vm_boot() {
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}"
else
echo "ERROR! EFI boot requested but no EFI firmware found."
echo " Please install OVMF firmware."
@ -463,6 +479,29 @@ function vm_boot() {
disk_size="16G"
fi
;;
kolibrios)
CPU="-cpu qemu32,kvm=on"
if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then
CPU="${CPU},topoext"
fi
MACHINE_TYPE="pc"
NET_DEVICE="rtl8139"
GUEST_TWEAKS="-boot d"
if [ -z "${disk_size}" ]; then
disk_size="256M"
fi
;;
haiku)
CPU="-cpu host,kvm=on"
MACHINE_TYPE="pc"
NET_DEVICE="rtl8139"
if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then
CPU="${CPU},topoext"
fi
if [ -z "${disk_size}" ]; then
disk_size="32G"
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 +630,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 +872,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 ${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}"
@ -891,6 +930,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 +968,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