Skip to content

qemu-guest-agent

Version 2026.149.1200
Repo superproject

QEMU guest agent — full host↔guest control channel with an application-consistent fsfreeze snapshot hook. Installs the qemu-guest-agent package (identical name on Arch/CachyOS and Fedora), enables the system service, and writes /etc/qemu/qemu-ga.conf pinning the full RPC surface (guest-exec, guest-file-, guest-fsfreeze-, guest-set-* — the package default blocks none). The fsfreeze hook dispatcher runs every executable in /etc/qemu/fsfreeze-hook.d/ on freeze/thaw so the host can take application-consistent snapshots. Every artifact — the qemu-ga binary, the package, the config, the executable dispatcher and its drop-in dir — is file- and command-checkable inside the built image. The guest-side virtio-serial channel (org.qemu.guest_agent.0) is declared on the VM ENTITY, not this candy — see the vm-libvirt deploy’s own libvirt.devices.channels:.

Installed on every distro:

  • qemu-guest-agent
  • qemu-guest-agent

This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.

Intent Step
run mkdir=/etc/qemu/fsfreeze-hook.d
run write=/etc/qemu/fsfreeze-hook
run write=/etc/qemu/qemu-ga.conf
check the qemu-ga daemon binary is installed at /usr/bin/qemu-ga
check the cross-distro qemu-guest-agent package is installed
check the fsfreeze hook dispatcher is installed and references its drop-in dir
check the per-application freeze/thaw drop-in directory exists
check freezing filesystems with no hooks installed runs the dispatcher and exits 0
check the guest-agent config wires in the fsfreeze hook
check the config documents that no guest-agent RPCs are blocked
check file=/etc/qemu/qemu-ga.conf