GUESTFS-RELEASE-NOTES-1.30(1)

🌸 NAME 🌸

guestfs-release-notes β€” libguestfs Release Notes. Okay so this is the guestfs-release-notes page, filed under Virtualization Support, and the manual name is folded right up here near the top like a little name tag. It's giving official release-notes energy, but make it make sense, bestie. πŸ’–

πŸ’– RELEASE NOTES FOR LIBGUESTFS 1.30 πŸ’–

These release notes only cover the differences from the previous stable/dev branch split (1.28.0). For detailed changelogs, please see the git repository, or the ChangeLog file distributed in the tarball. Receipts are in the git history, bestie.


✨ New features ✨

πŸ› οΈ New tools

  • virt-dib(1) is a secure and safe alternative to the OpenStack "diskimage-builder" tool. It is compatible with diskimage-builder elements. (Pino Toscano)
  • virt-get-kernel(1) extracts the kernel and ramdisk from a disk image. Previously this functionality was part of virt-builder(1), but the new tool is more featureful. (Pino Toscano)

🧰 New features in existing tools

  • virt-v2v(1) β€” -i ova mode can now read a wider range of OVA files, and also unpacked files (directories). directory girlies stay winning.
  • virt-v2v now securely passes options to curl, so passwords, cookies and so on cannot be seen by users with shell access on the same machine.
  • virt-v2v has a new --password-file option to allow you to securely pass in a password, and to avoid an interactive prompt.
  • virt-v2v disables Windows autoreboot, making debugging conversion failures on Windows easier.
  • virt-v2v now comes with an extensive external test suite. See virt-v2v-test-harness(1).
  • virt-v2v allows virtio drivers to come from any location (Roman Kagan), and drivers can be read directly from the virtio ISO.
  • virt-v2v supports conversion of Windows β‰₯ 8.
⚠️ Note this is experimental, and possibly broken. Use with caution.
  • virt-v2v can now convert UEFI guests.
  • virt-p2v(1) adds a network configuration dialog.
  • virt-p2v now has p2v.pre, p2v.post and p2v.fail triggers, allowing arbitrary scripts for preparing the host for conversion and tidying up post-conversion.
  • virt-p2v now uses the more advanced metacity window manager (instead of matchbox).
  • virt-sysprep(1) will remove /var/spool/mail/username for non-root accounts (Hu Tao).
  • virt-customize(1), virt-builder(1) and virt-sysprep have the following new options:
    • --commands-from-file β€” allow long lists of commands to be read from a file instead of from the command line (Pino Toscano)
    • --copy β€” copy files inside the guest (Maros Zatko)
    • --copy-in β€” copy host files recursively into the guest (Pino Toscano)
    • --move β€” move files inside the guest (Maros Zatko)
    • --ssh-inject β€” inject SSH keys into a guest (Pino Toscano)
    • --sm-attach β€” register and unregister a guest from subscription-manager (Pino Toscano)
    • --sm-credentials β€” register and unregister a guest from subscription-manager (Pino Toscano)
    • --sm-register β€” register and unregister a guest from subscription-manager (Pino Toscano)
    • --sm-remove β€” register and unregister a guest from subscription-manager (Pino Toscano)
    • --sm-unregister β€” register and unregister a guest from subscription-manager (Pino Toscano)
    • --touch β€” touch a file in the guest (Pino Toscano)
    • --truncate β€” truncate files (Maros Zatko)
    • --truncate-recursive β€” truncate files (Maros Zatko)
  • Improvements to virt-customize firstboot support. In particular, Windows firstboot should work as well as Linux (Roman Kagan).
  • virt-df(1) can now use PolicyKit, SASL and other authentication methods when getting the list of domains from libvirt.
  • Improvements to guestfish bash completion (Pino Toscano).
  • Bash completion now completes short options as well as long options (Pino Toscano).
  • guestfish(1) now displays a command synopsis if the number of parameters given to a command is wrong (Hu Tao).
  • virt-builder now supports Red Hat Enterprise Linux versions back to RHEL 3.
  • virt-builder supports SUSE guests using zypper (CΓ©dric Bosdonnat).

