Merge remote-tracking branch 'upstream/master' into add-man-pages

This commit is contained in:
Phil Clifford 2022-02-22 01:55:58 +00:00
commit 22080c8a50
3 changed files with 786 additions and 942 deletions

112
README.md
View File

@ -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'

View File

@ -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}"

1564
quickget

File diff suppressed because it is too large Load Diff