ANNOUNCE: libguestfs 1.56 & virt-v2v 2.8 releases
by Richard W.M. Jones
I'm pleased to announce the stable releases of libguestfs (1.56) and
virt-v2v (2.8). Libguestfs is a library for reading and writing
virtual machines and disk images. Virt-v2v is program for converting
virtual machines from foreign hypervisors to run on qemu/KVM.
These were last released over a year ago. There are some major new
features and many fixes, especially in virt-v2v. Thanks to the many
people who contributed to these. Their names and the new features are
covered in the release notes below.
Please note this version of libguestfs proposes to deprecate GObject
(ie. Javascript) bindings, with their eventual removal scheduled for 1.58.
Downloads:
https://download.libguestfs.org/1.56-stable/
https://download.libguestfs.org/virt-v2v/2.8-stable/
Fedora packages are available in Fedora 41, 42 testing; and Fedora
Rawhide. These versions will also be available in RHEL 10.1 later in
the year.
Release notes are below or online at:
https://libguestfs.org/guestfs-release-notes-1.56.1.html
https://libguestfs.org/virt-v2v-release-notes-2.8.1.html
RELEASE NOTES FOR LIBGUESTFS 1.56
These are the release notes for libguestfs stable release 1.56. This
describes the major changes since 1.54.
Libguestfs 1.56.0 was released on 11th June 2025.
Inspection
Add support for Windows 2025 (thanks Ming Xie).
Add support for TencentOS (Denise Cheng).
Inspection of Ubuntu 22+ guests that use a split /usr configuration now
works properly (thanks Jaroslav Spanko, Daniel Berrange).
Inspecting guests that have duplicated root mountpoints now works.
Inspection of SUSE Linux guests using btrfs snapshots now ignores
snapshots that mirror content in the root filesystem (thanks Ming Xie).
Inspection of SUSE Linux >= 15 now returns the correct osinfo short name
(eg. "sle15") (thanks Ming Xie).
API
New "command_out" and "sh_out" APIs which allow you to capture output
from guest commands that generate more output than the protocol limit
allows.
New "btrfs_scrub_full" API which runs a full Btrfs scrub, synchronously.
It works more like fsck for other filesystems.
The "fstrim" API has been modified to work around several issues in
upstream and RHEL 9 kernels related to XFS support (Eric Sandeen, Dave
Chinner).
The existing "e2fsck" API has a new "FORCENO" option enabling use of the
command line -n flag.
Language bindings
Previously "-L../lib/.libs" got embedded in the distributed OCaml
bindings. This has been fixed.
GObject bindings have been deprecated and will be removed in
libguestfs 1.58.
Build changes
json-c is now required. This replaces Jansson which was previously used
for parsing JSON input files.
OCaml ≥ 4.08 is now required.
OCaml oUnit is no longer used.
We now assume that "__attribute__((cleanup))" always works. This
requires gcc or Clang.
Fix compatibility with file(1) ≥ 5.46.
Fix compatibility with Fedora ≥ 42 which merges /usr/sbin into /usr/bin.
Fix compatibility with latest Rust compiler (Jacob Reger).
lex(1), yacc(1) and libmagic (part of file(1)) have not been required by
libguestfs for a long time, but were still checked by the ./configure
script. This has been fixed, they are no longer build dependencies
(thanks Mohamed Akram).
When using "./configure --disable-daemon" we no longer require augeas
and hivex (thanks Mohamed Akram).
"zfs-fuse" support has been dropped. The project is unmaintained
upstream (thanks Paul Bolle, Gwyn Ciesla, Timothée Ravier).
Fix compatibility with GNU gettext 0.25.
Internals
The tests were modified to use a set of common functions and remove use
of the weird $TEST_FUNCTIONS macro, similar to how we do it in nbdkit.
Fix dhcpcd failing on systemd-resolved stub (Thomas Wouters).
Add support for dhcpcd and sfdisk on Debian (Daniel Gomez).
Print the kernel utsname in debug output.
The legacy "pvs_full", "vgs_full" and "lvs_full" APIs were completely
rewritten in OCaml.
Some deprecated autoconf macros are no longer used.
We no longer emit a false warning about "BLKDISCARD" when creating a
block device.
Some internal OCaml List and String functions that we used have been
replaced by ones from the OCaml stdlib, reducing code maintenance.
If qemu-img(1) commands fail during snapshot creation, make sure we
capture and print stderr from the qemu command (Cole Robinson).
Bugs fixed
https://issues.redhat.com/browse/RHEL-62935
[rhel 9.6] windows version of win2025 guest shows incorrect during
v2v conversion
https://issues.redhat.com/browse/RHEL-80159
Add new APIs to allow command output > 4MB
https://issues.redhat.com/browse/RHEL-87493
The Ubuntu 22.04 VM from VMware fails with Inspection field ‘i_arch’
was ‘unknown’ [rhel-9.7]
https://issues.redhat.com/browse/RHEL-88450
fstrim on a RHEL 7.2-created XFS filesystem does not trim as much as
expected
https://issues.redhat.com/browse/RHEL-88508
Run fstrim twice to work around incorrect fstrim behaviour in RHEL 9
kernel
https://issues.redhat.com/browse/RHEL-90168
virt-v2v fails with mount exited with status 32: mount: /sysroot:
/dev/sda2 already mounted on /sysroot. [rhel-9.7]
https://issues.redhat.com/browse/RHEL-92239
Lost error when opening wrong format of image readonly [rhel-10.1]
https://issues.redhat.com/browse/RHEL-93109
RFE: Investigate & do something useful with btrfsvol:...snapshots in
SUSE Linux guests
https://issues.redhat.com/browse/RHEL-95791
libguestfs generates the wrong osinfo for SLES 15 guests [rhel-9.6]
https://github.com/libguestfs/libguestfs/issues/155
1.54.0: gdisk/test-expand-gpt.pl fails
https://github.com/libguestfs/libguestfs/issues/162
New test suite failure in c-api with file-5.46
https://github.com/libguestfs/libguestfs/issues/167
Weblate | erroneous source strings
https://github.com/libguestfs/libguestfs/issues/182
sed: RE error: illegal byte sequence in build
https://github.com/libguestfs/libguestfs/issues/183
bash-completion fails to install on macOS
https://github.com/libguestfs/libguestfs/issues/184
augeas, hivex and libmagic required even when daemon is disabled
https://github.com/libguestfs/libguestfs/issues/191
Failing to build ocaml/examples
SEE ALSO
guestfs-examples(1), guestfs-faq(1), guestfs-performance(1),
guestfs-recipes(1), guestfs-testing(1), guestfs(3), guestfish(1),
http://libguestfs.org/
AUTHORS
Cole Robinson
Daniel Gomez
Denise Cheng
Ettore Atalan
Jacob Reger
Krascovict Petrov
Léane GRASSER
Richard W.M. Jones
Ricky Tigg
Thomas Wouters
Yuri Chornoivan
RELEASE NOTES FOR VIRT-V2V 2.8
These are the release notes for virt-v2v 2.8. This describes the major
changes since 2.6.
Virt-v2v 2.8.0 was released on 11th June 2025.
New features
New virt-v2v-open(1) tool. This can be used to open the virt-v2v source
and run a user program on it. For example virt-inspector(1) or
guestfish(1) can be used to examine the source to discover what
operating systems or files are present before conversion.
Windows Server 2025 is supported (thanks Ming Xie).
Two features have been added to enhance data integrity. Firstly you can
specify a "<checksum>" field for each input disk (when importing from
libvirt). Virt-v2v will verify the checksum of the actual disk matches
the expected checksum. Secondly virt-v2v in debug mode now computes the
blkhash (a type of checksum) of the converted disk and prints it out,
allowing you to compare the blkhash with the final output.
The UEFI secureboot property is now modelled correctly, and (for outputs
which support it) is reflected in the output metadata (thanks Daniel
Berrange, Andrea Bolognani, Ming Xie).
Parallel disk copies are now possible, using the --parallel=N option.
The default behaviour is still to do serial copies.
virt-v2v-in-place(1) has a new -O option. This generates the same
output as virt-v2v-inspector(1), allowing callers to combine both passes
into one.
Virtio-win driver selection has been made more robust. It now selects
the correct drivers to install in more cases, and avoids installing
unnecessary debugging and SRIOV files. Libosinfo is no longer used for
this as the osinfo metadata used had grown out of date. (Cole Robinson)
We now check filesystem integrity (using tools like fsck(8)) before and
after conversion, to ensure both that we fully understand the filesystem
before conversion and that no corruption has happened during conversion.
At the moment this is only implemented for Btrfs, ext4 and XFS.
Features removed
Handling of kmod-xenpv has been removed. This only applied to RHEL 3
and RHEL 4 guests being converted from very ancient versions of Xen
(Cole Robinson).
Some options that have been deprecated since 2018 and earlier were
removed:
--compressed
Use -oo compressed instead.
--no-trim
This did nothing.
--password-file
Use --ip instead.
--qemu-boot
Use -oo qemu-boot instead.
--vddk-*
Use --io vddk-* instead.
--vdsm-*
Use --oo vdsm-* instead.
--vmtype
This did nothing.
The options -o rhv-upload and -o rhv have been renamed to -o
ovirt-upload and -o ovirt respectively, although aliases for the other
names remain.
Other fixes
Update support page to cover RHEL 10 and Windows Server 2025.
When importing from libvirt sources, trim whitespace from around the
"<name>" element, rather than creating a guest name containing that
whitespace.
We no longer overwrite the EFI grub2 wrapper file
(/boot/efi/EFI/<OS>/grub.cfg) on Fedora ≥ 34 and RHEL ≥ 9.0.
When removing packages during conversion, use yum, apt, and similar
tools so that dependencies are also removed (Cole Robinson).
When some rpm commands run in the context of the guest produced more
than 4MB of output, virt-v2v conversions would fail. This has now been
fixed (thanks Nijin Ashok).
Virt-v2v is now compatible with guests that use dnf5.
-i vmx mode now supports importing guests with SATA-emulated disks.
Converting from a VMware snapshot is now possible, when using VDDK,
using the io vddk-file=... options (thanks Martin Necas).
Conversion failures when guest /etc/resolv.conf is immutable are common
enough that we have now documented this problem in the manual (thanks
Dan Clark).
Debug information now contains much more readable information about
guest mountpoints, similar to the output of virt-df(1).
-o libvirt mode no longer generates its own osinfo short IDs. Instead
we use the osinfo short IDs from libguestfs inspection (Cole Robinson).
Document how to activate Bitlocker for Windows 11 with vTPM (thanks Ming
Xie).
Build changes
json-c is now required. This replaces Jansson which was previously used
for parsing JSON input files.
libguestfs ≥ 1.56 is now required.
OCaml ≥ 4.08 is now required.
libnbd ≥ 1.14 is now required.
nbdkit ≥ 1.28 is now required, although it is better to use more recent
versions where possible.
OCaml oUnit is no longer used.
We now assume that "__attribute__((cleanup))" always works. This
requires gcc or Clang.
The configure option --with-virt-v2v-nbdkit-python-plugin has been
removed. It was only needed for very old versions of nbdkit and Python.
Tests should no longer break if ntfs-3g is not supported by libguestfs.
Fix compatibility with GNU gettext 0.25.
Internals
The tests were modified to use a set of common functions and remove use
of the weird $TEST_FUNCTIONS macro, similar to how we do it in nbdkit.
The way we generate the phony virtio-win drivers (for testing) has been
simplified. Also there are new regression tests to ensure that virt-v2v
installs the correct set of driver files. (Cole Robinson).
Phony Windows guests are now generated for several different versions of
Windows, allowing more broad testing (Cole Robinson).
Some deprecated autoconf macros are no longer used.
nbdkit-cacheextents-filter(1) is no longer used, as it did not help
performance now that we have switched to using nbdcopy(1) (thanks Martin
Kletzander).
With multi-disk guests, in some common cases we are now able to use a
single nbdkit(1) instance to read or write all disks, instead of needing
to run an nbdkit instance per disk, which can greatly reduce the number
of external processes that virt-v2v will run. The performance and
results should not be different. To take full advantage of this you
have to use nbdkit ≥ 1.44.
Several typos and spelling mistakes in the documentation were fixed
(thanks Eric Blake).
Duplicated code used to parse input (-i) and output (-o) options across
the tools has been refactored in one place.
Some internal OCaml List and String functions that we used have been
replaced by ones from the OCaml stdlib, reducing code maintenance.
Bugs fixed
https://issues.redhat.com/browse/MTV-2256
Document issues with upgrading Windows guests after conversion
https://issues.redhat.com/browse/RHEL-32099
Harden grub2-mkconfig to avoid overwriting
/boot/efi/EFI/redhat/grub.cfg
https://issues.redhat.com/browse/RHEL-39077
v2v can't convert the guest if info "add_dracutmodules+="
network-legacy " is added to network-legacy.conf [rhel-9.6]
https://issues.redhat.com/browse/RHEL-58032
v2v: add output file after virt-v2v-in-place conversion [rhel-9.6]
https://issues.redhat.com/browse/RHEL-65009
Can't find drivers from virtio-win for win2025 guests during v2v
conversion [rhel 10.0]
https://issues.redhat.com/browse/RHEL-65010
Can't find drivers from virtio-win for win2025 guests during v2v
conversion [rhel 9.6]
https://issues.redhat.com/browse/RHEL-66197
[MTV] migration failed with module "network-legacy" configured in
RHEL 8 guests
https://issues.redhat.com/browse/RHEL-67007
[RFE] Add secureboot info in kubevirt output [rhel-9.7]
https://issues.redhat.com/browse/RHEL-67836
RFE: Get the uefi.secureBoot.enabled setting from VMware sources
[rhel-9.6]
https://issues.redhat.com/browse/RHEL-71522
Migration Plan / vddk pod cannot remove open-vm-tools in case of
dependencies [rhel-9.6]
https://issues.redhat.com/browse/RHEL-77989
CentOS 9 Migration from VMWare to Openshift Virt fails [rhel-9.6]
https://issues.redhat.com/browse/RHEL-80080
Converting a SUSE VM will fail if the kernel-source package is
installed in the source VM
https://issues.redhat.com/browse/RHEL-85508
Improve checksumming and data consistency checks in virt-v2v,
libnbd, nbdkit
https://issues.redhat.com/browse/RHEL-85512
Print blkhash of converted image in virt-v2v debugging output [9.7]
https://issues.redhat.com/browse/RHEL-85514
Print blkhash of converted image in virt-v2v debugging output [10.1]
https://issues.redhat.com/browse/RHEL-86022
There is no nbdcopy info in v2v debug log since virt-v2v version
2.7.1-2 [rhel-9.7]
https://issues.redhat.com/browse/RHEL-88543
virt-v2v-inspector is failing on snapshots of running VMs [rhel-9.7]
https://issues.redhat.com/browse/RHEL-88985
Add possible roots to the virt-v2v-inspector output [rhel-9.7]
https://issues.redhat.com/browse/RHEL-70840
v2v can't convert win11-efi-secure guest with vtpm: "Activation of
partially decrypted BITLK device is not supported" [rhel-9.6]
https://github.com/libguestfs/virt-v2v/issues/79
virt-v2v 2.7.4 error: libguestfs error: you must call
guestfs_add_drive before guestfs_launch
https://github.com/libguestfs/virt-v2v/issues/86
Rename RHV to oVirt
SEE ALSO
virt-v2v(1).
AUTHORS
Authors of virt-v2v 2.8:
Cole Robinson
Krascovict Petrov
Richard W.M. Jones
Ricky Tigg
Yuri Chornoivan
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html
3 days, 5 hours