Add distro, kernel and CPU details to start up messages. Close #96

pull/126/head
Martin Wimpress 3 years ago committed by Martin Wimpress
parent c3b3f4ee86
commit d785c89a38
  1. 1
      README.md
  2. 157
      quickemu

@ -64,6 +64,7 @@ See this (old) video where I explain some of my motivations for creating Quickem
* [Coreutils](https://www.gnu.org/software/coreutils/)
* [grep](https://www.gnu.org/software/grep/)
* [jq](https://stedolan.github.io/jq/)
* [LSB](https://wiki.linuxfoundation.org/lsb/start)
* [procps](https://gitlab.com/procps-ng/procps)
* [python3](https://www.python.org/)
* [macrecovery](https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/macrecovery)

@ -143,6 +143,7 @@ function vm_boot() {
local BALLOON="-device virtio-balloon"
local CPU=""
local DISK_USED=""
local DISPLAY_DEVICE=""
local EFI_CODE=""
local EFI_VARS=""
local GUEST_CPU_CORES=""
@ -152,9 +153,12 @@ function vm_boot() {
local HOST_CPU_SMT=""
local HOST_CPU_SOCKETS=""
local HOST_CPU_VENDOR=""
local DISPLAY_DEVICE=""
local GL="on"
local GUEST_TWEAKS=""
local KERNEL_NAME="Unknown"
local KERNEL_NODE=""
local KERNEL_VER="?"
local LSB_DESCRIPTION=""
local MAC_BOOTLOADER=""
local MAC_MISSING=""
local MAC_DISK_DEV="ide-hd,bus=ahci.2"
@ -164,82 +168,23 @@ function vm_boot() {
local QEMU_VER=""
local USB_HOST_PASSTHROUGH_CONTROLLER="qemu-xhci"
local VIDEO=""
QEMU_VER=$(${QEMU} -version | head -n1 | cut -d' ' -f4 | cut -d'(' -f1)
echo "Quickemu ${VERSION} starting ${VM}"
echo " - QEMU: ${QEMU} v${QEMU_VER}"
# Force to lowercase.
boot=${boot,,}
guest_os=${guest_os,,}
# Always Boot macOS using EFI
if [ "${guest_os}" == "macos" ]; then
boot="efi"
echo " - BOOT: EFI (${guest_os})"
if [ -e "${VMDIR}/OVMF_CODE.fd" ] && [ -e "${VMDIR}/OVMF_VARS-1024x768.fd" ]; then
EFI_CODE="${VMDIR}/OVMF_CODE.fd"
EFI_VARS="${VMDIR}/OVMF_VARS-1024x768.fd"
else
MAC_MISSING="Firmware"
fi
if [ -e "${VMDIR}/OpenCore.qcow2" ]; then
MAC_BOOTLOADER="${VMDIR}/OpenCore.qcow2"
elif [ -e "${VMDIR}/ESP.qcow2" ]; then
# Backwards compatibility for Clover
MAC_BOOTLOADER="${VMDIR}/ESP.qcow2"
else
MAC_MISSING="Bootloader"
fi
if [ -n "${MAC_MISSING}" ]; then
echo "ERROR! macOS ${MAC_MISSING} was not found."
echo " Use 'quickget' to download the required files."
exit 1
fi
elif [[ "${boot}" == *"efi"* ]]; then
EFI_VARS="${VMDIR}/OVMF_VARS.fd"
# Preserve backward compatibility
if [ -e "${VMDIR}/${VMNAME}-vars.fd" ]; then
mv "${VMDIR}/${VMNAME}-vars.fd" "${EFI_VARS}"
elif [ -e "${VMDIR}/OVMF_VARS_4M.fd" ]; then
mv "${VMDIR}/OVMF_VARS_4M.fd" "${EFI_VARS}"
fi
if [ -e "/usr/share/OVMF/OVMF_CODE_4M.fd" ] ||
[ -e "/usr/share/OVMF/x64/OVMF_CODE.fd" ] ||
[ -e "/usr/share/OVMF/OVMF_CODE.fd" ]; then
echo " - BOOT: EFI (${guest_os})"
KERNEL_NAME=$(uname --kernel-name)
KERNEL_NODE="($(uname --nodename))"
KERNEL_VER=$(uname --kernel-release | cut -d'.' -f1-2)
if [ -e "/usr/share/OVMF/OVMF_CODE_4M.fd" ]; then
EFI_CODE="/usr/share/OVMF/OVMF_CODE_4M.fd"
elif [ -e "/usr/share/OVMF/x64/OVMF_CODE.fd" ]; then
EFI_CODE="/usr/share/OVMF/x64/OVMF_CODE.fd"
elif [ -e "/usr/share/OVMF/OVMF_CODE.fd" ]; then
EFI_CODE="/usr/share/OVMF/OVMF_CODE.fd"
if command -v lsb_release &>/dev/null; then
LSB_DESCRIPTION=$(lsb_release --description --short)
fi
if [ ! -e "${EFI_VARS}" ]; then
if [ -e "/usr/share/OVMF/OVMF_VARS_4M.fd" ]; then
cp "/usr/share/OVMF/OVMF_VARS_4M.fd" "${EFI_VARS}"
elif [ -e "/usr/share/OVMF/x64/OVMF_VARS.fd" ]; then
cp "/usr/share/OVMF/x64/OVMF_VARS.fd" "${EFI_VARS}"
elif [ -e "/usr/share/OVMF/OVMF_VARS.fd" ]; then
cp "/usr/share/OVMF/OVMF_VARS.fd" "${EFI_VARS}"
fi
fi
else
boot="legacy"
echo " - BOOT: Legacy BIOS (${guest_os}) - EFI requested but no EFI firmware found."
fi
else
echo " - BOOT: Legacy BIOS (${guest_os})"
fi
QEMU_VER=$(${QEMU} -version | head -n1 | cut -d' ' -f4 | cut -d'(' -f1)
echo "Quickemu ${VERSION} starting ${VM} on ${LSB_DESCRIPTION} ${KERNEL_NODE}"
echo " - QEMU: ${QEMU} v${QEMU_VER} on ${KERNEL_NAME} ${KERNEL_VER}"
HOST_CPU_CORES=$(nproc --all)
HOST_CPU_VENDOR=$(lscpu | grep -E 'Vendor' | cut -d':' -f2 | sed 's/ //g')
HOST_CPU_MODEL=$(lscpu | grep '^Model name:' | cut -d':' -f2 | sed 's/ //g')
HOST_CPU_SOCKETS=$(lscpu | grep -E 'Socket' | cut -d':' -f2 | sed 's/ //g')
HOST_CPU_VENDOR=$(lscpu | grep -E 'Vendor' | cut -d':' -f2 | sed 's/ //g')
# A CPU with Intel VT-x / AMD SVM support is required
if [ "${HOST_CPU_VENDOR}" == "AuthenticIntel" ]; then
@ -289,7 +234,8 @@ function vm_boot() {
fi
local SMP="-smp cores=${GUEST_CPU_LOGICAL_CORES},threads=${GUEST_CPU_THREADS},sockets=${HOST_CPU_SOCKETS}"
echo -n " - CPU: ${HOST_CPU_SOCKETS} Socket(s), ${GUEST_CPU_LOGICAL_CORES} Core(s), ${GUEST_CPU_THREADS} Thread(s)"
echo " - CPU: ${HOST_CPU_MODEL}"
echo -n " - CPU VM: ${HOST_CPU_SOCKETS} Socket(s), ${GUEST_CPU_LOGICAL_CORES} Core(s), ${GUEST_CPU_THREADS} Thread(s)"
local RAM_VM="2G"
if [ -z "${ram}" ]; then
@ -318,6 +264,75 @@ function vm_boot() {
fi
fi
# Force to lowercase.
boot=${boot,,}
guest_os=${guest_os,,}
# Always Boot macOS using EFI
if [ "${guest_os}" == "macos" ]; then
boot="efi"
echo " - BOOT: EFI (${guest_os})"
if [ -e "${VMDIR}/OVMF_CODE.fd" ] && [ -e "${VMDIR}/OVMF_VARS-1024x768.fd" ]; then
EFI_CODE="${VMDIR}/OVMF_CODE.fd"
EFI_VARS="${VMDIR}/OVMF_VARS-1024x768.fd"
else
MAC_MISSING="Firmware"
fi
if [ -e "${VMDIR}/OpenCore.qcow2" ]; then
MAC_BOOTLOADER="${VMDIR}/OpenCore.qcow2"
elif [ -e "${VMDIR}/ESP.qcow2" ]; then
# Backwards compatibility for Clover
MAC_BOOTLOADER="${VMDIR}/ESP.qcow2"
else
MAC_MISSING="Bootloader"
fi
if [ -n "${MAC_MISSING}" ]; then
echo "ERROR! macOS ${MAC_MISSING} was not found."
echo " Use 'quickget' to download the required files."
exit 1
fi
elif [[ "${boot}" == *"efi"* ]]; then
EFI_VARS="${VMDIR}/OVMF_VARS.fd"
# Preserve backward compatibility
if [ -e "${VMDIR}/${VMNAME}-vars.fd" ]; then
mv "${VMDIR}/${VMNAME}-vars.fd" "${EFI_VARS}"
elif [ -e "${VMDIR}/OVMF_VARS_4M.fd" ]; then
mv "${VMDIR}/OVMF_VARS_4M.fd" "${EFI_VARS}"
fi
if [ -e "/usr/share/OVMF/OVMF_CODE_4M.fd" ] ||
[ -e "/usr/share/OVMF/x64/OVMF_CODE.fd" ] ||
[ -e "/usr/share/OVMF/OVMF_CODE.fd" ]; then
echo " - BOOT: EFI (${guest_os})"
if [ -e "/usr/share/OVMF/OVMF_CODE_4M.fd" ]; then
EFI_CODE="/usr/share/OVMF/OVMF_CODE_4M.fd"
elif [ -e "/usr/share/OVMF/x64/OVMF_CODE.fd" ]; then
EFI_CODE="/usr/share/OVMF/x64/OVMF_CODE.fd"
elif [ -e "/usr/share/OVMF/OVMF_CODE.fd" ]; then
EFI_CODE="/usr/share/OVMF/OVMF_CODE.fd"
fi
if [ ! -e "${EFI_VARS}" ]; then
if [ -e "/usr/share/OVMF/OVMF_VARS_4M.fd" ]; then
cp "/usr/share/OVMF/OVMF_VARS_4M.fd" "${EFI_VARS}"
elif [ -e "/usr/share/OVMF/x64/OVMF_VARS.fd" ]; then
cp "/usr/share/OVMF/x64/OVMF_VARS.fd" "${EFI_VARS}"
elif [ -e "/usr/share/OVMF/OVMF_VARS.fd" ]; then
cp "/usr/share/OVMF/OVMF_VARS.fd" "${EFI_VARS}"
fi
fi
else
boot="legacy"
echo " - BOOT: Legacy BIOS (${guest_os}) - EFI requested but no EFI firmware found."
fi
else
echo " - BOOT: Legacy BIOS (${guest_os})"
fi
# Make any OS specific adjustments
case ${guest_os} in
freebsd|linux)

Loading…
Cancel
Save