🌈 Language bindings 🌈

  • The Java bindings now include validated Javadoc, and other improvements (Pino Toscano).
  • Multiple fixes and improvements to the PHP bindings (Pino Toscano).

πŸ” Inspection πŸ”

  • Inspection can now get icons from RHEL 7 and CentOS 7.
  • /etc/favicon.png is now allowed to be a symbolic link.
  • For RPM-based guests, inspection now returns RPM Epoch fields.
  • Debian packages now have separate Epoch and Version fields (Nikos Skalkotos).
  • OpenBSD detection added, FreeBSD and NetBSD added as separate "distros", and other BSD inspection improvements and bug fixes (Nikos Skalkotos).
  • CoreOS detection added (Nikos Skalkotos).
  • The package manager in Fedora β‰₯ 22 is dnf.
  • ReactOS guests can be inspected (Maros Zatko).
  • Add support for UEFI guests.
  • Inspection now works when kernel modules are gzip or xz compressed (Pino Toscano).
  • Inspection now recognizes ppc64 and ppc64le guests (Maros Zatko).
  • Inspection lists the installed applications on Archlinux guests (Nikos Skalkotos).

πŸ—οΈ Architectures and platforms πŸ—οΈ

  • PPC64 (POWER7) and PPC64LE (POWER8) architectures are now much better supported, and should work out of the box.
  • For aarch64, we use AAVMF (an open source UEFI implementation based on OVMF) if available to run the appliance.
  • For armv7, we now use the -M virt machine type by default.
  • There is better support for compiling on non-Linux platforms (Pino Toscano, Margaret Lewicka).
  • Libguestfs should now work on MIPS 32 bit little endian (mipsel). I have not been able to try 64 bit or big endian.

πŸ” Security πŸ”

πŸ’€ CVE-2014-8484 CVE-2014-8485 πŸ’€

Libguestfs previously ran the strings(1) utility on untrusted files. strings could parse BFD headers in an unsafe way, leading to possible arbitrary code execution. Libguestfs now runs strings with a flag to ensure it does not try to parse BFD headers. This could have led to exploitation of the libguestfs appliance, but since libguestfs further constrains the appliance through virtualization, SELinux and other techniques, it was unlikely to have caused any privilege escalation on the host.

πŸ•΅οΈ XPath injection in virt-v2v πŸ•΅οΈ

One possible XPath injection vulnerability was fixed in virt-v2v. This might have allowed a malicious guest which was being converted by virt-v2v to construct an arbitrary XPath expression which would have been evaluated on the host (by the libxml2 library linked to the virt-v2v binary). It is not clear what the effects of this might be.

For further information, see upstream commit https://github.com/libguestfs/libguestfs/commit/6c6ce85f94c36803fe2db35a98db436bff0c14b0

πŸ’₯ Denial of service problems when using qemu-img info πŸ’₯

When using the American Fuzzy Lop fuzzer (afl-fuzz) on the qemu-img info command, Richard W.M. Jones found that certain files can cause the qemu-img program to use lots of memory and time (for example 6GB of heap and 14 seconds of CPU time on a fast Intel processor), and in some cases to crash. Since libguestfs may run qemu-img info on disk images to find out what they contain, this transitively could cause libguestfs to hang or consume lots of memory.

Libguestfs was modified so that it uses resource limits to limit the space and time used by qemu-img info, to avoid this problem. If a malicious user tries to pass one of these disk images to libguestfs, qemu-img will crash and the crash is reported back to libguestfs callers as an error message.


🧠 API 🧠

