Merge remote-tracking branch 'upstream/master' into add-man-pages
This commit is contained in:
commit
22080c8a50
112
README.md
112
README.md
@ -32,41 +32,21 @@ Features
|
||||
--------
|
||||
|
||||
- **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra
|
||||
|
||||
- **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),
|
||||
[elementary OS](https://elementary.io/),
|
||||
[Pop!\_OS](https://pop.system76.com/)
|
||||
- [Arch Linux](https://www.archlinux.org/),
|
||||
[Kali](https://www.kali.org/),[Garuda](https://garudalinux.org/),
|
||||
[ZorinOS](https://zorin.com/os/) & [NixOS](https://nixos.org/)
|
||||
- [Regolith Linux](https://regolith-linux.org/) (Release 1.6 and
|
||||
latest 2.0.0 pre-release )
|
||||
|
||||
- [FreeBSD](https://www.freebsd.org/) &
|
||||
[OpenBSD](https://www.openbsd.org/)
|
||||
|
||||
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu flavours](https://ubuntu.com/download/flavours)**
|
||||
- **Over 360 operating system editions are supported!**
|
||||
- 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
|
||||
- [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*)
|
||||
- [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*)
|
||||
- VirGL acceleration
|
||||
- USB device pass-through
|
||||
- Smartcard pass-through
|
||||
- Automatic SSH port forwarding to guests
|
||||
- Network port forwarding
|
||||
- Full duplex audio
|
||||
- Braille support
|
||||
- EFI (with or without SecureBoot) and Legacy BIOS boot
|
||||
- Graphical user interfaces available
|
||||
|
||||
@ -86,8 +66,7 @@ QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/wat
|
||||
Requirements
|
||||
------------
|
||||
|
||||
- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL,
|
||||
SPICE & VirtFS support**
|
||||
- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL, SPICE & VirtFS support**
|
||||
- [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)
|
||||
@ -223,57 +202,47 @@ with your preferred flavour.
|
||||
- `ubuntu` (Ubuntu)
|
||||
- `xubuntu` (Xubuntu)
|
||||
|
||||
Other Linux Guests
|
||||
------------------
|
||||
Other Operating Systems
|
||||
-----------------------
|
||||
|
||||
`quickget` also supports:
|
||||
|
||||
- `alma` (Alma Linux)
|
||||
- `alpine` (Alpine Linux)
|
||||
- `android` (Android x86)
|
||||
- `archlinux` (Arch Linux)
|
||||
- `arcolinux` (Arco Linux)
|
||||
- `cachyos` (CachyOS)
|
||||
- `debian` (Debian)
|
||||
- `devuan` (Devuan)
|
||||
- `elementary` (elementary OS)
|
||||
- `fedora` (Fedora)
|
||||
- `freebsd` (FreeBSD)
|
||||
- `garuda` (Garuda Linux)
|
||||
- `gentoo` (Gentoo)
|
||||
- `ghostbsd` (GhostBSD)
|
||||
- `haiku` (Haiku)
|
||||
- `kali` (Kali)
|
||||
- `kdeneon` (KDE Neon)
|
||||
- `kolibrios` (KolibriOS)
|
||||
- `linuxmint-cinnamon` (Linux Mint Cinnamon)
|
||||
- `linuxmint-mate` (Linux Mint MATE)
|
||||
- `linuxmint-xfce` (Linux Mint XFCE)
|
||||
- `manjaro-budgie` (Manjaro Budgie)
|
||||
- `manjaro-cinnamon` (Manjaro Cinnamon)
|
||||
- `manjaro-deepin` (Manjaro Deepin)
|
||||
- `manjaro-gnome` (Manjaro Gnome)
|
||||
- `manjaro-i3` (Manjaro i3)
|
||||
- `manjaro-kde` (Manjaro KDE)
|
||||
- `manjaro-mate` (Manjaro MATE)
|
||||
- `manjaro-xfce` (Manjaro XFCE)
|
||||
- `mxlinux-fluxbox` (MX Linux Fluxbox)
|
||||
- `mxlinux-kde` (MX Linux KDE)
|
||||
- `mxlinux-xfce` (MX Linux XFCE)
|
||||
- `nixos-gnome` (NixOS Gnome)
|
||||
- `nixos-minimal` (NixOS Minimal)
|
||||
- `nixos-plasma5` (NixOS KDE)
|
||||
- `linuxmint` (Linux Mint)
|
||||
- `manjaro` (Manjaro)
|
||||
- `mxlinux` (MX Linux)
|
||||
- `netboot` (netboot.xyz)
|
||||
- `netbsd` (NetBSD)
|
||||
- `nixos` (NixOS)
|
||||
- `openbsd` (OpenBSD)
|
||||
- `opensuse` (openSUSE)
|
||||
- `oraclelinux` (Oracle Linux)
|
||||
- `popos` (Pop!\_OS)
|
||||
- `regolith` (Regolith Linux)
|
||||
- `rockylinux` (Rocky Linux)
|
||||
- `slackware` (Slackware)
|
||||
- `solus` (Solus)
|
||||
- `tails` (Tails)
|
||||
- `void` (Void Linux)
|
||||
- `zorin` (Zorin OS)
|
||||
|
||||
### BSD Guest Support
|
||||
|
||||
- `freebsd` (FreeBSD)
|
||||
- `openbsd` (OpenBSD)
|
||||
|
||||
Or you can download a Linux image and manually create a VM
|
||||
configuration.
|
||||
|
||||
@ -430,45 +399,6 @@ tpm="on"
|
||||
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
|
||||
device using `swtpm`.
|
||||
|
||||
BSD Guests
|
||||
----------
|
||||
|
||||
`quickemu` supports FreeBSD and OpenBSD.
|
||||
|
||||
``` {.bash}
|
||||
quickget freebsd 13_0
|
||||
quickemu --vm freebsd-13_0.conf
|
||||
```
|
||||
|
||||
Other Guests
|
||||
------------
|
||||
|
||||
- `android` (Android x86)
|
||||
|
||||
Haiku Guests
|
||||
------------
|
||||
|
||||
`quickemu` supports [Haiku](https://www.haiku-os.org/).
|
||||
|
||||
``` {.bash}
|
||||
quickget quickget haiku r1beta3-x86_64
|
||||
quickemu --vm haiku-r1beta3-x86_64.conf
|
||||
```
|
||||
|
||||
At the moment the only way to share files between host and a Haiku guest
|
||||
is by using SSH (having a SSH server running on the host):
|
||||
|
||||
On guest:
|
||||
|
||||
``` {.bash}
|
||||
scp example.txt user@host-local-ip:/home/user # sending a file from guest to host
|
||||
scp user@host-local-ip:/home/user/example.txt . # receiving a file from host to guest
|
||||
```
|
||||
|
||||
`quickget` cannot automatically download and create virtual machines for
|
||||
Haiku nightly versions, but they work if the ISO and configuration are
|
||||
set up manually.
|
||||
|
||||
SPICE
|
||||
=====
|
||||
|
||||
@ -688,7 +618,7 @@ Usage
|
||||
quickemu --vm ubuntu.conf
|
||||
|
||||
You can also pass optional parameters
|
||||
--accessible : Select accessible facilitation. 'braille' (default - currently requires --display sdl )
|
||||
--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', or 'spice'
|
||||
|
52
quickemu
52
quickemu
@ -464,14 +464,19 @@ function vm_boot() {
|
||||
|
||||
# Make any OS specific adjustments
|
||||
case ${guest_os} in
|
||||
freebsd|linux|openbsd)
|
||||
*bsd|haiku|linux)
|
||||
CPU="-cpu host,kvm=on"
|
||||
if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then
|
||||
CPU="${CPU},topoext"
|
||||
fi
|
||||
if [ "${guest_os}" == "freebsd" ]; then
|
||||
|
||||
if [ "${guest_os}" == "freebsd" ] || [ "${guest_os}" == "ghostbsd" ]; then
|
||||
MOUSE="usb-mouse"
|
||||
elif [ "${guest_os}" == "haiku" ]; then
|
||||
MACHINE_TYPE="pc"
|
||||
NET_DEVICE="rtl8139"
|
||||
fi
|
||||
|
||||
if [ -z "${disk_size}" ]; then
|
||||
disk_size="16G"
|
||||
fi
|
||||
@ -483,22 +488,10 @@ function vm_boot() {
|
||||
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
|
||||
@ -657,7 +650,7 @@ function vm_boot() {
|
||||
|
||||
# Setup the appropriate audio device based on the display output
|
||||
case ${OUTPUT} in
|
||||
spice|spice-app|none) AUDIO_DEV="spice,id=audio0,out.mixing-engine=off";;
|
||||
spice|spice-app|none) AUDIO_DEV="spice,id=audio0";;
|
||||
*) AUDIO_DEV="pa,id=audio0,out.mixing-engine=off,out.stream-name=${LAUNCHER}-${VMNAME},in.stream-name=${LAUNCHER}-${VMNAME}";;
|
||||
esac
|
||||
|
||||
@ -904,8 +897,9 @@ function vm_boot() {
|
||||
-monitor none
|
||||
-serial mon:stdio)
|
||||
|
||||
if [[ "${ACCESSIBLE}" == "braille" ]] || [[ "${ACCESSIBLE}" == "brl" ]]; then
|
||||
# shellcheck disable=SC2054
|
||||
# FIXME: Check for device availability. qemu will fail to start otherwise
|
||||
if [ -n "${BRAILLE}" ]; then
|
||||
# shellcheck disable=SC2054
|
||||
args+=(-chardev braille,id=brltty
|
||||
-device usb-braille,id=usbbrl,chardev=brltty)
|
||||
fi
|
||||
@ -1056,7 +1050,7 @@ function usage() {
|
||||
echo " ${LAUNCHER} --vm ubuntu.conf"
|
||||
echo
|
||||
echo "You can also pass optional parameters"
|
||||
echo " --accessible : Select accessible facilitation. 'braille' (default - currently requires --display sdl )"
|
||||
echo " --braille : Enable braille support. Requires SDL."
|
||||
echo " --delete-disk : Delete the disk image and EFI variables"
|
||||
echo " --delete-vm : Delete the entire VM and it's configuration"
|
||||
echo " --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice'"
|
||||
@ -1073,14 +1067,6 @@ function usage() {
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
function accessible_param_check() {
|
||||
if [ "${ACCESSIBLE}" != "braille" ] && [ "${ACCESSIBLE}" != "brl" ] ; then
|
||||
echo "ERROR! Requested accessiblility '${ACCESSIBLE}' is not recognised."
|
||||
exit 1
|
||||
# TODO can we check the device/API is available
|
||||
fi
|
||||
}
|
||||
function display_param_check() {
|
||||
if [ "${OUTPUT}" != "gtk" ] && [ "${OUTPUT}" != "none" ] && [ "${OUTPUT}" != "sdl" ] && [ "${OUTPUT}" != "spice" ]; then
|
||||
echo "ERROR! Requested output '${OUTPUT}' is not recognised."
|
||||
@ -1111,6 +1097,7 @@ tpm="off"
|
||||
usb_devices=()
|
||||
extra_args=""
|
||||
|
||||
BRAILLE=""
|
||||
DELETE_DISK=0
|
||||
DELETE_VM=0
|
||||
FULLSCREEN=""
|
||||
@ -1132,7 +1119,7 @@ VMPATH=""
|
||||
|
||||
readonly LAUNCHER=$(basename "${0}")
|
||||
readonly DISK_MIN_SIZE=$((197632 * 8))
|
||||
readonly VERSION="3.11"
|
||||
readonly VERSION="3.12"
|
||||
|
||||
# PUBLICSHARE is the only directory exposed to guest VMs for file
|
||||
# sharing via 9P, spice-webdavd and Samba. This path is not configurable.
|
||||
@ -1172,10 +1159,8 @@ if [ $# -lt 1 ]; then
|
||||
else
|
||||
while [ $# -gt 0 ]; do
|
||||
case "${1}" in
|
||||
-acc|--acc|-accessible|--accessible|-accessibility|--accessibility)
|
||||
ACCESSIBLE="${2}"
|
||||
accessible_param_check
|
||||
shift
|
||||
-braille|--braille)
|
||||
BRAILLE="on"
|
||||
shift;;
|
||||
-delete|--delete|-delete-disk|--delete-disk)
|
||||
DELETE_DISK=1
|
||||
@ -1258,7 +1243,10 @@ if [ -n "${VM}" ] && [ -e "${VM}" ]; then
|
||||
fi
|
||||
|
||||
if [ -z "${OUTPUT}" ]; then
|
||||
if [ -z "${display}" ]; then
|
||||
# Braille support requires SDL. Override OUTPUT if braille was requested.
|
||||
if [ -n "${BRAILLE}" ]; then
|
||||
OUTPUT="sdl"
|
||||
elif [ -z "${display}" ]; then
|
||||
OUTPUT="sdl"
|
||||
else
|
||||
OUTPUT="${display}"
|
||||
|
Loading…
Reference in New Issue
Block a user