mirror of
				https://github.com/oSoWoSo/DistroHopper.git
				synced 2024-08-14 22:46:53 +00:00 
			
		
		
		
	Update and simplify README.md
This commit is contained in:
		
							parent
							
								
									63c32ae0c3
								
							
						
					
					
						commit
						268a3a4167
					
				
					 1 changed files with 87 additions and 130 deletions
				
			
		
							
								
								
									
										217
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										217
									
								
								README.md
									
										
									
									
									
								
							|  | @ -4,20 +4,22 @@ | ||||||
|   Quickemu |   Quickemu | ||||||
| </h1> | </h1> | ||||||
| 
 | 
 | ||||||
| <p align="center"><b>Simple shell script to "manage" Qemu virtual machines.</b></p> | <p align="center"><b>Simple script to "manage" Qemu virtual machines.</b></p> | ||||||
| <div align="center"><img src=".github/screenshot.png" alt="Quickemu Screenshot" /></div> | <div align="center"><img src=".github/screenshot.png" alt="Quickemu Screenshot" /></div> | ||||||
| <p align="center">Made with 💝 for <img src=".github/tux.png" align="top" width="18" /></p> | <p align="center">Made with 💝 for <img src=".github/tux.png" align="top" width="18" /></p> | ||||||
| 
 | 
 | ||||||
| ## Introduction | ## Introduction | ||||||
| 
 | 
 | ||||||
| Quickemu is a very simple script to "manage" Qemu virtual machines. Each | Quickemu is a simple script to *"manage"* Qemu virtual machines. Each virtual | ||||||
| virtual machine configuration is broadly the same requiring minimal setup. The | machine configuration is a few lines long requiring minimal setup. The | ||||||
| main objective of the project is to enable quick testing of desktop Linux | main objective of the project is to enable quick testing of desktop Linux | ||||||
| distributions where the virtual machines can be stored anywhere, such as | distributions where the virtual machines configuration and disk images can be | ||||||
| external USB storage. | stored anywhere, such as external USB storage or your home directory. **Windows | ||||||
|  | and macOS guests are also supported.** | ||||||
| 
 | 
 | ||||||
