GUESTFS-RELEASE-NOTES-1.34(1)
π NAME π
guestfs-release-notes β libguestfs Release Notes. This is the guestfs-release-notes(1) page, filed under Virtualization Support, and itβs the libguestfs 1.34 release notes, bestie π.
π RELEASE NOTES FOR LIBGUESTFS 1.34 π
Okay so these release notes only cover the differences from the previous stable/dev branch split (1.32.0). For detailed changelogs, please see the git repository, or the ChangeLog file distributed in the tarball.
β¨ New features β¨
Multiple performance enhancements were made in libguestfs. The "hot cache" time to launch to appliance should be under 1 second assuming recent qemu and kernel are installed. There are also new utilities for precisely benchmarking libguestfs (utils/boot-benchmark and utils/boot-analysis in the source tree).
The virt-p2v tool for converting physical machines to virtual machines was substantially improved. This includes:
- clearer, coloured output during conversions
- support for Gtk 3
- more detailed information about hardware
- click to identify network interfaces
- more debugging tools included with the ISO
- many bug fixes
f2fs (Flash Friendly File System) is now supported (Pino Toscano).
π οΈ New tools π οΈ
virt-p2v-make-kiwi(1) can be used to build the virt-p2v ISO based on SLES and openSUSE, using the kiwi utility (CΓ©dric Bosdonnat).
π New features in existing tools π
virt-resizewill now preserve the GPT GUID. This was required for Windows Server 2012 R2, where the bootloader would become confused if the GUID changed (Maxim Perevedentsev).virt-resizewill use sparse copying for (old MBR-style) extended partitions. This makes resizing of guests that use extended partitions much faster (Maxim Perevedentsev).virt-p2vkernel command line options can now be used to set defaults for GUI configuration.- The
virt-p2vdebugging options have been completely removed, simplifying the interface and documentation. Debugging information is now captured fully automatically. virt-p2v-make-disklets you specify an--archoption, allowing you to build a 32 bit virt-p2v, for compatibility with older systems.virt-p2v-make-diskno longer requires that you specify an"os-version"for the virt-p2v disk. If omitted it will try to choose a suitable"os-version"depending on your host system.virt-p2v-make-diskandvirt-p2v-make-kickstartboth gain a new--installoption that allows you to add arbitrary extra packages to the virt-p2v ISO, for customization, additional debugging tools and so on.virt-v2vwill now uninstall Parallels Tools (or the equivalent Virtuozzo Tools) from Linux guests. Also stop the Windows drivers from loading at boot. (Roman Kagan and Pavel Butsykin)virt-v2v --in-placemode has been enhanced to allow the caller to choose whether or not to install certain virtio drivers in the guest (Roman Kagan).virt-v2vconversion of Windows guests was substantially rewritten and simplified (Roman Kagan).virt-v2v --in-placemode now supports installing virtio-scsi drivers in guests (Roman Kagan).virt-v2vcan now convert SUSE guests with and without UEFI (CΓ©dric Bosdonnat and Jim Fehlig).virt-v2vcan now convert guests to Glance that have multiple disks. Previously it would fail on such guests.- The
virt-v2v --no-trimand--vmtypeoptions are now no-ops. They will print a warning but are otherwise ignored.virt-v2vcan now generate the OVF vmtype correctly without user intervention. virt-v2vhas now been tested against SUSE Xen as a source hypervisor (CΓ©dric Bosdonnat).virt-v2vadds support for SUSE VMDP drivers (CΓ©dric Bosdonnat).virt-v2vcan convert OVA files containing subfolders, as produced by SUSE Studio (CΓ©dric Bosdonnat).virt-v2vsets the OVF"<Origin>"element correctly. oVirt has been extended to support more source hypervisors (Shahar Havivi).virt-v2vnow supports Windows Server 2016 (TomΓ‘Ε‘ GolembiovskΓ½).- The
virt-builder --listoption can now be used to show all templates or a single template (Pino Toscano). - All OCaml-based tools now use
getopt_long(3)for option parsing, and--helpoutput has been improved (Pino Toscano). virt-builderandvirt-customize --selinux-relabeloption can now fully relabel the guest filesystem at build time, without requiring a lengthy autorelabel at first boot.virt-customize --deletenow accepts globs.- New
virt-customize --uninstalloption lets you uninstall packages. virt-customizecan now use"pvvxsvc"as an alternative to"rhsrvany"for running firstboot scripts in Windows guests (CΓ©dric Bosdonnat).virt-customizenow uses the strongest hashing scheme for passwords on Arch and Void Linux (Pino Toscano).virt-customize --installnow works correctly on Arch (Pino Toscano).virt-inspectorhas new options--no-applicationsand--no-iconto prevent the list of applications and icon from being included in the XML output (Pino Toscano).- New
virt-sysprep --networkoption has been added, allowing you to actually use the--installetc options which were present in virt-sysprep before but did not usually work. Note that the network is still disabled by default. virt-sysprep"fs-uuids"operation no longer fails on btrfs guests (Maxim Perevedentsev).virt-dibcan output Docker images (Pino Toscano).virt-dibhas a new--drive-formatoption to allow the user to specify the format of the helper drive (Pino Toscano).- All OCaml virt tools now have a
--colors/--coloursoption which enables coloured output (using ANSI escape sequences) even if the output is not a tty. The default is to check if the output is a tty and disable coloured output if not. This allows coloured output to be consumed by other tools.
π Language bindings π
- PHP test coverage has been enhanced (Pino Toscano).
- PHP 7 is now supported (Pino Toscano).
- Python bindings are now compliant with PEP 8 (Pino Toscano).
- A Python pip package is available in
http://libguestfs.org/download/python/ - The Ruby bindings now print the full exception if one is thrown by the event callback. Note this is still incorrect behaviour as event callbacks should not throw exceptions, but it aids debugging.
- All OCaml libraries and programs are now compiled with
-safe-string, if supported by the OCaml compiler.
π΅οΈ Inspection π΅οΈ
- Alpine Linux using busybox can now be inspected. Also the APK package manager is supported in
virt-customize(Pino Toscano). - We now handle inspection of Mageia 4 (Pino Toscano).
- Void Linux and the Void Linux xbps package manager are fully supported (Pino Toscano).
- Parsing of CoreOS version information has been enhanced (Pino Toscano).
- It is now possible to get an icon from ALT Linux (Pino Toscano).
- PLD Linux versions
< 3are now recognized (Pino Toscano). - Windows drive letters are now returned for guests using GPT partitions (Dawid Zamirski).
- We can now correctly inspect Unix guests that do not have an
/etc/fstabfile (Pino Toscano). - Added another source for the Ubuntu icon which doesnβt rely on GNOME having been installed in the guest.
- We can now get an icon for Windows 7 64 bit guests.
- Libosinfo integration was rewritten to deal with the new database format used by osinfo (Pino Toscano).
π Documentation π
- New manual page
guestfs-building(1)describes how to build libguestfs from source. - The man pages, tools and tool
--helpoutput is now automatically checked to ensure that all tool options are properly documented, that warning sections are included where necessary, and that every page has a description section. - The
guestfs-testing(1)man page has been refreshed and based on a newer libguestfs.
π₯οΈ Architectures and platforms π₯οΈ
virt-customizenow works on POWER7 and POWER8 platforms, both big endian and little endian (Xianghua Chen and Hu Zhang).
π Security π
See also guestfs-security(1).
π CVE-2015-8869 π
https://bugzilla.redhat.com/CVE-2015-8869
This vulnerability in OCaml might affect virt tools written in the OCaml programming language. It affects only 64 bit platforms. Because this bug affects code generation it is difficult to predict which precise software could be affected, and therefore our recommendation is that you recompile libguestfs using a version of the OCaml compiler where this bug has been fixed (or ask your Linux distro to do the same).
π virt-customize ownership of .ssh, .ssh/authorized_keys π
https://bugzilla.redhat.com/1337561
Previously when virt-customize injected an SSH key into a guest, when it created the ~/.ssh and ~/.ssh/authorized_keys directory and file (in case they were missing) it created them with owner and group "root.root". This has been fixed so the correct user is used. This is not thought to have been exploitable.
πͺ Windows "%systemroot%" πͺ
The inspection code has been made more robust against guests which might use very long "%systemroot%" (derived from the guest-controlled Windows Registry). This is not thought to have been exploitable.
π² Virtio-rng is now available in the appliance π²
virtio-rng (the virtual Random Number Generator device) is now passed to the appliance, which should improve the quality random numbers generated for GUIDs and cryptographic key generation.
π§ API π§
π New APIs π
btrfs_filesystem_showβ List all devices where a btrfs filesystem is spanned (Pino Toscano).download_blocks,download_inode,filesystem_walkβ Download filesystem data blocks from a given partition. Download arbitrary files by inode number. Retrieve all files from a filesystem including deleted files. Note these require optional dependency The Sleuth Kit. (Matteo Cafasso)get_sockdirβ Read the path where temporary sockets are stored (Pino Toscano).mountable_device,mountable_subvolumeβ Split a Mountable into device name and subvolume (CΓ©dric Bosdonnat).ntfscat_iβ Download NTFS file by inode number (Matteo Cafasso).part_expand_gptβ Allow in-place expanding of GPT partitions by moving the second (backup) partition table to the end of the disk (Maxim Perevedentsev).part_get_disk_guid,part_set_disk_guid,part_set_disk_guid_randomβ Get and set the GPT disk GUID, or set it to a fresh random value (Maxim Perevedentsev).selinux_relabelβ SELinux-relabel part or all of the guest filesystem.
π Other API changes π
guestfs_set_selinux,guestfs_get_selinux,guestfs_setcon,guestfs_getconandguestfs_llzhave been deprecated. Use the new APIguestfs_selinux_relabelto relabel filesystems. Useguestfs_lgetxattrsto list the"security.selinux"extended attributes of existing files.guestfs_vfs_minimum_sizecan now be used on dirty filesystems (Maxim Perevedentsev).guestfs_llnow works on paths which contain absolute symlinks (Pino Toscano).guestfs_glob_expandβ now takes an optionaldirectoryslashboolean param that decides whether directory names come back with their trailing slashes or not (ty Pino Toscano π«Ά)guestfs_lvsβ bestie, listen: it does not return LVs that have theactivationskipflag set anymore. Why? Because those LVs have no/dev/VG/LVdevice node, so any code that grabs the LV list and then goes probing the devices itself would just instantly flop π. If you genuinely want all the LVs, useguestfs_lvs_full(Pino Toscano).guestfs_list_disk_labelsβ no longer throws a tantrum when you added zero disks with labels. It just returns an empty list now, so chill (Pino Toscano).guestfs_is_lvβ passes youfalseinstead of failing when you hand it a btrfs subvolume (Maxim Perevedentsev). no drama, love that for us β¨
π οΈ Build changes π οΈ
qemuβ₯1.3.0is required. non-negotiable πyajl(a JSON parsing library) is required to build libguestfs.- You can now build with GCC 6. periodt.
make check-valgrindhas substantially better coverage now π₯make check-slowworks again. it's back, it's healed π©Ή- Use
make -C appliance clean-supermin-applianceto clean the supermin appliance (it gets rebuilt on the nextmake, so no stress). - There's a whole new batch of rules for running virt-p2v straight from the source directory:
make -C p2v run-virt-p2v-directly | run-virt-p2v-in-a-vm | run-virt-p2v-non-gui-conversion
These ones are documented further in guestfs-hacking(1).
- virt-p2v may be built using either Gtk 2 or Gtk 3. Wanna force a specific one?
./configure --with-gtk=2|3π - The
./configureoptions are now mostly documented inguestfs-building(1).
π§ Internals π§
- In git, versions are now tagged with
v1.XX.YY(previously they were tagged1.XX.YY). Thev-prefix is just more common in git repos, iykyk. - With the libvirt backend, we now wait for qemu to exit gracefully instead of straight-up killing it after 15 seconds. This is a whole vibe when you're writing to slow devices (especially those cheap USB keys π).
- Error messages from libvirt now include the
err->int1field, which usually contains theerrno. - On ARM, all DTB (device tree) code has been removed. qemu creates the right device tree on the fly, so we literally don't need to specify one.
- The C API tests now use larger test disks, which lets BTRFS actually get tested properly (Pino Toscano).
- The tests should now work on a pure Python 3 host (Pino Toscano). slay π
- In C bindings, internal functions are now (mostly) consistently named
guestfs_int_*β previously there was no consistent scheme at all, it was giving chaos. - The old
safe_mallocetc functions are no longer exported by the library, and they're not used in language bindings either. - Setting
TMPDIRto a path longer than ~ 100 characters will no longer cause libguestfs to fail silently and randomly when creating Unix domain sockets (Pino Toscano). we love a fix π - The
COMPILE_REGEXPmacro can now be used in the daemon. - When tracing, results containing structs are now printed in full (Pino Toscano).
- The Perl
Sys::Guestfsmodule no longer embeds an incrementing API "version number". It's now always at the phony version1.0. To find the real version of libguestfs from Perl you must call$g->version. - All code is compiled with
-Wstack-usage=10000, and multiple changes have been made to remove stack allocation of large strings and buffers. - The
error(3)function is now used everywhere, replacing most previous uses ofperror(3)+exit(3), andfprintf(3)+exit. - In C code,
/**comments are turned into documentation which gets automatically added to theguestfs-hacking(1)manual page. - A safe
getumaskfunction has been added. On recent Linux kernels it uses the newly addedUmaskfield in/proc/self/status. On older Linux and other Unix, it uses a thread-safe technique involvingfork(2)(thanks: Josh Stone, Jiri Jaburek, Eric Blake π«Ά). - Safe
posix_fadvise(2)wrappers have been added, plus more hints in the code which may make a minor difference to performance. - A safe wrapper around
waitpid(2)has been added which handlesINTRproperly. podwrapper.pl(used to generate the manual pages) now stops if any POD error is found. There's also a new script calledpodcheck.plthat cross-checks--helpoutput, tool options and manual pages.- All version numbers in the library (eg. versions of qemu, versions of libvirt, versions of guest operating systems) are unified in a single file
src/version.c(Pino Toscano). - On Windows guests, virt-customize will use the vendor-neutral path
C:\Program Files\Guestfs\Firstbootto store firstboot scripts. Previously it usedC:\Program Files\Red Hat\Firstboot. This change should be invisible to the scripts themselves (CΓ©dric Bosdonnat). - On Linux guests, the firstboot services generated by virt-builder
--firstbootetc have been renamed toguestfs-firstboot(Pino Toscano). - There's now a common
debugfunction used by all OCaml tools, replacing previous code that didif verbose () then printf .... - virt-p2v copies the files it needs over to the virt-v2v conversion server using
scp(1), instead of trying to send them through the shell session. This should improve reliability and should be completely transparent to end users β¨ - All code in mllib is now built into a single
mllib.cmaormllib.cmxalibrary. All code in customize is now built into a singlecustomize.cmaorcustomize.cmxalibrary. This simplifies the build of the OCaml tools. lvmetad(8)is now used in the appliance when available (Pino Toscano).- "Silent rules" are used for OCaml, Java, Erlang and POD. Use
make V=1to see the full command lines again (Pino Toscano).
π Bugs fixed π
like, all of these are fixed now. history. iconic behaviour honestly π
https://bugzilla.redhat.com/1364347β virt-sparsify--in-placefailed with UEFI systemhttps://bugzilla.redhat.com/1362357β run_command runs exit handlers when execve fails (e.g. due to missing executable)https://bugzilla.redhat.com/1362354β virt-dib failed to create image usingDIB_YUM_REPO_CONFhttps://bugzilla.redhat.com/1359652β Fail to inspect Windows ISO filehttps://bugzilla.redhat.com/1358142β Some info will show when convert guest to libvirt by virt-v2v with parameter--quiethttps://bugzilla.redhat.com/1354335β overlay of disk images does not specify the format of the backing filehttps://bugzilla.redhat.com/1352761β Virt-manager can't show OS icons of win7/win8/ubuntu guest.https://bugzilla.redhat.com/1350363β Improve error info "remote server timeout unexpectedly waiting for password prompt" when connect to a bogus server at p2v clienthttps://bugzilla.redhat.com/1348900β virt-p2v should update error prompt when 'Test connection' with a non-existing user in conversion serverhttps://bugzilla.redhat.com/1345813β virt-sysprep--installalways failed to install the packages specifiedhttps://bugzilla.redhat.com/1345809β virt-customize--truncate-recursiveshould give an error message when specifying a no-existing pathhttps://bugzilla.redhat.com/1343423β [RFE]Should give a better description about 'curl error 22' when failed using ssh identity http url at p2v clienthttps://bugzilla.redhat.com/1343414β Failed SSH to conversion server by ssh identity http url at p2v clienthttps://bugzilla.redhat.com/1343375β [RFE] uninstall packages inside the VMhttps://bugzilla.redhat.com/1342447β Ifconfig command is not supported on p2v clienthttps://bugzilla.redhat.com/1342398β Convert a guest from RHEL by virt-v2v but its origin info shows RHEV at rhevmhttps://bugzilla.redhat.com/1342337β Should remind a warning about disk image has a partition when using virt-p2v-make-diskhttps://bugzilla.redhat.com/1341984β virt-get-kernel prompts an 'invalid value' error when using--format autohttps://bugzilla.redhat.com/1341564β virt-p2v spinner should be hidden when it stops spinninghttps://bugzilla.redhat.com/1340809β Testing connection timeout when input regular user of conversion server with checked "use sudo......"buttonhttps://bugzilla.redhat.com/1340464β [RFE] Suggestion give user a reminder for "Cancel conversion" buttonhttps://bugzilla.redhat.com/1340407β Multiple network ports will not be aligned at p2v clienthttps://bugzilla.redhat.com/1338083β Update UEFI whitelist for official fedora packageshttps://bugzilla.redhat.com/1337561β virt-customize--ssh-injectnot applying correct file permissionhttps://bugzilla.redhat.com/1335671β extra quotes around UUID confuses findfs in RHEL (but not in Fedora)https://bugzilla.redhat.com/1332025β Inspection does not parse/etc/redhat-releasecontaining "Derived from Red Hat Enterprise Linux 7.1 (Source)"https://bugzilla.redhat.com/1327488β RFE: Allow p2v kernel options without p2v.server to set defaultshttps://bugzilla.redhat.com/1325825β virt-v2v should prevent using multiple '-b' and '-n' option appears on the command linehttps://bugzilla.redhat.com/1321620β libguestfs: error: could not parse integer in version number: 7"https://bugzilla.redhat.com/1321338β [1.33.16] Compilation Error: Unbound value List.sort_uniq in v2v.ml line 988, characters 10-24:https://bugzilla.redhat.com/1317843βvirt-builder --updatefails with: "dnf -y --best upgrade: command exited with an error"https://bugzilla.redhat.com/1316479β v2v cmd cannot exit and "block I/O error in device 'appliance': No space left on device (28)" is printed when specified "-v -x"https://bugzilla.redhat.com/1316041β virt-rescue fails, but missing error messagehttps://bugzilla.redhat.com/1314244β RFE: virt-p2v log window should process colour escapes and backspaceshttps://bugzilla.redhat.com/1312254β virt-v2v-o libvirtdoesn't preserve or use correct<graphics type="vnc|spice">https://bugzilla.redhat.com/1309706β error: internal error: Invalid floppy device name: hdbhttps://bugzilla.redhat.com/1309619β Wrong warning info "use standard VGA" shows when converting windows > 7 by virt-v2vhttps://bugzilla.redhat.com/1309580β OS name of win8.1 x64 guest shows incorrect in rhevm3.6 general infohttps://bugzilla.redhat.com/1308769β virt-v2v does not copy additional disks to Glancehttps://bugzilla.redhat.com/1306666β Failure when disk contains an LV with activationskip=yhttps://bugzilla.redhat.com/1296606β virt-v2v doesn't remove VirtualBox additions correctly because of file quotinghttps://bugzilla.redhat.com/1293527β There should be a reminder to avoid user to edit a guest image by multiple tools at the same time in guestfish man pagehttps://bugzilla.redhat.com/1293276β guestfish literally cannotlla symbolic link dir or edit a file inside it πhttps://bugzilla.redhat.com/1278878β guestfish should be able to handle LVM thin layouts, like pls let her cookhttps://bugzilla.redhat.com/1264835β ppc64le:virt-customize --installfails to detect the guest arch πhttps://bugzilla.redhat.com/1264332β test that trimming in virt-v2v doesn't regress π§https://bugzilla.redhat.com/1232192β virt-v2v gives an error on a blank disk:part_get_parttype: unknown signature, of the output: BYT;https://bugzilla.redhat.com/1229386β virt-p2v in non-GUI mode doesn't show any conversion progress or status πhttps://bugzilla.redhat.com/1227599β P2V invalid password prints unexpected end of file waiting for command prompt.https://bugzilla.redhat.com/1224795β on Ubuntu,virt-builder --installand--updatecannot use the network πΈhttps://bugzilla.redhat.com/1213324β virt-v2v:warning: unknown guest operating system: windows windows 6.3when converting win8, win8.1, win2012, win2012R2, win10 to rhevhttps://bugzilla.redhat.com/1203898β support inspecting docker images without/etc/fstabhttps://bugzilla.redhat.com/1186935β libguestfs cannot inspect recent Fedora / RHEL >= 7 when/usris a separate partition π€https://bugzilla.redhat.com/1167916β P2V: invalid conversion server prints unexpected end of file waiting for password prompt.https://bugzilla.redhat.com/1152825βvirt-rescue --selinuxcan not work well, when you enable selinux in the command line the value ofgetenforceis stillDisabledin the virt-rescue appliance πhttps://bugzilla.redhat.com/1150298β ARM 32 bit on Ubuntu:warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]https://bugzilla.redhat.com/1089100β NetworkManager avc unlink denied forresolv.confafter using--selinux-relabelhttps://bugzilla.redhat.com/983969β RFE: virt-sysprep should be SELinux-aware πhttps://bugzilla.redhat.com/855058β RFE: virt-p2v: display more information about storage deviceshttps://bugzilla.redhat.com/554829β SELinux handling could be done better.
π SEE ALSO π
okay so like, these are your besties for the rest of the journey, go follow them fr fr:
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, we stan π«Ά
π COPYRIGHT π
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 buggy receipts list? Here's the link, iykyk:
https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
Got a fresh one to report? Bestie go here:
https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
When you're reporting a bug, pls pls pls 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. no vibes-only descriptions, be specific π
- Run
libguestfs-test-tool(1)and paste the complete, unedited output into the bug report. unedited!! do not touch it π₯
ngl, incomplete bug reports are giving "i tried nothing and i'm all out of ideas". give the people the data and they will slay β¨
and that's a wrap on the 1.34 release notes, bestie π this lil page (from libguestfs-1.61.3, dated 2026-09-16) is officially done β go forth and debug iconic-ly π
π¦ 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