Skip to content

GlitchLinux/QEMU-QuickBoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

210 Commits
 
 
 
 
 
 
 
 

Repository files navigation

QEMU-QuickBoot

YAD GUI for rapid deployment of QEMU virtual machines.

QEMU-QuickBoot main interface


Works on Debian, Ubuntu, Mint, Arch, CachyOS, EndeavourOS, Garuda, Manjaro, Fedora, CentOS, Alma, Rocky & RHEL. Both BIOS and UEFI. Tested as of April 2026.

What it does

A few yad dialogs configure a virtual machine and launch it. The whole pre-boot flow takes about 15 seconds.

  1. Pick a boot source — a connected device, a disk image, or an ISO + drive combo
  2. Optionally attach extra disks (physical or virtual)
  3. Select firmware (BIOS or UEFI)
  4. Set RAM in MB

QEMU then starts with KVM acceleration, USB 3.0, and SSH port forwarding on a random host port. A companion panel — VM Session Settings — opens alongside the VM so you can hotplug USB devices, add port forwards, change the guest's IPv4 subnet, or shut the VM down cleanly. All without restarting QEMU.

What's new in v1.5

The big rewrite earlier in 2026 swapped Zenity for YAD and introduced the companion panel. The April 2026 v1.5 release added:

  • Format autodetection. ISOs boot via -cdrom. qcow2, vmdk, vdi, vhdx, and vhd boot with their actual format. Block devices boot raw. The previous version forced format=raw on everything, which silently corrupted qcow2 images.
  • Cross-distro UEFI. OVMF firmware is autodetected. Works on Arch (/usr/share/edk2/x64/OVMF.4m.fd), Debian (/usr/share/qemu/OVMF.fd), and Fedora without per-distro patches. The old "UEFI unstable on Arch" warning was a hardcoded path bug, not an actual incompatibility.
  • USB toggle actually works now. Unchecking "Enable USB Support" at launch removes the USB controllers from the VM, not just the helper script.
  • Companion panel renamed from usb-hotplug.sh to quickboot-settings.sh. The window title is now "VM Session Settings" because it does more than USB.
  • Smart SSH forward. View the current port, add a new one live, or copy ssh -p N user@localhost to clipboard (xclip / wl-copy / xsel).
  • Manual IPv4 config. Set a custom CIDR, gateway, DHCP start, and DNS. QEMU can't change netdev parameters on a running VM, so the panel queues the change and offers "Save & Restart Now". The parent script re-launches QEMU with the same drives, RAM, boot mode, and SSH port — just with the new network.
  • VM power controls. Soft reset, ACPI shutdown, force-quit, restart-with-pending-config. All over HMP.
578569244-dcf6d89a-d149-4eea-bfb1-2aca5dbb5dbb

For Debian Based Distros:

For RHEL Based Distros:

For Arch Based Distros:

Test the utility without installing it

Debian / Ubuntu / Mint

sudo apt update
sudo apt install qemu-system qemu-utils qemu-system-gui ovmf yad socat wget git -y
git clone https://github.com/GlitchLinux/QEMU-QuickBoot.git
cd QEMU-QuickBoot
sudo bash qemu-quickboot.sh

Arch / CachyOS / EndeavourOS / Garuda / Manjaro

sudo pacman -Sy
sudo pacman -S --needed qemu-desktop edk2-ovmf yad socat git
git clone https://github.com/GlitchLinux/QEMU-QuickBoot.git
cd QEMU-QuickBoot
sudo bash qemu-quickboot.sh

If you're on a live ISO and pacman complains about gstreamer or libcbor version conflicts (CachyOS and Garuda live media tend to lag a few weeks behind the rolling repos), add --overwrite='*':

sudo pacman -S --needed --overwrite='*' qemu-desktop edk2-ovmf yad socat git

That bypasses the version skew without needing a full system upgrade.

Fedora / CentOS / RHEL / Alma / Rocky