| Quickemu is opinionated and will attempt to *"do the right thing"* rather than | Quickemu will attempt to *"do the right thing"* rather than expose rich | ||||||
| expose rich configuration options. Quickemu is a wrapper for [QEMU](https://www.qemu.org/). See the video where I explain some of my motivations for creating this script. | configuration options. Quickemu is a wrapper for [QEMU](https://www.qemu.org/). | ||||||
|  | See the video where I explain some of my motivations for creating this script. | ||||||
| 
 | 
 | ||||||
| We have a Discord for this project: [](https://discord.gg/sNmz3uw) | We have a Discord for this project: [](https://discord.gg/sNmz3uw) | ||||||
| 
 | 
 | ||||||
|  | @ -53,54 +55,24 @@ sudo apt install quickemu | ||||||
| 
 | 
 | ||||||
| ## Usage | ## Usage | ||||||
| 
 | 
 | ||||||
| ### Linux | ### Linux Guest | ||||||
| 
 | 
 | ||||||
|   * Download a .iso image of a Linux distribution |   * Download a .iso image of a Linux distribution | ||||||
|   * Create a VM configuration file; for example `ubuntu.conf` |   * Create a VM configuration file; for example `ubuntu.conf` | ||||||
|     * The **default** `guest_os` is `linux`, so this is optional for Linux VM configs. |     * The **default** `guest_os` is `linux`, so this is optional for Linux VM configs. | ||||||
|     * The `boot` option enables Legacy BIOS (`legacy`) or EFI (`efi`) booting. `legacy` is the default. |     * The `boot` option enables Legacy BIOS (`legacy`) or EFI (`efi`) booting. `legacy` is the default. | ||||||
| 
 | 
 | ||||||
| ``` | ```bash | ||||||
| boot="legacy" | boot="legacy" | ||||||
| guest_os="linux" | guest_os="linux" | ||||||
| iso="/media/$USER/Quickemu/ubuntu/focal-desktop-amd64.iso" | iso="${HOME}/Quickemu/ubuntu/focal-desktop-amd64.iso" | ||||||
| disk_img="/media/$USER/Quickemu/ubuntu/focal-desktop-amd64.qcow2" | disk_img="${HOME}/Quickemu/ubuntu/focal-desktop-amd64.qcow2" | ||||||
| disk=128G |  | ||||||
| port_forwards=("8123:8123" "8888:80") |  | ||||||
| usb_devices=("046d:082d" "046d:085e") |  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|   * Use `quickemu` to start the virtual machine: |   * Use `quickemu` to start the virtual machine: | ||||||
| 
 | 
 | ||||||
| ``` | ```bash | ||||||
| ./quickemu --vm ubuntu-focal-desktop.conf | quickemu --vm ubuntu-focal-desktop.conf | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Which will output something like this: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| Starting /media/martin/Quickemu/ubuntu-focal-desktop.conf |  | ||||||
|  - QEMU:     /usr/bin/qemu-system-x86_64 v6.0.0 |  | ||||||
|  - Guest:    Linux optimised |  | ||||||
|  - BIOS:     Legacy BIOS |  | ||||||
|  - Disk:     /media/martin/Quickemu/ubuntu/focal-desktop-amd64.qcow2 (64G) |  | ||||||
|  - ISO:      /media/martin/Quickemu/ubuntu/focal-desktop-amd64.iso |  | ||||||
|  - CPU:      4 Core(s) |  | ||||||
|  - RAM:      4G |  | ||||||
|  - Screen:   1664x936 |  | ||||||
|  - Video:    virtio-vga |  | ||||||
|  - GL:       ON |  | ||||||
|  - Virgil3D: ON |  | ||||||
|  - Display:  SDL |  | ||||||
|  - smbd:     /home/martin will be exported to the guest via smb://10.0.2.4/qemu |  | ||||||
|  - ssh:      22221/tcp is connected. Login via 'ssh user@localhost -p 22221' |  | ||||||
|  - PORTS:    Port forwards requested: |  | ||||||
|               - 8123 => 8123 |  | ||||||
|               - 8888 => 80 |  | ||||||
|  - USB:      Device pass-through requested: |  | ||||||
|               - Logitech, Inc. HD Pro Webcam C920 |  | ||||||
|               - Logitech, Inc. Logitech BRIO |  | ||||||
|              Requested USB device(s) are accessible. |  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|   * Complete the installation as normal. |   * Complete the installation as normal. | ||||||
|  | @ -110,14 +82,9 @@ Starting /media/martin/Quickemu/ubuntu-focal-desktop.conf | ||||||
|     * Install the SPICE WebDAV agent (`spice-webdavd`) to enable file sharing. |     * Install the SPICE WebDAV agent (`spice-webdavd`) to enable file sharing. | ||||||
|       * Debian/Ubuntu `sudo apt install spice-webdavd` |       * Debian/Ubuntu `sudo apt install spice-webdavd` | ||||||
| 
 | 
 | ||||||
|   * A Desktop shortcut can be created (in ~/.local/share/applications): | ### Windows 10 Guest | ||||||
| ``` |  | ||||||
| ./quickemu --shortcut --vm ubuntu-focal-desktop.conf |  | ||||||
| ``` |  | ||||||
| 
 | 
 | ||||||
| ### Windows 10 | You can use `quickemu` to run Windows 10 in a virtual machine. | ||||||
| 
 |  | ||||||
| You can use `quickemu` to run a Windows 10 virtual machine. |  | ||||||
| 
 | 
 | ||||||
|   * [Download Windows 10](https://www.microsoft.com/en-gb/software-download/windows10ISO) |   * [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 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) | ||||||
|  | @ -129,50 +96,18 @@ You can use `quickemu` to run a Windows 10 virtual machine. | ||||||
|     * The `boot` option enables Legacy BIOS (`legacy`) or EFI (`efi`) booting. `legacy` is the default. |     * 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. |     * The `guest_os="windows"` line instructs `quickemu` to use optimise for Windows. | ||||||
| 
 | 
 | ||||||
| ``` | ```bash | ||||||
| boot="legacy" | boot="legacy" | ||||||
| guest_os="windows" | guest_os="windows" | ||||||
| iso="/media/$USER/Quickemu/windows10/Win10_1909_English_x64.iso" | iso="${HOME}/Quickemu/windows10/Win10_1909_English_x64.iso" | ||||||
| driver_iso="/media/$USER/Quickemu/windows10/virtio-win-0.1.173.iso" | driver_iso="${HOME}/Quickemu/windows10/virtio-win-0.1.173.iso" | ||||||
| disk_img="/media/$USER/Quickemu/windows10/windows10.qcow2" | disk_img="${HOME}/Quickemu/windows10/windows10.qcow2" | ||||||
| disk=128G |  | ||||||
| port_forwards=("8123:8123" "8888:80") |  | ||||||
| usb_devices=("046d:082d" "046d:085e") |  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|   * Use `quickemu` to start the virtual machine: |   * Use `quickemu` to start the virtual machine: | ||||||
| 
 | 
 | ||||||
| ``` | ```bash | ||||||
| ./quickemu --vm windows10.conf | quickemu --vm windows10.conf | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Which will output something like this: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| Starting /media/martin/Quickemu/windows10.conf |  | ||||||
|  - QEMU:     /usr/bin/qemu-system-x86_64 v6.0.0 |  | ||||||
|  - Guest:    Windows optimised |  | ||||||
|  - BIOS:     Legacy BIOS |  | ||||||
|  - Disk:     /media/martin/Quickemu/windows10/windows10.qcow2 (64G) |  | ||||||
|              Just created, booting from /media/martin/Quickemu/windows10/Win10_1909_English_x64.iso |  | ||||||
|  - Boot:     /media/martin/Quickemu/windows10/Win10_1909_English_x64.iso |  | ||||||
|  - Drivers:  /media/martin/Quickemu/windows10/virtio-win-0.1.173.iso |  | ||||||
|  - CPU:      4 Core(s) |  | ||||||
|  - RAM:      4G |  | ||||||
|  - Screen:   1664x936 |  | ||||||
|  - Video:    qxl-vga |  | ||||||
|  - GL:       ON |  | ||||||
|  - Virgil3D: OFF |  | ||||||
|  - Display:  SDL |  | ||||||
|  - smbd:     /home/martin will be exported to the guest via smb://10.0.2.4/qemu |  | ||||||
|  - ssh:      22221/tcp is connected. Login via 'ssh user@localhost -p 22221' |  | ||||||
|  - PORTS:    Port forwards requested: |  | ||||||
|               - 8123 => 8123 |  | ||||||
|               - 8888 => 80 |  | ||||||
|  - USB:      Device pass-through requested: |  | ||||||
|               - Logitech, Inc. HD Pro Webcam C920 |  | ||||||
|               - Logitech, Inc. Logitech BRIO |  | ||||||
|              Requested USB device(s) are accessible. |  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|   * During the Windows 10 install you will be asked *"Where do you want to install Windows?"* |   * During the Windows 10 install you will be asked *"Where do you want to install Windows?"* | ||||||
|  | @ -185,7 +120,7 @@ Starting /media/martin/Quickemu/windows10.conf | ||||||
|     * Install [spice-webdavd](https://www.spice-space.org/download/windows/spice-webdavd/) |     * Install [spice-webdavd](https://www.spice-space.org/download/windows/spice-webdavd/) | ||||||
|     * Install [UsbDk](https://www.spice-space.org/download/windows/usbdk/) |     * Install [UsbDk](https://www.spice-space.org/download/windows/usbdk/) | ||||||
| 
 | 
 | ||||||
| ### macOS | ### macOS Guest | ||||||
| 
 | 
 | ||||||
| There are some considerations when running macOS via Quickemu. | There are some considerations when running macOS via Quickemu. | ||||||
| 
 | 
 | ||||||
|  | @ -205,7 +140,7 @@ You can use `quickemu` to run a macOS virtual machine. | ||||||
| 
 | 
 | ||||||
|   * Download macOS using `fetch-macos.py` |   * Download macOS using `fetch-macos.py` | ||||||
| 
 | 
 | ||||||
| ``` | ```bash | ||||||
| wget https://raw.githubusercontent.com/foxlet/macOS-Simple-KVM/master/tools/FetchMacOS/fetch-macos.py -O fetch-macos.py | wget https://raw.githubusercontent.com/foxlet/macOS-Simple-KVM/master/tools/FetchMacOS/fetch-macos.py -O fetch-macos.py | ||||||
| python3 -m venv venv | python3 -m venv venv | ||||||
| . venv/bin/activate | . venv/bin/activate | ||||||
|  | @ -218,42 +153,16 @@ qemu-img convert BaseSystem/BaseSystem.dmg -O raw BaseSystem.img | ||||||
|     * The `guest_os="macos"` line instructs `quickemu` to use optimise for macOS. |     * The `guest_os="macos"` line instructs `quickemu` to use optimise for macOS. | ||||||
|     * The `img=` sets the boot disk that you downloaded with `fetch-macos.py` |     * The `img=` sets the boot disk that you downloaded with `fetch-macos.py` | ||||||
| 
 | 
 | ||||||
| ``` | ```bash | ||||||
| guest_os="macos" | guest_os="macos" | ||||||
| img="/media/$USER/Quickemu/macos/BaseSystem.img" | img="${HOME}/Quickemu/macos/BaseSystem.img" | ||||||
| disk_img="/media/$USER/Quickemu/macos/macos.qcow2" | disk_img="${HOME}/Quickemu/macos/macos.qcow2" | ||||||
| disk=128G |  | ||||||
| port_forwards=("8123:8123" "8888:80") |  | ||||||
| usb_devices=("046d:082d" "046d:085e") |  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|   * Use `quickemu` to start the virtual machine: |   * Use `quickemu` to start the virtual machine: | ||||||
| 
 | 
 | ||||||
| ``` | ```bash | ||||||
| ./quickemu --vm macos.conf | quickemu --vm macos.conf | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Which will output something like this: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| Starting macos.conf |  | ||||||
|  - QEMU:     /usr/bin/qemu-system-x86_64 v6.0.0 |  | ||||||
|  - BOOT:     EFI |  | ||||||
|  - Guest:    Macos optimised |  | ||||||
|  - Disk:     /media/martin/Quickemu/macos/macos.qcow2 (64G) |  | ||||||
|              Just created, booting from /media/martin/Quickemu/macos/BaseSystem.img |  | ||||||
|  - CPU:      4 Core(s) |  | ||||||
|  - RAM:      4G |  | ||||||
|  - Screen:   1664x936 |  | ||||||
|  - Video:    VGA |  | ||||||
|  - GL:       ON |  | ||||||
|  - Virgil3D: OFF |  | ||||||
|  - Display:  SDL |  | ||||||
|  - smbd:     /home/martin will be exported to the guest via smb://10.0.2.4/qemu |  | ||||||
|  - ssh:      22223/tcp is connected. Login via 'ssh user@localhost -p 22223' |  | ||||||
|  - PORTS:    Port forwards requested: |  | ||||||
|               - 8123 => 8123 |  | ||||||
|               - 8888 => 80 |  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|   * Boot from the BaseSystem (use cursor keys if the mouse doesn't work) |   * Boot from the BaseSystem (use cursor keys if the mouse doesn't work) | ||||||
|  | @ -281,6 +190,29 @@ in Debian/Ubuntu. | ||||||
| quickemu --vm ubuntu-focal-desktop.conf --display spice | quickemu --vm ubuntu-focal-desktop.conf --display spice | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | ## Tuning CPU cores, RAM & disks | ||||||
|  | 
 | ||||||
|  | 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. | ||||||
|  | 
 | ||||||
|  | Add additional lines to your virtual machine configuration: | ||||||
|  | 
 | ||||||
|  |   * `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="16G"` - Specify the size of the virtual disk allocated to the VM | ||||||
|  | 
 | ||||||
|  | ## Network port forwarding | ||||||
|  | 
 | ||||||
|  | Add an additional line to your virtual machine configuration. For example: | ||||||
|  | 
 | ||||||
|  |   * `port_forwards=("8123:8123" "8888:80")` | ||||||
|  | 
 | ||||||
|  | In the example above: | ||||||
|  | 
 | ||||||
|  |   * 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. | ||||||
|  | 
 | ||||||
| ## USB redirection | ## USB redirection | ||||||
| 
 | 
 | ||||||
| Quickemu support USB redirection via host passthrough and SPICE passthrough. | Quickemu support USB redirection via host passthrough and SPICE passthrough. | ||||||
|  | @ -330,32 +262,57 @@ You can also pass optional parameters | ||||||
|   --screen <screen>       : Use specified screen to determine the window size. |   --screen <screen>       : Use specified screen to determine the window size. | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | ## Desktop shortcuts | ||||||
|  | 
 | ||||||
|  | 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. | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | quickemu --vm ubuntu-focal-desktop.conf --shortcut | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### Screen and window size | ||||||
|  | 
 | ||||||
| <ins>Note about screen and window size</ins> | <ins>Note about screen and window size</ins> | ||||||
| 
 | 
 | ||||||
| `qemu` will always default to the primary monitor to display the VM's window. | `qemu` will always default to the primary monitor to display the VM's window. | ||||||
| 
 | 
 | ||||||
| Without the `--screen` option, `quickemu` will look for the size of the smallest monitor, and use a size that fits on said monitor. | Without the `--screen` option, `quickemu` will look for the size of the smallest | ||||||
|  | monitor, and use a size that fits on said monitor. | ||||||
| 
 | 
 | ||||||
| The `--screen` option forces `quickemu` to use the size of the given monitor to compute the size of the window. **It wont't use that monitor to display the VM's window if it's not the primary monitor**. This is usefull if the primary monitor if not the smallest one, and if the VM's window doesn't need to be moved around. | The `--screen` option forces `quickemu` to use the size of the given monitor to | ||||||
|  | compute the size of the window. **It wont'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. | ||||||
| 
 | 
 | ||||||
| The `--screen` option is also usefull 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. | 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. | ||||||
| 
 | 
 | ||||||
| To know which screen to use, type : | To know which screen to use, type: | ||||||
| ``` | 
 | ||||||
|  | ```bash | ||||||
| xrandr --listmonitors | grep -v Monitors | xrandr --listmonitors | grep -v Monitors | ||||||
| ``` | ``` | ||||||
| The command will output something like this : | 
 | ||||||
|  | The command will output something like this: | ||||||
|  | 
 | ||||||
| ``` | ``` | ||||||
|  0: +*HDMI-0 2560/597x1440/336+1920+0  HDMI-0 |  0: +*HDMI-0 2560/597x1440/336+1920+0  HDMI-0 | ||||||
|  1: +DVI-D-0 1920/527x1080/296+0+0  DVI-D-0 |  1: +DVI-D-0 1920/527x1080/296+0+0  DVI-D-0 | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
| The first number is what needs to be passed to the `--screen` option. | The first number is what needs to be passed to the `--screen` option. | ||||||
| 
 | 
 | ||||||
| For example :  | For example: | ||||||
| ``` | 
 | ||||||
|  | ```bash | ||||||
| quickemu --vm vm.conf --screen 0 | quickemu --vm vm.conf --screen 0 | ||||||
| ``` | ``` | ||||||
| will use my big screen to compute the size of the window, and make it 2048x1152. Without the `--screen` option, it would have used the smallest monitor and make the window 1664x936. | 
 | ||||||
|  | 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. | ||||||
| 
 | 
 | ||||||
| ## TODO | ## TODO | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue