Add USB pass-through and WebDAV via SPICE for macOS. Close #223 Close #196

pull/224/head
Martin Wimpress 3 years ago
parent cff40f8db0
commit e5053ec566
No known key found for this signature in database
GPG Key ID: 61DF940515E06DA3
  1. 16
      README.md
  2. 43
      quickemu

@ -253,32 +253,28 @@ macos_release="catalina"
There are some considerations when running macOS via Quickemu.
* `quickemu` will automatically download the required [OpenCore](https://github.com/acidanthera/OpenCorePkg)
bootloader and OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
* Supported macOS releases:
* High Sierra
* Mojave
* Catalina **(Recommended)**
* Big Sur
* Monterey
* Optimised by default
* `quickemu` will automatically download the required [OpenCore](https://github.com/acidanthera/OpenCorePkg)
bootloader and OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
* Optimised by default, but no GPU acceleration is available.
* Host CPU vendor is detected and guest CPU is optimised accordingly.
* [VirtIO Block Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used for the system disk where supported.
* [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for the mouse.
* VirtIO Network (`virtio-net`) is supported and enabled on macOS Big Sur and newer but previous releases use `vmxnet3`.
* VirtIO Memory Ballooning is supported and enabled on macOS Big Sur and newer but disabled for other support macOS releases.
* USB host pass-through is:
* USB host and SPICE pass-through is:
* UHCI (USB 2.0) on macOS Catalina and earlier.
* XHCI (USB 3.0) on macOS Big Sur and newer.
* Display resolution can only be changed via macOS System Preferences.
* Full Duplex audio works on macOS High Sierra, Mojave and Catalina.
* **macOS Big Sur and Monterey have no audio at all**.
* File sharing between guest and host is available via [virtio-9p](https://wiki.qemu.org/Documentation/9psetup).
* **SPICE has limited support on macOS**:
* Copy/paste via SPICE agent is not available.
* File sharing via SPICE webdavd is not available.
* USB pass-through via SPICE is not available.
* Smartcard pass-through is not available.
* File sharing between guest and host is available via [virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
* Copy/paste via SPICE agent is **not available on macOS**.
## Windows 8.1, 10 & 11 Guests

@ -740,9 +740,16 @@ function vm_boot() {
SPICE="${SPICE},port=${SPICE_PORT}"
fi
# Reference: https://gitlab.gnome.org/GNOME/phodav/-/issues/5
if [ "${guest_os}" != "macos" ] && [ -n "${PUBLIC}" ]; then
echo " - WebDAV: On guest: dav://localhost:9843/"
if [ -n "${PUBLIC}" ]; then
case ${guest_os} in
macos)
# Reference: https://gitlab.gnome.org/GNOME/phodav/-/issues/5
echo " - WebDAV: On guest: build spice-webdavd (https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24)"
echo " - WebDAV: On guest: Finder -> Connect to Server -> http://localhost:9843/"
;;
*)
echo " - WebDAV: On guest: dav://localhost:9843/";;
esac
fi
fi
@ -808,8 +815,21 @@ function vm_boot() {
-device virtserialport,chardev=agent0,name=org.qemu.guest_agent.0
-chardev spicevmc,id=vdagent0,name=vdagent
-device virtserialport,chardev=vdagent0,name=com.redhat.spice.0
-chardev spiceport,id=webdav0,name=org.spice-space.webdav.0
-device virtserialport,chardev=webdav0,name=org.spice-space.webdav.0
-device virtio-rng-pci,rng=rng0
-object rng-random,id=rng0,filename=/dev/urandom
-device ${USB_HOST_PASSTHROUGH_CONTROLLER},id=spicepass
-chardev spicevmc,id=usbredirchardev1,name=usbredir
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1
-chardev spicevmc,id=usbredirchardev2,name=usbredir
-device usb-redir,chardev=usbredirchardev2,id=usbredirdev2
-chardev spicevmc,id=usbredirchardev3,name=usbredir
-device usb-redir,chardev=usbredirchardev3,id=usbredirdev3
-device pci-ohci,id=smartpass
-device usb-ccid
-chardev spicevmc,id=ccid,name=smartcard
-device ccid-card-passthru,chardev=ccid
-monitor none
-serial mon:stdio)
@ -893,23 +913,6 @@ function vm_boot() {
-drive id=SystemDisk,if=none,format=qcow2,file="${disk_img}" ${STATUS_QUO})
fi
if [ "${guest_os}" != "macos" ]; then
# shellcheck disable=SC2054,SC2206
args+=(-device ${USB_HOST_PASSTHROUGH_CONTROLLER},id=spicepass
-chardev spicevmc,id=usbredirchardev1,name=usbredir
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1
-chardev spicevmc,id=usbredirchardev2,name=usbredir
-device usb-redir,chardev=usbredirchardev2,id=usbredirdev2
-chardev spicevmc,id=usbredirchardev3,name=usbredir
-device usb-redir,chardev=usbredirchardev3,id=usbredirdev3
-device usb-ccid
-chardev spicevmc,id=ccid,name=smartcard
-device ccid-card-passthru,chardev=ccid
-device virtio-serial-pci
-chardev spiceport,id=webdav0,name=org.spice-space.webdav.0
-device virtserialport,chardev=webdav0,name=org.spice-space.webdav.0)
fi
# https://wiki.qemu.org/Documentation/9psetup
# https://askubuntu.com/questions/772784/9p-libvirt-qemu-share-modes
if [ "${guest_os}" != "windows" ] && [ -n "${PUBLIC}" ]; then

Loading…
Cancel
Save