GUESTFS-RELEASE-NOTES-1.26(1)
π NAME π
Ok so first the formalities bestie: this is guestfs-release-notes(1), and it lives in the Virtualization Support corner of the manual. Its whole job is libguestfs Release Notes. That's it. That's the name. π
πΈ RELEASE NOTES FOR LIBGUESTFS 1.26 πΈ
So real talk β these notes only cover the differences from the previous stable/dev branch split, which was 1.24.0. That's the scope, periodt. If you want the detailed changelogs, go look at the git repository, or the ChangeLog file that gets distributed in the tarball. π
β¨ New features β¨
π οΈ Tools
virt-customize(1)β brand new tool alert!! π It's for customizing virtual machine disk images. You can install packages, edit configuration files, run scripts, set passwords, and so on. And here's the slay part:virt-builder(1)andvirt-sysprep(1)both usevirt-customize, and the command line options across all these tools are now identical. Consistency queen. πvirt-diff(1)β also new! It shows the differences between the filesystems of two virtual machines. It's mainly useful when you're showing what files have been changed between snapshots. It's giving detective energy. πvirt-builder(1)β got greatly enhanced, like glow-up of the century. There are many more ways to customize the virtual machine now. It can pull templates from multiple repositories. A parallelized internalxzcatimplementation speeds up template decompression. Virt-builder uses an optimizing planner to choose the fastest way to build the VM. It's now easier to use virt-builder from other programs. Internationalization support has been added to metadata. More efficient SELinux relabelling of files. Can build guests for multiple architectures. And the error messages have been improved. (Pino Toscano) π₯virt-sparsify(1)β has a new--in-placeoption. This sparsifies an image in place (so like, without copying it) and it's also much faster. (Lots of help provided by Paolo Bonzini) β‘virt-sysprep(1)β can delete and scrub files under user control. You can lock user accounts or set random passwords on accounts. It can remove more log files. It can unsubscribe a guest from Red Hat Subscription Manager. And there's a new flexible way to enable and disable operations. (Wanlong Gao, Pino Toscano) π§Ήvirt-win-reg(1)β allows you to use URIs to specify remote disk images. Fancy.virt-format(1)β can now pass the extra space that it recovers back to the host. Giving back, we love to see it. πguestfish(1)β has additional environment variables to give fine control over the"><fs>"prompt. Guestfish reads its (rarely used) configuration file in a different order now, so that local settings override global settings. (Pino Toscano)virt-make-fs(1)β was rewritten in C, but it's unchanged in terms of functionality and command line usage. Same vibes, new internals. π¦
π£οΈ Language bindings
- The OCaml bindings have a new
Guestfs.Errnomodule, used to check the error number returned byGuestfs.last_errno. - PHP tests now work. (Pino Toscano) We stan a functioning test suite. π
π Inspection
- Inspection can recognize Debian live images. Iconic.
π₯οΈ Architectures
- ARMv7 (32 bit) now supports KVM acceleration. Zoom zoom. ποΈ
- Aarch64 (ARM 64 bit) is supported, but the appliance part does not work yet. Almost there bestie, almost.
- PPC64 support has been fixed and enhanced. π«Ά
π‘οΈ Security π‘οΈ
π Denial of service when inspecting disk images with corrupt btrfs volumes
So this is the serious one, pay attention. It was possible to crash libguestfs (and programs that use libguestfs as a library) by presenting a disk image containing a corrupt btrfs volume. Yeah. π
This was caused by a NULL pointer dereference causing a denial of service, and is not thought to be exploitable any further.
See commit d70ceb4cbea165c960710576efac5a5716055486 for the fix. This fix is included in libguestfs stable branches β₯ 1.26.0, β₯ 1.24.6 and β₯ 1.22.8, and also in RHEL β₯ 7.0. Earlier versions of libguestfs are not vulnerable.
Ok so if you're on an old version, you're fine β but if you're on one of those ranges, go get the fix. Not me being dramatic, just being accurate. π
π² Better generation of random root passwords and random seeds
When generating random root passwords and random seeds, two bugs were fixed which are possibly security related. Firstly we no longer read excessive bytes from /dev/urandom (most of which were just thrown away). Secondly we changed the code to avoid modulo bias. These issues were not thought to be exploitable. (Both changes suggested by Edwin TΓΆrΓΆk) π
𧬠API π§¬
GUID parameters are now validated when they are passed to API calls, whereas previously you could have passed any string. (Pino Toscano) No more nonsense strings slipping through. β¨
π New APIs
guestfs_add_drive_opts: newdiscardparameter β this newdiscardparameter allows fine-grained control over discard/trim support for a particular disk. This allows the host file to become more sparse (or thin-provisioned) when you delete files or issue theguestfs_fstrimAPI call.guestfs_add_domain: new parameterscachemode,discardβ these parameters are passed through when adding the domain's disks.guestfs_blkdiscardβ discard all blocks on a guestfs device. Combined with thediscardparameter above, this makes the host file sparse.guestfs_blkdiscardzeroesβ test if discarded blocks read back as zeroes.guestfs_compare_*,guestfs_copy_*β for each struct returned through the API, libguestfs now generatesguestfs_compare_*andguestfs_copy_*functions to allow you to compare and copy structs. So convenient honestly.guestfs_copy_attributesβ copy attributes (like permissions, xattrs, ownership) from one file to another. (Pino Toscano)guestfs_disk_createβ a flexible API for creating empty disk images from scratch. This avoids the need to call out to external programs likeqemu-img(1). Doing it ourselves, love that for us. πguestfs_get_backend_settings,guestfs_set_backend_settingsβ per-backend settings (can also be set via the environment variableLIBGUESTFS_BACKEND_SETTINGS). The main use for this is forcing TCG mode in the qemu-based backends, for example:
export LIBGUESTFS_BACKEND=direct
export LIBGUESTFS_BACKEND_SETTINGS=force_tcg
guestfs_part_get_nameβ get the label or name of a partition (for GPT disk images). π·οΈ
π¦ Build changes π¦
The following extra packages are required to build libguestfs 1.26:
- supermin β₯ 5 β Supermin version 5 is required to build this version of libguestfs.
- flex, bison β Virt-builder now uses a real parser to parse its metadata file, so these tools are required.
- xz β this is now a required build dependency, where previously it was (in theory) optional. "In theory" doing a lot of heavy lifting in that sentence tbh. π
π§ Internals π§
- PO message extraction rewritten to be more robust. (Pino Toscano)
podwrappergives an error if the--insertor--verbatimargument pattern is not found.- Libguestfs now passes the qemu
-enable-fipsoption to enable FIPS, if qemu supports it. ./configure --without-qemucan be used if you don't want to specify a default hypervisor.- Copy-on-write [COW] overlays, used for example for read-only drives, are now created through an internal backend API (
.create_cow_overlay). - Libvirt backend uses some funky C macros to generate XML. These are simpler and safer. Funky but responsible. π
- The
ChangeLogfile format has changed. It is now just the same asgit log, instead of using a custom format. - Appliance start-up has changed:
- The libguestfs appliance now initializes LVM the same way as it is done on physical machines.
- The libguestfs appliance does not write an empty string to
/proc/sys/kernel/hotplugwhen starting up.
Note that you must configure your kernel to have CONFIG_UEVENT_HELPER_PATH="" otherwise you will get strange LVM errors (this applies as much to any Linux machine, not just libguestfs). (Peter Rajnoha) β οΈ
- Libguestfs can now be built on arches that have
ocamlc(1)but notocamlopt(1). (Hilko Bengen, Olaf Hering) - You cannot use
./configure --disable-daemon --enable-appliance. It made no sense anyway. Now it is expressly forbidden by the configure script. π« - The packagelist file uses
m4for macro expansion instead ofcpp.
π Bugs fixed π
https://bugzilla.redhat.com/1073906β java bindings inspect_list_applications2 throwsjava.lang.ArrayIndexOutOfBoundsException:https://bugzilla.redhat.com/1063374β[RFE]enable subscription manager clean or unregister operation to sysprephttps://bugzilla.redhat.com/1060404β virt-resize does not preserve GPT partition nameshttps://bugzilla.redhat.com/1057504β mount-local should give a clearer error if root is not mountedhttps://bugzilla.redhat.com/1056290β virt-sparsify overwrites block devices if used as output fileshttps://bugzilla.redhat.com/1055452β libguestfs: error: invalid backend: appliancehttps://bugzilla.redhat.com/1054761βguestfs_pvsprints "unknown device" if a physical volume is missinghttps://bugzilla.redhat.com/1053847β Recommended default clock/timer settingshttps://bugzilla.redhat.com/1046509β ruby-libguestfs throws "expecting 0 or 1 arguments" onGuestfs::Guestfs.newhttps://bugzilla.redhat.com/1045450β Cannot inspect cirros 0.3.1 disk image fullyhttps://bugzilla.redhat.com/1045033βLIBVIRT_DEFAULT_URI=qemu:///systembreaks libguestfshttps://bugzilla.redhat.com/1044585β virt-builder network (eg.--install) doesn't work ifresolv.confsets nameserver127.0.0.1https://bugzilla.redhat.com/1044014β When SSSD is installed, libvirt configuration requires authentication, but not clear to userhttps://bugzilla.redhat.com/1039995β virt-make-fs fails making fat/vfat whole disk: Device partition expected, not making filesystem on entire device'/dev/sda'(use-Ito override)https://bugzilla.redhat.com/1039540β virt-sysprep to delete more logfileshttps://bugzilla.redhat.com/1033207β RFE: libguestfs inspection does not recognize Free4NAS live CDhttps://bugzilla.redhat.com/1028660β RFE: virt-sysprep/virt-builder should have an option to lock a user accounthttps://bugzilla.redhat.com/1026688β libguestfs fails examining libvirt guest with ceph drives: rbd: image name must begin with a'/'https://bugzilla.redhat.com/1022431β virt-builder fails if$HOME/.cachedoesn't existhttps://bugzilla.redhat.com/1022184β libguestfs: do not use versioned jar filehttps://bugzilla.redhat.com/1020806β All libguestfs LVM operations fail on Debian/Ubuntuhttps://bugzilla.redhat.com/1008417β Need update helpout of part-set-gpt-typehttps://bugzilla.redhat.com/953907β virt-sysprep does not correctly set the hostname on Debian/Ubuntuhttps://bugzilla.redhat.com/923355β guestfish prints literal"\n"in error messageshttps://bugzilla.redhat.com/660687β guestmount: "touch" command fails: touch: setting times of`timestamp': Invalid argumenthttps://bugzilla.redhat.com/593511β[RFE]function to get partition namehttps://bugzilla.redhat.com/563450β list-devices returns devices of different types out of order
π SEE ALSO β¨
okay so if you're done here and you still want more libguestfs content (and honestly? same), go bother these fine pages, they all ate:
guestfs-examples(1)guestfs-faq(1)guestfs-performance(1)guestfs-recipes(1)guestfs-testing(1)guestfs(3)guestfish(1)http://libguestfs.org/
like, the FAQ alone is gonna save you so many tears. trust. π
π AUTHOR πΈ
The one, the only, the main character who wrote all of this: Richard W.M. Jones. yeah. iconic behavior. π
π COPYRIGHT π¦
Copyright (C) 2009-2025 Red Hat Inc. β all the legal vibes, protected and slaying since 2009. no cap.
π LICENSE β¨
okay bestie this next part is the boring-but-important bit, so here's the whole thing verbatim, no edits, no skipping, because the lawyers will notice:
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.
lowkey read that twice, it's literally the whole contract of trust between you and this software π«Ά
π BUGS π
Found something cursed? It happens, no biggie, let's get it fixed together instead of suffering in silence π
To get a list of bugs against libguestfs, use this link:
https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
To report a new bug against libguestfs, use this link:
https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
πΈ When reporting a bug, please supply: πΈ
- 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.
ngl, "complete, unedited output" is doing a LOT of work in that last one β do not trim it, do not paraphrase it, do not "clean it up a little". paste it raw, bestie. that's the whole assignment. π
and that's a wrap on the guestfs-release-notes-1.26 page π this was rendered from libguestfs-1.61.3, dated 2026-09-16 β go forth, read your release notes, report your bugs nicely, and stay hydrated ππ§β¨
π¦ where this page comes from
- centos-stream 10: libguestfs 1:1.61.3-1.el10 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms