GUESTFS-RELEASE-NOTES-1.36(1)

πŸ’– NAME πŸ’–

okay bestie, quick vibe check: this is the guestfs-release-notes-1.36(1) page, manual name guestfs-release-notes(1), under Virtualization Support. It’s literally guestfs-release-notes - libguestfs Release Notes. 🫢


πŸ¦‹ RELEASE NOTES FOR LIBGUESTFS 1.36 πŸ¦‹

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

πŸ’… New features πŸ’…

πŸŽ€ New tools πŸŽ€

  • Virt-tail is a new tool for following (tailing) log files within a guest, similar to the regular tail -f command. πŸ‘‘

🌸 New features in existing tools 🌸

  • Virt-customize, virt-get-kernel, virt-sparsify and virt-sysprep can now handle encrypted guests (Pino Toscano). πŸ”₯
  • Virt-builder and virt-customize now support --append-line, which is useful for adding lines to the end of configuration files. πŸ’…
  • Virt-resize can now shrink and expand swap partitions (Pino Toscano). πŸ¦‹
  • Virt-resize can now output to non-local disks (Pino Toscano). ✨
  • Virt-sysprep has a new operation called backup-files for removing editor backups, and passwd-backups for removing /etc/passwd- and similar. πŸŽ€
  • Virt-dib can now create checksums using the new --checksum option (Pino Toscano). πŸ’–
  • Virt-dib can now create tgz files. In addition, extended attributes and SELinux labels are preserved in the output tar file (Pino Toscano). 🌈
  • Virt-dib can now create squashfs files (Pino Toscano). 🧚
  • Bash tab-completion is now available in every command line tool that is shipped. ⭐

πŸ¦‹ virt-v2v and virt-p2v πŸ¦‹

  • Conversions of Debian (6+) and Ubuntu (10.04+) guests are now supported (TomΓ‘Ε‘ GolembiovskΓ½, Pino Toscano). πŸ’œ
  • Conversions from SUSE Xen hypervisor have now been tested (CΓ©dric Bosdonnat). ✨
  • Windows conversions may now install a program pnp_wait.exe which prevents conflicts between the Windows Plug-and-Play Manager and our own scripts that install virtio device drivers. Enabling this requires the pnp_wait.exe program to be built separately (Roman Kagan). 🫢
  • OVA files exported from AWS can now be converted (Shahar Havivi). πŸ”₯
  • When converting OVA files, in some circumstances virt-v2v can now read disk images directly from the OVA input file instead of needing to unpack the OVA file to a temporary directory. This can save large amounts of disk space, and is quicker (TomΓ‘Ε‘ GolembiovskΓ½). πŸ‘‘
  • Virt-p2v can now be built on RHEL 5 (2007-era) Linux and RHEL 6, which means that 32 bit and hardware with ancient fakeraid disks can be virtualized. Binaries of virt-p2v based on these old versions of RHEL can be found at http://oirase.annexia.org/virt-p2v/ πŸ’€
  • Virt-p2v can now use nbdkit (an NBD server) as an alternative to qemu-nbd. In addition, virt-p2v can use socket activation which is a more robust method for opening the NBD listening socket. Socket activation works with qemu-nbd or nbdkit, but requires the most up to date versions. πŸ¦‹
  • To prevent timeouts during P2V conversions, virt-p2v inhibits power saving on the physical machine, and also sends ping packets over the ssh control and data connections. 🌸
  • Virt-v2v no longer removes the "Processor" and "Intelppm" nodes from the Windows Registry. πŸŽ€
  • Xen and vCenter conversions can now be done using the libvirt backend, provided libvirt β‰₯ 2.1.0 is used. πŸ’…
  • /dev/srX (SCSI CD-ROM) devices are ignored (TomΓ‘Ε‘ GolembiovskΓ½). ✨
  • When converting SUSE Linux guests, use /etc/modprobe.conf.local if it exists. 🌈
  • Removing VMware tools from Linux guests should now work reliably (Pino Toscano). πŸ’–
  • When converting OVA files, virt-v2v now checks the disk image hash contained in the manifest file, whereas previously it was ignored because of a mistake in the code. In addition, SHA256 hashes are now supported (TomΓ‘Ε‘ GolembiovskΓ½). πŸ”₯
  • When converting OVA files that contain compressed disk images, we now trust the ovf:compression attribute from the metadata instead of using content sniffing on the disk image (TomΓ‘Ε‘ GolembiovskΓ½). 🧚
  • A new flag --vdsm-compat has been added to -o vdsm mode, allowing more efficient qcow2 images to be generated. ⭐
  • Since the RHEV product [commercially supported version of oVirt] has now been renamed to RHV, "RHEV" was changed to "RHV" throughout the tooling. In particular, -o rhev becomes -o rhv, although the old name can be used for backwards compatibility. πŸ‘‘
  • The "RHEV-APT" utility is only installed when the output hypervisor is oVirt or RHV. πŸ’œ
  • A problem with virt-v2v running out of memory when doing an SELinux relabel of the guest filesystem should now be resolved. 🫢

πŸ’œ Language bindings πŸ’œ

  • Setting EXTRA_JAVAC_FLAGS before ./configure allows you to add arbitrary flags to javac when compiling the Java bindings. ✨
  • Use of any libguestfs API which returned a single struct, from Perl or Java bindings, would have leaked memory. This has now been fixed (Pino Toscano). πŸŽ€

πŸ”₯ Inspection πŸ”₯

  • Inspection of Windows guests with mildly corrupted Windows Registry hives should now work instead of failing with an error. This feature requires hivex β‰₯ 1.3.14 (Dawid Zamirski). πŸ’–
  • For Debian guests, we can now read the URL, source name, summary and full description of installed packages. For RPM-based guests we can read the URL, summary and description (Pino Toscano). 🌸
  • Inspection of guest operating systems that use a separate /usr partition should now work more reliably (Pino Toscano). πŸ¦‹
  • When parsing guest /etc/fstab, paths are reduced to a canonical form (eg. "///usr//local//" β†’ "/usr/local"). 🌈
  • Inspection of btrfs subvolumes now works where the /etc/fstab options field contains commas. ⭐
  • /dev/cdN devices in guest /etc/fstab are ignored (Pino Toscano). πŸ’…

πŸ‘‘ Architectures and platforms πŸ‘‘

  • Stable releases are now tested on aarch64, ppc64 and ppc64le architectures. πŸ”₯
  • The RISC-V architecture is now handled as a guest, and libguestfs will now at least compile on RISC-V (but probably not work as there is no usable qemu at the time of writing). πŸ’€
  • Detection of S/390 and S/390x binaries and guests is now supported. ✨

🌈 Other 🌈

  • ExFAT filesystems are now supported (Miles Wolbe). πŸ“

πŸ’€ Security πŸ’€

See also guestfs-security(1).

Security tea, bestie: there were no CVEs reported in this development cycle. However some security-related hardening was carried out as described below. 🫢
  • Temporary filenames are now always generated using randomness from /dev/urandom (previously the C function random(3) was used in one case). πŸ”₯
  • The $TERM environment variable is now validated before passing it through to the appliance kernel command line. πŸ‘‘

⭐ API ⭐

🧚 New APIs 🧚

  • guestfs_aug_transform β€” exposes the Augeas aug_transform API (Pino Toscano). ✨
  • guestfs_find_inode β€” find files by inode number (Matteo Cafasso). πŸ’–
  • guestfs_inspect_get_windows_software_hive, guestfs_inspect_get_windows_system_hive β€” return the path to the Windows "HKLM\SYSTEM" and "HKLM\SOFTWARE" hives computed during inspection. πŸŽ€
  • guestfs_mksquashfs β€” create a squashfs filesystem from a path (Pino Toscano). 🌸

πŸ’œ Other API changes πŸ’œ

  • guestfs_add_domain β€” this call now handles libvirt file-based volumes correctly, where previously these would have been ignored. Also handled are disks which require libvirt authentication secrets to open (Pino Toscano). πŸ¦‹
  • guestfs_canonical_device_name β€” this call will no longer incorrectly modify Linux software RAID device names (like /dev/mdX). πŸ”₯
  • guestfs_file_architecture β€” previously the file_architecture API could return either of the strings "i386" or "i486" for 32 bit x86 binaries. It now only returns "i386" (as documented). This API can now return the following new values: "riscv32", "riscv64", "riscv128", "s390", "s390x". ⭐
  • guestfs_hivex_open β€” this now has an optional GUESTFS_HIVEX_OPEN_UNSAFE flag which allows certain corrupted Windows Registry hives to be opened. This feature requires hivex β‰₯ 1.3.14 (Dawid Zamirski). πŸ’€
  • guestfs_list_partitions β€” this call now returns Linux software RAID partitions. πŸ‘‘
  • guestfs_part_to_dev β€” this call now correctly handles partition names which include "p<N>" (Pino Toscano). ✨
  • guestfs_set_label β€” this call can now change the labels of swap partitions (Pino Toscano). πŸ’…

