Merge branch 'main' into popos

This commit is contained in:
Yannick Mauray 2021-10-19 06:44:41 +02:00
commit 1ecc5c092a
No known key found for this signature in database
GPG Key ID: 67C4AAC5E99CB909
3 changed files with 35 additions and 29 deletions

View File

@ -28,12 +28,11 @@ comprehensive support for macOS and Windows**.
## Features
* macOS High Sierra, Mojave, Catalina and Big Sur
* Windows 8.1, 10 and 11 including TPM 2.0
* Ubuntu, and all the official flavours, supported by `quickget`
* Fedora, supported by `quickget`
* linuxmint Cinnamon, MATE, and xfce, supported by `quickget`
* openSUSE Leap, Tumbleweed and MicroOS, supported by `quickget`
* **macOS** High Sierra, Mojave, Catalina and Big Sur
* **Windows** 8.1, 10 and 11 including TPM 2.0
* [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu flavours](https://ubuntu.com/download/flavours)**
* [Fedora](https://getfedora.org/) & openSUSE ([Leap](https://get.opensuse.org/leap/), [Tumbleweed](https://get.opensuse.org/tumbleweed/),[MicroOS](https://microos.opensuse.org/))
* [Linux Mint](https://linuxmint.com/) (Cinnamon, MATE, and XFCE)
* Pop!_OS, supported by `quickget` (only with SPICE)
* Full SPICE support including host/guest clipboard sharing
* VirtIO-webdavd file sharing for Linux and Windows guests
@ -250,6 +249,13 @@ and [Windows 11](https://www.microsoft.com/en-gb/software-download/windows11)
along with the [VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/)
and creates a virtual machine configuration.
**During the Windows install network interfaces are completely disabled!** This
is to allow those users who want to create local accounts to do so. A side affect
is that the first time **Windows boots with the QEMU network enabled it will blue
screen, automatically restart and then start normally with fully functioning
networking**.
```bash
quickget windows 11
quickemu --vm windows-11.conf
@ -549,13 +555,6 @@ The above uses the 2560x1440 screen to compute the size of the window, which
Quickemu sizes to 2048x1152. Without the `--screen` option, Quickemu would have
used the 1920x1080 monitor which results in a window size of 1664x936.
# TODO
- [ ] Add `spice-app` support via `virt-viewer`; *requires `virt-viewer` 8.0 or newer*
- [ ] Add support for `ignore_msrs` for macOS. `echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u`
- [ ] Add discrete GPU pass-through
- [ ] Improve disk management
# References
Useful reference that assisted the development of Quickemu.

View File

@ -165,7 +165,6 @@ function vm_boot() {
local MOUSE="usb-tablet"
local NET_DEVICE="virtio-net"
local OSK=""
local QEMU_VER=""
local USB_HOST_PASSTHROUGH_CONTROLLER="qemu-xhci"
local VIDEO=""
@ -177,9 +176,9 @@ function vm_boot() {
LSB_DESCRIPTION=$(lsb_release --description --short)
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}"
echo "Quickemu ${VERSION} using ${QEMU} v${QEMU_VER_LONG}"
echo " - Host: ${LSB_DESCRIPTION} running ${KERNEL_NAME} ${KERNEL_VER} ${KERNEL_NODE}"
echo " - Guest: Starting ${VM} as ${VMNAME}"
HOST_CPU_CORES=$(nproc --all)
HOST_CPU_MODEL=$(lscpu | grep '^Model name:' | cut -d':' -f2 | sed 's/ //g')
@ -687,7 +686,6 @@ function vm_boot() {
-device usb-ehci,id=input
-device usb-kbd,bus=input.0
-device ${MOUSE},bus=input.0
-device ${NET_DEVICE},netdev=nic -netdev ${NET},id=nic
-audiodev pa,id=audio0,out.mixing-engine=off,out.stream-name=${LAUNCHER}-${VMNAME},in.stream-name=${LAUNCHER}-${VMNAME}
-device intel-hda -device hda-duplex,audiodev=audio0
-rtc base=localtime,clock=host,driftfix=slew
@ -700,6 +698,15 @@ function vm_boot() {
-monitor none
-serial mon:stdio)
# Disables network interface during Windows install.
# See https://github.com/wimpysworld/quickemu/issues/115
if [ "${guest_os}" == "windows" ] && [ -n "${iso}" ]; then
args+=(-nic none)
else
# shellcheck disable=SC2054,SC2206
args+=(-device ${NET_DEVICE},netdev=nic -netdev ${NET},id=nic)
fi
# Add the disks
# - https://turlucode.com/qemu-disk-io-performance-comparison-native-or-threads-windows-10-version/
if [[ "${boot}" == *"efi"* ]]; then
@ -795,7 +802,6 @@ function vm_boot() {
echo "${QEMU}" "${SHELL_ARGS}" >> "${VMDIR}/${VMNAME}.sh"
${QEMU} "${args[@]}" > "${VMDIR}/${VMNAME}.log" &
echo -e " - Process: On host: killall ${VMNAME}\t(if a forced kill is required)"
# If output is 'none' then SPICE was requested.
if [ ${OUTPUT} == "none" ]; then
@ -908,9 +914,10 @@ if [ ! -e "${QEMU}" ] && [ ! -e "${QEMU_IMG}" ]; then
exit 1
fi
QEMU_VER=$(${QEMU} -version | head -n1 | cut -d' ' -f4 | cut -d'(' -f1 | sed 's/\.//g' | cut -c1-2)
if [ "${QEMU_VER}" -lt 60 ]; then
echo "ERROR! Qemu 6.0.0 or newer is required, detected $(${QEMU} -version | head -n1 | cut -d' ' -f4 | cut -d'(' -f1)."
QEMU_VER_LONG=$(${QEMU} -version | head -n1 | cut -d' ' -f4 | cut -d'(' -f1)
QEMU_VER_SHORT=$(${QEMU} -version | head -n1 | cut -d' ' -f4 | cut -d'(' -f1 | sed 's/\.//g' | cut -c1-2)
if [ "${QEMU_VER_SHORT}" -lt 60 ]; then
echo "ERROR! Qemu 6.0.0 or newer is required, detected ${QEMU_VER_LONG}."
exit 1
fi

View File

@ -360,13 +360,13 @@ function make_vm_config() {
if [[ "${OS}" == "freebsd" ]]; then
GUEST="freebsd"
IMAGE_TYPE="iso"
elif [[ "${OS}" == *"fedora"* ]]; then
elif [[ "${OS}" == "fedora" ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [[ "${OS}" == *"linuxmint"* ]]; then
elif [[ "${OS}" == "linuxmint" ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [[ "${OS}" == *"opensuse"* ]]; then
elif [[ "${OS}" == "opensuse" ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [[ "${OS}" == "popos" ]]; then
@ -815,13 +815,13 @@ VM_PATH="${OS}-${RELEASE}"
if [ "${OS}" == "macos" ]; then
get_macos
elif [[ "${OS}" == *"freebsd" ]]; then
elif [[ "${OS}" == "freebsd" ]]; then
get_freebsd
elif [[ "${OS}" == *"fedora"* ]]; then
elif [[ "${OS}" == "fedora" ]]; then
get_fedora
elif [[ "${OS}" == *"linuxmint"* ]]; then
elif [[ "${OS}" == "linuxmint" ]]; then
get_linuxmint
elif [[ "${OS}" == *"opensuse"* ]]; then
elif [[ "${OS}" == "opensuse" ]]; then
get_opensuse
elif [[ "${OS}" == "popos" ]]; then
get_popos