mirror of
				https://github.com/oSoWoSo/DistroHopper.git
				synced 2024-08-14 22:46:53 +00:00 
			
		
		
		
	
							parent
							
								
									29e4922e6e
								
							
						
					
					
						commit
						bf69f54d74
					
				
					 2 changed files with 109 additions and 7 deletions
				
			
		
							
								
								
									
										68
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										68
									
								
								README.md
									
										
									
									
									
								
							|  | @ -37,7 +37,7 @@ Essential requirements: | |||
| Optional requirements: | ||||
| 
 | ||||
|   * `rot13` to *"decrypt"* the macOS OSK key; found in the `bsdgames` package in Debian/Ubuntu | ||||
|   * `smbd` to export user home directory from the host to the guest VM; found in the `samba` package in Debian/Ubuntu | ||||
|   * `spicy` to connect to VMs via the SPICE protocol; found in the `spice-client-gtk` package in Debian/Ubuntu | ||||
| 
 | ||||
| ## Install Quickemu | ||||
| 
 | ||||
|  | @ -104,6 +104,11 @@ Starting /media/martin/Quickemu/ubuntu-focal-desktop.conf | |||
| ``` | ||||
| 
 | ||||
|   * Complete the installation as normal. | ||||
|   * Post-install: | ||||
|     * Install the SPICE agent (`spice-vdagent`) to enable copy/paste and USB redirection | ||||
|       * Debian/Ubuntu `sudo apt install spice-vdagent` | ||||
|     * Install the SPICE WebDAV agent (`spice-webdavd`) to enable file sharing. | ||||
|       * Debian/Ubuntu `sudo apt install spice-webdavd` | ||||
| 
 | ||||
|   * A Desktop shortcut can be created (in ~/.local/share/applications): | ||||
| ``` | ||||
|  | @ -116,6 +121,10 @@ You can use `quickemu` to run a Windows 10 virtual machine. | |||
| 
 | ||||