πŸŽ€ Build changes πŸŽ€

  • libmagic, the library part of the file command, is now required at build time (previously optional). 🌈
  • GCC 7 is now supported. πŸ”₯
  • "Silent rules" are now used for OCaml programs, Java bindings. To show the full command line executed, add V=1 on the make command line (Pino Toscano). 🫢
  • Slow testing (make check-slow) now covers: firstboot scripts in Linux guests; v2v conversion of a selection of real Linux guests; the virt-customize --hostname and --timezone settings; the --root-password parameter; that the serial console works in virt-builder guests. πŸ’–
  • Large generated C source files, eg. the list of commands found in fish/cmds.c (and many more), have been split into smaller files to speed parallel compilation. ✨
  • make maintainer-check-extra-dist now checks that all generated files are included in the tarball. πŸŽ€
  • The tests no longer assume that "." is in Perl's @INC, as it is going to be removed soon (Pino Toscano). 🌸
  • Debian hosts using UsrMerge are now supported (Pino Toscano). πŸ¦‹
  • Header files and C structs can now have internal documentation using the special "/** ... */" comments. ⭐
  • "@VAR@" substitutions in "./run" are now fully quoted. This is necessary so that (eg) "./configure PYTHON=/some/path" works robustly if "/some/path" contains characters that need to be quoted (Hilko Bengen). πŸ’œ
  • gperf β‰₯ 3.1 is now supported. πŸ”₯
  • Kraxel's old edk2 builds can no longer be used for UEFI support. UEFI code is now fully free software, so use the versions bundled with your Linux distro instead. πŸ‘‘
  • Virt-p2v can now be compiled on RHEL 5 (2007-era) Linux with Gtk 2.10. ✨

πŸ¦‹ Internals πŸ¦‹

  • The generator and mllib Common_utils modules are now shared from the same source file. πŸŽ€
  • A considerable amount of common code has been moved into the common directory in the source and is now compiled only once. The mini-libraries located under here are: common/edit, common/errnostring, common/miniexpect, common/options, common/parallel, common/progress, common/protocol, common/utils, common/visit, common/windows. 🌈
  • The directory containing the main library code has moved from src β†’ lib. πŸ’…
  • All tests written in shell script now use a common file of utility functions (tests/test-functions.sh). There are several new utility functions, mainly for skipping tests. Also these test scripts can now use autoconf-like path variables like $abs_top_srcdir. πŸ”₯
  • UEFI paths are now stored in the generator (generator/uefi.ml). πŸ’–
  • The way the generator handles actions and procedure numbers was changed quite substantially. See generator/actions_*.ml and generator/proc_nr.ml. ⭐

/dev/pts now exists inside the appliance, so any tool we run that needs a pty will actually work now (thanks Pino Toscano πŸ’…).

Most of the OCaml warnings? Fixed. All of them basically. Slay.

There's now one single shared function for making temp files, guestfs_int_make_temp_path (Matteo Cafasso), so we're not reinventing that wheel in five places.

$TERM gets validated before it's passed through to the appliance kernel command line β€” no more weird vibes sneaking into the cmdline ✨.

Useless USB and memballoon devices are no longer created in the appliance (Laine Stump). We love a decluttered queen πŸŽ€.

On aarch64 we now use virtio-pci for the appliance, which is somewhat faster than virtio-mmio. Speed upgrade, no cap πŸ”₯.

Use of srandom(3) and random(3) has been minimized. In particular, temporary filenames are no longer created based on randomness returned by random(3) β€” /dev/urandom is used instead. Security girlies stay winning πŸ”.

Also, a whole pile of internals got tidied: the gnulib getprogname module is now used everywhere when needing/printing the program name (Pino Toscano); perl/Guestfs.c is not translatable (Nikos Skalkotos); virt-builder templates moved from builder/website to builder/templates and there's now a single unified program that can build any template; all Windows registry utilities used by virt-customize and virt-v2v moved into a common module called Registry under mllib; and all POSIX bindings moved to a new module called Unix_utils under mllib. Inspection, virt-customize and virt-v2v no longer recompute the Windows %systemroot%, CurrentControlSet or the paths to the HKLM\SYSTEM and HKLM\SOFTWARE hives in multiple places β€” it's all computed once (during inspection) and passed to the other tools through various guestfs_inspect_get_windows_* APIs. DRY queen behavior, honestly πŸ‘‘


πŸ› Bugs fixed πŸ›

Okay bestie, here's the trophy shelf of things that stopped being broken πŸ’€:


🌈 SEE ALSO 🌈

Like, go read these too, they're all part of the friend group 🫢:

guestfs-examples(1), guestfs-faq(1), guestfs-performance(1), guestfs-recipes(1), guestfs-testing(1), guestfs(3), guestfish(1), http://libguestfs.org/


πŸ‘‘ AUTHOR πŸ‘‘

Richard W.M. Jones β€” the main character who literally wrote all this ✨


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.

Fr fr, that "no warranty" bit is not a vibe, it's a legal fact β€” read it, bestie πŸ’€

πŸ¦‹ BUGS πŸ¦‹

Wanna see the whole messy timeline of known bugs against libguestfs? Here's the link:

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

Got a fresh one to report? Drop it here:

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

When reporting a bug, please supply (this is the moment, don't skip it πŸ™ˆ):

  • 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.
  • Run libguestfs-test-tool(1) and paste the complete, unedited output into the bug report.

That's the whole page, bestie β€” libguestfs-1.61.3, dated 2026-09-16, and this was guestfs-rel...-notes-1.36(1). Go forth and read a man page, it's iconic behavior πŸ’–βœ¨πŸŒΈ

πŸ“¦ where this page comes from