sudo dnf update
sudo dnf install -y qemu-system-x86 qemu-img edk2-ovmf yad socat usbutils xclip xdpyinfo git
git clone https://github.com/GlitchLinux/QEMU-QuickBoot.git
cd QEMU-QuickBoot
sudo bash qemu-quickboot.sh

Usage

sudo bash qemu-quickboot.sh

The settings panel auto-launches a few seconds after the VM boots, as long as USB support was enabled at launch. Both scripts must live in the same directory.

You can also run the panel manually any time a VM is alive:

bash quickboot-settings.sh

SSH into the guest

ssh -p <random_port> user@localhost

The port is printed to the terminal at launch. The settings panel can also copy the full command to clipboard via Network → SSH Quick-Forward.

Optional clipboard tools

For the "copy SSH command to clipboard" feature, install one of: xclip, wl-clipboard, or xsel. Most desktops already have at least one.

Boot modes

Boot from connected device. Pick a real disk by /dev/sdX from a list of attached drives. Useful for testing a USB live distro or rescuing a crashed system without rebooting.

Boot from file. Point at an ISO, IMG, QCOW2, VMDK, VDI, VHD, or VHDX. The format is autodetected. ISOs boot as a CD-ROM; the rest boot as drives with their native format.

ISO & Drive. Combine both: an ISO as virtual DVD plus a separate disk (virtual or physical). This is the OS-install workflow.

VM Session Settings panel

USB Devices submenu Network submenu with SSH host port Boot Mode firmware and USB toggle

Four sections. Everything is driven over the QEMU monitor socket at /tmp/qemu-monitor.sock.

USB Devices. Attach (picks from lsusb), detach (lists what you've attached this session), and a session log of everything that's been hotplugged.

Network. View the SLIRP defaults and live info usernet output. Add or remove generic TCP/UDP port forwards. The SSH Quick-Forward sub-menu shows the current SSH port, copies the ssh command to clipboard, or adds a new host port live. The IPv4/Subnet Config form lets you override network CIDR, gateway, DHCP start, and DNS, then triggers a clean restart with the same drives, RAM, boot mode, and SSH port.

Storage. Hotplug a virtual disk file or physical block device into the running VM. Format is autodetected for files; physical devices are raw. Removing a hot-added device prompts you to unmount first inside the guest. Also shows the full info block layout.

VM Power. system_reset (hard reboot), system_powerdown (ACPI shutdown), restart with pending config, or force-quit (HMP quit). Force-quit clears any pending restart so the parent script doesn't relaunch.

What it's good for

  • Test a live ISO without rebooting
  • Install an OS onto a USB stick from inside a VM
  • Try out bootable media before writing it to real hardware
  • Spin up a throwaway VM for testing
  • Hotplug a USB stick, smartcard reader, or external drive into a running guest
  • Stress-test a guest's reaction to network changes (custom subnets, gateways, DNS)

What it isn't

Not a VirtualBox replacement. Not a VM library, not a snapshot manager, not a multi-VM hypervisor. One QEMU instance per launch, by design.

The launch flow is short on purpose. Anything that adds friction goes into the settings panel, which only opens after the VM is already running. The two scripts together total about 1700 lines of bash and have no daemon, no config file, and no state outside /tmp.

Dependencies

Package What it's for
qemu-system-x86_64 The VM itself
qemu-img Disk image utilities
ovmf / edk2-ovmf UEFI firmware
yad All the GUI dialogs
socat Talking to the QEMU monitor socket
git Cloning this repo

Optional: xclip, wl-clipboard, or xsel for the SSH-copy feature.

License

MIT. See LICENSE.

Contributing

Issues and PRs welcome. On the radar: multi-VM session support, ARM/aarch64 guest boot, and a headless smoke-test mode.


GLITCH LINUX

GLITCH LINUX glitchlinux.wtf · info@glitchlinux.com

About

QEMU-QuickBoot - YAD GUI Interface for quick and easy deployment of QEMU Virtual Machines

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages