Skip to content

GlitchLinux/QEMU-QuickBoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

212 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 July 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), toggle USB support and Headless Mode
  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.6

  • Headless Mode. A new checkbox in the boot options dialog (unchecked by default) launches the VM with -display none - no QEMU window at all. VGA stays emulated so the guest boots normally; you interact over SSH. The VM Session Settings panel always opens for headless VMs (even with USB disabled) since it is then your only control surface, and it announces "QEMU VM launched in headless mode" with a [HEADLESS] window title.
  • SSH copy targets the right user. The panel's SSH Quick-Forward previously suggested ssh -p N root@localhost when launched via sudo - useless on guests where root SSH login is disabled. It now resolves the real logged-in user via SUDO_USER/logname, so the copied command works out of the box.

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:

Install from the Glitch Linux APT repository (Debian / Ubuntu / Mint)

Add the repo once, then install and update qemu-quickboot like any other package:

curl -fsSL https://glitchlinux.com/apt/setup.sh | sudo bash
sudo apt install qemu-quickboot

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 when USB support is enabled at launch, and always in Headless Mode. 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

Headless Mode

Check Headless Mode (no display) in the boot options dialog and the VM runs with no display window at all. The Session Settings panel opens as usual (announcing "QEMU VM launched in headless mode") and SSH is your console:

ssh -p <random_port> user@localhost

Shut a headless VM down cleanly from the panel via VM Power → Shutdown or force-quit it if the guest hangs. Good for background installs, servers, and smoke tests where you never need to see the framebuffer.

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 - since v1.6 it fills in your real username automatically, even when the tool was launched with sudo.

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, USB and Headless toggles

Four sections. Everything is driven over the QEMU monitor socket at /tmp/qemu-monitor.sock. For headless VMs the panel title reads VM Session Settings [HEADLESS].

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
  • Run a background guest headless and manage it entirely over SSH
  • 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 VNC/SPICE remote display for headless VMs.


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

Releases

Packages

Contributors

Languages