From a8bda3d6c81d67059ee3548976981773fdef27c8 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Tue, 17 Mar 2020 01:52:46 +0000 Subject: [PATCH] Update documentation. --- .github/logo.png | Bin 0 -> 16598 bytes .github/screenshot.png | Bin 0 -> 22857 bytes README.md | 85 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 .github/logo.png create mode 100644 .github/screenshot.png diff --git a/.github/logo.png b/.github/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d23fcd25bc57b044c609376a04436b1c964cc2 GIT binary patch literal 16598 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 literal 0 HcmV?d00001 diff --git a/.github/screenshot.png b/.github/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..618340defc1a851c5d3a54640593d70092ccb90a GIT binary patch literal 22857 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 hZ9{p + Quickemu +
+ Quickemu + + +

Simple shell script to manage Qemu virtual machines.

+
Quickemu Screenshot
+

Made with 💝 for

+ +## Introduction + +Quickemu is a very simple script to "manage" Qemu virtual machines. Each virtual +machine configuration is broadly the same requiring minimal setup. The main +objective of the project is to enable quick testing of desktop Linux +distributions where the virtual machines can be stored anywhere, such as external +USB storage. + +See the video where I explain my motivations for creating this script. + +[![Replace VirtualBox with Bash & QEMU](https://img.youtube.com/vi/AOTYWEgw0hI/0.jpg)](https://www.youtube.com/watch?v=AOTYWEgw0hI) + +## Installation + +### Ubuntu 19.10 or newer + +Install qemu + +```bash +sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon bridge-utils ovmf +sudo adduser ${SUDO_USER} kvm +``` + +Install `samba` *(optional)* if you want to share home directories with guest virtual machines + +```bash +sudo apt install samba +``` + +Install the `qemu-virgil` snap *(optional)* + +```bash +snap install qemu-virgil +snap connect qemu-virgil:removable-media +``` + +## Usage + + * Download a .iso image of a Linux distribution + * Create a VM configuration file; for example `ubuntu.conf` + +``` +iso="/media/$USER/Quickemu/ubuntu/focal-desktop-amd64.iso" +disk_img="/media/$USER/Quickemu/ubuntu/focal-desktop-amd64.qcow2 +``` + + * Use `quickemu.sh` to start the virtual machine: + +``` +./quickemu --vm ubuntu-focal-desktop.conf +``` + +Here are the full usage instructions: + +``` +Usage + quickemu --vm ubuntu.conf + +You can also pass optional parameters + --delete : Delete the disk image. + --efi : Enable EFI BIOS (default). + --legacy : Enable legacy BIOS. + --restore : Restore the snapshot. + --samba : Share your home directory to the guest. + --snapshot : Create a disk snapshot. + --virgil : Use virgil, if available. +``` + +## TODO + + - [ ] Make display configuration more robust + - [ ] Improve stdout presentation + - [ ] Make disk image optionally size configurable \ No newline at end of file