2020-03-17 01:52:46 +00:00
|
|
|
<h1 align="center">
|
2021-10-29 14:19:32 +00:00
|
|
|
<img src=".github/logo.png" alt="Quickemu" width="256" />
|
2020-03-17 01:52:46 +00:00
|
|
|
<br />
|
|
|
|
Quickemu
|
|
|
|
</h1>
|
|
|
|
|
2021-10-06 11:00:32 +00:00
|
|
|
<p align="center"><b>Quickly create and run optimised Windows, macOS and Linux desktop virtual machines.</b></p>
|
2020-03-17 01:52:46 +00:00
|
|
|
<div align="center"><img src=".github/screenshot.png" alt="Quickemu Screenshot" /></div>
|
2020-07-25 11:11:08 +00:00
|
|
|
<p align="center">Made with 💝 for <img src=".github/tux.png" align="top" width="18" /></p>
|
2020-03-17 01:52:46 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Introduction
|
2020-03-17 01:52:46 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Quickly create and run highly optimised desktop virtual machines for
|
|
|
|
Linux, macOS and Windows; with just two commands. You decide what
|
|
|
|
operating system you want to run and Quickemu will figure out the best
|
|
|
|
way to do it for you. For example:
|
2020-03-17 01:52:46 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
|
|
|
quickget ubuntu-mate 22.04
|
2022-08-19 06:14:22 +00:00
|
|
|
quickemu --vm ubuntu-mate-22.04.conf
|
2021-10-06 11:00:32 +00:00
|
|
|
```
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
The original objective of the project was to enable quick testing of
|
|
|
|
Linux distributions where the virtual machine configurations can be
|
|
|
|
stored anywhere, such as external USB storage or your home directory,
|
|
|
|
and no elevated permissions are required to run the virtual machines.
|
|
|
|
**Quickemu now also includes comprehensive support for macOS and
|
|
|
|
Windows**.
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Features
|
2022-02-19 15:17:08 +00:00
|
|
|
|
|
|
|
- **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra
|
|
|
|
- **Windows** 8.1, 10 and 11 including TPM 2.0
|
2022-08-19 19:10:21 +00:00
|
|
|
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu
|
|
|
|
flavours](https://ubuntu.com/download/flavours)**
|
2022-02-22 00:51:34 +00:00
|
|
|
- **Over 360 operating system editions are supported!**
|
2022-02-19 15:17:08 +00:00
|
|
|
- Full SPICE support including host/guest clipboard sharing
|
|
|
|
- VirtIO-webdavd file sharing for Linux and Windows guests
|
|
|
|
- VirtIO-9p file sharing for Linux and macOS guests
|
2022-08-19 19:10:21 +00:00
|
|
|
- [QEMU Guest Agent
|
|
|
|
support](https://wiki.qemu.org/Features/GuestAgent); provides access
|
|
|
|
to a system-level agent via standard QMP commands
|
|
|
|
- Samba file sharing for Linux, macOS and Windows guests (*if `smbd`
|
|
|
|
is installed on the host*)
|
2022-02-19 15:17:08 +00:00
|
|
|
- VirGL acceleration
|
|
|
|
- USB device pass-through
|
|
|
|
- Smartcard pass-through
|
|
|
|
- Automatic SSH port forwarding to guests
|
|
|
|
- Network port forwarding
|
|
|
|
- Full duplex audio
|
2022-02-21 16:35:54 +00:00
|
|
|
- Braille support
|
2022-02-19 15:17:08 +00:00
|
|
|
- EFI (with or without SecureBoot) and Legacy BIOS boot
|
|
|
|
- Graphical user interfaces available
|
|
|
|
|
|
|
|
Quickemu is a wrapper for the excellent [QEMU](https://www.qemu.org/)
|
|
|
|
that attempts to automatically *"do the right thing"*, rather than
|
|
|
|
expose exhaustive configuration options.
|
|
|
|
|
|
|
|
We have a Discord for this project:
|
|
|
|
[![Discord](https://img.shields.io/discord/712850672223125565?color=0C306A&label=WimpysWorld%20Discord&logo=Discord&logoColor=ffffff&style=flat-square)](https://discord.gg/sNmz3uw)
|
|
|
|
|
|
|
|
See this (old) video where I explain some of my motivations for creating
|
|
|
|
Quickemu.
|
|
|
|
|
|
|
|
[![Replace VirtualBox with Bash &
|
|
|
|
QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/watch?v=AOTYWEgw0hI)
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Requirements
|
2022-02-19 15:17:08 +00:00
|
|
|
|
2022-08-19 19:10:21 +00:00
|
|
|
- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL,
|
|
|
|
SPICE & VirtFS support**
|
2022-02-19 15:17:08 +00:00
|
|
|
- [bash](https://www.gnu.org/software/bash/) (*4.0 or newer*)
|
|
|
|
- [Coreutils](https://www.gnu.org/software/coreutils/)
|
|
|
|
- [EDK II](https://github.com/tianocore/edk2)
|
|
|
|
- [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)
|
|
|
|
- [mkisofs](http://cdrtools.sourceforge.net/private/cdrecord.html)
|
|
|
|
- [usbutils](https://github.com/gregkh/usbutils)
|
|
|
|
- [util-linux](https://github.com/karelzak/util-linux)
|
|
|
|
- [sed](https://www.gnu.org/software/sed/)
|
2022-09-19 09:43:14 +00:00
|
|
|
- [socat](http://www.dest-unreach.org/socat/)
|
2022-02-19 15:17:08 +00:00
|
|
|
- [spicy](https://gitlab.freedesktop.org/spice/spice-gtk)
|
|
|
|
- [swtpm](https://github.com/stefanberger/swtpm)
|
|
|
|
- [Wget](https://www.gnu.org/software/wget/)
|
|
|
|
- [xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/)
|
|
|
|
- [xrandr](https://gitlab.freedesktop.org/xorg/app/xrandr)
|
|
|
|
- [zsync](http://zsync.moria.org.uk/)
|
2022-02-24 22:31:23 +00:00
|
|
|
- [unzip](http://www.info-zip.org/UnZip.html)
|
2022-02-19 15:17:08 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
### Installing Requirements
|
|
|
|
|
|
|
|
For Ubuntu, Arch and nixos systems the
|
|
|
|
[ppa](https://launchpad.net/~flexiondotorg/+archive/ubuntu/quickemu),
|
|
|
|
[AUR](https://aur.archlinux.org/packages/quickemu) or
|
|
|
|
[nix](https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/quickemu)
|
|
|
|
packaging will take care of the dependencies. For other host
|
|
|
|
distributions or operating systems it will be necessary to install the
|
|
|
|
above requirements or their equivalents.
|
|
|
|
|
|
|
|
These examples may save a little typing
|
|
|
|
|
|
|
|
Debian:
|
|
|
|
|
|
|
|
sudo apt install qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip
|
|
|
|
|
|
|
|
Fedora:
|
|
|
|
|
|
|
|
sudo dnf install qemu bash coreutils edk2-tools grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-gtk-tools swtpm wget xdg-user-dirs xrandr unzip
|
|
|
|
|
|
|
|
MacOS:
|
|
|
|
|
|
|
|
This is a work in progress (see [issue
|
|
|
|
248](https://github.com/quickemu-project/quickemu/issues/248) for other
|
|
|
|
steps and changes that may enable running on MacOS)
|
|
|
|
|
|
|
|
brew install qemu bash coreutils grep jq python@3.10 cdrtools gnu-sed spice-gtk wget zsync
|
2022-02-19 15:17:08 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# Usage
|
|
|
|
|
|
|
|
## Graphical User Interfaces
|
2022-02-19 15:17:08 +00:00
|
|
|
|
|
|
|
While `quickemu` and `quickget` are designed for the terminal, a
|
|
|
|
graphical user interface is also available:
|
|
|
|
|
|
|
|
- **[Quickgui](https://github.com/quickgui/quickgui)** by [Mark
|
|
|
|
Johnson](https://github.com/marxjohnson) and [Yannick
|
|
|
|
Mauray](https://github.com/ymauray).
|
|
|
|
|
|
|
|
Many thanks to [Luke Wesley-Holley](https://github.com/Lukewh) and
|
|
|
|
[Philipp Kiemle](https://github.com/daPhipz) for creating the
|
|
|
|
**[Quickemu icons](https://github.com/Lukewh/quickemu-icons)** 🎨
|
|
|
|
|
|
|
|
### Quickgui for Ubuntu
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2022-02-19 15:17:08 +00:00
|
|
|
sudo add-apt-repository ppa:yannick-mauray/quickgui
|
|
|
|
sudo apt update
|
|
|
|
sudo apt install quickgui
|
|
|
|
```
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# Install Quickemu
|
2022-02-19 15:17:08 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Ubuntu
|
2021-09-07 13:04:54 +00:00
|
|
|
|
|
|
|
Quickemu is available from a PPA for Ubuntu users. The Quickemu PPA also
|
2022-02-19 15:17:08 +00:00
|
|
|
includes a back port of QEMU 6.0.0 for 20.04 (Focal) and 21.04
|
|
|
|
(Hirsute). To install Quickemu and all the dependencies run the
|
|
|
|
following in a terminal:
|
2020-03-17 01:52:46 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-06 21:55:26 +00:00
|
|
|
sudo apt-add-repository ppa:flexiondotorg/quickemu
|
2021-10-25 20:06:04 +00:00
|
|
|
sudo apt update
|
2021-09-07 13:04:54 +00:00
|
|
|
sudo apt install quickemu
|
2020-03-17 01:52:46 +00:00
|
|
|
```
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Other Linux
|
2020-03-17 01:52:46 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2022-09-11 15:58:42 +00:00
|
|
|
git clone --filter=blob:none https://github.com/wimpysworld/quickemu
|
2021-09-28 04:04:30 +00:00
|
|
|
cd quickemu
|
2020-03-17 01:52:46 +00:00
|
|
|
```
|
|
|
|
|
2021-10-19 16:37:59 +00:00
|
|
|
Now install all the **Requirements** documented above.
|
|
|
|
|
2022-02-17 10:20:16 +00:00
|
|
|
### Other sources
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
[Repology.org](https://repology.org/) found the following releases have
|
|
|
|
been packaged.
|
2022-02-17 10:20:16 +00:00
|
|
|
|
|
|
|
#### Quickemu
|
2021-10-15 23:13:59 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
[![Packaging
|
|
|
|
status](https://repology.org/badge/vertical-allrepos/quickemu.svg)](https://repology.org/project/quickemu/versions)
|
2021-10-19 08:03:14 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
#### Quickgui
|
2021-11-13 19:42:46 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
[![Packaging
|
|
|
|
status](https://repology.org/badge/vertical-allrepos/quickgui.svg)](https://repology.org/project/quickgui/versions)
|
2021-10-28 15:07:14 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Ubuntu Guest
|
2021-09-28 04:04:30 +00:00
|
|
|
|
2021-10-19 16:37:59 +00:00
|
|
|
`quickget` will automatically download an Ubuntu release and create the
|
2021-09-28 04:04:30 +00:00
|
|
|
virtual machine configuration.
|
2020-03-17 01:52:46 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
|
|
|
quickget ubuntu 22.04
|
|
|
|
quickemu --vm ubuntu-22.04.conf
|
2020-03-19 21:24:07 +00:00
|
|
|
```
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- Complete the installation as normal.
|
|
|
|
- Post-install:
|
2022-09-19 10:41:22 +00:00
|
|
|
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
|
|
|
copy/paste and USB redirection
|
2022-02-19 15:17:08 +00:00
|
|
|
- `sudo apt install spice-vdagent`
|
2022-09-19 10:41:22 +00:00
|
|
|
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
|
|
|
enable file sharing.
|
2022-02-19 15:17:08 +00:00
|
|
|
- `sudo apt install spice-webdavd`
|
2021-09-28 04:04:30 +00:00
|
|
|
|
|
|
|
### Ubuntu devel (daily-live) images
|
2020-03-21 02:26:50 +00:00
|
|
|
|
2021-09-28 04:04:30 +00:00
|
|
|
`quickget` can also download/refresh devel images via `zsync` for Ubuntu
|
|
|
|
developers and testers.
|
2020-03-21 00:32:04 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-28 04:04:30 +00:00
|
|
|
quickget ubuntu devel
|
|
|
|
quickemu --vm ubuntu-devel.conf
|
|
|
|
```
|
2020-03-21 00:32:04 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
You can run `quickget ubuntu devel` to refresh your daily development
|
|
|
|
image as often as you like, it will even automatically switch to a new
|
|
|
|
series.
|
2021-09-28 04:04:30 +00:00
|
|
|
|
|
|
|
### Ubuntu Flavours
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
All the official Ubuntu flavours are supported, just replace `ubuntu`
|
|
|
|
with your preferred flavour.
|
2021-09-28 04:04:30 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `kubuntu` (Kubuntu)
|
|
|
|
- `lubuntu` (Lubuntu)
|
|
|
|
- `ubuntu-budgie` (Ubuntu Budgie)
|
2022-02-25 23:01:51 +00:00
|
|
|
- `ubuntukylin` (Ubuntu Kylin)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `ubuntu-mate` (Ubuntu MATE)
|
2022-02-25 23:01:51 +00:00
|
|
|
- `ubuntustudio` (Ubuntu Studio)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `ubuntu` (Ubuntu)
|
|
|
|
- `xubuntu` (Xubuntu)
|
2021-09-28 04:04:30 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Other Operating Systems
|
2021-10-19 16:37:59 +00:00
|
|
|
|
|
|
|
`quickget` also supports:
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `alma` (Alma Linux)
|
|
|
|
- `alpine` (Alpine Linux)
|
2022-02-21 16:35:54 +00:00
|
|
|
- `android` (Android x86)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `archlinux` (Arch Linux)
|
|
|
|
- `arcolinux` (Arco Linux)
|
2022-07-30 06:56:23 +00:00
|
|
|
- `batocera` (Batocera)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `cachyos` (CachyOS)
|
2022-07-30 06:56:23 +00:00
|
|
|
- `centos-stream` (CentOS Stream)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `debian` (Debian)
|
2022-07-30 06:56:23 +00:00
|
|
|
- `deepin` (Deepin)
|
2022-02-21 16:35:54 +00:00
|
|
|
- `devuan` (Devuan)
|
2022-02-25 23:01:51 +00:00
|
|
|
- `dragonflybsd` (DragonFlyBSD)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `elementary` (elementary OS)
|
2022-07-30 06:56:23 +00:00
|
|
|
- `endeavouros` (EndeavourOS)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `fedora` (Fedora)
|
2022-02-21 16:35:54 +00:00
|
|
|
- `freebsd` (FreeBSD)
|
2022-02-25 23:01:51 +00:00
|
|
|
- `freedos` (FreeDOS)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `garuda` (Garuda Linux)
|
|
|
|
- `gentoo` (Gentoo)
|
2022-02-21 23:32:50 +00:00
|
|
|
- `ghostbsd` (GhostBSD)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `haiku` (Haiku)
|
|
|
|
- `kali` (Kali)
|
|
|
|
- `kdeneon` (KDE Neon)
|
|
|
|
- `kolibrios` (KolibriOS)
|
2022-02-21 16:35:54 +00:00
|
|
|
- `linuxmint` (Linux Mint)
|
2022-07-30 06:56:23 +00:00
|
|
|
- `lmde` (Linux Mint Debian Edition)
|
2022-02-21 16:35:54 +00:00
|
|
|
- `manjaro` (Manjaro)
|
|
|
|
- `mxlinux` (MX Linux)
|
2022-02-21 16:41:26 +00:00
|
|
|
- `netboot` (netboot.xyz)
|
2022-02-22 00:51:34 +00:00
|
|
|
- `netbsd` (NetBSD)
|
2022-02-21 16:35:54 +00:00
|
|
|
- `nixos` (NixOS)
|
|
|
|
- `openbsd` (OpenBSD)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `opensuse` (openSUSE)
|
|
|
|
- `oraclelinux` (Oracle Linux)
|
|
|
|
- `popos` (Pop!\_OS)
|
2022-08-19 19:10:21 +00:00
|
|
|
- `reactos` (ReactOS)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `rockylinux` (Rocky Linux)
|
2022-08-19 19:10:21 +00:00
|
|
|
- `slackware` (Slackware)
|
2022-02-19 15:17:08 +00:00
|
|
|
- `solus` (Solus)
|
|
|
|
- `tails` (Tails)
|
|
|
|
- `void` (Void Linux)
|
|
|
|
- `zorin` (Zorin OS)
|
|
|
|
|
|
|
|
Or you can download a Linux image and manually create a VM
|
|
|
|
configuration.
|
|
|
|
|
|
|
|
- Download a .iso image of a Linux distribution
|
|
|
|
- Create a VM configuration file; for example `debian-bullseye.conf`
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-28 04:04:30 +00:00
|
|
|
guest_os="linux"
|
2021-09-28 14:56:24 +00:00
|
|
|
disk_img="debian-bullseye/disk.qcow2"
|
|
|
|
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
|
2020-03-21 00:32:04 +00:00
|
|
|
```
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- Use `quickemu` to start the virtual machine:
|
2022-02-17 10:18:00 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-28 04:04:30 +00:00
|
|
|
quickemu --vm debian-bullseye.conf
|
2020-03-21 02:27:18 +00:00
|
|
|
```
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- Complete the installation as normal.
|
|
|
|
- Post-install:
|
2022-09-19 10:41:22 +00:00
|
|
|
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
|
|
|
copy/paste and USB redirection.
|
|
|
|
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
|
|
|
enable file sharing.
|
2021-12-03 16:53:50 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## macOS Guest
|
2021-12-03 16:53:50 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
`quickget` automatically downloads a macOS recovery image and creates a
|
|
|
|
virtual machine configuration.
|
2020-04-04 11:54:30 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-28 04:04:30 +00:00
|
|
|
quickget macos catalina
|
|
|
|
quickemu --vm macos-catalina.conf
|
|
|
|
```
|
2020-04-04 11:54:30 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
macOS `high-sierra`, `mojave`, `catalina`, `big-sur` and `monterey` are
|
|
|
|
supported.
|
|
|
|
|
|
|
|
- Use cursor keys and enter key to select the **macOS Base System**
|
|
|
|
- From **macOS Utilities**
|
|
|
|
- Click **Disk Utility** and **Continue**
|
|
|
|
- On macOS Catalina, Big Sur & Monterey
|
|
|
|
- Select `Apple Inc. VirtIO Block Media` from the list and
|
|
|
|
click **Erase**.
|
|
|
|
- On macOS Mojave and High Sierra
|
|
|
|
- Select `QEMU HARDDISK Media` (\~103.08GB) from the list
|
|
|
|
and click **Erase**.
|
2022-09-20 04:55:50 +00:00
|
|
|
- Enter a `Name:` for the disk
|
2022-09-22 01:32:33 +00:00
|
|
|
- If you are installing macOS Mojave or later (Catalina, Big
|
|
|
|
Sur, and Monterey), choose any of the APFS options as the
|
|
|
|
filesystem. MacOS Extended may not work.
|
2022-09-20 04:55:50 +00:00
|
|
|
- Click **Erase**.
|
2022-02-19 15:17:08 +00:00
|
|
|
- Click **Done**.
|
|
|
|
- Close Disk Utility
|
|
|
|
- From **macOS Utilities**
|
|
|
|
- Click **Reinstall macOS** and **Continue**
|
|
|
|
- Complete the installation as you normally would.
|
|
|
|
- On the first reboot use cursor keys and enter key to select
|
|
|
|
**macOS Installer**
|
|
|
|
- On the subsequent reboots use cursor keys and enter key to
|
|
|
|
select the disk you named
|
2021-09-28 04:04:30 +00:00
|
|
|
|
|
|
|
The default macOS configuration looks like this:
|
2020-04-04 11:54:30 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-28 04:04:30 +00:00
|
|
|
guest_os="macos"
|
2021-10-06 11:00:32 +00:00
|
|
|
img="macos-catalina/RecoveryImage.img"
|
|
|
|
disk_img="macos-catalina/disk.qcow2"
|
|
|
|
macos_release="catalina"
|
2021-09-25 21:51:12 +00:00
|
|
|
```
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
|
|
|
|
- `macos_release="catalina"` instructs Quickemu to optimise for a
|
|
|
|
particular macOS release.
|
|
|
|
- For example VirtIO Network and Memory Ballooning are available
|
|
|
|
in Big Sur and newer, but not previous releases.
|
2021-09-25 21:51:12 +00:00
|
|
|
|
2021-09-28 04:04:30 +00:00
|
|
|
### macOS compatibility
|
2021-09-25 21:51:12 +00:00
|
|
|
|
2021-09-28 04:04:30 +00:00
|
|
|
There are some considerations when running macOS via Quickemu.
|
2021-09-25 21:51:12 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- Supported macOS releases:
|
|
|
|
- High Sierra
|
|
|
|
- Mojave
|
|
|
|
- Catalina **(Recommended)**
|
|
|
|
- Big Sur
|
|
|
|
- Monterey
|
|
|
|
- `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 `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 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.
|
2022-08-19 19:10:21 +00:00
|
|
|
- **Full Duplex audio requires [VoodooHDA
|
|
|
|
OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
|
|
|
|
audio-device to the macOS guest VM**.
|
|
|
|
- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and
|
|
|
|
[System Integrity Protection
|
|
|
|
(SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection)
|
|
|
|
need to be disabled to install VoodooHDA OC
|
2022-02-19 15:17:08 +00:00
|
|
|
- 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**.
|
|
|
|
|
2022-08-18 09:48:16 +00:00
|
|
|
### macOS App Store
|
|
|
|
|
2022-08-19 19:10:21 +00:00
|
|
|
If you see *"Your device or computer could not be verified"* when you
|
|
|
|
try to login to the App Store, make sure that your wired ethernet device
|
|
|
|
is `en0`. Use `ifconfig` in a terminal to verify this.
|
2022-08-18 09:48:16 +00:00
|
|
|
|
2022-08-19 19:10:21 +00:00
|
|
|
If the wired ethernet device is not `en0`, then then go to *System
|
|
|
|
Preferences* -\> *Network*, delete all the network devices and apply the
|
|
|
|
changes. Next, open a terminal and run the following:
|
2022-08-18 09:48:16 +00:00
|
|
|
|
2022-08-19 19:10:21 +00:00
|
|
|
``` bash
|
2022-08-18 09:48:16 +00:00
|
|
|
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
|
|
|
|
```
|
|
|
|
|
|
|
|
Now reboot, and the App Store should work.
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Windows 8.1, 10 & 11 Guests
|
2022-02-19 15:17:08 +00:00
|
|
|
|
|
|
|
`quickget` can automatically download Windows 8.1, [Windows
|
|
|
|
10](https://www.microsoft.com/en-gb/software-download/windows10ISO) 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/)
|
2021-09-28 04:04:30 +00:00
|
|
|
and creates a virtual machine configuration.
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-10-06 10:01:33 +00:00
|
|
|
quickget windows 11
|
|
|
|
quickemu --vm windows-11.conf
|
2020-04-04 11:54:30 +00:00
|
|
|
```
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- Complete the installation as you normally would.
|
|
|
|
- All relevant drivers and services should be installed automatically.
|
2022-08-01 10:15:07 +00:00
|
|
|
- A local adminstrator user account is automatically created, with
|
|
|
|
these credentials:
|
|
|
|
- Username: `Quickemu`
|
|
|
|
- Password: `quickemu`
|
2021-09-28 04:04:30 +00:00
|
|
|
|
|
|
|
### Regional versions
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
By default `quickget` will download the *"English International"*
|
|
|
|
release, but you can optionally specify one of the supported languages:
|
|
|
|
For example:
|
2020-04-04 11:54:30 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-10-06 10:01:33 +00:00
|
|
|
quickget windows 11 "Chinese (Traditional)"
|
2020-04-04 11:54:30 +00:00
|
|
|
```
|
|
|
|
|
2021-10-06 10:01:33 +00:00
|
|
|
The default Windows 11 configuration looks like this:
|
2020-04-04 11:54:30 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-28 04:04:30 +00:00
|
|
|
guest_os="windows"
|
2021-10-06 10:01:33 +00:00
|
|
|
disk_img="windows-11/disk.qcow2"
|
|
|
|
iso="windows-11/Win11_EnglishInternational_x64.iso"
|
|
|
|
fixed_iso="windows-11/virtio-win.iso"
|
|
|
|
tpm="on"
|
2022-07-24 00:23:04 +00:00
|
|
|
secureboot="on"
|
2020-04-04 11:54:30 +00:00
|
|
|
```
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `guest_os="windows"` instructs `quickemu` to optimise for Windows.
|
|
|
|
- `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
|
|
|
|
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
|
|
|
|
device using `swtpm`.
|
2020-04-04 11:54:30 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# SPICE
|
2020-03-21 00:32:04 +00:00
|
|
|
|
2021-09-28 14:56:24 +00:00
|
|
|
The following features are available while using the SPICE protocol:
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- Copy/paste between the guest and host
|
|
|
|
- Host file sharing to the guest
|
|
|
|
- USB device redirection
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
To use SPICE add `--display spice` to the Quickemu invocation, this
|
|
|
|
requires that the `spicy` client is installed, available from the
|
|
|
|
`spice-client-gtk` package in Debian/Ubuntu.
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
|
|
|
quickemu --vm ubuntu-22.04.conf --display spice
|
2021-09-25 12:30:56 +00:00
|
|
|
```
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
To enable copy/paste with a Windows guest, install [SPICE Windows guest
|
|
|
|
tools](https://www.spice-space.org/download.html) in the guest VM.
|
2022-07-24 00:07:08 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Headless
|
2021-10-25 14:41:45 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
To start a VM with SPICE enabled, but no display attached use
|
|
|
|
`--display none`. This requires that the `spicy` client is installed,
|
|
|
|
available from the `spice-client-gtk` package in Debian/Ubuntu to
|
|
|
|
connect to the running VM
|
2021-10-25 14:41:45 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
|
|
|
quickemu --vm ubuntu-22.04.conf --display none
|
2021-10-25 14:41:45 +00:00
|
|
|
```
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
You can also use the `.ports` file in the VM directory to lookup what
|
|
|
|
SSH and SPICE ports the VM is connected to.
|
2021-10-25 14:41:45 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
|
|
|
cat ubuntu-22.04/ubuntu-22.04.ports
|
2021-10-25 14:41:45 +00:00
|
|
|
```
|
2022-02-17 10:35:40 +00:00
|
|
|
|
2022-02-25 23:04:29 +00:00
|
|
|
If, for example, the SSH port is set to 22220, and assuming your VM has
|
|
|
|
a started SSH service (details vary by OS), you can typically SSH into
|
|
|
|
it from the host as follows:
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2022-02-25 23:04:29 +00:00
|
|
|
ssh -p 22220 your_vm_user@localhost
|
|
|
|
```
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# Accessibility
|
2022-02-17 10:35:40 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Qemu provides support for using BrlAPI to display braille output on a
|
|
|
|
real or fake device.
|
2022-02-17 10:35:40 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
|
|
|
quickemu --vm ubuntu-22.04.conf --braille --display sdl
|
2022-02-17 10:35:40 +00:00
|
|
|
```
|
2021-10-25 14:41:45 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# BIOS and EFI
|
2021-09-28 04:04:30 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Since Quickemu 2.1.0 `efi` is the default boot option. If you want to
|
|
|
|
override this behaviour then add the following line to you VM
|
|
|
|
configuration to enable legacy BIOS.
|
2021-09-28 04:04:30 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `boot="legacy"` - Enable Legacy BIOS boot
|
2021-09-28 04:04:30 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# Tuning CPU cores, RAM & disks
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
By default, Quickemu will calculate the number of CPUs cores and RAM to
|
|
|
|
allocate to a VM based on the specifications of your host computer. You
|
|
|
|
can override this default behaviour and tune the VM configuration to
|
|
|
|
your liking.
|
2021-09-25 12:42:32 +00:00
|
|
|
|
|
|
|
Add additional lines to your virtual machine configuration:
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `cpu_cores="4"` - Specify the number of CPU cores allocated to the
|
|
|
|
VM
|
|
|
|
- `ram="4G"` - Specify the amount of RAM to allocate to the VM
|
|
|
|
- `disk_size="16G"` - Specify the size of the virtual disk allocated
|
|
|
|
to the VM
|
2021-09-28 21:47:26 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Disk preallocation
|
2021-09-28 21:47:26 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Preallocation mode (allowed values: `off` (default), `metadata`,
|
|
|
|
`falloc`, `full`). An image with preallocated metadata is initially
|
|
|
|
larger but can improve performance when the image needs to grow.
|
2021-09-28 21:47:26 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Specify what disk preallocation should be used, if any, when creating
|
|
|
|
the system disk image by adding a line like this to your VM
|
|
|
|
configuration.
|
2021-09-28 21:47:26 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `preallocation="metadata"`
|
2021-09-28 21:47:26 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## CD-ROM disks
|
2021-09-28 21:49:36 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
If you want to expose an ISO image from the host to guest add the
|
|
|
|
following line to the VM configuration:
|
2021-09-28 21:49:36 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `fixed_iso="/path/to/image.iso"`
|
2021-09-28 21:49:36 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Floppy disks
|
2021-09-28 18:01:44 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
If you're like [Alan Pope](https://popey.com) you'll probably want to
|
|
|
|
mount a floppy disk image in the guest. To do so add the following line
|
|
|
|
to the VM configuration:
|
2021-09-28 18:01:44 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `floppy="/path/to/floppy.img"`
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# File Sharing
|
2021-10-15 11:57:25 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
All File Sharing options will only expose `~/Public` (or localised
|
|
|
|
variations) for the current user to the guest VMs.
|
2021-10-15 11:57:25 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Samba 🐧 🍏 🪟
|
2021-10-15 11:57:25 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
If `smbd` is available on the host, Quickemu will automatically enable
|
|
|
|
the built-in QEMU support for exposing a Samba share from the host to
|
|
|
|
the guest.
|
2021-10-15 11:57:25 +00:00
|
|
|
|
|
|
|
You can install the minimal Samba components on Ubuntu using:
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-10-15 11:57:25 +00:00
|
|
|
sudo apt install --no-install-recommends samba
|
|
|
|
```
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
If everything is set up correctly, the `smbd` address will be printed
|
|
|
|
when the virtual machine is started. For example:
|
|
|
|
|
|
|
|
- smbd: On guest: smb://10.0.2.4/qemu
|
|
|
|
|
|
|
|
If using a Windows guest, right-click on "This PC", click "Add a network
|
|
|
|
location", and paste this address, removing `smb:` and replacing forward
|
|
|
|
slashes with backslashes (in this example `\\10.0.2.4\qemu`).
|
|
|
|
|
|
|
|
## SPICE WebDAV 🐧 🪟
|
2021-10-15 11:57:25 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- TBD
|
2021-10-15 11:57:25 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## VirtIO-9P 🐧 🍏
|
2021-10-15 11:57:25 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- TBD
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# Network port forwarding
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Add an additional line to your virtual machine configuration. For
|
|
|
|
example:
|
|
|
|
|
|
|
|
- `port_forwards=("8123:8123" "8888:80")`
|
2021-09-25 12:42:32 +00:00
|
|
|
|
|
|
|
In the example above:
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- Port 8123 on the host is forwarded to port 8123 on the guest.
|
|
|
|
- Port 8888 on the host is forwarded to port 80 on the guest.
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2022-08-19 17:47:38 +00:00
|
|
|
# Disable networking
|
|
|
|
|
2022-08-19 19:10:21 +00:00
|
|
|
To completely disable all network interfaces in a guest VM add this
|
|
|
|
additional line to your virtual machine configuration:
|
2022-08-19 17:47:38 +00:00
|
|
|
|
|
|
|
- `network="none"`
|
|
|
|
|
|
|
|
# Restricted networking
|
|
|
|
|
2022-08-19 19:10:21 +00:00
|
|
|
You can isolate the guest from the host (and broader network) using the
|
|
|
|
restrict option, which will restrict networking to just the guest and
|
|
|
|
any virtual devices.
|
2022-08-19 17:47:38 +00:00
|
|
|
|
2022-08-19 19:10:21 +00:00
|
|
|
This can be used to prevent software running inside the guest from
|
|
|
|
phoning home while still providing a network inside the guest. Add this
|
|
|
|
additional line to your virtual machine configuration:
|
2022-08-19 17:47:38 +00:00
|
|
|
|
|
|
|
- `network="restrict"`
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# Bridged networking
|
2021-10-27 21:07:14 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Connect your virtual machine to a preconfigured network bridge. Add an
|
2022-08-19 20:15:36 +00:00
|
|
|
additional line to your virtual machine configuration:
|
2021-10-27 21:07:14 +00:00
|
|
|
|
2022-08-19 17:47:38 +00:00
|
|
|
- `network="br0"`
|
2021-10-27 21:07:14 +00:00
|
|
|
|
2022-08-19 21:36:32 +00:00
|
|
|
If you want to have a persistent MAC address for your bridged network
|
|
|
|
interface in the guest VM you can add `macaddr` to the virtual machine
|
|
|
|
configuration. QEMU requires that the MAC address is in the range:
|
|
|
|
**52:54:00:AB:00:00 - 52:54:00:AB:FF:FF**
|
2022-08-19 20:15:36 +00:00
|
|
|
|
|
|
|
So you can generate your own MAC addresses with:
|
|
|
|
|
|
|
|
- `macaddr="52:54:00:AB:51:AE"`
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# USB redirection
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Quickemu supports USB redirection via SPICE pass-through and host
|
|
|
|
pass-through.
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## SPICE redirection (recommended)
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Using SPICE for USB pass-through is easiest as it doesn't require any
|
|
|
|
elevated permission, start Quickemu with `--display spice` and then
|
|
|
|
select `Input` -\> `Select USB Device for redirection` from the menu to
|
|
|
|
choose which device(s) you want to attach to the guest.
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Host redirection **NOT Recommended**
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
**USB host redirection is not recommended**, it is provided purely for
|
|
|
|
backwards compatibility to older versions of Quickemu. Using SPICE is
|
|
|
|
preferred, see above.
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Add an additional line to your virtual machine configuration. For
|
|
|
|
example:
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- `usb_devices=("046d:082d" "046d:085e")`
|
2021-09-25 12:30:56 +00:00
|
|
|
|
|
|
|
In the example above:
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
- The USB device with vendor_id 046d and product_id 082d will be
|
2022-02-19 15:17:08 +00:00
|
|
|
exposed to the guest.
|
2022-07-30 06:56:23 +00:00
|
|
|
- The USB device with vendor_id 046d and product_id 085e will be
|
2022-02-19 15:17:08 +00:00
|
|
|
exposed to the guest.
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
If the USB devices are not writable, `quickemu` will display the
|
|
|
|
appropriate commands to modify the USB device(s) access permissions,
|
|
|
|
like this:
|
2021-09-25 12:50:46 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- USB: Host pass-through requested:
|
|
|
|
- Sennheiser Communications EPOS GTW 270 on bus 001 device 005 needs permission changes:
|
|
|
|
sudo chown -v root:user /dev/bus/usb/001/005
|
|
|
|
ERROR! USB permission changes are required 👆
|
2021-09-25 12:30:56 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# TPM
|
2021-10-06 10:01:33 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Since Quickemu 2.2.0 a software emulated TPM device can be added to
|
|
|
|
guest virtual machines. Just add `tpm="on"` to your VM configuration.
|
|
|
|
`quickget` will automatically add this line to Windows 11 virtual
|
|
|
|
machines.
|
2021-10-06 10:01:33 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# All the options
|
2021-09-25 12:30:56 +00:00
|
|
|
|
|
|
|
Here are the usage instructions:
|
2020-03-17 01:52:46 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
<!-- [[[cog
|
|
|
|
import subprocess
|
|
|
|
|
|
|
|
import cog
|
|
|
|
# cannot use check_result() because of non-zero return
|
|
|
|
result=subprocess.run(["./quickemu", "--help"], capture_output=True, text=True)
|
|
|
|
help=result.stdout
|
2022-08-19 19:10:21 +00:00
|
|
|
cog.out(f"\n```\n{help}\n```\n")
|
2022-07-30 06:56:23 +00:00
|
|
|
]]] -->
|
|
|
|
|
2022-08-19 19:10:21 +00:00
|
|
|
```
|
2022-02-19 15:17:08 +00:00
|
|
|
|
2022-08-19 19:10:21 +00:00
|
|
|
Usage
|
|
|
|
quickemu --vm ubuntu.conf
|
|
|
|
|
|
|
|
You can also pass optional parameters
|
|
|
|
--braille : Enable braille support. Requires SDL.
|
|
|
|
--delete-disk : Delete the disk image and EFI variables
|
|
|
|
--delete-vm : Delete the entire VM and it's configuration
|
|
|
|
--display : Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or 'spice-app'
|
|
|
|
--fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)
|
|
|
|
--ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers
|
|
|
|
--screen <screen> : Use specified screen to determine the window size.
|
|
|
|
--shortcut : Create a desktop shortcut
|
|
|
|
--snapshot apply <tag> : Apply/restore a snapshot.
|
|
|
|
--snapshot create <tag> : Create a snapshot.
|
|
|
|
--snapshot delete <tag> : Delete a snapshot.
|
|
|
|
--snapshot info : Show disk/snapshot info.
|
|
|
|
--status-quo : Do not commit any changes to disk/snapshot.
|
|
|
|
--viewer <viewer> : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none'
|
|
|
|
--ssh-port <port> : Set ssh-port manually
|
|
|
|
--spice-port <port> : Set spice-port manually
|
|
|
|
--public-dir <path> : expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '<directory>', 'none'
|
|
|
|
--monitor <type> : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none'
|
|
|
|
--monitor-telnet-host <ip/host> : Set telnet host for monitor. (default: 'localhost')
|
|
|
|
--monitor-telnet-port <port> : Set telnet port for monitor. (default: '4440')
|
|
|
|
--monitor-cmd <cmd> : Send command to monitor if available. (Example: system_powerdown)
|
|
|
|
--serial <type> : Set serial connection type. @Options: 'socket' (default), 'telnet', 'none'
|
|
|
|
--serial-telnet-host <ip/host> : Set telnet host for serial. (default: 'localhost')
|
|
|
|
--serial-telnet-port <port> : Set telnet port for serial. (default: '6660')
|
|
|
|
--keyboard <type> : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio'
|
|
|
|
--keyboard_layout <layout> : Set keyboard layout.
|
|
|
|
--mouse <type> : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio'
|
|
|
|
--usb-controller <type> : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none'
|
|
|
|
--extra_args <arguments> : Pass additional arguments to qemu
|
|
|
|
--version : Print version
|
2022-02-19 15:17:08 +00:00
|
|
|
|
2020-03-17 01:52:46 +00:00
|
|
|
```
|
2022-07-30 06:56:23 +00:00
|
|
|
<!-- [[[end]]] -->
|
|
|
|
|
|
|
|
## Desktop shortcuts
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Desktop shortcuts can be created for a VM, the shortcuts are saved in
|
|
|
|
`~/.local/share/applications`. Here is an example of how to create a
|
|
|
|
shortcut.
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
|
|
|
quickemu --vm ubuntu-22.04-desktop.conf --shortcut
|
2021-09-25 12:42:32 +00:00
|
|
|
```
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
## Screen and window size (Linux guests only)
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
`qemu` will always default to the primary monitor to display the VM's
|
|
|
|
window.
|
2021-09-23 20:34:21 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
Without the `--screen` option, `quickemu` will look for the size of the
|
|
|
|
smallest monitor, and use a size that fits on said monitor.
|
2021-09-23 20:34:21 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
The `--screen` option forces `quickemu` to use the size of the given
|
|
|
|
monitor to compute the size of the window. **It won't use that monitor
|
|
|
|
to display the VM's window if it's not the primary monitor**. This is
|
|
|
|
useful if the primary monitor if not the smallest one, and if the VM's
|
|
|
|
window doesn't need to be moved around.
|
2021-09-23 20:34:21 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
The `--screen` option is also useful with the `--fullscreen` option,
|
|
|
|
again because `qemu` will always use the primary monitor. In order for
|
|
|
|
the fullscreen mode to work properly, the resolution of the VM's window
|
|
|
|
must match the resolution of the screen.
|
2021-09-23 20:34:21 +00:00
|
|
|
|
2021-09-25 12:42:32 +00:00
|
|
|
To know which screen to use, type:
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-23 20:34:21 +00:00
|
|
|
xrandr --listmonitors | grep -v Monitors
|
|
|
|
```
|
2021-09-25 12:42:32 +00:00
|
|
|
|
|
|
|
The command will output something like this:
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-23 20:34:21 +00:00
|
|
|
0: +*HDMI-0 2560/597x1440/336+1920+0 HDMI-0
|
|
|
|
1: +DVI-D-0 1920/527x1080/296+0+0 DVI-D-0
|
|
|
|
```
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2021-09-23 20:34:21 +00:00
|
|
|
The first number is what needs to be passed to the `--screen` option.
|
|
|
|
|
2021-09-25 12:42:32 +00:00
|
|
|
For example:
|
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
``` bash
|
2021-09-23 20:34:21 +00:00
|
|
|
quickemu --vm vm.conf --screen 0
|
|
|
|
```
|
2021-09-25 12:42:32 +00:00
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
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.
|
2021-09-23 20:34:21 +00:00
|
|
|
|
2022-07-30 06:56:23 +00:00
|
|
|
# References
|
2021-09-25 21:51:12 +00:00
|
|
|
|
2021-09-28 04:04:30 +00:00
|
|
|
Useful reference that assisted the development of Quickemu.
|
|
|
|
|
2022-02-19 15:17:08 +00:00
|
|
|
- General
|
|
|
|
- [QEMU's documentation!](https://qemu.readthedocs.io/en/latest/)
|
|
|
|
- <https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines>
|
|
|
|
- <https://www.kraxel.org/blog/2020/01/qemu-sound-audiodev/>
|
|
|
|
- macOS
|
|
|
|
- <https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/>
|
|
|
|
- <https://passthroughpo.st/mac-os-adds-early-support-for-virtio-qemu/>
|
|
|
|
- <https://github.com/kholia/OSX-KVM>
|
|
|
|
- <https://github.com/thenickdude/KVM-Opencore>
|
|
|
|
- <https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/macrecovery>
|
|
|
|
- <https://www.kraxel.org/blog/2017/09/running-macos-as-guest-in-kvm/>
|
|
|
|
- <https://www.nicksherlock.com/2017/10/passthrough-of-advanced-cpu-features-for-macos-high-sierra-guests/>
|
|
|
|
- <http://philjordan.eu/osx-virt/>
|
|
|
|
- <https://github.com/Dids/clover-builder>
|
|
|
|
- [OpenCore
|
|
|
|
Configurator](https://mackie100projects.altervista.org)
|
|
|
|
- Windows
|
|
|
|
- <https://www.heiko-sieger.info/running-windows-10-on-linux-using-kvm-with-vga-passthrough/>
|
|
|
|
- <https://leduccc.medium.com/improving-the-performance-of-a-windows-10-guest-on-qemu-a5b3f54d9cf5>
|
|
|
|
- <https://frontpagelinux.com/tutorials/how-to-use-linux-kvm-to-optimize-your-windows-10-virtual-machine/>
|
|
|
|
- <https://turlucode.com/qemu-command-line-args/>
|
|
|
|
- <https://github.com/pbatard/Fido>
|
|
|
|
- <https://www.catapultsystems.com/blogs/create-zero-touch-windows-10-iso/>
|
|
|
|
- TPM
|
|
|
|
- <https://qemu-project.gitlab.io/qemu/specs/tpm.html>
|
|
|
|
- <https://www.tecklyfe.com/how-to-create-a-windows-11-virtual-machine-in-qemu/>
|
|
|
|
- 9p & virtiofs
|
|
|
|
- <https://wiki.qemu.org/Documentation/9p>
|
|
|
|
- <https://wiki.qemu.org/Documentation/9psetup>
|
|
|
|
- <https://www.kraxel.org/blog/2019/06/macos-qemu-guest/>
|
|
|
|
- <https://superuser.com/questions/628169/how-to-share-a-directory-with-the-host-without-networking-in-qemu>
|
|
|
|
- <https://virtio-fs.gitlab.io/>
|