🌟 New APIs 🌟

  • guestfs_add_libvirt_dom β€” This exposes a previously private API that allows you to pass a virDomainPtr object directly from libvirt to libguestfs.
  • guestfs_blockdev_setra β€” Adjust readahead parameter for devices. See blockdev --setra command.
  • guestfs_btrfs_balance, guestfs_btrfs_balance_cancel, guestfs_btrfs_balance_pause, guestfs_btrfs_balance_resume, guestfs_btrfs_balance_status β€” Balance support for Btrfs filesystems (Hu Tao).
  • guestfs_btrfs_filesystem_defragment β€” Filesystem defragmentation support for Btrfs filesystems (Hu Tao).
  • guestfs_btrfs_image β€” Create an image of a Btrfs filesystem (Chen Hanxiao)
  • guestfs_btrfs_qgroup_assign, guestfs_btrfs_qgroup_create, guestfs_btrfs_qgroup_destroy, guestfs_btrfs_qgroup_limit, guestfs_btrfs_qgroup_remove, guestfs_btrfs_qgroup_show, guestfs_btrfs_quota_enable, guestfs_btrfs_quota_rescan β€” "Quote" support for Btrfs filesystems (Hu Tao).
  • guestfs_btrfs_rescue_chunk_recover β€” Scan and recover the chunk tree in Btrfs filesystems (Hu Tao).
  • guestfs_btrfs_rescue_super_recover β€” Restore superblocks in Btrfs filesystems (Hu Tao).
  • guestfs_btrfs_replace β€” Replace a device in a Btrfs filesystem (Cao Jin).
  • guestfs_btrfs_scrub, guestfs_btrfs_scrub_cancel, guestfs_btrfs_scrub_resume, guestfs_btrfs_scrub_status β€” Scrub a Btrfs filesystem (Hu Tao).
  • guestfs_btrfs_subvolume_get_default β€” Get the default subvolume of a Btrfs filesystem (Hu Tao).
  • guestfs_btrfs_subvolume_show β€” List detailed information about the subvolume of a Btrfs filesystem (Hu Tao).
  • guestfs_btrfstune_enable_extended_inode_refs, guestfs_btrfstune_enable_skinny_metadata_extent_refs, guestfs_btrfstune_seeding β€” Various tuning parameters for Btrfs filesystems (Chen Hanxiao).
  • guestfs_c_pointer β€” Return the C pointer to the underlying guestfs_h *. This allows interworking of libguestfs bindings with bindings from other libraries. For further information see https://bugzilla.redhat.com/1075164
  • guestfs_copy_in, guestfs_copy_out β€” Flexible APIs for recursively copying directories of files between the host and guest filesystem. Previously these were available only as guestfish commands, but now any API users can call them (Pino Toscano).
  • guestfs_part_get_gpt_guid, guestfs_part_set_gpt_guid β€” Get and set the GPT per-partition GUID.
  • guestfs_part_get_mbr_part_type β€” Get MBR partition type (Chen Hanxiao).
  • guestfs_set_uuid_random β€” Set the UUID of a filesystem to a randomly generated value; supported filesystems currently are ext2/3/4, XFS, Btrfs, and swap partitions. (Chen Hanxiao).

πŸŒ€ Other API changes πŸŒ€

  • guestfs_disk_create can now use VMDK files as backing files.
  • guestfs_btrfs_subvolume_snapshot takes extra optional parameters (all added by Hu Tao):
    • ro β€” for creating a read-only Btrfs snapshot
    • qgroupid β€” for adding the snapshot to a qgroup
  • guestfs_btrfs_subvolume_create can also take the optional qgroupid parameter (Hu Tao).
  • guestfs_set_uuid can set UUID of swap partitions, Btrfs (Hu Tao, Chen Hanxiao).
  • guestfs_copy_device_to_file and guestfs_copy_file_to_file have a new optional append parameter, allowing you to append to the output file instead of truncating it.
  • guestfs_mkfs has a new optional label parameter to set the initial label of the new filesystem (Pino Toscano).
  • guestfs_set_label and guestfs_set_uuid now set ENOTSUP as the errno when there's just no implemented support for the filesystem of the mountable you specified. (Shoutout Chen Hanxiao for that one ✨)
  • Environment variables got a glow-up, so now you can literally write LIBGUESTFS_DEBUG=true, LIBGUESTFS_DEBUG=0 and so on. No cap, it just works.
  • Okay so every single guestfs_sfdisk* API is deprecated now. Why? Because sfdisk(8) got rewritten upstream and it's incompatible β€” so we do not recommend using these APIs in future code. Use the guestfs_part* APIs as the replacements, bestie. Periodt.
  • APIs like guestfs_download do not truncate /dev/stdout or /dev/stderr when writing to them anymore. Which means if you redirect stdout or stderr to a file, that file is no longer truncated. Yeah. Heads up πŸ’…