|   * [Download Windows 10](https://www.microsoft.com/en-gb/software-download/windows10ISO) | ||||
|   * [Download VirtIO drivers for Windows](https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html#virtio-win-direct-downloads) | ||||
|   * [Download `spice-webdavd` for Windows](https://www.spice-space.org/download/windows/spice-webdavd/) | ||||
|     * Enables the Windows guest access to shared files on the host. | ||||
|   * [Download UsbDk for Windows](https://www.spice-space.org/download/windows/usbdk/) | ||||
|     * Enables the Windows guest access to redirected USB devices from the host. | ||||
|   * Create a VM configuration file; for example `windows10.conf` | ||||
|     * The `boot` option enables Legacy BIOS (`legacy`) or EFI (`efi`) booting. `legacy` is the default. | ||||
|     * The `guest_os="windows"` line instructs `quickemu` to use optimise for Windows. | ||||
|  | @ -171,7 +180,10 @@ Starting /media/martin/Quickemu/windows10.conf | |||
|     * Select `VirtIO SCSI controller (E:\amd64\w10\viostor.inf)` from the list and click **Next**. | ||||
|     * The disk will now be available for partitioning and formatting. | ||||
|   * Complete the installation as you normally would. | ||||
|   * Post-install you should run the VirtIO installer from the CD-ROM: drive. | ||||
|   * Post-install: | ||||
|     * Run the VirtIO installer from the CD-ROM: drive. | ||||
|     * Install [spice-webdavd](https://www.spice-space.org/download/windows/spice-webdavd/) | ||||
|     * Install [UsbDk](https://www.spice-space.org/download/windows/usbdk/) | ||||
| 
 | ||||
| ### macOS | ||||
| 
 | ||||
|  | @ -186,6 +198,8 @@ There are some considerations when running macOS via Quickemu. | |||
|     *   This is a very old architecture, [so to unlock higher CPU performance; AVX, AES-NI, SSE et al are enabled](https://www.nicksherlock.com/2017/10/passthrough-of-advanced-cpu-features-for-macos-high-sierra-guests/). | ||||
|   * UHCI USB (USB 2.0) is the fastest supported. | ||||
|     * USB pass-through has not been tested. | ||||
|   * Copy/paste between the guest and host is not supported in macOS. | ||||
|   * File sharing is not supported on macOS. | ||||
| 
 | ||||
| You can use `quickemu` to run a macOS virtual machine. | ||||
| 
 | ||||
|  | @ -251,9 +265,53 @@ Starting macos.conf | |||
|     * Click **Reinstall macOS** and **Continue** | ||||
|   * Complete the installation as you normally would. | ||||
| 
 | ||||
| ### All the options | ||||
| ## SPICE | ||||
| 
 | ||||
| Here are the full usage instructions: | ||||
| The following features are only available while using the SPICE protocol: | ||||
| 
 | ||||
|   * Copy/paste between the guest and host *(not available for macOS guests)* | ||||
|   * Host file sharing to the guest *(not available for macOS guests)* | ||||
|   * USB device redirection *(untested on macOS)* | ||||
| 
 | ||||
| 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. | ||||
| 
 | ||||
| ```bash | ||||
| quickemu --vm ubuntu-focal-desktop.conf --display spice | ||||
| ``` | ||||
| 
 | ||||
| ## USB redirection | ||||
| 
 | ||||
| Quickemu support USB redirection via host passthrough and SPICE passthrough. | ||||
| 
 | ||||
| ### SPICE redirection | ||||
| 
 | ||||
| Using SPICE for USB passthrough 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 chose which device(s) you want | ||||
| to attach to the VM. | ||||
| 
 | ||||
| ### Host redirection | ||||
| 
 | ||||
| **USB host redirection is not recommended**, it is provided purely for backwards | ||||
| compatibility to older versions of Quickemu. Using SPICE is preferred, see above. | ||||
| 
 | ||||
| Add an additional line to your virtual machine configuration. For example: | ||||
| 
 | ||||
|   * `usb_devices=("046d:082d" "046d:085e")` | ||||
| 
 | ||||
| In the example above: | ||||
| 
 | ||||
|   * The USB device with vendor_id 046d and product_id 082d will be exposed to the guest. | ||||
|   * The USB device with vendor_id 046d and product_id 085e will be exposed to the guest. | ||||
| 
 | ||||
| If the USB devices are not writable, `quickemu` will display the appropriate | ||||
| commands to modify the USB device(s) access permissions. | ||||
| 
 | ||||
| ## All the options | ||||
| 
 | ||||
| Here are the usage instructions: | ||||
| 
 | ||||
| ``` | ||||
| Usage | ||||
|  | @ -261,6 +319,7 @@ Usage | |||
| 
 | ||||
| You can also pass optional parameters | ||||
|   --delete                : Delete the disk image. | ||||
|   --display               : Select display backend. 'sdl' (default), 'gtk' or 'spice' | ||||
|   --shortcut              : Create a desktop shortcut | ||||
|   --snapshot apply <tag>  : Apply/restore a snapshot. | ||||
|   --snapshot create <tag> : Create a snapshot. | ||||
|  | @ -300,6 +359,5 @@ will use my big screen to compute the size of the window, and make it 2048x1152. | |||
| 
 | ||||
| ## TODO | ||||
| 
 | ||||
|   - [ ] SPICE support | ||||
|   - [ ] Improve disk management | ||||
|   - [ ] [Add Faux OEM](https://code.launchpad.net/~ubuntu-installer/ubiquity/+git/ubiquity/+merge/379899) | ||||
|  |  | |||
							
								
								
									
										48
									
								
								quickemu
									
										
									
									
									
								
							
							
						
						
									
										48
									
								
								quickemu
									
										
									
									
									
								
							|  | @ -355,6 +355,13 @@ function vm_boot() { | |||
|     DISPLAY_DEVICE="qxl-vga" | ||||
|   fi | ||||
| 
 | ||||
|   if [ "${OUTPUT}" == "spice" ]; then | ||||
|     if [ "${guest_os}" != "macos" ]; then | ||||
|       DISPLAY_DEVICE="qxl-vga" | ||||
|     fi | ||||
|     OUTPUT="none" | ||||
|   fi | ||||
| 
 | ||||
|   echo " - Video:    ${DISPLAY_DEVICE}" | ||||
| 
 | ||||
|   # Allocate VRAM to VGA devices | ||||
|  | @ -409,10 +416,27 @@ function vm_boot() { | |||
|   fi | ||||
| 
 | ||||
|   # Find a free port for spice | ||||
|   local SPICE="disable-ticketing=on" | ||||
|   local SPICE_PORT="" | ||||
|   SPICE_PORT=$(get_port 5930 9) | ||||
|   if [ -z "${SPICE_PORT}" ]; then | ||||
|     echo " - spice:      All spice ports have been exhausted." | ||||
|     echo " - SPICE:    All spice ports have been exhausted." | ||||
|     if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice-app" ]; then | ||||
|       echo "             ERROR! Requested SPICE display, but no SPICE ports are free." | ||||
|       exit 1 | ||||
|     fi | ||||
|   else | ||||
|     if [ "${OUTPUT}" == "spice-app" ]; then | ||||
|       echo " - SPICE:    Enabled" | ||||
|     else | ||||
|       echo " - SPICE:    ${SPICE_PORT}/tcp is connected. Login via 'spicy --title \"${VMNAME}\" --port ${SPICE_PORT} --spice-shared-dir ${HOME}' ${FULLSPICY}" | ||||
|       SPICE="${SPICE},port=${SPICE_PORT}" | ||||
|     fi | ||||
| 
 | ||||
|     # Reference: https://gitlab.gnome.org/GNOME/phodav/-/issues/5 | ||||
|     if [ "${guest_os}" != "macos" ]; then | ||||
|       echo " - WebDAV:   ${HOME} will be exported to ${VMNAME} via dav://localhost:9843/" | ||||
|     fi | ||||
|   fi | ||||
| 
 | ||||
|   enable_usb_passthrough | ||||
|  | @ -510,6 +534,11 @@ function vm_boot() { | |||
|       -device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \ | ||||
|       -chardev spicevmc,id=spicechannel0,name=vdagent \ | ||||
|       -serial mon:stdio | ||||
|   echo " - PID:      ${!}" | ||||
| 
 | ||||
|   # If output is 'none' then SPICE was requested. | ||||
|   if [ ${OUTPUT} == "none" ]; then | ||||
|     spicy --title "${VMNAME}" --port ${SPICE_PORT} ${FULLSPICY} --spice-shared-dir "${HOME}" >/dev/null 2>&1 | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
|  | @ -538,6 +567,7 @@ function usage() { | |||
|   echo | ||||
|   echo "You can also pass optional parameters" | ||||
|   echo "  --delete                : Delete the disk image." | ||||
|   echo "  --display               : Select display backend. 'sdl' (default), 'gtk' or 'spice'" | ||||
|   echo "  --shortcut              : Create a desktop shortcut" | ||||
|   echo "  --snapshot apply <tag>  : Apply/restore a snapshot." | ||||
|   echo "  --snapshot create <tag> : Create a snapshot." | ||||
|  | @ -562,7 +592,9 @@ ram="" | |||
| cpu_cores="" | ||||
| 
 | ||||
| FULLSCREEN="" | ||||
| FULLSPICY="" | ||||
| DELETE=0 | ||||
| OUTPUT="sdl" | ||||
| SNAPSHOT_ACTION="" | ||||
| SNAPSHOT_TAG="" | ||||
| STATUS_QUO="" | ||||
|  | @ -598,6 +630,17 @@ else | |||
|           -delete|--delete) | ||||
|             DELETE=1 | ||||
|             shift;; | ||||
|           -display|--display) | ||||
|             OUTPUT="${2}" | ||||
|             if [ "${OUTPUT}" != "gtk" ] && [ "${OUTPUT}" != "sdl" ] && [ "${OUTPUT}" != "spice" ]; then | ||||
|               echo "ERROR! Requested output '${OUTPUT}' is not recognised." | ||||
|               exit 1 | ||||
|             elif [ "${OUTPUT}" == "spice" ] && [ ! "$(which spicy)" ]; then | ||||
|               echo "ERROR! Requested SPICE display, but 'spicy' is not installed." | ||||
|               exit 1 | ||||
|             fi | ||||
|             shift | ||||
|             shift;; | ||||
|           -snapshot|--snapshot) | ||||
|             SNAPSHOT_ACTION="${2}" | ||||
|             if [ -z "${SNAPSHOT_ACTION}" ]; then | ||||
|  | @ -615,8 +658,9 @@ else | |||
|           -status-quo|--status-quo) | ||||
|             STATUS_QUO="-snapshot" | ||||
|             shift;; | ||||
|           -fullscreen|--fullscreen) | ||||
|           -fullscreen|--fullscreen|-full-screen|--full-screen) | ||||
|             FULLSCREEN="-full-screen" | ||||
|             FULLSPICY="--full-screen" | ||||
|             shift;; | ||||
|           -vm|--vm) | ||||
|             VM="${2}" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue