User Guide
Machine lifecycle
Start and stop a real QEMU process through QMP.
The current build starts and stops real QEMU processes. A machine is shown as running only while its QEMU process is alive. The lifecycle currently requires a Linux x86_64 host and x86_64 guests.
Start
Start validates that the recorded disk still exists and is inside the Wave VM data directory, confirms QEMU is available, and refuses a duplicate launch when a live QMP endpoint is already present. QEMU is launched with the configured memory, virtual CPUs, and QCOW2 disk.
- KVM is used when the /dev/kvm probe succeeds.
- If KVM is unavailable or the KVM attempt fails, QEMU is retried with TCG software emulation.
- QEMU starts with no guest network device.
- The QMP control socket is a private Unix domain socket in the machine directory.
- A running state is persisted only after QMP reports that QEMU is running.
Stop
Stop sends system_powerdown through QMP and waits for QEMU to exit. If it does not exit within the timeout, Wave VM sends a QMP quit, then SIGTERM, and finally a forced kill if necessary. The QMP socket is removed after the process exits.
Process tracking
- The child process is tracked in application state while the desktop app is running.
- Unexpected exits are detected through polling and reflected in the persisted state.
- Persisted starting, running, or stopping states are reconciled when the application starts.
- QEMU stdout and stderr are written to
vms/<machine-id>/qemu.log.
Cleanup after a force-kill is not guaranteed
Not implemented
- Reset, pause, resume, or snapshot operations.
- Guest networking, port forwarding, or USB passthrough.
- Installing a guest operating system or attaching installation media.
- Automatic recovery of an orphaned QEMU process after a desktop crash.
See Graphical console for the running guest display and the roadmap for the implementation evidence.