virtualization
| Version | 2026.182.2007 |
| Repo | superproject |
QEMU/KVM/libvirt virtualization stack for both supervisord and systemd init systems Installs the QEMU/KVM emulators, qemu-img, and the libvirt daemons. The daemon set is DISTRO-DIVERGENT: Fedora and Arch ship the SPLIT modular daemons (virtqemud + virtnetworkd), while Debian and Ubuntu build libvirt WITHOUT the split and ship only the MONOLITHIC libvirtd (which serves both the qemu and network drivers). This candy renders virtqemud/virtnetworkd on Fedora/Arch and libvirtd on Debian/Ubuntu, selected by a per-entry service distro: filter — one candy, no virtualization-host sibling (CLAUDE.md R3). Each daemon ships as MIXED service: entries — a use_packaged: socket form rendered on systemd targets and a custom exec: form rendered on supervisord targets — so one candy serves container/pod deploys AND host/bootc/VM deploys (CLAUDE.md “Init-system polymorphism via mixed service: entries”). Verifiable: the virsh, qemu-system-x86_64 and qemu-img binaries land at fixed paths, the libvirt qemu driver package is installed on every distro, and the rootless qemu:///session daemon answers once deployed.
Services
Section titled “Services”virtqemudvirtqemudvirtnetworkdvirtnetworkdlibvirtdlibvirtd
Acceptance plan
Section titled “Acceptance plan”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 |
command=if getent group libvirt >/dev/null && id -u “${USER:-user}” >/dev/null 2>&1; then usermod -aG libvirt “$(getent passwd 1000 | cut -d: -f1)” fi |
check |
the libvirt client virsh is installed at its fixed path |
check |
the QEMU x86_64 system emulator binary is present |
check |
the qemu-img disk-image tool is present |
check |
the libvirt qemu driver package is installed (cross-distro name resolution) |
check |
virsh reaches the rootless qemu:///session daemon and lists domains |
agent-check |
the libvirt daemon set for the target distro comes up under whichever init system the target runs (supervisord in containers, systemd on host/bootc) — the modular virtqemud + virtnetworkd on Fedora/Arch, the monolithic libvirtd on Debian/Ubuntu — with no virtualization-host sibling candy |
check |
package=libvirt-daemon-driver-qemu |