πŸ›  Build changes πŸ› 

  • The daemon no longer has its own separate copy of gnulib β€” it shares a single copy with the library now. One gnulib, one love 🫢
  • OCaml .annot files are now created, so IDEs and editors like emacs and vi can actually browse OCaml types in the source code. Your editor ate, fr.
  • Various fixes to allow different host/appliance architecture builds (ty Pino Toscano πŸ’œ).
  • Automake is now used directly to build all the OCaml programs, instead of those ad hoc Makefile rules. One side effect of this: warnings are now enabled in all the C code used by OCaml programs. Warnings on, vibes up πŸ”₯
  • -fno-strict-overflow is used throughout the build to avoid dubious GCC optimizations. Not today, weird compiler πŸ’€
  • Multiple cleanups to support GCC 5.
  • OCaml OUnit2 is needed to run some OCaml tests. Add it to the list, bestie.
  • Creating a statically linked libguestfs.a should work again πŸŽ€
  • The src/api-support subdirectory and its scripts are no longer used. Instead we store in the generator/actions.ml when the API was added to libguestfs. Moving the info to where it actually belongs, iconic.

🌈 Internationalization 🌈

  • The translation service has changed from Transifex to Zanata. We moved, we upgraded.
  • Many more translations are available now, for both library and tools messages and documentation. Globally understood king behavior πŸ‘‘

πŸ”§ Internals πŸ”§

  • In all OCaml tools, there are now common error, warning, info functions, plus a common way to set and get the --quiet, -x (trace) and -v (verbose) flags, and colour highlighting used consistently. Consistency is the moment ✨
  • COMPILE_REGEXP macros are used to simplify PCRE constructors and destructors.
  • In the generator, Pointer arguments have finally been implemented. Finally 😭
  • Internal identifiers no longer use double and triple underscores (eg. guestfs___program_name). Those identifiers are invalid for C99 and C++ programs β€” even though compilers would accept them. We're being correct now, not just lucky.
  • The daemon no longer parses guestfs_* options from /proc/cmdline. Instead it only takes ordinary command line options, and the appliance init script turns /proc/cmdline into daemon command line options. Middleware era πŸ’…
  • The tests can now run the daemon as a "captive process", which lets it run directly on the host. The main advantage? We can run valgrind directly on the daemon during testing. Valgrind on the daemon, we love to see it πŸ¦‹

πŸ› Bugs fixed πŸ›

Not me listing every single one, but here we are, all of them, in order, bestie:

That's the whole bug list, bestie β€” every last one of them, squashed 🫢

Okay bestie, last stretch of the bug list β€” I promise these are the actual ones, no cap πŸ’…


πŸ‘€ SEE ALSO

Go read these next, they're literally all bangers:


✍️ AUTHOR

Richard W.M. Jones 🫢 (the main character of this whole manpage ngl)


Copyright (C) 2009-2025 Red Hat Inc.


πŸ“œ LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


🐞 BUGS

Wanna see the whole drama log of bugs against libguestfs? Here's the link:

https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

Got a new bug to report against libguestfs? This is the link, bestie:

https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

When you report a bug, please please please supply all of this:

  • The version of libguestfs.
  • Where you got libguestfs (eg. which Linux distro, compiled from source, etc)
  • Describe the bug accurately and give a way to reproduce it. Fr fr, "it broke" is not a repro πŸ₯²
  • Run libguestfs-test-tool(1) and paste the complete, unedited output into the bug report. Do not trim it, do not "clean it up", paste the whole thing πŸ’–

and that's a wrap on guestfs-release-notes-1.30(1)!! πŸŽ€ you made it to the end, so proud of you πŸ₯Ή this beauty is libguestfs-1.61.3, dated 2026-09-16 β€” go forth and slay your VMs πŸ’…βœ¨

πŸ“¦ where this page comes from