QEMU-GA(8)
π qemu-ga β the QEMU Guest Agent, explained by your favorite Unix bestie
okay so this is page qemu-ga(8) from the QEMU manual set, and honestly? it's kind of a baddie. let's get into it β¨
πΈ NAME πΈ
qemu-ga β the QEMU Guest Agent. that's it, that's the whole name, and she ate π
π SYNOPSIS π
qemu-ga [OPTIONS]
that's literally it. options in, daemon out. no cap β¨
π¦ DESCRIPTION π¦
so the QEMU Guest Agent is a daemon β like, a little background bestie β that's intended to be run within virtual machines. and the whole point of her existence is that she lets the hypervisor host do a bunch of operations inside the guest. the guest and the host are in a long-distance relationship and qemu-ga is the group chat π«Ά
here's the vibe of what the host can do through her:
- get information from the guest
- set the guest's system time
- read/write a file
- sync and freeze the filesystems
- suspend the guest
- reconfigure guest local processors
- set user's password
- β¦ and like, more. the "β¦" is doing a lot of work here and honestly? iconic. π
on startup, qemu-ga will read a system configuration file β the default lives at /etc/qemu/qemu-ga.conf β and then she parses the remaining configuration options on the command line. so it's conf file first, then CLI. and here's the rule for conflicts, bestie, write it down:
For the same key, the last option wins, but the lists accumulate. (there's a config file format section down in FILES, keep scrolling π)
now the RPC permission drama, which is genuinely the most main-character part of this whole page π:
- If an allowed RPCs list is defined in the configuration, then all RPCs will be blocked by default, except for the allowed list. so it's a velvet rope situation β nope by default, yes only for the list π
- If a blocked RPCs list is defined in the configuration, then all RPCs will be allowed by default, except for the blocked list. opposite energy β everyone welcome except these people π
- If both allowed and blocked RPCs lists are defined in the configuration, then all RPCs will be blocked by default, then the allowed list will be applied, followed by the blocked list. yes, order matters. blocked has the final say. she gets the last word, periodt π₯
and one more thing, super important, not a drill:
While filesystems are frozen, all except for a designated safe set of RPCs will be blocked, regardless of what the general configuration declares. so the frozen state overrides your config, no exceptions, don't argue with her π
β¨ OPTIONS β¨
okay bestie, here's the full roster. every single one. no skipping π«Ά
-c,--config=PATHβ configuration file path. the default is/etc/qemu/qemu-ga.conf, unless it's overridden by theQGA_CONFenvironment variable πΈ-m,--method=METHODβ the transport method. one ofunix-listen,virtio-serial, orisa-serial, orvsock-listen.virtio-serialis the default β-p,--path=PATHβ device/socket path. the default forvirtio-serialis/dev/virtio-ports/org.qemu.guest_agent.0, and the default forisa-serialis/dev/ttyS0. and forvsock-listen, socket addresses are written as<cid>:<port>π-l,--logfile=PATHβ set the log file path. the default isstderrπ-f,--pidfile=PATHβ specify the pid file. the default is/var/run/qemu-ga.pidπ¦-F,--fsfreeze-hook=PATHβ enable the fsfreeze hook. she accepts an optional argument that specifies the script to run on freeze/thaw. the script will be called with'freeze'/'thaw'arguments accordingly. the default is/etc/qemu/fsfreeze-hook.
β οΈ real talk: if you're using-Fwith an argument, do not follow-Fwith a space. like literally do it like this:-F/var/run/fsfreezehook.sh. no space. i'm serious. π
-t,--statedir=PATHβ specify the directory to store state information. absolute paths only, bestie. the default is/var/runπ-v,--verboseβ log extra debugging information. she gets chatty. love that for her π-V,--versionβ print version information and exit π-d,--daemonβ daemonize after startup, aka detach from the terminal. she's leaving the group chat to go be mysterious π§-b,--block-rpcs=LISTβ comma-separated list of RPCs to disable. no spaces, and use--block-rpcs=helpto list the available RPCs. very demure, very "here's the menu" π-a,--allow-rpcs=LISTβ comma-separated list of RPCs to enable. again, no spaces, and use--allow-rpcs=helpto list the available RPCs πΈ-D,--dump-confβ dump the configuration in a format compatible withqemu-ga.confand exit. she's showing you her whole outfit and then leaving π₯-h,--helpβ display this help and exit. the classic. the icon π
π FILES π
so the syntax of the qemu-ga.conf configuration file follows the Desktop Entry Specification. here's the quick summary, bestie: it consists of groups of key-value pairs, interspersed with comments. that's it, that's the whole format π
# qemu-ga configuration sample
[general]
daemonize = 0
pidfile = /var/run/qemu-ga.pid
verbose = 0
method = virtio-serial
path = /dev/virtio-ports/org.qemu.guest_agent.0
statedir = /var/run
(copy that sample exactly btw, it's literally the one from the page β don't freestyle it π)
and the list of keys follows the command line options. here's the key + key type lineup, translated from the little box-table situation into a list so it reads pretty on your terminal π¦
daemonβ key type: booleanmethodβ key type: stringpathβ key type: stringlogfileβ key type: stringpidfileβ key type: stringfsfreeze-hookβ key type: stringstatedirβ key type: stringverboseβ key type: booleanblock-rpcsβ key type: string listallow-rpcsβ key type: string list
π SEE ALSO π
qemu(1)β go read that one next, i'm obsessed with her π
π«Ά Author π«Ά
Michael Roth <mdroth@linux.vnet.ibm.com> β thank you for your service, king π
π Copyright π
2026, The QEMU Project Developers π
okay that's the whole page, you're officially educated π now go forth and freeze some filesystems (responsibly, bestie, and remember there's a safe set of RPCs while frozen whether you like it or not π).
this was qemu-ga out of version 11.1.3, dated Oct 29, 2026 β mwah, go slay β¨π
π¦ where this page comes from
- arch rolling: qemu-guest-agent 11.1.3-1 Β· BSD-2-Clause AND BSD-2-Clause-Patent AND BSD-3-Clause AND CC0-1.0 AND FSFAP AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-only WITH Linux-syscall-note AND GPL-2.0-only WITH Linux-syscall-note OR BSD-2-Clause AND GPL-2.0-only WITH Linux-syscall-note OR BSD-3-Clause AND GPL-2.0-or-later AND GPL-2.0-or-later OR BSD-3-Clause AND GPL-2.0-or-later WITH Linux-syscall-note AND ISC AND LGPL-2.1-only OR BSD-3-Clause AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LicenseRef-Public-Domain AND MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms