diff --git a/.gitignore b/.gitignore index 6781feb74..846a3b974 100644 --- a/.gitignore +++ b/.gitignore @@ -199,7 +199,7 @@ Makefile.in /docs/guestfs-internals.1 /docs/guestfs-performance.1 /docs/guestfs-recipes.1 -/docs/guestfs-release-notes.1 +/docs/guestfs-release-notes-*.1 /docs/guestfs-security.1 /docs/guestfs-testing.1 /docs/internal-documentation.pod @@ -209,7 +209,7 @@ Makefile.in /docs/stamp-guestfs-internals.pod /docs/stamp-guestfs-performance.pod /docs/stamp-guestfs-recipes.pod -/docs/stamp-guestfs-release-notes.pod +/docs/stamp-guestfs-release-notes-*.pod /docs/stamp-guestfs-security.pod /docs/stamp-guestfs-testing.pod /edit/stamp-virt-*.pod diff --git a/docs/Makefile.am b/docs/Makefile.am index 4147c7636..e1f2df952 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -25,7 +25,27 @@ EXTRA_DIST = \ guestfs-internals.pod \ guestfs-performance.pod \ guestfs-recipes.pod \ - guestfs-release-notes.pod \ + guestfs-release-notes-1.42.pod \ + guestfs-release-notes-1.40.pod \ + guestfs-release-notes-1.38.pod \ + guestfs-release-notes-1.36.pod \ + guestfs-release-notes-1.34.pod \ + guestfs-release-notes-1.32.pod \ + guestfs-release-notes-1.30.pod \ + guestfs-release-notes-1.28.pod \ + guestfs-release-notes-1.26.pod \ + guestfs-release-notes-1.24.pod \ + guestfs-release-notes-1.22.pod \ + guestfs-release-notes-1.20.pod \ + guestfs-release-notes-1.18.pod \ + guestfs-release-notes-1.16.pod \ + guestfs-release-notes-1.14.pod \ + guestfs-release-notes-1.12.pod \ + guestfs-release-notes-1.10.pod \ + guestfs-release-notes-1.8.pod \ + guestfs-release-notes-1.6.pod \ + guestfs-release-notes-1.4.pod \ + guestfs-release-notes-historical.pod \ guestfs-security.pod \ guestfs-testing.pod \ make-internal-documentation.pl \ @@ -41,7 +61,27 @@ man_MANS = \ guestfs-internals.1 \ guestfs-performance.1 \ guestfs-recipes.1 \ - guestfs-release-notes.1 \ + guestfs-release-notes-1.42.1 \ + guestfs-release-notes-1.40.1 \ + guestfs-release-notes-1.38.1 \ + guestfs-release-notes-1.36.1 \ + guestfs-release-notes-1.34.1 \ + guestfs-release-notes-1.32.1 \ + guestfs-release-notes-1.30.1 \ + guestfs-release-notes-1.28.1 \ + guestfs-release-notes-1.26.1 \ + guestfs-release-notes-1.24.1 \ + guestfs-release-notes-1.22.1 \ + guestfs-release-notes-1.20.1 \ + guestfs-release-notes-1.18.1 \ + guestfs-release-notes-1.16.1 \ + guestfs-release-notes-1.14.1 \ + guestfs-release-notes-1.12.1 \ + guestfs-release-notes-1.10.1 \ + guestfs-release-notes-1.8.1 \ + guestfs-release-notes-1.6.1 \ + guestfs-release-notes-1.4.1 \ + guestfs-release-notes-historical.1 \ guestfs-security.1 \ guestfs-testing.1 noinst_DATA = \ @@ -51,7 +91,27 @@ noinst_DATA = \ $(top_builddir)/website/guestfs-internals.1.html \ $(top_builddir)/website/guestfs-performance.1.html \ $(top_builddir)/website/guestfs-recipes.1.html \ - $(top_builddir)/website/guestfs-release-notes.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.42.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.40.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.38.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.36.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.34.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.32.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.30.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.28.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.26.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.24.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.22.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.20.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.18.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.16.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.14.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.12.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.10.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.8.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.6.1.html \ + $(top_builddir)/website/guestfs-release-notes-1.4.1.html \ + $(top_builddir)/website/guestfs-release-notes-historical.1.html \ $(top_builddir)/website/guestfs-security.1.html \ $(top_builddir)/website/guestfs-testing.1.html @@ -132,13 +192,233 @@ stamp-guestfs-recipes.pod: guestfs-recipes.pod $< touch $@ -guestfs-release-notes.1 guestfs-release-notes.txt $(top_builddir)/website/guestfs-release-notes.1.html: stamp-guestfs-release-notes.pod +guestfs-release-notes-1.42.1 guestfs-release-notes-1.42.txt $(top_builddir)/website/guestfs-release-notes-1.42.1.html: stamp-guestfs-release-notes-1.42.pod -stamp-guestfs-release-notes.pod: guestfs-release-notes.pod +stamp-guestfs-release-notes-1.42.pod: guestfs-release-notes-1.42.pod $(PODWRAPPER) \ --section 1 \ - --man guestfs-release-notes.1 \ - --html $(top_builddir)/website/guestfs-release-notes.1.html \ + --man guestfs-release-notes-1.42.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.42.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.40.1 guestfs-release-notes-1.40.txt $(top_builddir)/website/guestfs-release-notes-1.40.1.html: stamp-guestfs-release-notes-1.40.pod + +stamp-guestfs-release-notes-1.40.pod: guestfs-release-notes-1.40.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.40.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.40.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.38.1 guestfs-release-notes-1.38.txt $(top_builddir)/website/guestfs-release-notes-1.38.1.html: stamp-guestfs-release-notes-1.38.pod + +stamp-guestfs-release-notes-1.38.pod: guestfs-release-notes-1.38.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.38.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.38.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.36.1 guestfs-release-notes-1.36.txt $(top_builddir)/website/guestfs-release-notes-1.36.1.html: stamp-guestfs-release-notes-1.36.pod + +stamp-guestfs-release-notes-1.36.pod: guestfs-release-notes-1.36.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.36.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.36.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.34.1 guestfs-release-notes-1.34.txt $(top_builddir)/website/guestfs-release-notes-1.34.1.html: stamp-guestfs-release-notes-1.34.pod + +stamp-guestfs-release-notes-1.34.pod: guestfs-release-notes-1.34.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.34.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.34.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.32.1 guestfs-release-notes-1.32.txt $(top_builddir)/website/guestfs-release-notes-1.32.1.html: stamp-guestfs-release-notes-1.32.pod + +stamp-guestfs-release-notes-1.32.pod: guestfs-release-notes-1.32.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.32.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.32.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.30.1 guestfs-release-notes-1.30.txt $(top_builddir)/website/guestfs-release-notes-1.30.1.html: stamp-guestfs-release-notes-1.30.pod + +stamp-guestfs-release-notes-1.30.pod: guestfs-release-notes-1.30.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.30.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.30.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.28.1 guestfs-release-notes-1.28.txt $(top_builddir)/website/guestfs-release-notes-1.28.1.html: stamp-guestfs-release-notes-1.28.pod + +stamp-guestfs-release-notes-1.28.pod: guestfs-release-notes-1.28.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.28.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.28.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.26.1 guestfs-release-notes-1.26.txt $(top_builddir)/website/guestfs-release-notes-1.26.1.html: stamp-guestfs-release-notes-1.26.pod + +stamp-guestfs-release-notes-1.26.pod: guestfs-release-notes-1.26.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.26.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.26.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.24.1 guestfs-release-notes-1.24.txt $(top_builddir)/website/guestfs-release-notes-1.24.1.html: stamp-guestfs-release-notes-1.24.pod + +stamp-guestfs-release-notes-1.24.pod: guestfs-release-notes-1.24.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.24.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.24.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.22.1 guestfs-release-notes-1.22.txt $(top_builddir)/website/guestfs-release-notes-1.22.1.html: stamp-guestfs-release-notes-1.22.pod + +stamp-guestfs-release-notes-1.22.pod: guestfs-release-notes-1.22.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.22.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.22.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.20.1 guestfs-release-notes-1.20.txt $(top_builddir)/website/guestfs-release-notes-1.20.1.html: stamp-guestfs-release-notes-1.20.pod + +stamp-guestfs-release-notes-1.20.pod: guestfs-release-notes-1.20.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.20.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.20.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.18.1 guestfs-release-notes-1.18.txt $(top_builddir)/website/guestfs-release-notes-1.18.1.html: stamp-guestfs-release-notes-1.18.pod + +stamp-guestfs-release-notes-1.18.pod: guestfs-release-notes-1.18.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.18.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.18.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.16.1 guestfs-release-notes-1.16.txt $(top_builddir)/website/guestfs-release-notes-1.16.1.html: stamp-guestfs-release-notes-1.16.pod + +stamp-guestfs-release-notes-1.16.pod: guestfs-release-notes-1.16.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.16.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.16.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.14.1 guestfs-release-notes-1.14.txt $(top_builddir)/website/guestfs-release-notes-1.14.1.html: stamp-guestfs-release-notes-1.14.pod + +stamp-guestfs-release-notes-1.14.pod: guestfs-release-notes-1.14.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.14.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.14.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.12.1 guestfs-release-notes-1.12.txt $(top_builddir)/website/guestfs-release-notes-1.12.1.html: stamp-guestfs-release-notes-1.12.pod + +stamp-guestfs-release-notes-1.12.pod: guestfs-release-notes-1.12.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.12.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.12.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.10.1 guestfs-release-notes-1.10.txt $(top_builddir)/website/guestfs-release-notes-1.10.1.html: stamp-guestfs-release-notes-1.10.pod + +stamp-guestfs-release-notes-1.10.pod: guestfs-release-notes-1.10.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.10.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.10.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.8.1 guestfs-release-notes-1.8.txt $(top_builddir)/website/guestfs-release-notes-1.8.1.html: stamp-guestfs-release-notes-1.8.pod + +stamp-guestfs-release-notes-1.8.pod: guestfs-release-notes-1.8.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.8.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.8.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.6.1 guestfs-release-notes-1.6.txt $(top_builddir)/website/guestfs-release-notes-1.6.1.html: stamp-guestfs-release-notes-1.6.pod + +stamp-guestfs-release-notes-1.6.pod: guestfs-release-notes-1.6.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.6.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.6.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-1.4.1 guestfs-release-notes-1.4.txt $(top_builddir)/website/guestfs-release-notes-1.4.1.html: stamp-guestfs-release-notes-1.4.pod + +stamp-guestfs-release-notes-1.4.pod: guestfs-release-notes-1.4.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-1.4.1 \ + --html $(top_builddir)/website/guestfs-release-notes-1.4.1.html \ + --license GPLv2+ \ + $< + touch $@ + +guestfs-release-notes-historical.1 guestfs-release-notes-historical.txt $(top_builddir)/website/guestfs-release-notes-historical.1.html: stamp-guestfs-release-notes-historical.pod + +stamp-guestfs-release-notes-historical.pod: guestfs-release-notes-historical.pod + $(PODWRAPPER) \ + --section 1 \ + --man guestfs-release-notes-historical.1 \ + --html $(top_builddir)/website/guestfs-release-notes-historical.1.html \ --license GPLv2+ \ $< touch $@ diff --git a/docs/guestfs-release-notes-1.10.pod b/docs/guestfs-release-notes-1.10.pod new file mode 100644 index 000000000..ca468d65e --- /dev/null +++ b/docs/guestfs-release-notes-1.10.pod @@ -0,0 +1,162 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.10 + +These release notes only cover the differences from the previous +stable/dev branch split (1.8.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + + - libguestfs and tools can be used against live virtual machines. + See the 'guestfish --live' and 'guestmount --live' options, and (for + the low-level interface) the new APIs set-attach-method and + get-attach-method. + + - New virt tools: + virt-copy-in, virt-copy-out, virt-tar-in, virt-tar-out. + + - libguestfs can get the drive letter mappings for Windows guests. + + - virt-inspector displays drive letter mappings for Windows guests. + + - Drive letters can now be used in virt-edit and guestfish programs + when operating on Windows guests. + + - virt-resize now works on 32 bit hosts. + + - You can now inspect the install disks and live CDs of many different + operating systems. + + - guestfish , +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.12.pod b/docs/guestfs-release-notes-1.12.pod new file mode 100644 index 000000000..a9cc517e0 --- /dev/null +++ b/docs/guestfs-release-notes-1.12.pod @@ -0,0 +1,153 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.12 + +These release notes only cover the differences from the previous +stable/dev branch split (1.10.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +=head3 guestfish + + - guestfish strings can use escapes, + eg. > write /foo "line 1\nline 2\n" + + - guestfish write-append command can be used to append to files. + + - Long-running file uploads and downloads can be cancelled through the + API or by hitting ^C in guestfish. + + - New guestfish "display" command for displaying graphical files + inside guests. + + - In guestfish, tab completion now works on /dev/mapper devices. + +=head3 virt-inspector + + - Inspection API can get an icon or logo for certain guests. + + - virt-inspector includes the logo and hostname for certain guests. + + - virt-inspector can now get the version and release numbers for RPM + packages. + + - CentOS and Scientific Linux are now treated as separate distros by + the inspection API. + +=head3 virt-resize + + - virt-resize can now handle btrfs. + + - New virt-resize --ntfsresize-force option allows Windows VMs to be + resized multiple times. + +=head3 other virt tools + + - guestfish, guestmount, virt-cat, virt-df, virt-edit, virt-filesystems, + virt-inspector, virt-ls and virt-rescue now allow you to use + "-d UUID" option to specify a guest by UUID. This makes them more + robust to use from other programs. + + - virt-ls -lR option allows complex file iteration and guest analysis. + + - virt-win-reg supports HKEY_USERS\ and HKEY_USERS\. + + - virt-win-reg new option --unsafe-printable-strings allows printable + strings to be displayed in the output (unsafely: read the documentation + before using). + + - virt-edit has been rewritten in C. + +=head3 API and language bindings + + - Java is now completely supported. + See http://libguestfs.org/guestfs-java.3.html + + - JRuby is supported via the Java bindings. + + - guestfs_close now appears in trace messages. + + - Python binding adds explicit g.close() method. + + - Python programs can now use the new event API. + + - Python GIL is released during libguestfs calls, allowing multithreaded + Python programs to work properly. + + - 9pfs (Plan 9 filesystems exported from the host) are now supported. + + - Add -DGUESTFS_WARN_DEPRECATED=1 to warn about use of deprecated API + functions in C programs. + + - New manual page guestfs-recipes(1) with recipes. + + - mkfs-opts can now set inode size and sector size on created filesystems + (thanks Nikita Menkovich). + + - guestfs_last_errno is now accessible from OCaml (as g#last_errno ()). + +=head2 Security + + - optargs_bitmask is checked even for calls that have no optional + arguments. This closes a possible exploit in the daemon from + untrusted callers. + +=head2 New APIs + + btrfs-filesystem-resize, get-pgroup, inspect-get-icon, is-zero, + is-zero-device, list-9p, list-dm-devices, mount-9p, ntfsresize-opts, + set-pgroup, write-append + +=head2 Internals + + - Coverity (a static analysis tool) was run across the codebase and + many fixes were made. + + - Generator can handle functions that return RBufferOut and have + optional arguments. + + - Compatible with Perl 5.14. + + - Compatible with gcc 4.6. + + - Perform safety checks on QEMU. + + - C API tests can now fully test calls that have optional arguments. + + - Use ./configure --enable-install-daemon to install /usr/sbin/guestfsd. + + - po-docs directory now covers all man pages. + + - stderr from qemu process is now captured by the event subsystem. + +=head2 Bugs fixed + + - 602997 part-get-bootable gives wrong result with an unordered part layout + - 661280 virt-rescue: panic when shutting down: "/sbin/reboot: No such file or directory" + - 700369 qemu-system-x86_64 says 'KVM not supported for this target' + - 705200 guestmount attempt results in access denied + - 714981 'list-filesystems' does not know about virtio 9p filesystems or detect existing mounts + - 717786 libguestfs python bindings should have an explicit close call + - 721275 virt-resize in F16 should support btrfs + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.14.pod b/docs/guestfs-release-notes-1.14.pod new file mode 100644 index 000000000..63a727d7a --- /dev/null +++ b/docs/guestfs-release-notes-1.14.pod @@ -0,0 +1,189 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.14 + +These release notes only cover the differences from the previous +stable/dev branch split (1.12.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + + Erlang bindings. + + virt-alignment-scan is a new tool to check the alignment of + partitions within virtual machines or disk images. + + virt-sparsify is a new tool to make virtual machine disk images + sparse. + + virt-sysprep is a new tool to make cloning guests from a template + simpler. + +=head3 guestfish + + - New commands setenv, unsetenv, to set environment variables. + + - The input file and line number is printed in error messages. + + - guestfish progress bars are now a "mini-library" used by other + tools too. + +=head3 guestmount + + - the --live option (for access to live VMs) now works. + +=head3 virt-cat + + - virt-cat can now handle Windows paths and drive letters (RHBZ#693359). + +=head3 virt-filesystems + + - the MBR partition type byte is displayed in --long output. + +=head3 virt-make-fs + + - virt-make-fs now sets the MBR partition type byte correctly, + improving compatibility with Windows (RHBZ#746295). + +=head3 virt-resize + + - virt-resize can now work with guests using extended and logical + partitions, in particular Ubuntu guests. + + - virt-resize can now align the first partition of Windows guests, + improving performance. The new virt-resize --align-first option + controls this behaviour. + + - The virt-resize --machine-readable flag makes it possible to use + virt-resize from other programs. + + - Partitions are now aligned to 128 sectors (usually 64K) by + default. This improves efficiency on high-end storage. The new + virt-resize --alignment option allows the alignment to be + adjusted. + +=head3 virt-win-reg + + - The syntax for deleting registry keys and values is documented + in the man page (RHBZ#737944). + +=head3 library + + - non-printing characters are escaped correctly in debug output. + + - GUESTFS_EVENT_ENTER is a new event type generated whenever a + libguestfs function is called. + + - the library contains systemtap/DTrace probes. + + - the library can now be compiled without hivex (RHBZ#723474). + +=head3 inspection + + - Improve detection of Windows disks. + + - Adds support for: + ttylinux - a minimal Linux + Mageia (thanks Michael Scherer) + OpenSUSE and zypper (thanks Michael Scherer, Vincent Untz) + Ubuntu logos (thanks Michael Scherer) + NetBSD and pkgsrc (thanks Michael Scherer) + + - Handle some guest types that use /dev/root in /etc/fstab. + + - Fix handling of guests with > 26 disks (thanks Matthew Booth) + + - Add support for guests with HP Smart Array disks (thanks Matthew Booth) + +=head3 febootstrap + + - FEBOOTSTRAP_KERNEL, FEBOOTSTRAP_MODULES environment variables can + be set in order to choose which kernel to use for the appliance. + +=head3 misc + + - ArchLinux support now working with Linux 3.0 (thanks Erik Nolte) + + - libvirt disks marked are now added readonly when + using the virt-tools '-d' option. + +=head2 Security + + (no security problems were found or fixed in this release) + +=head2 New APIs + + compress-out, compress-device-out, copy-device-to-device, + copy-device-to-file, copy-file-to-device, copy-file-to-file, + get-smp, part-to-partnum, set-smp. + + The mount API no longer implicitly adds -o sync,noatime options. + + add-domain has a new 'readonlydisk' optional parameter to control + how disks are handled. + +=head2 Internals + + - Coverity was run on the source and more bugs were identified and + fixed. + + - PCRE library is now required to build libguestfs. + + - APIC is now the default for the appliance. You can also enable + SMP support in the appliance. + + - OCaml bindings now correctly acquire GC lock during callbacks. + + - Out of tree builds should now work correctly (thanks Hilko Bengen). + + - ./configure --with-extra="..." can be used by packagers to set + the extra version string. + + - zero, zero-device APIs: if the blocks already contain zeroes, + don't write zeroes, so that we don't unnecessarily make the + underlying storage non-sparse. + + - is-zero, is-zero-device APIs: optimize these so zero detection is + faster. + +=head2 Bugs fixed + + - 748266 libguestfs should detect versions of qemu which require -machine pc option + - 747290 libguestfs ignores in libvirt XML + - 747287 Misleading error message when permission denied opening a disk image + - 746295 virt-make-fs doesn't set partition ID + - 744795 guestmount --live is not usable + - 737944 virt-win-reg hyphen (delete key) syntax may be wrong, and is not documented + - 733297 ruby event handlers fail with "exception in callback: wrong argument type Proc (expected Data)" + - 731744 libguestfs should escape special/non-printing characters in debug output + - 729887 appliance crashes running aug_init with flags=4 + - 729075 libguestfs confuses Hp_recovery partition with Windows root filesystem + - 727178 error: luks_open: cryptsetup: error while loading shared libraries: libfipscheck.so.1: cannot open shared object file: No such file or directory + - 726739 libguestfs: error: aug_get: no matching node, trying to find hostname + - 723474 If hivex and/or pcre not installed, libguestfs fails to compile + - 693359 virt-cat and virt-edit don't handle case sensitive NTFS paths properly + - 678231 virt-inspector reports unknown filesystem UUID + - 671082 libguestfs does not work with kernel-rt + - 666578 libguestfs: unknown filesystem label SWAP-sda2 + - 642821 virt-resize falls over on a disk image with a logical swap partition + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.16.pod b/docs/guestfs-release-notes-1.16.pod new file mode 100644 index 000000000..2fea2c8d2 --- /dev/null +++ b/docs/guestfs-release-notes-1.16.pod @@ -0,0 +1,160 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.16 + +These release notes only cover the differences from the previous +stable/dev branch split (1.14.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +=head3 libguestfs + + - allow XFS filesystems to be created over an existing filesystem + (Wanlong Gao) + + - the (unspecified) default alignment for part-disk has been + changed to 64K for better support of high-end network-attached + storage + + - new guestfs-testing(1) man page + + - list-filesystems returns MD devices containing filesystems + (Matthew Booth) + + - support for GCC >= 4.7 (Jim Meyering) + + - check user does not add the same drive twice (Wanlong Gao). + +=head3 language bindings + + - Experimental GObject bindings, with support for GObject + Introspection. You can now use libguestfs from Javascript. + Please note these are not stable and final in this release. + (Matthew Booth). + + - support for Ruby >= 1.9 + + - Ruby bindings can be disabled individually (Hilko Bengen) + + - support for Python 2.6, 3.x (Richard Jones, Hilko Bengen) + + - support for PHP >= 5.4 + + - new %guestfs_introspection hash is available in Perl bindings so + you can query which optional arguments are available + +=head3 inspection + + - guests with MD devices can be inspected (Matthew Booth) + + - support for GNU/Hurd guests + +=head3 guestfish + + - libguestfs events (such as progress bar events and log messages) can + be trapped and processed by user-defined shell scripts. + + - MD devices are tab-completed (Matthew Booth) + +=head3 virt tools + + - New tool virt-format for erasing and making blank disks + + - virt-sparsify new --compress and -o options to allow for compressed + and different format output + + - virt-sparsify can now detect and sparsify .vdi files + + - virt-sysprep no longer requires xmlstarlet; a new virt-inspector --xpath + option has been added to replace this functionality + + - virt-rescue has a new --suggest option which suggests mount commands + for the guest + + - virt-resize no longer requires OCaml pcre library + +=head3 libguestfs live + + - daemon will no longer try to edit your live /etc/lvm configuration + + - fix a potential security problem with predictable /tmp names (Steve Kemp) + +=head2 Security + + CVE-2011-4127, RHBZ#757071 + Mitigate possible privilege escalation via SG_IO ioctl + For more information, see: https://github.com/libguestfs/libguestfs/commit/9a5f784d511a8f00a8386f316eab41fe660430db + +=head2 New APIs + + blkid: print all attributes of a device known to blkid (Wanlong Gao) + e2fsck: access to more features of e2fsck (Wanlong Gao) + list-md-devices: list of Linux MD devices (Matthew Booth) + md-create: create an MD device + md-detail: returns metadata for an MD device (Matthew Booth) + md-stop: stop an MD device (Wanlong Gao) + tune2fs: allow ext2/3/4 filesystems to be tuned + +=head2 Internals + + Git hosting has moved to http://github.com/libguestfs + + The various test directories have been rearranged logically, and now + all appear under 'tests/'. + + There is a 'make extra-tests' rule which runs ordinary tests and + additional tests, using valgrind to check for memory problems. + + Multiple memory leaks and other problems found by valgrind and fixed. + + Support for optional arguments in the generator has been rewritten + to provide more features and safety (Matthew Booth). + + With gcc -fvisibility=hidden is used for internal symbols, avoiding + call indirection via the PLT. + + RHashtable functions can be tested in the generator. + + ADD_ARG macro in daemon allows arg lists to be constructed without + risk of stack smashing. + + Fix generation of OCaml functions that have more than 10 arguments. + + psmisc has been added to the appliance, allowing use of 'fuser', + 'killall' and 'pstree' for debugging. + + bindtests now cover RBufferOut and optional arguments (Matthew Booth). + +=head2 Bugs fixed + + - 769680 temporary directories created during appliance builds are not cleaned up on error + - 761460 guestfs_utimens hangs on named pipes + - 761451 guestfs_utimens cannot set times on a directory + - 760775 "guestfish: multi-boot operating systems are not supported by the -i option" should be more explanatory + - 760669 guestfish copy-in and = 1.9 + - 755729 Error message for resize2fs-M needs tweaking + - 750889 Python code incompatible with Python v3. + - 596761 Ctrl-\ causes guestfish to abort + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.18.pod b/docs/guestfs-release-notes-1.18.pod new file mode 100644 index 000000000..13a2017e1 --- /dev/null +++ b/docs/guestfs-release-notes-1.18.pod @@ -0,0 +1,258 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.18 + +These release notes only cover the differences from the previous +stable/dev branch split (1.16.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +=head3 virt tools + + - virt-sysprep has been rewritten and expanded (thanks Wanlong Gao) + http://libguestfs.org/virt-sysprep.1.html + + - virt-sparsify --zero is a new option that zeroes the named + partition or filesystem + + - virt-sparsify can now safely sparsify Linux swap partitions + + - virt-sparsify fixed so it cleans up after ^C + http://libguestfs.org/virt-sparsify.1.html + + - a new tool 'libguestfs-make-fixed-appliance' is provided to build + fixed appliances that can be copied to other machines that don't + have febootstrap support + http://libguestfs.org/libguestfs-make-fixed-appliance.1.html + + - virt-filesystems now displays the parents (containers) of MD + devices and volume groups + + - virt-alignment-scan, run with no args, displays alignment information + for all libvirt domains + + - virt-df and virt-alignment-scan will display information from all + guests even when a disk is inaccessible + + - virt-rescue new --scratch option to make scratch disks + https://rwmj.wordpress.com/2012/04/26/virt-rescue-scratch/#content + + - virt-make-fs can now be used to create btrfs + + - virt-edit preserves permissions, UID, GID and SELinux context + when editing files + + - guestfish passes the close event over stdout and remote correctly + + - guestfish new '--pipe-error' option lets you detect errors in pipe + commands + + - guestfish globs now expand device names + + - comma and colon characters in filenames now handled correctly by + all virt tools + +=head3 inspection + + - added support for Fedora 17+ + + - added support for FreeDOS + + - added support for Buildroot and Cirros + + - inspection is now compatible with Windows guests that have been + sysprepped (thanks Grant Williamson). + +=head3 API + + - broad support for btrfs added, including adding multiple devices, + fsck, snapshots (thanks Wanlong Gao) + + - the new 'mount-local' API brings FUSE support directly into the + core libguestfs API + https://rwmj.wordpress.com/2012/05/14/tip-using-mount-local-api-from-c/#content + + - new man page: guestfs-performance(1), which contains performance + tuning tips + http://libguestfs.org/guestfs-performance.1.html + + - new man page: guestfs-faq(1), Frequently Asked Questions + http://libguestfs.org/guestfs-faq.1.html + + - ENOTSUP (from guestfs_last_errno) is now returned for APIs that + are not supported + +=head3 examples + + - 'copy_over' example showing how to copy between two handles + + - 'display_icon' program displays the icon associated with a guest + + - 'mount_local.c' example shows how to use the mount-local API + +=head2 Security + + (no security problems were found or fixed in this release) + +=head2 New APIs + + btrfs-device-add: Add devices to a btrfs filesystem. + btrfs-device-delete: Remove devices from a btrfs filesystem. + btrfs-filesystem-sync: Sync a btrfs filesystem. + btrfs-filesystem-balance: Balance a btrfs filesystem. + btrfs-fsck: Check btrfs filesystem. + btrfs-set-seeding: Enable or disable seeding. + btrfs-subvolume-create: Create a btrfs snapshot. + btrfs-subvolume-delete: Delete a btrfs snapshot. + btrfs-subvolume-list: List btrfs snapshots and subvolumes. + btrfs-subvolume-set-default: Set default btrfs subvolume. + btrfs-subvolume-snapshot: Create a writable btrfs snapshot. + get-e2attrs: List ext2 file attributes of a file. + get-e2generation: Get ext2 file generation of a file. + isoinfo, isoinfo-device: Get information from the header of ISO files. + llz: List files with SELinux information. + lvcreate-free: Create an LVM logical volume in % remaining free space. + md-stat: Return underlying devices from an MD device. + mkfs-brtfs: Make btrfs filesystem, with all tunables. + mount-local, mount-local-run, umount-local: FUSE support in the API. + ntfsclone-in, ntfsclone-out: Save, restore NTFS from backup. + ntfsfix: Fix common errors and force Windows to check NTFS. + set-e2attrs: Set or clear ext2 file attributes of a file. + set-e2generation: Set ext2 file generation of a file. + set-label: Unified interface for setting filesystem label. + vgmeta: Get volume group metadata. + wipefs: Wipe filesystem signatures from a device. + zero-free-space: Zero free space in a filesystem. + +=head2 Internals + + - The debian/ subdirectory has been removed. We recommend you use + the official Debian packages made by Hilko Bengen. + http://people.debian.org/~bengen/libguestfs/ + http://packages.debian.org/search?keywords=libguestfs + + - O_CLOEXEC / SOCK_CLOEXEC is now used for almost all file + descriptors that the library opens. + + - posix_fadvise is called when sequentially reading or writing large + files. + + - close all file descriptors and remove all signal handlers in the + recovery process + + - multiple gcc warnings and Coverity bugs have been fixed; many + strict-overflow bugs have also been fixed + + - use ./configure --enable-valgrind-daemon to use valgrind on the + daemon; many errors have been fixed + + - use ./configure --with-qemu-options to pass extra options to qemu + + - the daemon now has a growable strings buffer type (DECLARE_STRINGSBUF) + + - the header file works with C++ and we have a regression + test for this + + - multiple APIs which should only be called in the CONFIG state now + give an error if they are not + + - .gitignore fixed to use absolute paths + + - gobject bindings have been expanded, including mapping libguestfs + events to gobject signals (thanks Matt Booth) + + - gobject documentation is generated properly (thanks Matt Booth) + + - gobject header files now live in a subdirectory + + - CompareWithString test in the generator now works + + - FUInt32, FUInt64 struct field types now use the correct XDR type + + - OCaml tests are now run on bytecode and native code. + + - java -Xlint:all is used, and all warnings have been fixed + + - bmptopng, wrestool (etc) missing or failure no longer prints + warning messages + + - ruby: Use RbConfig instead of Config. + + - PYTHONPATH is set by the ./run script. + + - appliance building is now thread-safe. + + - appliance now uses 'ip' instead of 'ifconfig' and 'netstat' + commands + + - several fixes to make parallel builds work properly + + - guestfish --listen now cleans up properly + + - the BUSY state has been removed + + - gettextize has been removed, replaced by a simple Makefile.am + + - gettext support now covers virt-resize, virt-sparsify and virt-sysprep + + - better support for the arm architecture + +=head2 Bugs fixed + + - 822490 virt-ls error: "libguestfs: error: checksum: path: parameter cannot be NULL" + - 816839 data overflow error when debug progress -1 + - 816098 virt-make-fs fails to make a btrfs filesystem because it doesn't allocate enough space + - 811872 inspection fails on ubuntu 10.04 guest with encrypted swap + - 811650 guestfs_last_error not set when qemu fails early during launch + - 811649 libguestfs cannot open disk images which are symlinks to files that contain ':' (colon) character + - 811117 [RFE][virt-sysprep] net-hwaddr not removed from "ifcfg-*" files on rhel + - 811112 [RFE][virt-sysprep] hostname can not be changed on rhel system + - 809361 inspection doesn't recognize Fedora 18 (grub2 + GPT) + - 807905 mkfs blocksize option breaks when creating btrfs + - 805070 virt-filesystems should show 'parents' of LV and RAID devices + - 804464 libguestfs cannot be built when LINGUAS is different then ja or uk + - 803664 libguestfs inspection fails on Windows XP: libguestfs: error: hivex: could not locate HKLM\SYSTEM\MountedDevices + - 803533 guestfish: write error + - 802389 event handlers for 'close' event doesn't work in remote mode + - 802109 libguestfs uses putc on stderr, results in many individual 1 byte writes of debug messages + - 801640 [RFE] the error reported by resize2fs-M need to be more clear + - 801298 Possible null dereference and resource leaks + - 801273 Document for set-pgroup need to be updated + - 798196 virt-resize confuses format and output_format variables; using --output-format sets the input format + - 797986 virt-resize on Windows XP in sysprep state causes "UNMOUNTABLE_BOOT_VOLUME" BSOD + - 796520 [RFE] Prevent user from running some appliance configure commands after appliance boot up + - 790721 multiprovider build error: RuntimeError: link: /tmp/.guestfs-0/kernel /tmp/.guestfs-0/kernel.10139: File exists + - 789960 guestfsd crash when try to mount non-exist disk + - 789504 virt-df (other tools?) should not give up if a guest disk is missing + - 788641 virt-edit doesn't preserve file permissions + - 786215 libguestfs inspection does not recognize FreeDOS operating system + - 786188 libguestfs inspection does not recognize FreeDOS install CD + - 785668 aug-defnode: daemon crash + - 784647 Libguestfs uses deprecated net-tools + - 769304 virt-resize on RHEL 6 kernel fails to re-read the partition table + - 755729 Error message for resize2fs-M needs tweaking + - 701814 virt-win-reg fails on a libvirt guest that has no defined disk format: "format parameter is empty or contains disallowed characters" + - 679737 libguestfs: improve error message when zerofree is not available in the appliance + - 635971 glob mkfs ext2 /dev/vd[b-t]1 does not expand + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.20.pod b/docs/guestfs-release-notes-1.20.pod new file mode 100644 index 000000000..080291bef --- /dev/null +++ b/docs/guestfs-release-notes-1.20.pod @@ -0,0 +1,612 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.20 + +These release notes only cover the differences from the previous +stable/dev branch split (1.18.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +=head3 libvirt and sVirt (SELinux confinement) + +You can I use libvirt to launch and manage the backend +appliance by: + +=over 4 + +=item * + +setting C + +=item * + +using C<./configure --with-default-attach-method=libvirt[:URI]> + +=item * + +or calling the API method C + +=back + +SVirt (SELinux confinement) is used to secure the libguestfs +appliance, if the libvirt backend is selected. + +=head3 virtio-scsi, larger number of drives, hotplugging + +Virtio-scsi is now used by default, if it is available. This greatly +increases the number of drives that can be added to a single +libguestfs handle (up to 255). + +You can now hotplug drives (add and remove drives after launch). + +Libguestfs can now handle E 25 disks, in all APIs, tools and tests. + +You can label drives when adding them, then refer to them by label +(F) instead of having to use device names +(F). + +=head3 new library features + +POSIX Access Control Lists (ACLs) and Linux filesystem capabilities +can now be read and written through the API. + +Windows Dynamic Disks are now supported. The metadata can only be +read (volumes cannot be modified or created). However the +data/filesystems in the volumes themselves can be mounted, read and +written (Matthew Booth). + +Hivex (Windows Registry editing) is now directly supported through the +API, making reading or editing the Windows Registry much more +efficient. + +Several libguestfs APIs were reimplemented so they no longer have any +limits on output. The reimplemented APIs are: C, +C, C, C, +C, C, C, +C, C, C. + +=head3 virt tools + +C now works as expected. + +C has a new I<--network> option, which enables the user +network in libguestfs. + +You can set C to use fancy prompts in C. + +C, C, C and C commands are now available in +virt-rescue. In addition, C can be used through the API for +doing incremental copies. + +C uses qcow2 v3 for increased efficiency. + +C enhancements: + +=over 4 + +=item * + +generate new UUIDs for PVs and VGs + +=item * + +remove the local machine ID (Wanlong Gao) + +=item * + +remove ABRT data (Wanlong Gao) + +=item * + +remove puppet keys and log files (Wanlong Gao) + +=item * + +remove process accounting files (Wanlong Gao) + +=item * + +new I<--firstboot> parameter allowing firstboot scripts +for customizing guests + +=item * + +remove HOSTNAME field from C files (Wanlong Gao) + +=item * + +miscellaneous improvements for SuSE (Olaf Hering) + +=item * + +remove man pages cache (Wanlong Gao) + +=item * + +remove crash data generated by kexec-tools (Wanlong Gao) + +=back + +C can now create virtual floppy disks (VFDs). + +C has a I<--pid-file> option, which can be used to avoid a +race condition between unmounting the filesystem and using the +underlying disk image. + +=head3 language bindings + +Full-featured Lua bindings have been added in this release +(thanks to Jerome Vuarand for many suggestions). + +In Ruby, optional arguments hash is optional. + +In Python, optional arguments now don't use special "sentinel" +values, so any integer can be passed as an optional argument. + +Erlang bindings now come with examples and tests. + +Erlang bindings now handle 64 bit integer parameters correctly. + +The automated 'bindtests' now test for 64 bit cleanliness in parameter +passing. Several bugs in the bindings were found and fixed as a +result. + +Better handling of blocking and non-blocking functions should make +libguestfs calls more efficient. + +=head3 inspection + +Windows guests with unlimited-sized Registries are now supported. +By adding the hivex API to the libguestfs API, it is much more +efficient and easier to inspect and modify the Windows Registry +in guests. + +Better support for SuSE guests (Olaf Hering). + +Return the architecture of installed applications (John Eckersberg). + +Windows 8 is now supported. + +Fedora 18 is now supported. + +Inspection of ISOs/CDs/DVDs can now use the libosinfo database. + +=head3 ports + +Libguestfs without the appliance can be compiled on Mac OS X +(Masami HIRATA). + +RHEL 5 is now explicitly supported through the 'oldlinux' branch +in upstream git. + +PowerPC 64 bit is now supported. Also libguestfs has been +examined for endianness bugs and these have been fixed. + +=head3 daemon + +A man page for the daemon (L) is included. + +=head2 Security + +=head3 guestfish history file + +The F<$HOME/.guestfish> history file is now created with 0600 +permissions (instead of 0644 before) so it is no longer world +readable. + +=head3 CVE-2012-2690 + +Old versions of both C and the C C command +created a new file containing the changes but did not set the +permissions, etc of the new file to match the old one. The result +of this was that if you edited a security sensitive file such as +F then it would be left world-readable after the edit. + +This issue was assigned CVE-2012-2690, and is fixed in libguestfs E 1.16. + +For further information, see +L + +=head2 New APIs + + acl-delete-def-file + acl-get-file + acl-set-file + canonical-device-name + cap-get-file + cap-set-file + create-flags + device-index + disk-has-backing-file + disk-format + disk-virtual-size + filesystem-available + fill-dir + fstrim + get-cachedir + get-libvirt-requested-credentials + get-libvirt-requested-credential-prompt + get-libvirt-requested-credential-challenge + get-libvirt-requested-credential-defresult + get-tmpdir + hivex-close + hivex-commit + hivex-node-add-child + hivex-node-children + hivex-node-delete-child + hivex-node-get-child + hivex-node-get-value + hivex-node-name + hivex-node-parent + hivex-node-set-value + hivex-node-values + hivex-open + hivex-root + hivex-value-key + hivex-value-type + hivex-value-utf8 + hivex-value-value + inspect-list-applications2 (John Eckersberg) + list-ldm-volumes + list-ldm-partitions + ldmtool-create-all + ldmtool-diskgroup-disks + ldmtool-diskgroup-name + ldmtool-diskgroup-volumes + ldmtool-remove-all + ldmtool-scan + ldmtool-scan-devices + ldmtool-volume-hint + ldmtool-volume-partitions + ldmtool-volume-type + ls0 + max-disks + mke2fs (Wanlong Gao) + mklost-and-found + mkswap [added label and uuid optional arguments] + mktemp (Wanlong Gao) + nr-devices + parse-environment + parse-environment-list + rm-f + rsync + rsync-in + rsync-out + set-cachedir + set-libvirt-supported-credentials + set-libvirt-requested-credential + set-tmpdir + shutdown [backported to 1.16 and 1.18] + tar-in [added compress flag] + tar-out [added compress, numericowner, excludes flags] + umount [added force and lazy optional arguments] + utsname + xfs-admin (Wanlong Gao) + xfs-growfs (Wanlong Gao) + xfs-info (Wanlong Gao) + xfs-repair (Wanlong Gao) + +In the C API only: + + guestfs_push_error_handler + guestfs_pop_error_handler + +=head2 Internals + +qemu E 1.1 is required (E 1.2 preferred). + +febootstrap E 3.20 is required. + +libvirt is optional, but if you want to use the new libvirt +backend for launching the appliance then libvirt E 0.10.2 would +be required. + +Coverity has been run over the complete codebase, and many +issues fixed (thanks Ondrej Vasik, Kamil Dudka). + +Functions which previously had no optargs can now be converted to ones +with optargs, making extending the API much more flexible. Source and +binary backwards compatibility is preserved for users of the API. + +The way that libguestfs APIs and structures are represented in the +generator has changed to use an OCaml struct instead of a tuple. This +makes generator descriptions more flexible and easier to understand. +For details see commits 39d1a7db and eb185eef. + +Separation of the library code into more files: + +=over 4 + +=item * + +Launch backends are now located in separate files +eg. F, C. + +=item * + +Generated action code is now split over several F +files, for faster compilation. + +=item * + +The huge F file is now split into smaller logical +units. + +=back + +POD (documentation) is now generated using a rewritten Perl +program instead of pod2* + shell scripts. + +Man pages now contain stable dates (Hilko Bengen). + +Skipped tests now exit with code 77, so they appear as +C in C output. + +The parallel mount-local test has been rewritten in C (RHBZ#838081). + +Ruby 1.8.5 is now supported (though Ruby E 1.9 is preferred). + +Perl bindings can be disabled via C<./configure --disable-perl> +(Wulf C. Krueger). Note that Perl is still required in order to build +libguestfs. + +Java bindings are now enabled/disabled using C<./configure --with-java> +or C<./configure --without-java> (Wulf C. Krueger). + +New configure options C<./configure --enable-code-profiling> and +C<./configure --enable-code-coverage>. + +Multiple fixes to use of 64 bit integers in language bindings. + +The appliance backend now uses sgabios instead of vgabios +(Dan Berrange). + +The C<./run> script now sets enough environment variables that you +can run OCaml, Python, Ruby, Java, GJS, Erlang, Lua programs. + +C<./run --test> flag for running tests with minimal output. It also +prints the time taken to run each test. + +The C<./run> script now builds up paths cumulatively, meaning that you +can use C<./run> twice, or use the libguestfs and libvirt C<./run> +scripts together. + +You can extract a list of external commands required by the +daemon, making building the appliance on certain distros easier +(Olaf Hering). + +The C command is now tested during C. + +The generator now removes unused generated files. This helps +when going back and forth with git rebase, git bisect, etc. + +Tests now run in a separate toplevel C directory in the source. +This allows the directory to be labelled for SELinux (sVirt), and also +makes it easier to clean up. + +C now works to a greater extent, and many problems +in the main code that were found by syntax-check have been fixed +(thanks Jim Meyering). + +Emacs mode (-*- foo -*-) has been added to generated files. + +Progress bar output is now sent to F so it doesn't end up in +the regular output of the program. virt-resize and virt-sparsify now +suppress progress bars if stdout is not a tty. + +There is now a C<./configure --without-libvirt> option. This is +useful for testing that the code still compiles without libvirt. + +There is now an internal mini-library for running commands. This +allows us to redirect errors from external commands into events. + +Code for handling temporary directories and the appliance cache was +completely overhauled. + +Code for temporarily ignoring/disabling errors now looks like this: + + guestfs_push_error_handler (g, NULL, NULL); + guestfs_mkdir (g, "/foo"); /* We don't care if this fails. */ + guestfs_pop_error_handler (g); + +The C directory has gone. The "extra tests" are now +split into separately runnable targets, such as C. +Use C to get a summary of the targets. + +The C option is passed to the appliance kernel when using TCG. +This should improve clock stability (thanks Marcelo Tosatti, +Olaf Hering). + +=head2 Bugs fixed + +=begin comment + +./bugs-in-changelog.sh 1.18.0.. + +=end comment + +=over 4 + +=item L + +libguestfs tools fail with odd error messages if TMPDIR is not an absolute path + +=item L + +Windows 8 guest disks can't be mounted: "The NTFS partition is in an unsafe state. Please resume and shutdown Windows fully (no hibernation or fast restarting), or mount the volume read-only with the 'ro' mount option." + +=item L + +libguestfs: migration to /etc/hostname, /etc/vconsole.conf, /etc/locale.conf + +=item L + +virt-df with two -a options displays incorrect disk image name + +=item L + +libguestfs-test-tool pauses when you use --help option + +=item L + +mke2fs API does not apply block device naming translation to journaldevice optarg + +=item L + +SELinux policy ought to allow qemu to write to unconfined_u:object_r:user_tmp_t:s0 + +=item L + +RFE: inspect-list-applications does not return the architecture of RPM packages + +=item L + +inspect-list-applications does not list all installed RPM packages with same name and different versions + +=item L + +guestfish printed paths are not canonicalized + +=item L + +Progress bar output should go to tty(?) stderr(?) + +=item L + +virt-sysprep reports Guestfs.Error("read_lines: fopen: /etc/sysconfig/network: No such file or directory") on some Fedora guests + +=item L + +libguestfs fail to list devices added by add-drive-ro-with-if twice + +=item L + +virt-inspector fail to work with some windows guests + +=item L + +virt-sparsify should use a more robust method to detect the input format + +=item L + +libvirt doesn't label console, serial sockets + +=item L + +virt-rescue in Fedora 18 is completely broken + +=item L + +libguestfs inspection limits registries to 100 MiB + +=item L + +virt-sparsify --compress fails if output is raw format + +=item L + +RFE: allow extra arguments (like --exclude) to tar-out + +=item L + +tar-out should allow (or force) --numeric-owner + +=item L + +guestfish "copy-out / localdir" command fails with "No such file or directory" + +=item L + +Long filenames on NTFS cause tar-out, copy-out etc to fail with error "Cannot open: File name too long" + +=item L + +RFE: Need help designing and implementing selinux policy for libguestfs/sVirt + +=item L + +virt-make-fs / tar-in should support vfat properly + +=item L + +guestfish touch problem - case_sensitive_path API expects the file to exist + +=item L + +Data loss when writing to qcow2-format disk files + +=item L + +lvresize, lvresize-free fail unnecessarily if you don't change the size of the LV: "New size (nn extents) matches existing size (nn extents)" + +=item L + +compress-device-out didn't support bzip2 + +=item L + +guestfish unrecognized mount option gives confusing error message + +=item L + +Filenames containing Chinese characters can't be created on vfat filesystems + +=item L + +virt-make-fs cannot create vfat filesystem containing filesystems with Chinese characters + +=item L + +virt-make-fs -t fat fails with an obscure error message + +=item L + +Inspection fails when /etc/HOSTNAME is empty + +=item L + +libguestfs cannot get icon for Windows 8 + +=item L + +Ubuntu install CDs from oneiric onwards are not recognized: "multi-boot operating systems are not supported" + +=item L + +libguestfs doesn't recognize Windows Dynamic disks in some configurations, eg. spanned + +=item L + +Not all febootstrap messages are redirected to log callbacks + +=item L + +libguestfs inspector code cannot handle /dev/disk/by-id/* paths + +=item L + +part-get-bootable gives wrong result with an unordered part layout + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.22.pod b/docs/guestfs-release-notes-1.22.pod new file mode 100644 index 000000000..0239c5c76 --- /dev/null +++ b/docs/guestfs-release-notes-1.22.pod @@ -0,0 +1,377 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.22 + +These release notes only cover the differences from the previous +stable/dev branch split (1.20.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +=head3 API + +Remote access to disks: + +=over 4 + +=item * + +Network Block Device (nbd) + +=item * + +Secure Shell (ssh) + +=item * + +HTTP and HTTPS + +=item * + +FTP and FTPS + +=item * + +iSCSI + +=item * + +Gluster + +=item * + +Ceph/rbd +(Mike Kelly) + +=item * + +Sheepdog + +=item * + +TFTP + +=back + +The SYSLINUX and EXTLINUX bootloaders can now be installed in disk +images using the API. + +Inspection can now handle filesystems such as btrfs where subvolumes +are separately mountable (Matthew Booth). + +"Attach methods" are now known as "backends". Compatibility with +existing code is preserved. + +Filenames can contain ':', as long as newer QEMU is being used. + +=head3 Tools + +Virt-alignment-scan and virt-df scan multiple guests in parallel. + +Guestmount now passes errno accurately back to userspace in almost +all cases. + +Guestfish and other tools can now use a URI-like syntax to access +remote disks, eg: + + guestfish -a ssh://example.com/path/to/disk.img + +Guestfish and guestmount now allow you to specify the filesystem type +when mounting, which is more secure (Dave Vasilevsky). + +Guestfish is now the "guest filesystem shell". + +Guestfish allows only C<1> C C C C C C<0> +C C C C C for boolean values (case insensitive), +and gives an error for all other strings. + +New tool C for unmounting FUSE filesystems safely. + +C flag prevents guestmount from daemonizing. + +Virt-resize now uses sparse copies by default, saving considerable +space for guests which are mostly empty. + +Bash tab completion has been rewritten and can now handle most tools, +and correctly tab-complete C<--long> options. In addition, bash +completion scripts are loaded on demand. + +=head3 Language bindings + +The Java API now supports events. + +The Python object now inherits from the C base class. + +Python methods which previously returned lists of tuples can now +be made to return a Python dict. For backwards compatibility, you +have to enable this by using the constructor option +S>. + +The PHP bindings are now tested properly, and have had multiple fixes. + +The long-deprecated Perl C library has been +removed. +L + +=head3 Examples + +New example program showing how to enable debugging and capture +log messages. + +=head3 Other + +Distributors can add arbitrary extra packages to the appliance by +doing: + + ./configure --with-extra-packages="list of package names" + +Distributors can use: + + ./configure --with-supermin-extra-options="..." + +to add arbitrary extra options to supermin. + +=head2 Security + +No security issues were found in this release. + +=head2 New APIs + + cp-r + extlinux + feature-available + get-program + is-whole-device + part-get-gpt-type + part-set-gpt-type + rename + set-program + syslinux + +C only: + + guestfs_event_to_string + +=head2 Internals + +The febootstrap tool has now been renamed to "supermin". Libguestfs +can use either, but now prefers "supermin". +L + +libxml2 is required to build libguestfs. + +The hivexregedit program (from hivex) is required to build from git. + +Internal functions can no longer be used unless the caller defines +C<-DGUESTFS_PRIVATE=1>. + +Enable C compiler warnings in Python, Ruby bindings. + +Fail early and clearly if libvirt does not support qemu/KVM (eg. if +default libvirt connection is to Xen). + +C rule, useful for selectively running tests. + +Multiple fixes to allow separated (sourcedir != builddir) builds. + +Multiple fixes to Haskell bindings. + +C and C APIs now capture C correctly. + +Language binding tests use (mostly) a standard numbering scheme and +aim to test the same range of features in each language. Also the +number of launches required has been reduced so these tests should run +much more quickly. + +Library code internally uses GCC C<__attribute__((cleanup))> (if +available) to simplify memory allocation. + +Internal header files have been reorganized. See the comments in +F + +Internal code shared between the library and certain tools is now +located in a static C library. + +Almost all subdirectories can now use parallel builds, although note +that the top-level directories still build in series. + +Use of C and C has been eliminated from the code. + +The Java API now requires JVM E 1.6. + +Force use of C with automake E 1.12. + +Use of sockets in the library protocol layer is abstracted, allowing +other non-POSIX layers to be added in future (see +F). + +C is used if available, for more secure +parsing of the output of this command. + +Distros can now use C to place Ruby +bindings in vendordir. This eliminates a non-upstream patch carried +by both Fedora and Debian. + +Valgrind log files are now written to F-I.log> + +C cleans the local C directory. + +The C API tests have been rewritten using a more flexible generator +language that allows arbitrary C code to be executing during tests. + +=head2 Bugs fixed + +=begin comment + +./bugs-in-changelog.sh 1.20.0.. + +=end comment + +=over 4 + +=item L + +Segfault in inspect-fs.c in mountable code + +=item L + +tar-out and base64-out quoting error + +=item L + +libguestfs: error: btrfsvol:/dev/sda2/root: root device not found: only call this function with a root device previously returned by guestfs_inspect_os + +=item L + +inspection fails if libosinfo is not installed + +=item L + +file on zero-sized file now produces "empty " instead of "empty" + +=item L + +qemu: could not open disk image /tmp/.../snapshot1: Permission denied + +=item L + +"error: external command failed, see earlier error messages" message needs to change + +=item L + +libguestfs should use --output json (if supported) to safely parse the output of qemu-img command + +=item L + +feature request: guestmount --with-cleanup-pipefd + +=item L + +oom-killer kills guestfsd when tar-in a lot of data + +=item L + +FileIn commands cause segfault if appliance dies during the file copy in + +=item L + +Misc leaks in virNetClientProgramCall in libvirt 1.0.2 + +=item L + +Security context on image file gets reset + +=item L + +libguestfs-test-tool --qemu segfaults + +=item L + +Unexpected non-tail recursion in recv_from_daemon results in stack overflow in very long-running API calls that send progress messages + +=item L + +virt-tar fails on non-existent directory names "error in chunked encoding at /home/rjones/d/libguestfs/tools/virt-tar line 272." + +=item L + +virt-cat fails on directory names "/dev/stdout: error in chunked encoding" + +=item L + +btrfs causes subsequent ntfs-3g filesystem to fail + +=item L + +"No such file or directory" when execute "hivex-commit" + +=item L + +btrfs_subvolume_list broken due to change in subvolume list output + +=item L + +guestmount: rename() incorrectly follows symbolic links + +=item L + +guestmount: link() incorrectly returns ENOENT, when it should be EXDEV + +=item L + +checksums-out fail to compute the checksums of all regular files in directory + +=item L + +libguestfs FTBFS on Fedora 19 because of new ruby + +=item L + +virt-sysprep: Setting hostname, domain name and pretty name on Fedora 18 correctly + +=item L + +pvcreate fails if partition contains a swap signature + +=item L + +zero_free_space: open: /sysroot//ujqqq135.rd3: Cannot allocate memory + +=item L + +libguestfs with libvirt attach-method fails with odd error if default hypervisor is Xen + +=item L + +Adding a zero-length virtio-scsi disk causes: qemu-kvm: hw/scsi-bus.c:1568: scsi_req_complete: Assertion `req->status == -1' failed. + +=item L + +libguestfs cannot open disk images which are symlinks to files that contain ':' (colon) character + +=item L + +RFE: Allow to set log callback in Ruby bindings + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.24.pod b/docs/guestfs-release-notes-1.24.pod new file mode 100644 index 000000000..ce76878b0 --- /dev/null +++ b/docs/guestfs-release-notes-1.24.pod @@ -0,0 +1,332 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.24 + +These release notes only cover the differences from the previous +stable/dev branch split (1.22.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +User-Mode Linux (UML) can be used as an alternative backend +(ie. instead of KVM). This improves performance especially +when using libguestfs inside a VM (eg. in the cloud). UML is +supported as a first-class backend. +See L for how to use this. + +ARM (32 bit) and PPC64 are now fully supported. + +=head3 Tools + +L is a new tool for building virtual machine images. +It lets you rapidly and securely create guests and customize them. + +New L operations: +Remove files in F and F. +Remove RPM database files. +Change root and user passwords. +More log files are removed. +New operations which are not enabled by default: +Create random UUIDs for filesystems. +Reset firewall rules. +(Wanlong Gao) + +L and virt-sysprep can now use URIs to specify a +remote disk. + +Use C to create a named disk image +(instead of the default F etc). + +L now tests if there is enough disk space to +complete the operation, instead of possibly running out of space half +way through. + +L and L: new I<--label> option for +setting filesystem label. + +virt-resize I<--no-sparse> flag can be used to resize on to partitions +and other targets that are not zeroed. + +=head3 Language bindings + +New bindings for the Go programming language. + +=head3 API + +Support for the systemd journal. + +C can now control the qemu caching mode +through a new C parameter. You can select improved +performance for temporary drives, or safety. + +C now works for XFS and btrfs. + +New GUESTFS_EVENT_WARNING event for warning messages. + +=head3 Inspection + +Better inspection of SUSE guests (Olaf Hering). + +Better support for non-standard Windows %systemroot% (Matthew Booth). + +Enhanced error reporting for Augeas errors. + +=head2 Security + +=over 4 + +=item CVE-2013-2124 + +L + +A denial of service was possible when inspecting certain guests. The +fix has been backported to 1.20 and 1.22 branches. + +=item CVE-2013-4419 + +L + +Fix insecure temporary directory handling for remote guestfish. The +fix has been backported to 1.20 and 1.22 branches. + +=back + +=head2 New APIs + + add-drive-scratch: Add a temporary scratch drive + aug-label + aug-setm + journal-open: Systemd journal support + journal-close + journal-next + journal-skip + journal-get + journal-get-data-threshold + journal-set-data-threshold + remount: Allow rw flag to be adjusted on mounted filesystems + set-uuid: Set UUID of filesystem + +C, C, C, C, C, +C APIs now have an extra C flag. + +C has a new C parameter. + +=head2 Build changes + +The following packages are required to build libguestfs 1.24: + +=over 4 + +=item Augeas E 1.0.0 + +=back + +The following optional packages may be added to enhance functionality +but are not required: + +=over 4 + +=item sd-journal + +To read journal files from guests which use that. + +=item url_mkcow + +For UML backend. + +=item curl + +=item gpg + +=item xz + +For virt-builder. + +=item golang E 1.1.1 + +For Go language bindings. + +=back + +=head2 Internals + +New C rules replace C. See C and L for details. + +Perl code can now be valgrinded. + +Inspection code is now fuzz-tested. + +C no longer recurses into the generator directory in every other +directory. This reduces the overhead of builds considerably. + +Additional tests for Augeas, hivex. + +Add a launch timeout of 20 minutes waiting for the appliance to start +up. + +Add a timeout (4 hours) to all tests so we can catch the case where +qemu or other components hang. + +Use kvmclock and C<-cpu host>. This improves clock stability and +overall performance. + +C<./configure --enable-packet-dump> mode is fixed. + +C<./configure --enable-valgrind-daemon> mode has been rewritten. It +is now feasible for developers to keep this flag enabled at all times. + +Backends have been refactored to be modular (although they are not +actually loadable modules). + +When enabled, the network now uses resolver configuration +(ie. /etc/resolv.conf) from the host. + +=head2 Bugs fixed + +=begin comment + +./bugs-in-changelog.sh 1.22.0.. + +=end comment + +=over 4 + +=item L + +libguestfs-tools.conf should have a man page + +=item L + +valgrind errors in btrfs_subvolume_list + +=item L + +mke2fs can't return the correct filesystem type when blockscount is less than 2048 for ext3 + +=item L + +Update "rsync-out" helpout for using wildcard + +=item L + +Argument 'excludes' of tar-out does not work + +=item L + +virt-format uses wrong partition type for vfat filesystems + +=item L + +'sh' command before mount causes daemon to segfault + +=item L + +guestfish does not work when you mix --remote and --add options + +=item L + +guestfish remote prints "libguestfs: error: waitpid (qemu): No child processes" + +=item L + +list-filesystems command fails if there are no block devices + +=item L + +cache=none/O_DIRECT workaround doesn't work for images with backing files + +=item L + +cap-get-file will return error if the file has not be set capabilities + +=item L + +RFE: Implement set-uuid command + +=item L + +RFE: Implement set-label for xfs + +=item L + +Can't set acl value for a specified user with 'acl-set-file' + +=item L + +libguestfs double free when kernel link fails during launch + +=item L + +Make xfs filesystem failed with specified blocksize, gives "unknown option -b" error + +=item L + +"hivex-commit" should fail with a relative path + +=item L + +disk-format "qemu-img info: JSON parse error" when target file does not exist + +=item L + +mke2fs-J should give a meaningful error when specified type is anything except 'ext{2,3,4}' + +=item L + +Specifying virtio interface ('iface' parameter) breaks the direct backend - libguestfs hangs + +=item L + +"virt-resize --expand" and "virt-resize --resize" outputs error message for Win2008 32bit OS + +=item L + +inspection: Augeas expressions are broken with augeas >= 0.10 + +=item L + +virt-resize --expand fails on Ubuntu Cloud Image + +=item L + +Regression: Fedora inspection broken by change from guestfs_exists to guestfs_is_file + +=item L + +txz-out command produces a bzip2-compressed file (should be xz-compressed) + +=item L + +upload to a directory occasionally hangs instead of failing + +=item L + +virt-sysprep should support URL-type arguments + +=item L + +blockdev-setbsz succeeds, but does not affect blockdev-getbsz + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.26.pod b/docs/guestfs-release-notes-1.26.pod new file mode 100644 index 000000000..677f6e280 --- /dev/null +++ b/docs/guestfs-release-notes-1.26.pod @@ -0,0 +1,392 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.26 + +These release notes only cover the differences from the previous +stable/dev branch split (1.24.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +=head3 Tools + +L is a new tool for customizing virtual machine +disk images. It lets you install packages, edit configuration files, +run scripts, set passwords and so on. L and +L use virt-customize, and command line options across +all these tools are now identical. + +L is a new tool for showing the differences between the +filesystems of two virtual machines. It is mainly useful when showing +what files have been changed between snapshots. + +L has been greatly enhanced. There are many more +ways to customize the virtual machine. It can pull templates from +multiple repositories. A parallelized internal xzcat implementation +speeds up template decompression. Virt-builder uses an optimizing +planner to choose the fastest way to build the VM. It is 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. Error messages +have been improved. +(Pino Toscano) + +L has a new I<--in-place> option. This sparsifies +an image in place (without copying it) and is also much faster. +(Lots of help provided by Paolo Bonzini) + +L can delete and scrub files under user control. You +can lock user accounts or set random passwords on accounts. Can +remove more log files. Can unsubscribe a guest from Red Hat +Subscription Manager. New flexible way to enable and disable +operations. +(Wanlong Gao, Pino Toscano) + +L allows you to use URIs to specify remote disk +images. + +L can now pass the extra space that it recovers back +to the host. + +L has additional environment variables to give fine +control over the CEfsE> prompt. Guestfish reads its +(rarely used) configuration file in a different order now so that +local settings override global settings. +(Pino Toscano) + +L was rewritten in C, but is unchanged in terms of +functionality and command line usage. + +=head3 Language bindings + +The OCaml bindings have a new C module, used to check +the error number returned by C. + +PHP tests now work. +(Pino Toscano) + +=head3 Inspection + +Inspection can recognize Debian live images. + +=head3 Architectures + +ARMv7 (32 bit) now supports KVM acceleration. + +Aarch64 (ARM 64 bit) is supported, but the appliance part does not +work yet. + +PPC64 support has been fixed and enhanced. + +=head2 Security + +=over 4 + +=item Denial of service when inspecting disk images with corrupt btrfs volumes + +It was possible to crash libguestfs (and programs that use libguestfs +as a library) by presenting a disk image containing a corrupt btrfs +volume. + +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 S 1.26.0>, S +1.24.6> and S 1.22.8>, and also in RHEL S 7.0>. +Earlier versions of libguestfs are not vulnerable. + +=item 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 F (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) + +=back + +=head2 API + +GUID parameters are now validated when they are passed to API calls, +whereas previously you could have passed any string. +(Pino Toscano) + +=head3 New APIs + +=over 4 + +=item C: new C parameter + +The new C parameter 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 the C API call. + +=item C: new parameters: C, C + +These parameters are passed through when adding the domain's disks. + +=item C + +Discard all blocks on a guestfs device. Combined with the C +parameter above, this makes the host file sparse. + +=item C + +Test if discarded blocks read back as zeroes. + +=item C + +=item C + +For each struct returned through the API, libguestfs now generates +C and C functions to allow you to +compare and copy structs. + +=item C + +Copy attributes (like permissions, xattrs, ownership) from one +file to another. +(Pino Toscano) + +=item C + +A flexible API for creating empty disk images from scratch. This +avoids the need to call out to external programs like L. + +=item C + +=item C + +Per-backend settings (can also be set via the environment variable +C). 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 + +=item C + +Get the label or name of a partition (for GPT disk images). + +=back + +=head2 Build changes + +The following extra packages are required to build libguestfs 1.26: + +=over 4 + +=item supermin E 5 + +Supermin version 5 is required to build this version of libguestfs. + +=item flex, bison + +Virt-builder now uses a real parser to parse its metadata file, so +these tools are required. + +=item xz + +This is now a required build dependency, where previously it was +(in theory) optional. + +=back + +=head2 Internals + +PO message extraction rewritten to be more robust. +(Pino Toscano) + +C gives an error if the I<--insert> or I<--verbatim> +argument pattern is not found. + +Libguestfs now passes the qemu I<-enable-fips> option to enable FIPS, +if qemu supports it. + +C<./configure --without-qemu> can 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 (C<.create_cow_overlay>). + +Libvirt backend uses some funky C macros to generate XML. These are +simpler and safer. + +The ChangeLog file format has changed. It is now just the same as +C, instead of using a custom format. + +Appliance start-up has changed: + +=over 4 + +=item * + +The libguestfs appliance now initializes LVM the same way as it is +done on physical machines. + +=item * + +The libguestfs appliance does not write an empty string to +F when starting up. + +Note that you B configure your kernel to have +C otherwise you will get strange LVM +errors (this applies as much to any Linux machine, not just +libguestfs). +(Peter Rajnoha) + +=back + +Libguestfs can now be built on arches that have L but not +L. +(Hilko Bengen, Olaf Hering) + +You cannot use C<./configure --disable-daemon --enable-appliance>. It +made no sense anyway. Now it is expressly forbidden by the configure +script. + +The packagelist file uses C for macro expansion instead of C. + +=head2 Bugs fixed + +=begin comment + +./bugs-in-changelog.sh 1.24.0.. + +=end comment + +=over 4 + +=item L + +java bindings inspect_list_applications2 throws java.lang.ArrayIndexOutOfBoundsException: + +=item L + +[RFE] enable subscription manager clean or unregister operation to sysprep + +=item L + +virt-resize does not preserve GPT partition names + +=item L + +mount-local should give a clearer error if root is not mounted + +=item L + +virt-sparsify overwrites block devices if used as output files + +=item L + +libguestfs: error: invalid backend: appliance + +=item L + +guestfs_pvs prints "unknown device" if a physical volume is missing + +=item L + +Recommended default clock/timer settings + +=item L + +ruby-libguestfs throws "expecting 0 or 1 arguments" on Guestfs::Guestfs.new + +=item L + +Cannot inspect cirros 0.3.1 disk image fully + +=item L + +LIBVIRT_DEFAULT_URI=qemu:///system breaks libguestfs + +=item L + +virt-builder network (eg. --install) doesn't work if resolv.conf sets nameserver 127.0.0.1 + +=item L + +When SSSD is installed, libvirt configuration requires authentication, but not clear to user + +=item L + +virt-make-fs fails making fat/vfat whole disk: Device partition expected, not making filesystem on entire device '/dev/sda' (use -I to override) + +=item L + +virt-sysprep to delete more logfiles + +=item L + +RFE: libguestfs inspection does not recognize Free4NAS live CD + +=item L + +RFE: virt-sysprep/virt-builder should have an option to lock a user account + +=item L + +libguestfs fails examining libvirt guest with ceph drives: rbd: image name must begin with a '/' + +=item L + +virt-builder fails if $HOME/.cache doesn't exist + +=item L + +libguestfs: do not use versioned jar file + +=item L + +All libguestfs LVM operations fail on Debian/Ubuntu + +=item L + +Need update helpout of part-set-gpt-type + +=item L + +virt-sysprep does not correctly set the hostname on Debian/Ubuntu + +=item L + +guestfish prints literal "\n" in error messages + +=item L + +guestmount: "touch" command fails: touch: setting times of `timestamp': Invalid argument + +=item L + +[RFE] function to get partition name + +=item L + +list-devices returns devices of different types out of order + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.28.pod b/docs/guestfs-release-notes-1.28.pod new file mode 100644 index 000000000..dfb6feba5 --- /dev/null +++ b/docs/guestfs-release-notes-1.28.pod @@ -0,0 +1,515 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.28 + +These release notes only cover the differences from the previous +stable/dev branch split (1.26.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +=head3 Tools + +L and L are tools for converting from +foreign hypervisors (such as VMware or Xen) or physical machines, to +KVM. These tools were previously a separate project. The code for +both tools has been integrated into the libguestfs tree. As part of +the refactoring, virt-p2v has been rewritten (from Ruby, now C), and +virt-v2v now uses several modern features of qemu which make it run +many times faster than before. L can import from: VMware +vCenter, VMware OVA files, local disk files, libvirt, RHEL 5 Xen. It +can output to: oVirt or Red Hat Enterprise Virtualization (RHEV-M), +OpenStack Glance, libvirt, qemu, local disk files. + +L is a new tool for listing log files from guests. It +supports a variety of guests including Linux traditional, Linux using +journal, and Windows event log. + +L has a new C<--machine-readable> option to make it +simpler to consume virt-builder from other programs. + +New L and L I<--chmod> option. + +L will now remove: systemd journals, anaconda logs, +lightdm logs, debian-installer files, apt logs, exim logs, ConsoleKit +logs, firewalld logs, grubby logs, proftpd logs, libvirt/libxml logs, +and several other log files. The virt-sysprep C +operation is now able to remove or keep particular user accounts. +(Pino Toscano). + +New L I<--fd> option, allowing you to run guestmount +captive under another process. + +L has a new I<--tmp> option allowing you to +precisely control where temporary files are stored. + +L can now write to a block device. + +L and L now support adding +firstboot scripts to Windows guests. + +L, L, L now support the I<-m> +option, allowing you to override automatic inspection of guests and +instead specify where to mount partitions (Pino Toscano). + +The virt tools now have coloured output: green for OK, red for errors, +blue for warnings. + +=head3 Language bindings + +You can build a Python distribution using C + +Ruby bindings have switched from C to C. + +The Java bindings are now compatible with OpenJDK 8 (Pino Toscano). + +=head3 Inspection + +Oracle Linux is returned as C (Nikos Skalkotos). + +Linux guests which do not have F can now be handled +(Pino Toscano). + +Minix is returned as C (Pino Toscano). + +=head3 Architectures + +Aarch64 (64 bit ARM) support has been added. + +Inspection and the C call can now recognize +arm (32 bit) and aarch64 guests. + +=head2 Security + +=over 4 + +=item CVE-2014-0191 Network usage and entity resolution in XML parsing + +Libguestfs previously used unsafe libxml2 APIs for parsing libvirt +XML. These APIs defaulted to allowing network connections to be made +when certain XML documents were presented. Using a malformed XML +document it was also possible to exhaust all CPU, memory or file +descriptors on the machine. + +Since the libvirt XML comes from a trusted source (the libvirt daemon) +it is not thought that this could have been exploitable. + +This was fixed in libguestfs E 1.27.9 and the fix was backported +to stable versions E 1.26.2, E 1.24.9, E 1.22.10 and E +1.20.13. (Thanks: Dan Berrange, Pino Toscano). + +=item Shellshock (bash CVE-2014-6271) + +This bash bug indirectly affects libguestfs. For more information +see: +L + +=back + +=head2 API + +=head3 New APIs + +=over 4 + +=item C + +=item C + +=item C + +Use these APIs to set individual backend settings. + +=item C + +Convert a directory within the disk image to cpio format. + +=item C + +Fetch precise journal times, see L. + +=item C + +=item C + +=item C + +Enhanced versions of C, C, +C which return nanosecond timestamps. + +=back + +=head2 Build changes + +Libguestfs can now be built with qemu 2.x. + +Add support for packaging the appliance on Mageia (Joseph Wang, +Thierry Vignaud). + +Augeas is now a required dependency. + +Flex and bison are now required dependencies. + +=head2 Internals + +User-Mode Linux (UML) is no longer a supported backend (although still +available). It will be supported again once someone steps in and +fixes various regressions and brokenness in the UML (Linux) kernel. + +You can now connect gdb to qemu by specifying +C + +Serial BIOS (sgabios) is now used by the libvirt backend (on x86 only) +so that we see early BIOS messages. + +For the OCaml virt tools, exceptions are now handled and printed by a +common function. + +A GCC warning about large stack frames is now enabled by default. +Several places that used large arrays and structures on the stack have +been fixed. + +There is now a test for booting the appliance repeatedly. Useful for +finding kernel leaks. See: F + +There is a test for testing the speed of various qemu features such as +virtio-serial uploads and block device writes. See: +F + +GCC warnings are now enabled for OCaml-C bindings in the OCaml virt +tools. + +The code for editing files used by L, L +C command, L I<--edit> option and more is now +shared between all these utilities (thanks Pino Toscano). + +The FUSE tests were rewritten in C to ensure finer control over how +system calls are tested. + +The F script has been fixed so it should no longer +create an empty C file if the Bugzilla server is unavailable. + +The L tests now use a stochastic method to ensure much +deeper and broader testing. + +When the network is enabled, the appliance now uses DHCP to acquire an +IP address. + +If libvirt is being used then the appliance will connect to C +(can be overridden by setting +Csome_bridgeE>). +This enables full-featured network connections, with working ICMP, +ping and so on. + +=head2 Bugs fixed + +=begin comment + +./bugs-in-changelog.sh 1.26.0.. + +=end comment + +=over 4 + +=item L + +empty (but set) LIBGUESTFS_BACKEND prints libguestfs: error: invalid backend: + +=item L + +libguestfs-bash-completion package contains file /usr/share/bash-completion/completions/virt-log, but no _virt_log() function in that file + +=item L + +typo error in man page of virt-edit + +=item L + +virt-v2v conversions from VMware vCenter server run slowly + +=item L + +virt-v2v: warning: display was ignored when converting rhel5 guest with sdl graphics + +=item L + +'copy-file-to-file /src /dest' create file /dest even if command 'copy-file-to-file /src /dest' failed + +=item L + +Can not find "RECURSIVE LONG LISTING" in 'man virt-diff' + +=item L + +virt-v2v does not fstrim data disks and non-mounted filesystems + +=item L + +Exporting 2+ disk guest to RHEV, only one disk shows after import + +=item L + +virt-filesystems: incorrect LVM vg name when listing Fedora 21 Alpha Atomic image filesystems + +=item L + +Option missing --no-selinux-relabel + +=item L + +RFE: Allow qemu-bridge-helper to be used to implement guestfs_set_network + +=item L + +virt-v2v prints warning: /files/etc/fstab/8/spec references unknown device "cdrom" + +=item L + +regression setting root password with virt-builder/virt-customize + +=item L + +virt-v2v -v -x during windows guest conversion will hang at hivex: hivex_open: used block id …… + +=item L + +Improve the error info when converting windows guest with unclean file system + +=item L + +virt-v2v fails to convert win7 guest + +=item L + +RFE: stat calls do not return nanosecond timestamps + +=item L + +futimens() is a no-op via guestmount + +=item L + +guestfish can not restore terminal's output colour when exit guestfish, if the terminal's background colour is black then it will make a inconvenient + +=item L + +virt-customize option '--password-crypto' do not work + +=item L + +Warning shows when converting guests to rhev:chown: changing ownership of ‘/tmp/v2v.u48xag/*.ovf’: Invalid argument + +=item L + +warning shows when converting rhel7 guest:virt-v2v:could not update grub2 console: aug_get: no matching node (ignored) + +=item L + +virt-v2v fails with error: cannot open Packages index using db5 + +=item L + +part-get-name give 'libguestfs: error: part_get_name: parted does not support the machine output (-m)' error message when run 'part-get-name /dev/sda 1' + +=item L + +virt-sysprep option '--mount-options' don't work well + +=item L + +Illegal command 'part-get-name /dev/sda1 1' cause libguestfs appliance crashed + +=item L + +virt-v2v prints warning:WARNING:/files/boot/grub/device.map references unknown device "xvda" + +=item L + +virt-v2v: error: disk sda has no defined format shows when converting xen hvm guest + +=item L + +[RFE] virt-v2 should support convert a domain with using domain's UUID instead of domain name + +=item L + +[RFE] virt-v2 should support convert a guest to a dir-pool with using pool's uuid + +=item L + +virt-sysprep option '--user-accounts' don't work well + +=item L + +virt-v2v fails to convert xen pv guests. + +=item L + +virt-v2v fails to convert esx guests + +=item L + +qemu-img shows error message for backing file twice + +=item L + +No error messages output if append '--format qcow2' after '-a guest.img', guest.img is a raw format image file + +=item L + +virt-builder option '--format' don't work well + +=item L + +RFE: Export to RHEV data domain + +=item L + +No error shows when multiple conflicting options used with virt-v2v + +=item L + +Improve the error info when converting xen guest with no passwordless SSH access configured + +=item L + +Improve the error info when converting guest with no space left + +=item L + +No error shows when converting running guest with virt-v2v + +=item L + +virt-v2v will fail when converting guests with initramfs-*kdump.img under /boot + +=item L + +xen guest will be kernel panic after converted by virt-v2v + +=item L + +Annoying message about permissions of /dev/kvm + +=item L + +libguestfs 'direct' backend should close file descriptors before exec-ing qemu to avoid leaking !O_CLOEXEC fds + +=item L + +virt-sparsify overwrites block devices if used as output files + +=item L + +Empty fstab breaks libguestfs inspection + +=item L + +Guestfs.Error("vgchange_uuid_all: Volume group has active logical volumes") + +=item L + +virt-win-reg manual page is corrupted + +=item L + +root gets an error accessing to a non-root dir on a snapshot guestmount VMDK img + +=item L + +These APIs also need to add to `guestfish -h` command list + +=item L + +mageia package list is incorrect + +=item L + +libguestfs 1.27.13 does not build due to libxml library order + +=item L + +RFE: non-polling mechanism to detect guestmount --no-fork readiness + +=item L + +scrub-file can't handle link file + +=item L + +typo errors in man pages + +=item L + +RFE: virt-builder aliases + +=item L + +virt-builder "proxy=off" setting doesn't turn off the proxy for downloads + +=item L + +virt-sparsify man failes to mention what happens to snapshots within a qcow2 image (they are discarded) + +=item L + +virt-builder: If several repos contain the same os-version images, then they are duplicated in -l output + +=item L + +tar-in-opts execute failed that cause libguestfs appliance crashed + +=item L + +virt-resize: libguestfs error: part_set_name: parted: /dev/sdb: Error during translation: Invalid or incomplete multibyte or wide character + +=item L + +virt-builder cannot write to a block device + +=item L + +Ruby tests fail with latest Ruby + +=item L + +virt-sparsify --in-place cannot sparsify as much as it should + +=item L + +virt-df cannot report used disk space of windows guest when updated to 6.5 + +=item L + +virt-builder error: "syntax error at line 3: syntax error" + +=item L + +virt-sparsify overwrites block devices if used as output files + +=item L + +virt-rescue cannot set EErescueE prompt, on Ubuntu 12.04 + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.30.pod b/docs/guestfs-release-notes-1.30.pod new file mode 100644 index 000000000..4408f3df1 --- /dev/null +++ b/docs/guestfs-release-notes-1.30.pod @@ -0,0 +1,843 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 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. + +=head2 New features + +=head3 New tools + +L is a secure and safe alternative to the OpenStack +"diskimage-builder" tool. It is compatible with diskimage-builder +elements. (Pino Toscano) + +L extracts the kernel and ramdisk from a disk +image. Previously this functionality was part of L, +but the new tool is more featureful. (Pino Toscano) + +=head3 New features in existing tools + +L I<-i ova> mode can now read a wider range of OVA files, +and also unpacked files (directories). + +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 I<--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 L. + +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 E 8. Note this is +experimental, and possibly broken. Use with caution. + +virt-v2v can now convert UEFI guests. + +L adds a network configuration dialog. + +virt-p2v now has C, C and C 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). + +L will remove C for +non-root accounts (Hu Tao). + +L, L and virt-sysprep have the +following new options: + +=over 4 + +=item I<--commands-from-file> + +allow long lists of commands to be read from a file instead of from +the command line (Pino Toscano) + +=item I<--copy> + +copy files inside the guest (Maros Zatko) + +=item I<--copy-in> + +copy host files recursively into the guest (Pino Toscano) + +=item I<--move> + +move files inside the guest (Maros Zatko) + +=item I<--ssh-inject> + +inject SSH keys into a guest (Pino Toscano) + +=item I<--sm-attach> + +=item I<--sm-credentials> + +=item I<--sm-register> + +=item I<--sm-remove> + +=item I<--sm-unregister> + +register and unregister a guest from subscription-manager +(Pino Toscano) + +=item I<--touch> + +touch a file in the guest (Pino Toscano) + +=item I<--truncate> + +=item I<--truncate-recursive> + +truncate files (Maros Zatko) + +=back + +Improvements to virt-customize firstboot support. In particular, +Windows firstboot should work as well as Linux (Roman Kagan). + +L 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). + +L 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). + +=head3 Language bindings + +The Java bindings now include validated Javadoc, and other improvements +(Pino Toscano). + +Multiple fixes and improvements to the PHP bindings (Pino Toscano). + +=head3 Inspection + +Inspection can now get icons from RHEL 7 and CentOS 7. + +F 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 E 22 is C. + +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). + +=head3 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 I<-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. + +=head2 Security + +=over 4 + +=item CVE-2014-8484 + +=item CVE-2014-8485 + +Libguestfs previously ran the L 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. + +=item 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 +L + +=item Denial of service problems when using C + +When using the American Fuzzy Lop fuzzer (C) on the +C command, Richard W.M. Jones found that certain files +can cause the C 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 +C 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 C, to avoid this problem. If a +malicious user tries to pass one of these disk images to libguestfs, +C will crash and the crash is reported back to libguestfs +callers as an error message. + + + + +=back + +=head2 API + +=head3 New APIs + +=over 4 + +=item C + +This exposes a previously private API that allows you to pass a +C object directly from libvirt to libguestfs. + +=item C + +Adjust readahead parameter for devices. +See C command. + +=item C + +=item C + +=item C + +=item C + +=item C + +Balance support for Btrfs filesystems (Hu Tao). + +=item C + +Filesystem defragmentation support for Btrfs filesystems (Hu Tao). + +=item C + +Create an image of a Btrfs filesystem (Chen Hanxiao) + +=item C + +=item C + +=item C + +=item C + +=item C + +=item C + +=item C + +=item C + +Quote support for Btrfs filesystems (Hu Tao). + +=item C + +Scan and recover the chunk tree in Btrfs filesystems (Hu Tao). + +=item C + +Restore superblocks in Btrfs filesystems (Hu Tao). + +=item C + +Replace a device in a Btrfs filesystem (Cao Jin). + +=item C + +=item C + +=item C + +=item C + +Scrub a Btrfs filesystem (Hu Tao). + +=item C + +Get the default subvolume of a Btrfs filesystem (Hu Tao). + +=item C + +List detailed information about the subvolume of a Btrfs filesystem +(Hu Tao). + +=item C + +=item C + +=item C + +Various tuning parameters for Btrfs filesystems (Chen Hanxiao). + +=item C + +Return the C pointer to the underlying C. This allows +interworking of libguestfs bindings with bindings from other +libraries. For further information see +L + +=item C + +=item C + +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). + +=item C + +=item C + +Get and set the GPT per-partition GUID. + +=item C + +Get MBR partition type (Chen Hanxiao). + +=item C + +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). + +=back + +=head3 Other API changes + +C can now use VMDK files as backing files. + +C takes extra optional +parameters (all added by Hu Tao): + +=over 4 + +=item C + +for creating a read-only Btrfs snapshot + +=item C + +for adding the snapshot to a qgroup + +=back + +C can also take the optional +C parameter (Hu Tao). + +C can set UUID of swap partitions, Btrfs +(Hu Tao, Chen Hanxiao). + +C and C have a +new optional C parameter, allowing you to append to the output +file instead of truncating it. + +C has a new optional C +(Pino Toscano). + +Virt-resize has a new I<--unknown-filesystems> option to control what +to do when asked to resize a filesystem that libguestfs doesn't know +how to resize. + +Virt-v2v now has an I<--in-place> flag/mode, allowing in-place +conversion of guests (Roman Kagan). + +Virt-v2v has a I<--compressed> option for creating compressed qcow2 +output files. + +Virt-v2v can now correctly get the VMware datacenter path (dcPath) +from libvirt, instead of having to calculate it using an algorithm +that occasionally got the wrong answer (Matthias Bolte, Tingting +Zheng). + +Virt-v2v now processes RAM sizes correctly for 64 bit guests when +running on a 32 bit host. + +=head3 Language bindings + +In Perl and Python programs, the C API now returns +the true program name, instead of the incorrect string C or +C. + +The Python bindings can now be compiled against a different version of +libguestfs, allowing the pip module to be built against any version of +libguestfs (instead of requiring the pip module and libguestfs to have +exactly the same version). + +The quality of the Ruby rdoc (documentation) has been improved (Pino +Toscano). + +Perl scripts no longer hard-code the location of perl in the shebang +line, but use L to locate it instead (Pino Toscano). + +In OCaml programs, the guestfs handle was incorrectly made into a +global root, meaning it could never be garbage collected. If you +didn't call the C function explicitly, the handle would not be +closed until the whole program exited. This has now been fixed so +handles will be garbage collected in the usual way. This changes the +API of the OCaml function C. Note that non-C +language bindings are not covered by the libguestfs API/ABI guarantee, +although we try hard not to change them, but in this case it was +essential in order to fix this very serious bug. + +=head3 Inspection + +Alpine Linux and the APK package manager, ALT Linux, Frugalware, and +PLD Linux are now recognized (Pino Toscano). + +If it exists, F will be preferred for inspecting +Linux guests (Pino Toscano). + +The correct kernel version is returned for Windows guests E 10. + +=head3 Documentation + +The large L man page has been split into several separate +man pages: L L +L. In the source tree, a new F directory +contains this documentation. + +=head3 Architectures and platforms + +Libguestfs now supports ARM 64 bit platforms with vGICv3. + +=head2 Security + +See also L. + +=over 4 + +=item C + +L + +This is not a vulnerability in libguestfs, but because we always give +a virtio-serial port to each guest (since that is how guest-host +communication happens), an escalation from the appliance to the host +qemu process is possible. This could affect you if: + +=over 4 + +=item * + +your libguestfs program runs untrusted programs out of the guest +(using L etc), or + +=item * + +another exploit was found in (for example) kernel filesystem code that +allowed a malformed filesystem to take over the appliance. + +=back + +If you use sVirt to confine qemu, that would thwart some attacks. + +=item Virt-customize permissions on F<.ssh>, F<.ssh/authorized_keys> + +L. + +Previously when asked to inject an SSH key into a guest, +virt-customize (hence virt-builder too) would create the F<.ssh> +directory and F<.ssh/authorized_keys> file with too broad permissions, +allowing other users to read. They are now created as C<0700> and +C<0600> respectively, which is the same as the L +utility. + +=back + +=head2 API + +=head3 New APIs + +=over 4 + +=item C + +=item C + +Get/set a per-handle identifier. The main effect of this is to +change trace output from: + + libguestfs: trace: foo + +to: + + libguestfs: trace: ID: foo + +making it easier to follow traces in multi-threaded programs, or where +a program uses multiple handles (especially virt-v2v). + +=item C + +Return the minimum size of a filesystem (when shrunk). This supports +ext2/3/4, XFS and btrfs, and can support other filesystem types in +future (Maxim Perevedentsev). + +=back + +=head3 Other API changes + +=over 4 + +=item C: add C = C/C/C. + +For raw, this allows C as a synonym for C (making it +consistent with qcow2). For qcow2, this allows C as a synonym +for C. + +It also adds C, which corresponds to fully allocated, but uses +L for efficiency. + +=item C: new C, C, C parameters. + +=item C: new C, C, C parameters. + +These extra parameters control whether extended attributes, SELinux +contexts and/or POSIX ACLs are restored from / saved to tarballs. + +=item C + +The existing C and C parameters can be used to +supply authentication for iSCSI (Pino Toscano). + +=back + +=head2 Build changes + +The C<./configure --enable-valgrind-daemon> option has been removed. + +You can no longer build libguestfs on RHEL 5-era (c.2007) machines. +See the C branch if you need (limited) RHEL 5 support. + +Virt-p2v can now be built on RHEL 6-era (c.2010) Linux distros. + +OCaml E 3.11 (released in 2008) is now required to build from git. + +Building the Perl bindings now requires C (instead of +C). + +Builds should be faster (especially when incrementally rebuilding), +because work was done to reduce build times. + +Both OCaml and the OCaml findlib module are required if you need to +run the generator at build time. Previously the build would have +failed if findlib was not installed. + +C tests now run in parallel (within each test directory). + +C no longer installs OCaml F files +incorrectly. + +C can now be run twice. Previously it would fail on the +second run. + +C should now remove nearly every file that C +creates. + +A new C rule has been added, allowing the installed +copy of libguestfs to be tested. + +=head2 Internals + +Some effort was put into minimizing the size of the appliance, which +reduces temporary disk space and time needed by libguestfs handles. + +The appliance now passes the NIC name to dhcpd, fixing hangs when +running the appliance on some distros (Cédric Bosdonnat). + +OCaml C is now generated (Pino Toscano). + +In OCaml tools, common code now handles I<--debug-gc>, I<--verbose> +and other common options (Roman Kagan, Pino Toscano). + +The virt-v2v test harness allows us to boot the test guests at fixed +dates in the past, ensuring that Windows reactivation doesn't kick in. + +There is a new internal API for reading/writing a subprocess via a +pipe from library code. + +Used C program to remove unused C<#include> directives. + +In OCaml tools, the C and C modules now implicitly +reference the C and C modules +(instead of the ones from stdlib). The C modules +contain a number of extra char/string utility functions, and also hide +some unsafe functions in stdlib. + +Many more virt-v2v tests will now be run even if you don't have +rhsrvany and virtio-win installed (Roman Kagan). + +The huge F file has been split into several smaller +files called F. + +The old F and F directories have been moved +to F. This new top level directory carries all test data +which is common, large and/or shared between multiple tests. + +There is a new top level F directory containing the public +L website (or most of it). + +The fuzz testing of inspection (F) has been removed. + +Virt-p2v now saves the source physical machine dmesg output into the +conversion server debug directory, making it simpler to debug cases of +missing drivers, firmware etc. + +=head2 Bugs fixed + +=begin comment + +https_proxy= ./bugs-in-changelog.sh 1.30.0.. + +=end comment + +=over 4 + +=item L + +set-label returns wrong error message when set the ext3/ext4 filesystem label + +=item L + +Add a Fedora 23 32-bit base image for virt-builder + +=item L + +virt-builder writes temporary files to /tmp + +=item L + +virt-resize does not copy logical partitions + +=item L + +virt-inspector returns version 6.3 for win10 images (should return 10.0) + +=item L + +virt-inspector --xpath segfault on attribute get + +=item L + +libguestfs can run commands with stdin not open (or worse still, connected to arbitrary guest-chosen random devices) + +=item L + +About compression option for qcow2 + +=item L + +guestfish should be able to handle LVM thin layouts + +=item L + +DNF python programming error when run from virt-builder + +=item L + +inspection returns arch="unknown" for Windows guest if file command is not installed + +=item L + +Document permissions needed for non-admin users to use virt-v2v + +=item L + +RFE: virt-sparsify: make '--in-place' sparsification safe to abort (gracefully or ungracefully) + +=item L + +Virt-p2v client shouldn't present the vdsm option because it's not usable + +=item L + +virt-v2v fails to convert Windows raw image: error "device name is not a partition" + +=item L + +virt-builder: error: [file] is not a regular file in the guest + +=item L + +Simplestreams test fails: virt-builder: error: the value for the key 'size' is not an integer + +=item L + +guestfish copy-in command behaves oddly/unexpectedly with wildcards + +=item L + +python: Cannot compile pip module if installed libguestfs != pip guestfs version + +=item L + +Better diagnostic message when virbr0 doesn't exist + +=item L + +No warning shows when convert a win7 guest with AVG AntiVirus installed + +=item L + +virt-builder --ssh-inject doesn't set proper permissions on created files + +=item L + +RFE: V2V to check and warn user to disable group policy and anti virus on Windows guests + +=item L + +Wrong graphics protocal and video type set for guest after convert to rhev 3.6 by virt-v2v + +=item L + +extra slashes in vcenter URL confuses virt-v2v + +=item L + +[RHEV][V2V] virt-v2v ignores NIC if interface source/@network or source/@bridge is an empty string + +=item L + +virt-builder created Fedora 22 32bit disk image cannot be updated + +=item L + +virt-p2v no GUI mode:error opening control connection to $ip:22:unexpected …rompt + +=item L + +Option -oa preallocated -of qcow2 of virt-v2v didn't work efficiently + +=item L + +v2v: spaces need to be escaped as %20 in paths + +=item L + +Close all incoming ports on virt-p2v ISO + +=item L + +man virt-customize shows synopsis twice + +=item L + +mount-loop failed to setup loop device: No such file or directory + +=item L + +BUG: unable to handle kernel NULL pointer dereference at in function __blkg_lookup + +=item L + +virt-v2v should ignore bogus kernel entries in grub config + +=item L + +Unrelated info in fstab makes virt-v2v fail with unclear error info + +=item L + +virt-p2v: Using "Back" button causes output list to be repopulated multiple times + +=item L + +Wrong video driver is installed for rhel5.11 guest after conversion to libvirt + +=item L + +RFE: virt-builder creates qcow v3 images, add build option for qcow v2 + +=item L + +File /etc/sysconfig/kernel isn't updated when convert XenPV guest with regular kernel installed + +=item L + +"lstatnslist" and "lstatlist" don't give an error if the API is used wrongly + +=item L + +koji spin-livecd cannot build a working live CD + +=item L + +mount-loop command fails: mount failed: Unknown error -1 + +=item L + +set-label can only set <=127 bytes for btrfs and <=126 bytes for ntfs filesystem which not meet the help message. Also for ntfs it should give a warning message when the length >128 bytes + +=item L + +libvirt fails to shut down domain: could not destroy libvirt domain: Requested operation is not valid: domain is not running + +=item L + +mount-loop failed to setup loop device: No such file or directory + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.34.pod b/docs/guestfs-release-notes-1.34.pod new file mode 100644 index 000000000..d3cd045c1 --- /dev/null +++ b/docs/guestfs-release-notes-1.34.pod @@ -0,0 +1,732 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.34 + +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. + +=head2 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 (F and +F 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, and many bug fixes. + +f2fs (Flash Friendly File System) is now supported (Pino Toscano). + +=head3 New tools + +L can be used to build the virt-p2v ISO based +on SLES and openSUSE, using the kiwi utility (Cédric Bosdonnat). + +=head3 New features in existing tools + +virt-resize will 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-resize will use sparse copying for (old MBR-style) extended +partitions. This makes resizing of guests that use extended +partitions much faster (Maxim Perevedentsev). + +virt-p2v kernel command line options can now be used to set defaults +for GUI configuration. + +The virt-p2v debugging options have been completely removed, +simplifying the interface and documentation. Debugging information is +now captured fully automatically. + +virt-p2v-make-disk lets you specify an I<--arch> option, allowing you +to build a 32 bit virt-p2v, for compatibility with older systems. + +virt-p2v-make-disk no longer requires that you specify an +C for the virt-p2v disk. If omitted it will try to choose +a suitable C depending on your host system. + +virt-p2v-make-disk and virt-p2v-make-kickstart both gain a new +I<--install> option that allows you to add arbitrary extra packages to +the virt-p2v ISO, for customization, additional debugging tools and so +on. + +virt-v2v will 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 I<--in-place> mode has been enhanced to allow the caller to +choose whether or not to install certain virtio drivers in the guest +(Roman Kagan). + +virt-v2v conversion of Windows guests was substantially rewritten and +simplified (Roman Kagan). + +virt-v2v I<--in-place> mode now supports installing virtio-scsi +drivers in guests (Roman Kagan). + +virt-v2v can now convert SUSE guests and SUSE guests using UEFI +(Cédric Bosdonnat and Jim Fehlig). + +virt-v2v can now convert guests to Glance that have multiple disks. +Previously it would fail on such guests. + +The virt-v2v I<--no-trim> and I<--vmtype> options are now no-ops. +They will print a warning but are otherwise ignored. virt-v2v can now +generate the OVF vmtype correctly without user intervention. + +virt-v2v has now been tested against SUSE Xen as a source hypervisor +(Cédric Bosdonnat). + +virt-v2v adds support for SUSE VMDP drivers (Cédric Bosdonnat). + +virt-v2v can convert OVA files containing subfolders, as produced +by SUSE Studio (Cédric Bosdonnat). + +virt-v2v sets the OVF COriginE> element correctly. oVirt +has been extended to support more source hypervisors (Shahar Havivi). + +virt-v2v now supports Windows Server 2016 (Tomáš Golembiovský). + +The virt-builder I<--list> option can now be used to show all +templates or a single template (Pino Toscano). + +All OCaml-based tools now use L for option parsing, +and I<--help> output has been improved (Pino Toscano). + +virt-builder and virt-customize I<--selinux-relabel> option can now +fully relabel the guest filesystem at build time, without requiring a +lengthy autorelabel at first boot. + +virt-customize I<--delete> now accepts globs. + +New virt-customize I<--uninstall> option lets you uninstall packages. + +virt-customize can now use C as an alternative to C +for running firstboot scripts in Windows guests (Cédric Bosdonnat). + +virt-customize now uses the strongest hashing scheme for passwords on +Arch and Void Linux (Pino Toscano). + +virt-customize I<--install> now works correctly on Arch (Pino +Toscano). + +virt-inspector has new options I<--no-applications> and I<--no-icon> +to prevent the list of applications and icon from being included in +the XML output (Pino Toscano). + +New virt-sysprep I<--network> option has been added, allowing you to +actually use the I<--install> etc options which were present in +virt-sysprep before but did not usually work. Note that the network +is still disabled by default. + +virt-sysprep C operation no longer fails on btrfs guests +(Maxim Perevedentsev). + +virt-dib can output Docker images (Pino Toscano). + +virt-dib has a new I<--drive-format> option to allow the user to +specify the format of the helper drive (Pino Toscano). + +All OCaml virt tools now have a I<--colors>/I<--colours> option 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. + +=head3 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 +L + +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 +I<-safe-string>, if supported by the OCaml compiler. + +=head3 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 E 3 are 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 +F file (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). + +=head3 Documentation + +New manual page L describes how to build +libguestfs from source. + +The man pages, tools and tool I<--help> output 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 L man page has been refreshed and based on a +newer libguestfs. + +=head3 Architectures and platforms + +virt-customize now works on POWER7 and POWER8 platforms, both big +endian and little endian (Xianghua Chen and Hu Zhang). + +=head2 Security + +See also L. + +=head3 CVE-2015-8869 + +L + +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). + +=head3 virt-customize ownership of F<.ssh>, F<.ssh/authorized_keys> + +L + +Previously when virt-customize injected an SSH key into a guest, when +it created the F<~/.ssh> and F<~/.ssh/authorized_keys> directory and +file (in case they were missing) it created them with owner and group +C. This has been fixed so the correct user is used. This +is not thought to have been exploitable. + +=head3 Windows C<%systemroot%> + +The inspection code has been made more robust against guests which +might use very long C<%systemroot%> (derived from the guest-controlled +Windows Registry). This is not thought to have been exploitable. + +=head3 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. + +=head2 API + +=head3 New APIs + +=over 4 + +=item C + +List all devices where a btrfs filesystem is spanned (Pino Toscano). + +=item C + +=item C + +=item C + +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) + +=item C + +Read the path where temporary sockets are stored (Pino Toscano). + +=item C + +=item C + +Split a Mountable into device name and subvolume +(Cédric Bosdonnat). + +=item C + +Download NTFS file by inode number (Matteo Cafasso). + +=item C + +Allow in-place expanding of GPT partitions by moving the second +(backup) partition table to the end of the disk (Maxim Perevedentsev). + +=item C + +=item C + +=item C + +Get and set the GPT disk GUID, or set it to a fresh random value +(Maxim Perevedentsev). + +=item C + +SELinux-relabel part or all of the guest filesystem. + +=back + +=head3 Other API changes + +C, C, C, +C and C have been deprecated. Use the +new API C to relabel filesystems. Use +C to list the C extended +attributes of existing files. + +C can now be used on dirty filesystems +(Maxim Perevedentsev). + +C now works on paths which contain absolute symlinks +(Pino Toscano). + +C now has an optional C boolean +parameter which controls whether trailing slashes are returned for +directory names (Pino Toscano). + +C will no longer return LVs which have the +C flag set. The reason is that such LVs have no +C device node and so code which read the list of LVs and +then probed the devices themselves would immediately fail. You can +use C if you want to read all LVs. +(Pino Toscano). + +C now no longer fails if no disks with +labels were added. Instead it now returns an empty list (Pino +Toscano). + +C no longer fails if passed a btrfs subvolume, it +returns false instead (Maxim Perevedentsev). + +=head2 Build changes + +qemu E 1.3.0 is required. + +yajl (a JSON parsing library) is required to build libguestfs. + +You can now build with GCC 6. + +C now has substantially better coverage. + +C now works again. + +Use C to clean the +supermin appliance (it will be rebuilt on next C). + +There are a variety of new rules for running virt-p2v from the source +directory: C | +C | C. These +are documented further in L. + +virt-p2v may be built using either Gtk 2 or Gtk 3. To force a +particular version of Gtk to be used, C<./configure --with-gtk=2|3> + +The C<./configure> options are now mostly documented in +L. + +=head2 Internals + +In git, versions are now tagged with C (previously they were +tagged with C<1.XX.YY>). Using the C prefix is more common in git +repositories. + +When using the libvirt backend, we now wait for qemu to exit +gracefully instead of killing it after 15 seconds. This helps when +writing to slow devices (especially cheap USB keys). + +Error messages from libvirt now include the Cint1> field +which usually contains the C. + +On ARM, all DTB (device tree) code has been removed. qemu creates the +right device tree on the fly, we do not need to specify one. + +The C API tests now use larger test disks, allowing BTRFS to be tested +properly (Pino Toscano). + +The tests should now work on a pure Python 3 host (Pino Toscano). + +In C bindings, internal functions are now (mostly) consistently named +C whereas previously there was no consistent scheme. + +The old C etc functions are now no longer exported by the +library, nor used in language bindings. + +Setting TMPDIR to a path longer than ~ 100 characters will no longer +cause libguestfs to fail silently and randomly when creating Unix +domain sockets (Pino Toscano). + +The C macro can now be used in the daemon. + +When tracing, results containing structs are now printed in full (Pino +Toscano). + +The Perl C module now no longer embeds an incrementing +API "version number". This module is now always at phony version +"1.0". To find the real version of libguestfs from Perl you must call +C<$g-Eversion>. + +All code is compiled with C<-Wstack-usage=10000> and multiple changes +have been made to remove stack allocation of large strings and +buffers. + +The L function is now used everywhere, replacing most +previous uses of L + L, and L + exit. + +In C code, C comments are turned into documentation which is +automatically added to the L manual page. + +A safe "getumask" function has been added. For recent Linux kernels +this uses the newly added C field in F. For +older Linux and other Unix, this uses a thread-safe technique +involving L (thanks: Josh Stone, Jiri Jaburek, Eric Blake). + +Safe L wrappers have been added, and more hints have +been added to the code which may make a minor difference to +performance. + +A safe wrapper around L has been added which handles +C properly. + +C (used to generate the manual pages) now stops if any +POD error is found. A new script called C does +cross-checking of I<--help> output, 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 F (Pino Toscano). + +On Windows guests, virt-customize will use the vendor-neutral path +S> to store firstboot scripts. +Previously it used S>. This +change should be invisible to the scripts themselves. +(Cédric Bosdonnat) + +On Linux guests, the firstboot services generated by virt-builder +I<--firstboot> etc have been renamed to C +(Pino Toscano). + +There is now a common C function used by all OCaml tools, +replacing previous code which did S>. + +virt-p2v copies files it needs over to the virt-v2v conversion server +using L, instead of trying to send them via the shell session. +This should improve reliability and should be a completely transparent +to end users. + +All code in F is now built into a single C or +C library. All code in F is now built into a +single C or C library. This simplifies +the build of the OCaml tools. + +L is now used in the appliance when available (Pino Toscano). + +"Silent rules" are used for OCaml, Java, Erlang and POD. Use +C to see the full command lines again (Pino Toscano). + +=head2 Bugs fixed + +=begin comment + +https_proxy= ./bugs-in-changelog.sh 1.32.0.. + +=end comment + +=over 4 + +=item L + +virt-sparsify --in-place failed with UEFI system + +=item L + +run_command runs exit handlers when execve fails (e.g. due to missing executable) + +=item L + +virt-dib failed to create image using DIB_YUM_REPO_CONF + +=item L + +Fail to inspect Windows ISO file + +=item L + +Some info will show when convert guest to libvirt by virt-v2v with parameter --quiet + +=item L + +overlay of disk images does not specify the format of the backing file + +=item L + +Virt-manager can't show OS icons of win7/win8/ubuntu guest. + +=item L + +Improve error info "remote server timeout unexpectedly waiting for password prompt" when connect to a bogus server at p2v client + +=item L + +virt-p2v should update error prompt when 'Test connection' with a non-existing user in conversion server + +=item L + +virt-sysprep --install always failed to install the packages specified + +=item L + +virt-customize --truncate-recursive should give an error message when specifying a no-existing path + +=item L + +[RFE]Should give a better description about 'curl error 22' when failed using ssh identity http url at p2v client + +=item L + +Failed SSH to conversion server by ssh identity http url at p2v client + +=item L + +[RFE] uninstall packages inside the VM + +=item L + +Ifconfig command is not supported on p2v client + +=item L + +Convert a guest from RHEL by virt-v2v but its origin info shows RHEV at rhevm + +=item L + +Should remind a warning about disk image has a partition when using virt-p2v-make-disk + +=item L + +virt-get-kernel prompts an 'invalid value' error when using --format auto + +=item L + +virt-p2v spinner should be hidden when it stops spinning + +=item L + +Testing connection timeout when input regular user of conversion server with checked "use sudo......"button + +=item L + +[RFE] Suggestion give user a reminder for "Cancel conversion" button + +=item L + +Multiple network ports will not be aligned at p2v client + +=item L + +Update UEFI whitelist for official fedora packages + +=item L + +virt-customize --ssh-inject not applying correct file permission + +=item L + +extra quotes around UUID confuses findfs in RHEL (but not in Fedora) + +=item L + +Inspection does not parse /etc/redhat-release containing "Derived from Red Hat Enterprise Linux 7.1 (Source)" + +=item L + +RFE: Allow p2v kernel options without p2v.server to set defaults + +=item L + +virt-v2v should prevent using multiple '-b' and '-n' option appears on the command line + +=item L + +libguestfs: error: could not parse integer in version number: 7" + +=item L + +[1.33.16] Compilation Error: Unbound value List.sort_uniq in v2v.ml line 988, characters 10-24: + +=item L + +`virt-builder --update` fails with: "dnf -y --best upgrade: command exited with an error" + +=item L + +v2v cmd cannot exit and "block I/O error in device 'appliance': No space left on device (28)" is printed when specified "-v -x" + +=item L + +virt-rescue fails, but missing error message + +=item L + +RFE: virt-p2v log window should process colour escapes and backspaces + +=item L + +virt-v2v -o libvirt doesn't preserve or use correct + +=item L + +error: internal error: Invalid floppy device name: hdb + +=item L + +Wrong warning info "use standard VGA" shows when converting windows > 7 by virt-v2v + +=item L + +OS name of win8.1 x64 guest shows incorrect in rhevm3.6 general info + +=item L + +virt-v2v does not copy additional disks to Glance + +=item L + +Failure when disk contains an LV with activationskip=y + +=item L + +virt-v2v doesn't remove VirtualBox additions correctly because of file quoting + +=item L + +There should be a reminder to avoid user to edit a guest image by multiple tools at the same time in guestfish man page + +=item L + +guestfish can not ll a symbolic link dir or edit a file in it + +=item L + +guestfish should be able to handle LVM thin layouts + +=item L + +ppc64le: virt-customize --install fail to detect the guest arch + +=item L + +Test that trimming in virt-v2v doesn't regress + +=item L + +Virt-v2v gives an error on a blank disk: part_get_parttype: unknown signature, of the output: BYT; + +=item L + +virt-p2v in non-GUI mode doesn't show any conversion progress or status + +=item L + +P2V invalid password prints unexpected end of file waiting for command prompt. + +=item L + +On Ubuntu, virt-builder --install and --update cannot use the network + +=item L + +virt-v2v: warning: unknown guest operating system: windows windows 6.3 when converting win8,win8.1,win2012,win2012R2,win10 to rhev + +=item L + +Support inspecting docker images without /etc/fstab + +=item L + +libguestfs cannot inspect recent Fedora / RHEL >= 7 when /usr is a separate partition + +=item L + +P2V: invalid conversion server prints unexpected end of file waiting for password prompt. + +=item L + +virt-rescue --selinux can not work well, when enable selinux in the command line the value of 'getenforce' is still Disabled in virt-rescue appliance + +=item L + +ARM 32 bit on Ubuntu: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] + +=item L + +NetworkManager avc unlink denied for resolv.conf after using --selinux-relabel + +=item L + +RFE: virt-sysprep should be SELinux-aware + +=item L + +RFE: virt-p2v: display more information about storage devices + +=item L + +SELinux handling could be done better. + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.36.pod b/docs/guestfs-release-notes-1.36.pod new file mode 100644 index 000000000..8f682e5ae --- /dev/null +++ b/docs/guestfs-release-notes-1.36.pod @@ -0,0 +1,561 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 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. + +=head2 New features + +=head3 New tools + +Virt-tail is a new tool for following (tailing) log files within a +guest, similar to the regular C command. + +=head3 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 I<--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 C for removing +editor backups, and C for removing F and +similar. + +Virt-dib can now create checksums using the new I<--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. + +=head3 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 C which +prevents conflicts between the Windows Plug-and-Play Manager and our +own scripts that install virtio device drivers. Enabling this +requires the C 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 C and C nodes from +the Windows Registry. + +Xen and vCenter conversions can now be done using the libvirt backend, +provided libvirt E 2.1.0 is used. + +F (SCSI CD-ROM) devices are ignored (Tomáš Golembiovský). + +When converting SUSE Linux guests, use F 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 C attribute from the metadata instead of +using content sniffing on the disk image (Tomáš Golembiovský). + +A new flag I<--vdsm-compat> has been added to I<-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, I<-o rhev> becomes I<-o rhv>, although the +old name can be used for backwards compatibility. + +The C 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. + +=head3 Language bindings + +Setting C before F<./configure> allows you to +add arbitrary flags to C 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). + +=head3 Inspection + +Inspection of Windows guests with mildly corrupted Windows Registry +hives should now work instead of failing with an error. This feature +requires hivex E 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 F +partition should now work more reliably (Pino Toscano). + +When parsing guest F, paths are reduced to a canonical +form (eg. C<"///usr//local//"> → C<"/usr/local">). + +Inspection of btrfs subvolumes now works where the F +options field contains commas. + +F devices in guest F are ignored (Pino Toscano). + +=head3 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. + +=head3 Other + +ExFAT filesystems are now supported (Miles Wolbe). + +=head2 Security + +See also L. + +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 +F (previously the C function L was used in +one case). + +The C<$TERM> environment variable is now validated before passing it +through to the appliance kernel command line. + +=head2 API + +=head3 New APIs + +=over 4 + +=item C + +Exposes the Augeas C API (Pino Toscano). + +=item C + +Find files by inode number (Matteo Cafasso). + +=item C + +=item C + +Return the path to the Windows C and C +hives computed during inspection. + +=item C + +Create a squashfs filesystem from a path (Pino Toscano). + +=back + +=head3 Other API changes + +=over 4 + +=item C + +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). + +=item C + +This call will no longer incorrectly modify Linux software RAID device +names (like F). + +=item C + +Previously the C API could return either of the +strings C or C for 32 bit x86 binaries. It now only +returns C (as documented). + +This API can now return the following new values: C, +C, C, C, C. + +=item C + +This now has an optional C flag which +allows certain corrupted Windows Registry hives to be opened. This +feature requires hivex E 1.3.14 (Dawid Zamirski). + +=item C + +This call now returns Linux software RAID partitions. + +=item C + +This call now correctly handles partition names which include +CNE> (Pino Toscano). + +=item C + +This call can now change the labels of swap partitions (Pino Toscano). + +=back + +=head2 Build changes + +libmagic, the library part of the C 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 C on the make command +line (Pino Toscano). + +Slow testing (C) now covers: firstboot scripts in +Linux guests; v2v conversion of a selection of real Linux guests; the +virt-customize I<--hostname> and I<--timezone> settings; the +I<--root-password> parameter; that the serial console works in +virt-builder guests. + +Large generated C source files, eg. the list of commands found in +F (and many more), have been split into smaller files to +speed parallel compilation. + +C now checks that all generated +files are included in the tarball. + +The tests no longer assume that C<.> is in Perl's C<@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 C comments. + +C<@VAR@> subtitutions in C<./run> are now fully quoted. This is +necessary so that (eg) C<./configure PYTHON=/some/path> works robustly +if C contains characters that need to be quoted (Hilko +Bengen). + +gperf E 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. + +=head2 Internals + +The generator and mllib C modules are now shared from +the same source file. + +A considerable amount of common code has been moved into the F +directory in the source and is now compiled only once. The +mini-libraries located under here are: F, +F, F, F, +F, F, F, +F, F, F. + +The directory containing the main library code has moved from F → +F. + +All tests written in shell script now use a common file of utility +functions (F). There are several new utility +functions, mainly for skipping tests. Also these test scripts can now +use autoconf-like path variables like C<$abs_top_srcdir>. + +UEFI paths are now stored in the generator (F). + +The way the generator handles actions and procedure numbers was +changed quite substantially. See F and +F. + +The gnulib C module is now used everywhere when +needing/printing the program name (Pino Toscano). + +F is not translatable (Nikos Skalkotos). + +Virt-builder templates moved from F to +F and there is now a single unified program which +can build any template. + +All Windows registry utilities used by virt-customize and virt-v2v +have been moved to a common module called C under F. + +All POSIX bindings have been moved to a new module called +C under F. + +Inspection, virt-customize and virt-v2v no longer recompute the +Windows C<%systemroot%>, C or paths to the +C and C hives in multiple places. Instead +these are all computed once (during inspection) and passed to the +other tools through various C APIs. + +C is now available inside the appliance, so any tools we run +which require a pty will now work (Pino Toscano). + +Most OCaml warnings have been fixed. + +There is now a single common function for creating temporary +files (C) (Matteo Cafasso). + +The C<$TERM> environment variable is now validated before passing it +through to the appliance kernel command line. + +Useless USB and memballoon devices are no longer created in the +appliance (Laine Stump). + +On aarch64 we now use virtio-pci for the appliance. This is somewhat +faster than virtio-mmio. + +Use of L and L has been minimized. In +particular, temporary filenames are no longer created based on +randomness returned by L, but F is used +instead. + +=head2 Bugs fixed + +=begin comment + +https_proxy= ./bugs-in-changelog.sh v1.34.0.. + +=end comment + +=over 4 + +=item L + +typo error in virt-tail man page + +=item L + +virt-v2v: appliance runs out of memory running setfiles command + +=item L + +/usr/bin/x86_64-linux-gnu-ld.bfd.real: ../common/progress/.libs/libprogress.a(libprogress_la-progress.o): undefined reference to symbol 'UP@@NCURSES_TINFO_5.0.19991023' + +=item L + +*** No rule to make target '../perl/lib/Sys/Guestfs.c', needed by 'libguestfs.pot' + +=item L + +compile of 1.34.3 fails with gperf 3.1 + +=item L + +guestfs_canonical_device_name incorrectly returns /dev/sd0 for MD devices (/dev/md0) + +=item L + +guestfs_list_filesystems does not recognize ddf partitions + +=item L + +[Debian] ldmtool not installed in the appliance + +=item L + +qemu-kvm cannot boot RHEL 7 kernel with TCG, hangs at "Probing EDD (edd=off to disable)..." + +=item L + +RFE: virt-resize should support a URL as the outdisk + +=item L + +Importing VMs from VMware is failing with error "Inspection field 'i_arch' was 'unknown'" + +=item L + +RFE: Increate virt-sysprep coverage a bit + +=item L + +Add --vdsm-compat=1.1 flag for VDSM + +=item L + +typo error in man page + +=item L + +secrets from libvirt domains are not read + +=item L + +"--machine-readable" info should be updated in virt-v2v manual page + +=item L + +RFE: virt-p2v should support mnemonic operations + +=item L + +There is virt-v2v warning about during converting a guest which has listen type='none' in XML + +=item L + +virt-p2v manual should update the new dialog information + +=item L + +virt-v2v: -i ova: Permission denied when using libvirt and running as root + +=item L + +Can't install qxl driver for display device in win7 guest after converting to glance by virt-v2v + +=item L + +There is HTTP 404 error info when convert guest to glance by virt-v2v + +=item L + +selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success" + +=item L + +Process status is not normal in windows guest after converted from kvm to rhev by virt-v2v + +=item L + +Builder does not set hostname properly for Debian 8 (Jessie) + +=item L + +Improve OVA import compatibility + +=item L + +virt-manager coredump when vm with gluster image exists + +=item L + +Cannot import VMs from Xen and VMware when using RHEL7.3 host. + +=item L + +Missing bash completion scripts for: virt-diff guestunmount virt-copy-in virt-copy-out virt-customize virt-get-kernel virt-p2v-make-disk virt-p2v-make-kickstart virt-tar-in virt-tar-out virt-v2v-copy-to-local virt-win-reg + +=item L + +OVMF file which is built for rhel7.3 can't be used for virt-v2v uefi conversion + +=item L + +Converting rhel7 host installed on RAID:warning: fstrim: fstrim: /sysroot/: the discard operation is not supported + +=item L + +RFE: libvirt backend: support handling disks stored as volume name in a pool + +=item L + +Guest name is incorrect if convert guest from disk image by virt-v2v + +=item L + +RFE: virt-sysprep does not utilize libguestfs encryption support + +=item L + +virt-v2v conversions from vCenter do not consistently obey the proxy environment variables + +=item L + +warning: fstrim: fstrim: /sysroot/: FITRIM ioctl failed: Operation not supported (ignored) when convert win2003 guest from xen server + +=item L + +RFE: Only install RHEV-APT if virt-v2v -o rhev/-o vdsm option is used + +=item L + +virt-v2v failed to convert RHEL 6.7 UEFI guest: no grub1/grub-legacy or grub2 configuration file was found + +=item L + +[RFE] virt-v2v should support convert a guest to a dir-pool with using pool's uuid + +=item L + +libvirt reports json "backing file" is missing + +=item L + +firstboot scripts (virt-builder, virt-sysprep) don't work for Debian 6 & 7 guests + +=item L + +virt-v2v windows xp - machine dies BSOD - processr,sys - workaround provided + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.38.pod b/docs/guestfs-release-notes-1.38.pod new file mode 100644 index 000000000..308180e3c --- /dev/null +++ b/docs/guestfs-release-notes-1.38.pod @@ -0,0 +1,615 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.38 + +These release notes only cover the differences from the previous +stable/dev branch split (1.36.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +=head3 New tools + +Virt-builder-repository is a new tool allowing end users to create and +update virt-builder repositories (Cédric Bosdonnat). + +Virt-rescue (while not a new tool) has been substantially rewritten, +implementing job control, I<-m> and I<-i> options, escape keys, etc. + +=head3 New features in existing tools + +Virt-builder planner has been improved so that faster and more +efficient build plans are chosen for complex cases, especially when +either the tmpdir or output is on networked storage. + +New virt-builder Fedora templates (starting with Fedora 26) will have +plain partition layout and use GPT for partitions. + +Virt-customize "firstboot" scripts in guests using systemd are now +installed under the C instead of C +so they will only run when the system is booted normally. + +Virt-customize now sets a random F for Linux guests, +if one is not already set. + +Virt-df now works correctly on filesystems with block sizes smaller +than 1K (Nikolay Ivanets). + +Virt-dib has further compatibility enhancements with diskimage-builder +(Pino Toscano). + +Virt-sysprep removes C from F files. + +Virt-sysprep now works on Oracle Linux (Jamie Iles). + +Virt-resize now correctly copies GPT partition attributes from the +source to the destination (Cédric Bosdonnat). + +Bash tab completion implemented or enhanced for: virt-win-reg, +virt-v2v-copy-to-local. + +=head3 virt-v2v and virt-p2v + +Virt-v2v can now read VMware VMX files directly, either from local +disk, NFS storage, or over SSH from an ESXi hypervisor. + +Virt-v2v can now use VDDK as an input source. + +Both virt-v2v and virt-p2v are now able to pass through the source CPU +vendor, model and topology. However unfortunately not all source and +target hypervisors are able to provide or consume this data at +present (Tomáš Golembiovský). + +Virt-v2v now supports encrypted guests (Pino Toscano). + +Virt-v2v can now handle VMware snapshots. Note that the snapshots are +collapsed — it I convert the chain of snapshots into a chain +of snapshots. + +Virt-v2v now installs Windows 10 / Windows Server 2016 virtio block +drivers correctly (Pavel Butsykin, Kun Wei). + +Virt-v2v now installs virtio-rng, balloon and pvpanic drivers, and +correctly sets this in the target hypervisor metadata for hypervisors +which support that (Tomáš Golembiovský). + +Virt-v2v now installs both legacy and modern virtio keys in the +Windows registry (Ladi Prosek). + +Virt-p2v can now preserve (in some cases) the offset of the Real Time +Clock from UTC. + +Virt-p2v now combines several scp commands to the conversion server +into a single command, improving conversion times. + +Virt-v2v now detects the special Linux Xen PV-only kernels correctly +(Laszlo Ersek). + +Virt-v2v I<-o glance> now generates the right properties for UEFI +guests (Pino Toscano). + +Virt-v2v I<-o null> now avoids spooling the guest to a temporary file, +instead it writes to the qemu "null block device". This makes it +faster and use almost no disk space. + +Virt-v2v I<-o rhv> now supports Windows 2016 Server guest type. + +Virt-v2v I<-i libvirtxml> can now open network disks over http or +https. + +Virt-v2v will now give a warning about host passthrough devices (Pino +Toscano). + +The virt-v2v I<--machine-readable> output has been enhanced so it +includes C, C and C facts (Pino +Toscano). + +=head3 Language bindings + +Fix multiple memory leaks and other data corruption problems in the +Java bindings (Pino Toscano). + +Perl C<%guestfs_introspection> has been dropped. + +=head3 Inspection + +Inspection support was rewritten in OCaml and included inside the +daemon. This makes inspection considerably faster, more robust and +more easily extensible in future. + +Better icon support for ALT Linux guests (Pino Toscano). + +Better support for NeoKylin (Qingzheng Zhang). + +Can handle OSes like Void Linux which do not include C +in F (Pino Toscano). + +Add support for Microsoft MS-DOS (Daniel Berrangé). + +=head3 Architectures and platforms + +Multiple fixes for S/390 architecture. Libguestfs and all the tools +should now compile and run on this architecture. + +=head3 Other + +The libguestfs API is now thread-safe (although not parallel). You +can call APIs on the same handle from multiple threads without needing +to take a lock. + +=head2 Security + +There were multiple vulnerabilities in the icoutils C +program which is run by libguestfs to create icons for Windows guests. +Using the latest C is recommended. + +=head2 API + +=head3 New APIs + +=over 4 + +=item C + +This replaces the deprecated C API, but does the +same thing. + +=item C + +=item C + +Read and write GPT partition attribute flags (Cédric Bosdonnat). + +=item C + +Enlarge or shrink an existing partition (Nikos Skalkotos). + +=item C + +=item C + +=item C + +Support for the Yara malware scanning engine (Matteo Cafasso). + +=back + +=head3 Other API changes + +APIs implemented in the daemon can now be written in either C or +OCaml. Several APIs were rewritten in OCaml, although we are not +planning to rewrite all of them. + +You will now get a clear error message if you try to add too many +disks to the appliance, instead of getting a peculiar failure from +qemu. + +Certain APIs accidentally allowed you to use C as an +input "device", eg. C. The code has been modified to I this usage. + +All APIs for inspecting installer CDs have been deprecated. Use +libosinfo for this task. + +=head2 Build changes + +A working OCaml compiler E 4.01 is now required for building +libguestfs. The C<./configure --disable-ocaml> option remains but is +only used to disable the OCaml language bindings. + +Add C file which lists release dates for each version of +libguestfs. You must update this file when making a new release. + +Documentation generated by C has been removed. C<./configure +--enable-gtk-doc> now does nothing. + +Libtirpc is now used for XDR functions and rpcgen. Note that glibc +has deprecated and in most Linux distros dropped these, so for most +people this will be an extra dependency (Martin Kletzander). + +Libxcrypt is now used for L. This is required if using +glibc E 2.27. + +C is now required. + +Libvirt E 1.2.20 is now required. + +There is now a C target for tests which need to be +run as root (analogous to C). + +C<./configure>-time check for C<__attribute__((cleanup))> now works in +the cross-compilation case (Yann E. Morin). + +The C and C files are now generated from +a single place. + +Either GnuPG v1 or v2 can be used. + +C<./configure --with-guestfs-path> may be used to set the default +C. In addition the way that the path is searched has +changed slightly so that all types of appliances are searched in each +path element separately (Pavel Butsykin). + +C which was used to mark external commands in the +daemon has been removed. It was originally used by SUSE builds, but +they have not been using it for a while. + +The output from C<./configure> is now visually grouped under headings +related to what it is doing, making it much easier to scan (Pino +Toscano). + +OCaml dependencies are now generated from a single script instead of +multiple not-quite-the-same Makefile fragments. + +C<./configure --with-distro=ID> can be used to override automatic +Linux distro detection at build time (Pino Toscano). + +qemu E 2.10 is supported (but not required). This adds mandatory +locking to disks and libguestfs turns this off in certain +circumstances when it is known to be safe (Lars Seipel, Peter Krempa, +Daniel Berrangé, Pino Toscano, Fam Zheng, Yongkui Guo, Václav +Kadlčík). + +=head2 Internals + +Most common code has been moved to the F subdirectory, with +OCaml common code being in F directories (eg. +F and F contain the visitor library in C +and OCaml respectively). The F directory has been deleted and +replaced by F. + +There is now a lightweight OCaml binding for PCRE, see +F. Use of OCaml C library has been mostly +replaced with PCRE. + +Add more calls to C to improve stability of partition +code (Dawid Zamirski). + +Run C with I<--exit-if-exists> option, which improves the +speed of this command (Pavel Butsykin). + +Detect new locations of L, L, L. + +Actions can now be deprecated with no suggested replacement, for APIs +such as C that should simply be removed from +client code. + +Use gnulib C wrapper instead of calling +L with C (Eric Blake). Similarly +C. + +Fix memory leak in XFS version of C (Pino +Toscano). + +Valgrind checks now run on the virt-p2v binary. + +Unicode single quotes (C<‘’>) and now used in place of C<''> or C<`'> +throughout the code and documentation. Similarly for C<’s> instead of +C<'s>. + +The C function has been reimplemented for greater speed (Eric +Blake). + +In the direct backend, virtio-blk support has been removed. +Virtio-scsi is now the only supported way to add disks. + +Generator string parameter and return types have been rationalised so +there are only two types (C, C) with many subtypes +eg. C becomes C. + +The appliance disk image can now be in formats other than raw +(Pavel Butsykin). + +Multiple improvements to how we automatically build Debian templates +for virt-builder (Pino Toscano). Enable serial console for these +templates (Florian Klink). + +In the daemon, instead of making a private copy of lvm.conf and +modifying it (eg for filters), start with an empty file since LVM +understands that to mean "all defaults" (Alasdair Kergon, Zdenek +Kabelac). + +The C backend can now run QMP queries against the QEMU binary, +enhancing the kinds of information we can detect. In addition the +code to query QEMU has been made more robust for handling multiple +parallel queries of different versions of QEMU. + +OCaml Augeas bindings are bundled under F. The long +term plan is to remove this and use system ocaml-augeas when it is +more widely available in distros (Pino Toscano). + +All OCaml modules (C<*.ml> files) are now required to have an +interface file (C<*.mli>). If they don't export anything then the +interface will be empty except for comments. + +Certain OCaml features in OCaml E 4.01 are used throughout the +code, including replacing ‘{ field = field }’ with ‘{ field }’. + +Virt-builder C utility now uses the C option so that we should never need to clean up left over +domains after a crash. It also saves kickstarts and virt-install +commands, which are committed to git for future reference. + +F is now created in the appliance (Nicolas Hicher). + +In verbose mode on Fedora guests, virt-customize will now use C enabling better debugging output. + +Virt-v2v input and output classes now contain a C<#precheck> method +which is used to perform environmental checks before conversion +starts. + +Virt-p2v enables miniexpect debugging. It is written to stderr (of +virt-p2v). + +Virt-v2v free space checks are more liberal especially for smaller +guests (Pino Toscano). + +=head2 Bugs fixed + +=begin comment + +https_proxy= ./bugs-in-changelog.sh v1.36.0.. + +=end comment + +=over 4 + +=item L + +Example URI of "Convert from ESXi hypervisor over SSH to local libvirt" is incorrect in v2v man page + +=item L + +virt-customize segfaults after upgrading to 1.37.35-3 + +=item L + +Libguestfs Perl bindings can leak a small amount of memory on error + +=item L + +libguestfs Lua bindings use strerror(), which isn’t thread safe + +=item L + +man page makes no mention of using '--' when trying to change exit on error behavior + +=item L + +virt-df displays zeros for filesystems with block size =512 + +=item L + +v2v should improve the result when convert a rhel7.4 guest with no available kernels found in the bootloader + +=item L + +virt-v2v fails with "unsupported configuration: shared access for disk 'sdb' requires use of supported storage format" + +=item L + +Mere presence of QEMU file locking options breaks NBD (Block protocol 'nbd' doesn't support the option 'locking') + +=item L + +./configure --disable-ocaml breaks building common/mlpcre which breaks building daemon + +=item L + +[RFE]Should update some vddk info in v2v man page + +=item L + +virt-v2v: warning: ova disk has an unknown VMware controller type (20) + +=item L + +virt-v2v '-i ova' is not parsing the MAC address from the source OVF + +=item L + +virt-builder fails to parse repo file if it has blank space after the repository identifier + +=item L + +Failed to convert the rhel5 guest with kmod-xenpv installed from xen server by virt-v2v + +=item L + +qemu-kvm fails to open qcow2 files in read-only mode with qemu-kvm 1.5.3 + +=item L + +Error info shows wrong sometimes when ssh to conversion server using non-root user with sudo on p2v client + +=item L + +/dev/shm does not exist in the appliance environment + +=item L + +guestfish cannot list commands from interactive mode + +=item L + +Unbound constructor Hivex.OPEN_UNSAFE + +=item L + +bump debian images to use single-partition layout + +=item L + +virt-resize failed to expand swap partition for RHEL5.11 guest image with "parsing UUID failed" + +=item L + +Running file API on a special chardev may hang forever + +=item L + +inspect-os report error: could not parse integer in version number: V7Update2 + +=item L + +[RFE]Add warning in process of v2v converting guest which has pci passthrough device + +=item L + +virt-v2v fails on opensuse 13.2 guest with error: statns: statns_stub: path must start with a / character + +=item L + +firstboot scripts are not correctly installed in Fedora 26 + +=item L + +Libguestfs should pass copyonread flag through to the libvirt XML + +=item L + +1.36.x build failure: gtkdocize fails using newer autotools due to missing GTK_DOC_CHECK in configure.ac + +=item L + +guestfs_shutdown hangs if main process sets signal handlers + +=item L + +guestfs_add_domain_argv fails with readonly option when vdi/vhd disk is attached to libvirt domain + +=item L + +RFE: Virt-v2v can't convert the guest which has encrypted partition + +=item L + +document URI format for -a parameters of tools + +=item L + +RFE: Support multicore decompression for OVA files using pigz and pxz + +=item L + +Win 2016 guest is described as Win 10 after imported to RHEVM + +=item L + +RFE: ability to convert VMware virtual machines via vmx + +=item L + +Please drop or update GnuPG (1.4.x) dependency + +=item L + +[RFE] Install Windows virtio-rng drivers on VMs imported + +=item L + +virt-inspector can't get icon info from altlinux-centaurus + +=item L + +policycoreutils setfiles >= 2.6 does .. nothing + +=item L + +Windows 8 UEFI from VMware to KVM fails to boot after conversion + +=item L + +There is error info about "No such file or directory" when convert a guest from ova file by v2v + +=item L + +virt-dib should generate sha256 checksum instead of sha512 + +=item L + +RFE: OVMF should be detected on conversion server to prevent failed conversion + +=item L + +Should rename network name of rhv in virt-v2v man page + +=item L + +virt-sysprep should remove DHCP_HOSTNAME + +=item L + +QEMU image file locking (libguestfs) + +=item L + +[Debian] Missing db_dump abort inspection + +=item L + +Segmentation fault when reading corrupted path with Python 3 bindings + +=item L + +RFE: virt-p2v should support mnemonic operations + +=item L + +There is virt-v2v warning about during converting a guest which has listen type='none' in XML + +=item L + +qemu-system-s390x: -device isa-serial,chardev=charserial0,id=serial0: 'isa-serial' is not a valid device model name + +=item L + +selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success" + +=item L + +Missing bash completion scripts for: virt-diff guestunmount virt-copy-in virt-copy-out virt-customize virt-get-kernel virt-p2v-make-disk virt-p2v-make-kickstart virt-tar-in virt-tar-out virt-v2v-copy-to-local virt-win-reg + +=item L + +RFE: virt-sysprep does not utilize libguestfs encryption support + +=item L + +[RFE]virt-v2v failed to convert VMware ESX VM with snapshot + +=item L + +Modify a file in virt-rescue with vi on some linux terminal such as yakuake, can lead to abnormal display in virt-rescue shell + +=item L + +Remove "If reporting bugs, run virt-v2v with debugging enabled .." message when running virt-p2v + +=item L + +Can not end a running command in virt-rescue by press ^C or other keys, the only way is to exit virt-rescue + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.4.pod b/docs/guestfs-release-notes-1.4.pod new file mode 100644 index 000000000..19f8c4340 --- /dev/null +++ b/docs/guestfs-release-notes-1.4.pod @@ -0,0 +1,216 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.4 + +These release notes only cover the differences from the previous +stable/dev branch split (1.2.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + + - guestfish lets you choose a prepared disk image, eg: + guestfish -N fs:ext4 + + - Add write support to guestmount (FUSE) module. + + - virt-resize can now resize the content of partitions and logical + volumes in the guest, and we have better support for shrinking guests. + + - Bash tab-completion script for guestfish. + + - Add ZFS support to virt-rescue. + + - New tool 'virt-make-fs' for creating filesystems with content. + + - Allow suffixes on any guestfish number parameter, eg. "1M". + + - guestfish 'man' command opens the manual page. + + - guestfish supports a "heredoc" syntax for uploading files: + upload -<<_end_ /foo + content + _end_ + + - Some guestfish commands now print their output in octal or hex + where appropriate (RHBZ#583242). + + - Allow dash prefix on guestfish command line. This ignores any + error from the second command: (RHBZ#578407) + guestfish -- cmd1 : -cmd2 : cmd3 + + - guestfish -h / help command now returns an error for non-existent + commands (RHBZ#597145). + + - New 'supported' command in guestfish to list optional groups of + commands which are supported by the daemon / configuration. + + - virt-inspector and guestfish -i now work for filenames which + contain spaces (RHBZ#507810). + + - Change the protocol to use link-local addresses, to avoid + conflicting with any address that the host might be using + (RHBZ#588763). + + - libguestfs now sets the correct time and timezone on filesystem + modifications. + + - Sort the domains into alphabetical order in virt-df. + + - Make mkfs-b command work for FAT and NTFS by mapping the blocksize + parameter to the cluster size (RHBZ#599464). + + - Add version numbers to Perl modules (RHBZ#521674). + + - Localization now works for all the libguestfs tools (RHBZ#559963). + + - Tools now support filesystem-on-image VMs (RHBZ#590167). + + - virt-list-partitions has a '-t' option to show the total size of disks. + + - Include extra Augeas lenses in the supermin appliance (Matthew Booth). + + - Add error and close callbacks. + + - Add explicit close method in the Perl API. + + - Multiple fixes for RHEL 5 compatibility. + + - Multiple fixes for Debian/Ubuntu compatibility. + + - Multiple revisions to improve the documentation. + +=head2 Security + + - Fix a potential DoS in virt-inspector and virt-v2v if a specially + crafted disk image contained a char device in place of one of the + configuration files that we read under /etc (RHBZ#582484). + +=head2 New APIs + + - aug-clear - clear Augeas path + - available-all-groups - return a list of all optional groups + - base64-in - upload base64-encoded data to file + - base64-out - download file and encode as base64 + - checksum-device - compute checksums on the contents of a device + - checksums-out - compute checksums of multiple files in a directory + - debug-upload - upload a file to the appliance + - fallocate64 - preallocate a file in the guest filesystem + - fill-pattern - fill a file with a repeating pattern of bytes + - get-umask - get the current umask + - lvresize-free - expand an LV to fill free space + - ntfsresize - resize an NTFS filesystem + - ntfsresize-size - resize an NTFS filesystem (with size) + - part-del - delete a partition + - part-get-bootable - get the bootable flag of a partition + - part-get-mbr-id - get the MBR type byte of a partition + - part-set-mbr-id - set the MBR type byte of a partition + - pvresize-size - resize a physical volume (with size) + - pwrite - write to part of a file + - resize2fs-size - resize an ext2/3/4 filesystem (with size) + - txz-in - unpack compressed tarball to directory (RHBZ#580556) + - txz-out - pack directory into compressed tarball (RHBZ#580556) + - vfs-label - get the filesystem label + - vfs-uuid - get the filesystem UUID + - vgscan - rescan for LVM physical volumes, volume groups and logical volumes + - write - create a new file + - zero-device - write zeroes to an entire device + +=head2 Internals + + - Extend the generator to support testing optional features. + - Stricter checks on input parameters to many calls (RHBZ#501893 RHBZ#501894) + - Extend the protocol to support sending arbitrary 8 bit data buffers. + - Ship 'BUGS' file with releases. This is a summary of the bugs in + the Red Hat Bugzilla database. + - Ship 'RELEASE-NOTES' file with releases, containing release notes. + - Unify supermin appliance building into one place, in febootstrap 2.7. + - Fix the protocol code to handle the case where both ends send cancel + messages at the same time. + +=head2 Bugs fixed + + - 612178 guestfish: using -m option in conjunction with --listen option causes appliance to die + - 610880 libguestfs should set broader read perms on tmpdir, so works in some situations when executed with umask 077 + - 604691 OCaml bindings are not thread safe + - 603870 Updates to Spanish translation + - 602592 [RFE] expose guestfs_close in perl bindings + - 600977 virt-df -h --csv "Argument .. isn't numeric in printf" + - 599464 mkfs-b does not support vfat/ntfs + - 598807 add_cdrom does not work in RHEL 6 + - 598309 part-list and several other cmd failed on libguestfs on RHEL5 + - 597145 guestfish 'help' command should indicate error in exit status with an unknown command + - 597135 guestfish write-file cmd does not check "size" parameter + - 597118 A warning should be given in the help of mke2journal-L for the length of label + - 597112 get-e2uuid should use blkid instead of "tune2fs -l" to get filesystem UUID + - 596776 virt-inspector doesn't discover modprobe aliases on RHEL 3 guests + - 596763 Updates to Spanish translation + - 593292 Updates to Spanish translation + - 592883 can not edit files on images mounted with guestmount cmd + - 592360 Updates to Spanish translation + - 591250 virt-tar prints "tar_in: tar subcommand failed on directory" if the archive is compressed or not in the right format + - 591155 virt-tar prints "tar_in: tar subcommand failed on directory" if a disk image is not writable + - 591142 virt-inspector should give an error for unrecognized disk images + - 590167 virt-inspector and other virt tools should be able to handle filesystem-on-image VMs + - 589039 guestfish read-file cmd will cause daemon hang when read large files + - 588851 guestfs_launch() returns -1, but guestfs_last_error() == NULL + - 588763 libguestfs should use non-public or link-local addresses for appliance network + - 588733 Updates to Spanish translation + - 588651 guestfish 'strings-e' cmd does not give proper error message or hint + - 587484 lvresize can't reduce size of a volumn + - 585961 Updates to Spanish translation + - 585223 ntfsresize should support shrinking filesystems + - 585222 pvresize should support shrinking PVs + - 585221 resize2fs should support shrinking filesystems + - 584038 Updates to Spanish translation + - 583554 [FEAT] mknod-mode command is needed to set mode explicitly + - 583242 [RFE] guestfish should print outputs in a suitable base (eg. octal for modes) + - 582993 guestfish eats words when tab completing case (in)sensitive paths + - 582953 Misleading help information about lvcreate command + - 582948 mknod command doesn't make block, character or FIFO devices + - 582929 mknod doesn't check for invalid mode + - 582901 guestfish chmod/umask commands do not check invalid mode value + - 582899 guestfish:sparse is missed from command autocomplete list + - 582891 [Feature Request] behavior and return value of guestfish umask cmd should be changed + - 582548 [mknod] umask shouldn't take effect when mode is set explicitly + - 582484 some guestfish sub commands can not handle special files properly + - 582252 Updates to Spanish translation + - 581501 Updates to Spanish translation + - 580650 virt-inspector warns "No grub default specified at /usr/lib/perl5/Sys/Guestfs/Lib.pm at [...]" + - 580556 request for libguestfs to support .txz tarballs + - 580246 tar-in command hangs if uploading more than available space + - 580016 aug-ls in guestfish does not take augeas variable as argument + - 579664 guestfish doesn't report error when there is not enough space for image allocation + - 579608 multiple commands in guestfish can not work for symbol links + - 579155 libguestfs hangs if qemu doesn't start (in null vmchannel mode) + - 578407 the prefix '-' in sub-command isn't handled by guestfish in remote control mode + - 576879 libguestfs protocol loses synchronization if you 'upload' before mounting disks + - 559963 libguestfs Perl programs do set locale, but still localization doesn't work + - 521674 Perl modules are unversioned, but should carry version numbers + - 516096 Race condition in test_swapon_label_0: /sbin/blockdev: BLKRRPART: Device or resource busy + - 507810 guestfish -i / virt-inspector cannot handle spaces in filenames + - 502533 Updated Polish translation of libguestfs + - 501894 Some String parameters should be OptString + - 501893 String parameters should be checked for != NULL + - 501889 write-file does not support strings containing ASCII NUL + - 484986 grub-install fails on virtio disk + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.40.pod b/docs/guestfs-release-notes-1.40.pod new file mode 100644 index 000000000..c119340ff --- /dev/null +++ b/docs/guestfs-release-notes-1.40.pod @@ -0,0 +1,406 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.40 + +These release notes only cover the differences from the previous +stable/dev branch split (1.38.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + +=head3 New features in existing tools + +Virt-inspector now displays the libosinfo short ID for guests +(Pino Toscano). + +Guestfish I<-N> will now generate 1G disks instead of 100M disks by +default. + +Virt-resize supports f2fs filesystems (Pino Toscano). + +libguestfs-test-tool now supports bash tab completion +(Pino Toscano). + +The I<--machine-readable> option now supports sending output to files +or stdout/stderr. This works uniformly across most OCaml-based virt +tools, specifically: virt-builder, virt-builder-repository, virt-dib, +virt-get-kernel, virt-resize, virt-sparsify, and virt-v2v (Pino +Toscano). + +Virt-builder I<--uninstall> option now works on SUSE +(Sebastian Meyer). + +Virt-builder now supports Windows. We are not able to ship Windows +templates in the public respository for obvious licensing reasons, but +if you are an MSDN subscriber you may build your own. See +L + +Many tools now support a I<--key> option allowing you to pass in +decryption keys for filesystems stored in local files on the host +rather than having to feed them in over stdin (Pino Toscano). + +=head3 virt-v2v and virt-p2v + +New I<-o rhv-upload> mode for directly uploading images to RHV, +bypassing the Export Storage Domain (Tomáš Golembiovský, Nir Soffer, +Daniel Erez, Pino Toscano). + +New I<-o openstack> mode for directly uploading images to OpenStack +and Cinder using OpenStack APIs. + +Virt-v2v now has a general mechanism for input and output options: +I<-io> and I<-oo>. + +Virt-v2v can now install the RHV tools or QEMU GA in guests +(Tomáš Golembiovský). + +The huge manual has now been split into several smaller documents and +is more focused on helping users to accomplish specific v2v tasks. + +Multiple improvements to the OVF metadata when converting to RHV +(Tomáš Golembiovský, Pino Toscano, Arik Hadas). + +Virt-v2v can now convert Linux guests with split kernel packages, +especially Ubuntu 18.04 (Pino Toscano). + +Virt-v2v old I<--password-file> option has been replaced by I<-ip> +(the old option remains for backwards compatibility). + +Virt-v2v now preserves the VM Generation ID. + +Virt-v2v has a new I<--mac> option allowing specific NICs to be mapped +precisely to networks or bridges on the target. + +New virt-v2v I<--print-estimate> option to estimate the size of data +that virt-v2v will copy. + +Virt-v2v is now usually able to remove open-vm-tools and VMware Tools +from the Linux guest during conversion (Pino Toscano). + +Virt-v2v can now support UEFI conversions to RHV (Tomáš Golembiovský). + +Virt-p2v now prefers you to shut down instead of rebooting the machine +after conversion has finished (Pino Toscano). + +Virt-v2v now writes the libosinfo short ID to the libvirt metadata +when using I<-o local> and I<-o libvirt> output modes +(Martin Kletzander). + +=head3 Language bindings + +OpenJDK 10+ is supported (Pino Toscano). + +Java bindings fixed for Gentoo host (Martin Kletzander). + +=head3 Inspection + +Support Kali Linux (Pino Toscano). + +When inspecting mountpoints, look for F as well +as F (Nikolay Ivanets). + +Improved support for OpenSUSE Tumbleweed (Pino Toscano). + +=head3 Architectures and platforms + +Miscellaneous macOS build fixes (Adam Robinson). + +=head3 Other + +Multiple documentation typos fixed (Yuri Chornoivan). + +=head2 Security + +See also L. + +=head3 CVE-2018-11806 + +Qemu's slirp (userspace networking) had several buffer overflows which +could be triggered from the guest or network side. + +=head2 API + +=head3 New APIs + +=over 4 + +=item C + +Expand an f2fs filesystem (Pino Toscano). + +=item C + +Get the libosinfo short ID for the inspected guest (Pino Toscano). + +=item C + +This rescans all PVs, VGs and LVs, optionally activating them. + +=back + +=head3 Other API changes + +C was reimplemented in OCaml +(Nikolay Ivanets). + +C now filters out MBR extended partitions +(Nikolay Ivanets). + +C has been deprecated. Use the new C API in +preference. + +=head2 Build changes + +The JSON library switched from yajl to Jansson E 2.7 (Pino Toscano). + +Support for The Sleuth Kit 4.5 (Pino Toscano). + +Multiple improvements in the C<./configure> script (Lin Ma). + +More out-of-tree build fixes (Hilko Bengen). + +Some work on reproducible builds (Bernhard M. Wiedemann). + +=head2 Internals + +lvmetad is now used unconditionally, and is started much earlier in +the appliance boot process. This fixes support for certain PV types. + +On Debian, dash is installed inside the appliance and in virt-rescue +(Pino Toscano). + +The amount of RAM assigned to the appliance has been increased from +500M to 768M (on x86_64, other architectures have different limits). +This enables use of up to 255 disks when using recent Linux kernels. + +Virt-v2v now models the source machine type (eg. i440FX, Q35 or virt). + +Virt-p2v now generates configuration code automatically, also code for +parsing the kernel command line. + +Use C instead of C. + +The OCaml C code for parsing and serializing has been unified +into a single abstract data type. + +Most OCaml tools are now built using the PIC runtime. This has a +performance penalty on i686, but is relatively free on other +architectures and has security benefits. + +The direct backend now queries the qemu binary for availability of +KVM, instead of using a heuristic based on F (Andrea +Bolognani). + +Our "clever" libxml2 writer macros are now used consistently across +all parts of the code base. + +Qemu dropped I<-nodefconfig> without telling us. The equivalent +I<-no-user-config> option is now used instead. Qemu also moved the +C option from I<-drive> to I<-device>, again without any +notice, and this is also fixed. + +=head2 Bugs fixed + +=begin comment + +https_proxy= ./bugs-in-changelog.sh v1.38.0.. + +=end comment + +=over 4 + +=item L + +[RHEL 7.6 LP] openstack output leaks passwords + +=item L + +virt-inspector fails with "error: int_of_string" on a Linux image when /etc/fstab contains a partionless device + +=item L + +v2v - support for -insecure option to support OSP SSL connection for VM migrations + +=item L + +[RFE] virt-p2v UI should give the option to shutdown after conversion is finished + +=item L + +virt-v2v cannot convert opensuse15 guest + +=item L + +Fix rhev-apt command that virt-v2v runs in Windows guests on first boot + +=item L + +Update v2v docs to describe support for SHA 2 certs required for converting Windows 7 and 2008 R2 guests + +=item L + +Minor log issue of virt-v2v + +=item L + +VixDiskLib: VixDiskLib_Read: Read 4096 sectors at 57516160 failed. Error 2 (Memory allocation failed. Out of memory.) (DiskLib error 802: NBD_ERR_INSUFFICIENT_RESOURCES) at 5240. + +=item L + +"warning: was ignored because the device name could not be recognized" should be hidden since convert cdrom is supported by virt-v2v + +=item L + +part_to_dev "/dev/sdp1" returns "/dev/sd" instead of "/dev/sdp" + +=item L + +inspection fails when swap partition in /etc/fstab has incorrect UUID compared to actual swap partition + +=item L + +On machines where /dev/kvm exists but KVM doesn't work, libguestfs will not fall back to TCG + +=item L + +virt-inspector can't inspect LUKS-encrypted RHEL7 guest image + +=item L + +Improve error "No module named ovirtsdk4" in v2v rhv-upload conversion + +=item L + +Adding QXL device in OVF causes Cirrus Logic device to be added to guest + +=item L + +RFE: virt-v2v should preserve + +=item L + +Transfer fails if local host is in maintenance mode + +=item L + +Transfer fails if local host belongs to another DC + +=item L + +v2v to RHV transfer fails with: error: [empty name]: cannot read '//*/disksection' with value: null + +=item L + +virt-v2v convert rhel5.3 failure when executing rpm -ql kernel-2.6.18-128.el5 command + +=item L + +p2v: error: XML error: CPU vendor specified without CPU model + +=item L + +Hide rhv-upload option in virt-p2v client + +=item L + +Don't use relative socket paths for NBD + +=item L + +RFE: Support for -o rhv-upload via Unix domain socket + +=item L + +ovirt-imageio-daemon times out during migration + +=item L + +virt-v2v rhel7.6 build can't convert guest to null with qemu-kvm rhel7.5.z build + +=item L + +Virt-v2v rhel7.6 build can't convert guest with qemu-kvm rhel7.5.z build + +=item L + +virt-builder: ubuntu-18.04 template has stray HTTP proxy configured for apt + +=item L + +virt-builder: error: host cpu (x86_64) and guest arch (unknown) are not compatible + +=item L + +virt-v2v -i ova gives checksum error when missing files are mentioned in .mf + +=item L + +guestfsd: error: /Windows/Drivers/VirtIO: Read-only file system + +=item L + +The mount-vfs failed to mount the logical volume + +=item L + +RHV tools not properly installed in migrated Windows VM's causing boot failure + +=item L + +virt-v2v does not honor --network with -o rhv-upload + +=item L + +[RFE] Upload images directly to oVirt (virt-v2v -o rhv-upload) + +=item L + +[RFE] Add libosinfo short-id to virt-inspector output + +=item L + +virt-inspector --help differs from manpage + +=item L + +RFE: recognize the Kali Linux distribution + +=item L + +Resume=/dev/sdaX can't be updated to resume=/dev/vdaX in rhel7 guest's grub file after v2v conversion + +=item L + +Change categories of "Guest Operating system management by VIX API" in v2v man page + +=item L + +Various -it vddk -io vddk* options should be documented, removed or fixed + +=item L + +B +RFE: Allow qemu-bridge-helper to be used to implement guestfs_set_network + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.42.pod b/docs/guestfs-release-notes-1.42.pod new file mode 100644 index 000000000..8571c9875 --- /dev/null +++ b/docs/guestfs-release-notes-1.42.pod @@ -0,0 +1,41 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=begin comment + +UPDATED TO + +=end comment + +=begin html + + + +=end html + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.42 + +I + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.6.pod b/docs/guestfs-release-notes-1.6.pod new file mode 100644 index 000000000..bd7683c9c --- /dev/null +++ b/docs/guestfs-release-notes-1.6.pod @@ -0,0 +1,187 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.6 + +These release notes only cover the differences from the previous +stable/dev branch split (1.4.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + + - Use a new method for creating and caching the appliance. This + greatly improves the performance of libguestfs, often by a factor + of x 4 to x 5. + + - Support for guest inspection (like virt-inspector) via the ordinary + API and all language bindings. 'guestfish -i' option is as a side- + effect much quicker. + + - virt-inspector and core inspection API can now detect guests running: + Fedora, Debian, Ubuntu, Windows, Red Hat Enterprise Linux, CentOS, + Scientific Linux, Gentoo, Pardus, Arch Linux, MeeGo. + + - Support for LUKS whole-disk encryption in guests. + + - PHP bindings. + + - Progress messages (and progress bars in guestfish and virt-resize) + for certain long-running operations. + + - virt-df is now much more efficient. Use '--one-per-guest' to restore + the old per-guest isolation behaviour. + + - guestfish 'copy-in' and 'copy-out' commands for copying files and + directories recursively in and out of the guest. + + - guestfish 'hexedit' command for doing binary edits to devices and + files. + + - Change guestfish -i syntax to allow commands to be specified on the + command line (retaining backwards compatibility). + + - guestfish '-d ' for adding disks from libvirt domains. + + - guestfish '-N' option supports several new prepared disk image types: + lvfs : disk with LV formatted with filesystem + lv : disk with LV + bootroot : boot+root + bootrootlv : boot and root on LV + + - guestfish 'more' and 'edit' commands now work with arbitrary files. + + - guestfish '--echo-keys' option allows you to echo keys/passphrases + while typing them. + + - guestmount now supports -a / -d / -i options, like guestfish. + + - Use virtio-serial for communications with the appliance. This + also has a major performance benefit. + + - virt-edit '-b' option to create a backup of edited files. + + - virt-edit '-e' option for non-interactive edits to files. + + - Ability to capture core dumps from the appliance (thanks Matthew Booth). + + - virt-rescue now shuts down cleanly (thanks Matthew Booth). + + - virt-rescue now has a --network option to enable network access. + + - virt-resize can now handle guests which use GPT partition table format. + + - virt-resize has better support for shrinking guests. + + - virt-resize supports qcow2-format guests. + + - $TMPDIR can be used to override almost all temporary directory usage. + + - OCaml users can use an alternate OO-style of coding, eg. g#launch () + + - The API supports calls which take optional parameters, eg. + $g->add_drive_opts ("disk", readonly => 1); + + - Trace output now escapes and shortens large strings (thanks + Matthew Booth). + + - Autosync is now on by default, resulting in more reliable behaviour + when the handle is closed. + + - virt-df --uuid option allows you to follow a domain across migration + and renaming. + + - Translations of manual pages. + +=head2 Security + + - CVE-2010-3851 libguestfs: missing disk format specifier when adding a disk + https://www.redhat.com/archives/libguestfs/2010-October/msg00036.html + This is comprehensively fixed in this release, and the fix will be + backported to the other stable branches after more testing. + + - virt-inspector no longer relies on untrusted guest code to list + applications in some guests. + +=head2 New APIs + + download-offset, file-architecture, findfs-label, findfs-uuid, + inspect-os, inspect-get-arch, inspect-get-distro, + inspect-get-filesystems, inspect-get-major-version, + inspect-get-minor-version, inspect-get-mountpoints, + inspect-get-product-name, inspect-get-type, is-blockdev, is-chardev, + is-fifo, is-lv, is-socket, is-symlink, list-filesystems, luks-add-key, + luks-close, luks-format, luks-format-cipher, luks-kill-slot, + luks-open, luks-open-ro, lvm-clear-filter, lvm-canonical-lv-name, + lvm-set-filter, part-to-dev, pread-device, pwrite-device, + upload-offset + +=head2 Internals + + - Use size_t for loop iterators. + - Refactor the library code into separate files. + - Refactor the generator code into separate files. + - Generate guestfish commands. + - guestfish & guestmount options processing is unified. + - Protocol changes: + error message size increased to 64K + send errno to library + - Add 'make bindist' to make a binary distribution. + - Cleaner behaviour under valgrind. + - More testing of the guestfish command line options and libvirt + integration. + - The Perl inspection code is no longer used by any of the tools. + +=head2 Bugs fixed + + - 646822 libguestfs trace mode should not print long binary strings + - 646821 virt-df should have --uuid option + - 646432 /dev/mapper paths should not be returned from guestfs_mountpoints + - 643624 libguestfs tools documentation should describe how to quote guest domain names from shell + - 642934 No way to specify disk format when adding a disk to libguestfs + - 642933 guestfs_list_filesystems should be used in all possible places + - 642932 guestmount options should match guestfish options + - 642930 virt-inspector (Sys::Guestfs::Lib) should use C inspection APIs + - 642929 C inspection code should ignore /dev/fd* in /etc/fstab + - 642826 virt-resize converts any other image format to raw without notifying user, instructions do not account for this + - 640961 Document that grub-install might be needed for old Linux guests after virt-resize + - 639986 virt-df --csv does not properly quote " in libvirt domain names + - 639405 Interrupted cached appliance creation leaves libguestfs unusable + - 638901 Appliance filename should not contain repository name + - 638899 /dev/mapper paths should not be returned from C inspection APIs + - 636918 Updates to Spanish translation + - 636061 [abrt] guestfish-1.2.11-1.fc12: malloc_consolidate: Process /usr/bin/guestfish was killed by signal 11 (SIGSEGV) + - 635969 glob echo mkfs ext2 /dev/vd[b-t]1 prints garbage + - 634246 guestfs_part_get_parttype returns "loop" when run against a partition, LV or filesystem + - 633766 virt-resize --shrink fails + - 633357 Updates to Spanish translation + - 633096 virt-resize calculates block device size incorrectly, doesn't work with qcow2 target + - 629593 Dutch translation added + - 627556 Updates to Spanish translations of libguestfs + - 626843 Updates to Spanish translations + - 619793 [RFE] Need a way to determine if a particular block device is a logical volume + - 618556 virt-rescue return none zero value when exit + - 617200 mount operation failed and hung on some images which running in read-only mode + - 610880 libguestfs should set broader read perms on tmpdir, so works in some situations when executed with umask 077 + - 599503 document that mkmountpoint and umount-all cannot be mixed + - 571714 Running virt-df on disk image relabels it, so qemu can no longer write to it. + - 502533 Updated Polish translation of libguestfs + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-1.8.pod b/docs/guestfs-release-notes-1.8.pod new file mode 100644 index 000000000..680a0a5fb --- /dev/null +++ b/docs/guestfs-release-notes-1.8.pod @@ -0,0 +1,162 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR LIBGUESTFS 1.8 + +These release notes only cover the differences from the previous +stable/dev branch split (1.6.0). For detailed changelogs, please see +the git repository, or the ChangeLog file distributed in the tarball. + +=head2 New features + + - Support and packages for Debian and Ubuntu. + + - Daily builds from git repository on Debian and Ubuntu to reduce risk + of regressions. + + - Port to ArchLinux 'pacman' (thanks Thomas S Hatch). + + - The following tools have been rewritten in C (originally in Perl): + + . virt-cat + . virt-df + . virt-inspector + . virt-ls + . virt-rescue + + - Some C tools support encrypted guests automatically. This is + supported in: guestfish, guestmount, virt-cat, virt-inspector, + virt-ls. + + - New tool virt-filesystems (in C) which is a replacement for + virt-list-filesystems and virt-list-partitions, and has a superset + of the functionality of those tools. + + - guestfish, guestmount and the C tools use unified command line option + parsing, so they support many common options such as '-a disk.img', + '-d libvirt-domain', '-x', '-v'. The old command line option + parsing is preserved for compatibility in scripts etc. + + - guestfish no longer has any dependencies on Perl + + - New man pages containing programming examples: guestfs-examples(3) (C/C++), + guestfs-ocaml(3), guestfs-python(3), guestfs-ruby(3). + + - Trace mode prints return values from API functions. + + - virt-inspector can list applications installed in Windows guests, along + with a great deal of information about those applications. + + - Add support for inspecting: Linux Mint, Mandriva, FreeBSD. + + - guestfish --rw option (with no effect currently) to make potentially + dangerous write access explicit. + + - guestfish --listen --csh for compatibility with csh, tcsh (thanks + Eric Blake). + + - The first upstream version that introduced each API function is now + documented in guestfs(3). + + - guestfs_last_errno allows you to retrieve the errno from the + daemon, correctly translated to the local operating system. + + - Functions can now have optional parameters. + + - Progress bars and progress notifications can now happen for upload + commands. + + - Appliance builder more careful about not leaving temporary files + around in /tmp. + + - getfattr/setfattr commands added to virt-rescue. + + - ROADMAP file covers roadmap and goals for future releases. + +=head2 Security + + - New SECURITY section in guestfs(3) API documentation. + + - virt-inspector no longer runs any guest commands. + + - Inspection code is more careful about avoiding very large files + from guests which might previously have caused a denial of service. + + - FUSE calls into guestmount are now traced when using guestmount -x. + +=head2 New APIs + + - add-domain + - add-drive-opts + - getxattr + - inspect-get-hostname + - inspect-get-package-format + - inspect-get-package-management + - inspect-get-roots + - inspect-list-applications + - lgetxattr + - mkfs-opts + +=head2 Internals + + - C programs now only link precisely with the libraries that they use. + + - PCRE, libmagic, hivex and libvirt libraries are now completely + optional for building. + + - Multiple memory leaks and file descriptor leaks fixed. + + - Add a POD wrapper to unify generation of man pages and HTML files + across all programs. + + - Source includes phony images of Fedora, Debian, Ubuntu and + Windows guests. + + - Ruby bindings have 'make install' rule. + + - is now a single file. + + - does not require XDR headers. + + - ocaml xml-light library is no longer required to build (thanks + Maxim Koltsov). + + - ./configure --disable-[...] for each language binding (thanks + Maxim Koltsov). + + - Old ocaml-viewer program removed (use guestfs-browser instead). + + - New C API test type 'InitScratchFS' makes the tests run a little + more quickly. + + - Excluded packages in the appliance are now listed in a separate + file appliance/excludelist.in, and can be customized per-distro. + +=head2 Bugs fixed + + - 663407 readlink and readlinklist returns /sysroot/ in some paths + - 661280 virt-rescue: panic when shutting down: "/sbin/reboot: No such file or directory" + - 657499 checksum: wrong check sum type causes umount to fail + - 655554 Whole disk paths are not made canonical by virt-inspector + - 654638 openssl updated to 1.0.0b libguestfs depends on exact file names + - 652796 ruby bindings not installed by 'make install', hence omitted from the binary distribution + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes-historical.pod b/docs/guestfs-release-notes-historical.pod new file mode 100644 index 000000000..d69b4e6c3 --- /dev/null +++ b/docs/guestfs-release-notes-historical.pod @@ -0,0 +1,52 @@ +=head1 NAME + +guestfs-release-notes - libguestfs Release Notes + +=head1 RELEASE NOTES FOR HISTORICAL VERSIONS OF LIBGUESTFS + +Before 2010 libguestfs did not have official release notes or a +formalized version numbering system. However these are links to +historically significant versions. + +=over 4 + +=item 2009-11-10 (1.0.78) + +L + +=item 2009-09-13 (1.0.67) + +L + +=item 2009-07-23 (1.0.64) + +L + +=item 2009-07-14 (1.0.59) + +L + +=item 2009-04-01 (the initial announcement) + +L + +=back + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L, +L + +=head1 AUTHOR + +Richard W.M. Jones + +=head1 COPYRIGHT + +Copyright (C) 2009-2019 Red Hat Inc. diff --git a/docs/guestfs-release-notes.pod b/docs/guestfs-release-notes.pod deleted file mode 100644 index 5b99c8273..000000000 --- a/docs/guestfs-release-notes.pod +++ /dev/null @@ -1,7064 +0,0 @@ -=head1 NAME - -guestfs-release-notes - libguestfs Release Notes - -=begin comment - -UPDATED TO - -=end comment - -=begin comment - - - -=end comment - -=head1 RELEASE NOTES FOR LIBGUESTFS 1.40 - -These release notes only cover the differences from the previous -stable/dev branch split (1.38.0). For detailed changelogs, please see -the git repository, or the ChangeLog file distributed in the tarball. - -=head2 New features - -=head3 New features in existing tools - -Virt-inspector now displays the libosinfo short ID for guests -(Pino Toscano). - -Guestfish I<-N> will now generate 1G disks instead of 100M disks by -default. - -Virt-resize supports f2fs filesystems (Pino Toscano). - -libguestfs-test-tool now supports bash tab completion -(Pino Toscano). - -The I<--machine-readable> option now supports sending output to files -or stdout/stderr. This works uniformly across most OCaml-based virt -tools, specifically: virt-builder, virt-builder-repository, virt-dib, -virt-get-kernel, virt-resize, virt-sparsify, and virt-v2v (Pino -Toscano). - -Virt-builder I<--uninstall> option now works on SUSE -(Sebastian Meyer). - -Virt-builder now supports Windows. We are not able to ship Windows -templates in the public respository for obvious licensing reasons, but -if you are an MSDN subscriber you may build your own. See -L - -Many tools now support a I<--key> option allowing you to pass in -decryption keys for filesystems stored in local files on the host -rather than having to feed them in over stdin (Pino Toscano). - -=head3 virt-v2v and virt-p2v - -New I<-o rhv-upload> mode for directly uploading images to RHV, -bypassing the Export Storage Domain (Tomáš Golembiovský, Nir Soffer, -Daniel Erez, Pino Toscano). - -New I<-o openstack> mode for directly uploading images to OpenStack -and Cinder using OpenStack APIs. - -Virt-v2v now has a general mechanism for input and output options: -I<-io> and I<-oo>. - -Virt-v2v can now install the RHV tools or QEMU GA in guests -(Tomáš Golembiovský). - -The huge manual has now been split into several smaller documents and -is more focused on helping users to accomplish specific v2v tasks. - -Multiple improvements to the OVF metadata when converting to RHV -(Tomáš Golembiovský, Pino Toscano, Arik Hadas). - -Virt-v2v can now convert Linux guests with split kernel packages, -especially Ubuntu 18.04 (Pino Toscano). - -Virt-v2v old I<--password-file> option has been replaced by I<-ip> -(the old option remains for backwards compatibility). - -Virt-v2v now preserves the VM Generation ID. - -Virt-v2v has a new I<--mac> option allowing specific NICs to be mapped -precisely to networks or bridges on the target. - -New virt-v2v I<--print-estimate> option to estimate the size of data -that virt-v2v will copy. - -Virt-v2v is now usually able to remove open-vm-tools and VMware Tools -from the Linux guest during conversion (Pino Toscano). - -Virt-v2v can now support UEFI conversions to RHV (Tomáš Golembiovský). - -Virt-p2v now prefers you to shut down instead of rebooting the machine -after conversion has finished (Pino Toscano). - -Virt-v2v now writes the libosinfo short ID to the libvirt metadata -when using I<-o local> and I<-o libvirt> output modes -(Martin Kletzander). - -=head3 Language bindings - -OpenJDK 10+ is supported (Pino Toscano). - -Java bindings fixed for Gentoo host (Martin Kletzander). - -=head3 Inspection - -Support Kali Linux (Pino Toscano). - -When inspecting mountpoints, look for F as well -as F (Nikolay Ivanets). - -Improved support for OpenSUSE Tumbleweed (Pino Toscano). - -=head3 Architectures and platforms - -Miscellaneous macOS build fixes (Adam Robinson). - -=head3 Other - -Multiple documentation typos fixed (Yuri Chornoivan). - -=head2 Security - -See also L. - -=head3 CVE-2018-11806 - -Qemu's slirp (userspace networking) had several buffer overflows which -could be triggered from the guest or network side. - -=head2 API - -=head3 New APIs - -=over 4 - -=item C - -Expand an f2fs filesystem (Pino Toscano). - -=item C - -Get the libosinfo short ID for the inspected guest (Pino Toscano). - -=item C - -This rescans all PVs, VGs and LVs, optionally activating them. - -=back - -=head3 Other API changes - -C was reimplemented in OCaml -(Nikolay Ivanets). - -C now filters out MBR extended partitions -(Nikolay Ivanets). - -C has been deprecated. Use the new C API in -preference. - -=head2 Build changes - -The JSON library switched from yajl to Jansson E 2.7 (Pino Toscano). - -Support for The Sleuth Kit 4.5 (Pino Toscano). - -Multiple improvements in the C<./configure> script (Lin Ma). - -More out-of-tree build fixes (Hilko Bengen). - -Some work on reproducible builds (Bernhard M. Wiedemann). - -=head2 Internals - -lvmetad is now used unconditionally, and is started much earlier in -the appliance boot process. This fixes support for certain PV types. - -On Debian, dash is installed inside the appliance and in virt-rescue -(Pino Toscano). - -The amount of RAM assigned to the appliance has been increased from -500M to 768M (on x86_64, other architectures have different limits). -This enables use of up to 255 disks when using recent Linux kernels. - -Virt-v2v now models the source machine type (eg. i440FX, Q35 or virt). - -Virt-p2v now generates configuration code automatically, also code for -parsing the kernel command line. - -Use C instead of C. - -The OCaml C code for parsing and serializing has been unified -into a single abstract data type. - -Most OCaml tools are now built using the PIC runtime. This has a -performance penalty on i686, but is relatively free on other -architectures and has security benefits. - -The direct backend now queries the qemu binary for availability of -KVM, instead of using a heuristic based on F (Andrea -Bolognani). - -Our "clever" libxml2 writer macros are now used consistently across -all parts of the code base. - -Qemu dropped I<-nodefconfig> without telling us. The equivalent -I<-no-user-config> option is now used instead. Qemu also moved the -C option from I<-drive> to I<-device>, again without any -notice, and this is also fixed. - -=head2 Bugs fixed - -=begin comment - -https_proxy= ./bugs-in-changelog.sh v1.38.0.. - -=end comment - -=over 4 - -=item L - -[RHEL 7.6 LP] openstack output leaks passwords - -=item L - -virt-inspector fails with "error: int_of_string" on a Linux image when /etc/fstab contains a partionless device - -=item L - -v2v - support for -insecure option to support OSP SSL connection for VM migrations - -=item L - -[RFE] virt-p2v UI should give the option to shutdown after conversion is finished - -=item L - -virt-v2v cannot convert opensuse15 guest - -=item L - -Fix rhev-apt command that virt-v2v runs in Windows guests on first boot - -=item L - -Update v2v docs to describe support for SHA 2 certs required for converting Windows 7 and 2008 R2 guests - -=item L - -Minor log issue of virt-v2v - -=item L - -VixDiskLib: VixDiskLib_Read: Read 4096 sectors at 57516160 failed. Error 2 (Memory allocation failed. Out of memory.) (DiskLib error 802: NBD_ERR_INSUFFICIENT_RESOURCES) at 5240. - -=item L - -"warning: was ignored because the device name could not be recognized" should be hidden since convert cdrom is supported by virt-v2v - -=item L - -part_to_dev "/dev/sdp1" returns "/dev/sd" instead of "/dev/sdp" - -=item L - -inspection fails when swap partition in /etc/fstab has incorrect UUID compared to actual swap partition - -=item L - -On machines where /dev/kvm exists but KVM doesn't work, libguestfs will not fall back to TCG - -=item L - -virt-inspector can't inspect LUKS-encrypted RHEL7 guest image - -=item L - -Improve error "No module named ovirtsdk4" in v2v rhv-upload conversion - -=item L - -Adding QXL device in OVF causes Cirrus Logic device to be added to guest - -=item L - -RFE: virt-v2v should preserve - -=item L - -Transfer fails if local host is in maintenance mode - -=item L - -Transfer fails if local host belongs to another DC - -=item L - -v2v to RHV transfer fails with: error: [empty name]: cannot read '//*/disksection' with value: null - -=item L - -virt-v2v convert rhel5.3 failure when executing rpm -ql kernel-2.6.18-128.el5 command - -=item L - -p2v: error: XML error: CPU vendor specified without CPU model - -=item L - -Hide rhv-upload option in virt-p2v client - -=item L - -Don't use relative socket paths for NBD - -=item L - -RFE: Support for -o rhv-upload via Unix domain socket - -=item L - -ovirt-imageio-daemon times out during migration - -=item L - -virt-v2v rhel7.6 build can't convert guest to null with qemu-kvm rhel7.5.z build - -=item L - -Virt-v2v rhel7.6 build can't convert guest with qemu-kvm rhel7.5.z build - -=item L - -virt-builder: ubuntu-18.04 template has stray HTTP proxy configured for apt - -=item L - -virt-builder: error: host cpu (x86_64) and guest arch (unknown) are not compatible - -=item L - -virt-v2v -i ova gives checksum error when missing files are mentioned in .mf - -=item L - -guestfsd: error: /Windows/Drivers/VirtIO: Read-only file system - -=item L - -The mount-vfs failed to mount the logical volume - -=item L - -RHV tools not properly installed in migrated Windows VM's causing boot failure - -=item L - -virt-v2v does not honor --network with -o rhv-upload - -=item L - -[RFE] Upload images directly to oVirt (virt-v2v -o rhv-upload) - -=item L - -[RFE] Add libosinfo short-id to virt-inspector output - -=item L - -virt-inspector --help differs from manpage - -=item L - -RFE: recognize the Kali Linux distribution - -=item L - -Resume=/dev/sdaX can't be updated to resume=/dev/vdaX in rhel7 guest's grub file after v2v conversion - -=item L - -Change categories of "Guest Operating system management by VIX API" in v2v man page - -=item L - -Various -it vddk -io vddk* options should be documented, removed or fixed - -=item L - -B -RFE: Allow qemu-bridge-helper to be used to implement guestfs_set_network - -=back - -=for comment ################################################################ - -=head1 RELEASE NOTES FOR LIBGUESTFS 1.38 - -These release notes only cover the differences from the previous -stable/dev branch split (1.36.0). For detailed changelogs, please see -the git repository, or the ChangeLog file distributed in the tarball. - -=head2 New features - -=head3 New tools - -Virt-builder-repository is a new tool allowing end users to create and -update virt-builder repositories (Cédric Bosdonnat). - -Virt-rescue (while not a new tool) has been substantially rewritten, -implementing job control, I<-m> and I<-i> options, escape keys, etc. - -=head3 New features in existing tools - -Virt-builder planner has been improved so that faster and more -efficient build plans are chosen for complex cases, especially when -either the tmpdir or output is on networked storage. - -New virt-builder Fedora templates (starting with Fedora 26) will have -plain partition layout and use GPT for partitions. - -Virt-customize "firstboot" scripts in guests using systemd are now -installed under the C instead of C -so they will only run when the system is booted normally. - -Virt-customize now sets a random F for Linux guests, -if one is not already set. - -Virt-df now works correctly on filesystems with block sizes smaller -than 1K (Nikolay Ivanets). - -Virt-dib has further compatibility enhancements with diskimage-builder -(Pino Toscano). - -Virt-sysprep removes C from F files. - -Virt-sysprep now works on Oracle Linux (Jamie Iles). - -Virt-resize now correctly copies GPT partition attributes from the -source to the destination (Cédric Bosdonnat). - -Bash tab completion implemented or enhanced for: virt-win-reg, -virt-v2v-copy-to-local. - -=head3 virt-v2v and virt-p2v - -Virt-v2v can now read VMware VMX files directly, either from local -disk, NFS storage, or over SSH from an ESXi hypervisor. - -Virt-v2v can now use VDDK as an input source. - -Both virt-v2v and virt-p2v are now able to pass through the source CPU -vendor, model and topology. However unfortunately not all source and -target hypervisors are able to provide or consume this data at -present (Tomáš Golembiovský). - -Virt-v2v now supports encrypted guests (Pino Toscano). - -Virt-v2v can now handle VMware snapshots. Note that the snapshots are -collapsed — it I convert the chain of snapshots into a chain -of snapshots. - -Virt-v2v now installs Windows 10 / Windows Server 2016 virtio block -drivers correctly (Pavel Butsykin, Kun Wei). - -Virt-v2v now installs virtio-rng, balloon and pvpanic drivers, and -correctly sets this in the target hypervisor metadata for hypervisors -which support that (Tomáš Golembiovský). - -Virt-v2v now installs both legacy and modern virtio keys in the -Windows registry (Ladi Prosek). - -Virt-p2v can now preserve (in some cases) the offset of the Real Time -Clock from UTC. - -Virt-p2v now combines several scp commands to the conversion server -into a single command, improving conversion times. - -Virt-v2v now detects the special Linux Xen PV-only kernels correctly -(Laszlo Ersek). - -Virt-v2v I<-o glance> now generates the right properties for UEFI -guests (Pino Toscano). - -Virt-v2v I<-o null> now avoids spooling the guest to a temporary file, -instead it writes to the qemu "null block device". This makes it -faster and use almost no disk space. - -Virt-v2v I<-o rhv> now supports Windows 2016 Server guest type. - -Virt-v2v I<-i libvirtxml> can now open network disks over http or -https. - -Virt-v2v will now give a warning about host passthrough devices (Pino -Toscano). - -The virt-v2v I<--machine-readable> output has been enhanced so it -includes C, C and C facts (Pino -Toscano). - -=head3 Language bindings - -Fix multiple memory leaks and other data corruption problems in the -Java bindings (Pino Toscano). - -Perl C<%guestfs_introspection> has been dropped. - -=head3 Inspection - -Inspection support was rewritten in OCaml and included inside the -daemon. This makes inspection considerably faster, more robust and -more easily extensible in future. - -Better icon support for ALT Linux guests (Pino Toscano). - -Better support for NeoKylin (Qingzheng Zhang). - -Can handle OSes like Void Linux which do not include C -in F (Pino Toscano). - -Add support for Microsoft MS-DOS (Daniel Berrangé). - -=head3 Architectures and platforms - -Multiple fixes for S/390 architecture. Libguestfs and all the tools -should now compile and run on this architecture. - -=head3 Other - -The libguestfs API is now thread-safe (although not parallel). You -can call APIs on the same handle from multiple threads without needing -to take a lock. - -=head2 Security - -There were multiple vulnerabilities in the icoutils C -program which is run by libguestfs to create icons for Windows guests. -Using the latest C is recommended. - -=head2 API - -=head3 New APIs - -=over 4 - -=item C - -This replaces the deprecated C API, but does the -same thing. - -=item C - -=item C - -Read and write GPT partition attribute flags (Cédric Bosdonnat). - -=item C - -Enlarge or shrink an existing partition (Nikos Skalkotos). - -=item C - -=item C - -=item C - -Support for the Yara malware scanning engine (Matteo Cafasso). - -=back - -=head3 Other API changes - -APIs implemented in the daemon can now be written in either C or -OCaml. Several APIs were rewritten in OCaml, although we are not -planning to rewrite all of them. - -You will now get a clear error message if you try to add too many -disks to the appliance, instead of getting a peculiar failure from -qemu. - -Certain APIs accidentally allowed you to use C as an -input "device", eg. C. The code has been modified to I this usage. - -All APIs for inspecting installer CDs have been deprecated. Use -libosinfo for this task. - -=head2 Build changes - -A working OCaml compiler E 4.01 is now required for building -libguestfs. The C<./configure --disable-ocaml> option remains but is -only used to disable the OCaml language bindings. - -Add C file which lists release dates for each version of -libguestfs. You must update this file when making a new release. - -Documentation generated by C has been removed. C<./configure ---enable-gtk-doc> now does nothing. - -Libtirpc is now used for XDR functions and rpcgen. Note that glibc -has deprecated and in most Linux distros dropped these, so for most -people this will be an extra dependency (Martin Kletzander). - -Libxcrypt is now used for L. This is required if using -glibc E 2.27. - -C is now required. - -Libvirt E 1.2.20 is now required. - -There is now a C target for tests which need to be -run as root (analogous to C). - -C<./configure>-time check for C<__attribute__((cleanup))> now works in -the cross-compilation case (Yann E. Morin). - -The C and C files are now generated from -a single place. - -Either GnuPG v1 or v2 can be used. - -C<./configure --with-guestfs-path> may be used to set the default -C. In addition the way that the path is searched has -changed slightly so that all types of appliances are searched in each -path element separately (Pavel Butsykin). - -C which was used to mark external commands in the -daemon has been removed. It was originally used by SUSE builds, but -they have not been using it for a while. - -The output from C<./configure> is now visually grouped under headings -related to what it is doing, making it much easier to scan (Pino -Toscano). - -OCaml dependencies are now generated from a single script instead of -multiple not-quite-the-same Makefile fragments. - -C<./configure --with-distro=ID> can be used to override automatic -Linux distro detection at build time (Pino Toscano). - -qemu E 2.10 is supported (but not required). This adds mandatory -locking to disks and libguestfs turns this off in certain -circumstances when it is known to be safe (Lars Seipel, Peter Krempa, -Daniel Berrangé, Pino Toscano, Fam Zheng, Yongkui Guo, Václav -Kadlčík). - -=head2 Internals - -Most common code has been moved to the F subdirectory, with -OCaml common code being in F directories (eg. -F and F contain the visitor library in C -and OCaml respectively). The F directory has been deleted and -replaced by F. - -There is now a lightweight OCaml binding for PCRE, see -F. Use of OCaml C library has been mostly -replaced with PCRE. - -Add more calls to C to improve stability of partition -code (Dawid Zamirski). - -Run C with I<--exit-if-exists> option, which improves the -speed of this command (Pavel Butsykin). - -Detect new locations of L, L, L. - -Actions can now be deprecated with no suggested replacement, for APIs -such as C that should simply be removed from -client code. - -Use gnulib C wrapper instead of calling -L with C (Eric Blake). Similarly -C. - -Fix memory leak in XFS version of C (Pino -Toscano). - -Valgrind checks now run on the virt-p2v binary. - -Unicode single quotes (C<‘’>) and now used in place of C<''> or C<`'> -throughout the code and documentation. Similarly for C<’s> instead of -C<'s>. - -The C function has been reimplemented for greater speed (Eric -Blake). - -In the direct backend, virtio-blk support has been removed. -Virtio-scsi is now the only supported way to add disks. - -Generator string parameter and return types have been rationalised so -there are only two types (C, C) with many subtypes -eg. C becomes C. - -The appliance disk image can now be in formats other than raw -(Pavel Butsykin). - -Multiple improvements to how we automatically build Debian templates -for virt-builder (Pino Toscano). Enable serial console for these -templates (Florian Klink). - -In the daemon, instead of making a private copy of lvm.conf and -modifying it (eg for filters), start with an empty file since LVM -understands that to mean "all defaults" (Alasdair Kergon, Zdenek -Kabelac). - -The C backend can now run QMP queries against the QEMU binary, -enhancing the kinds of information we can detect. In addition the -code to query QEMU has been made more robust for handling multiple -parallel queries of different versions of QEMU. - -OCaml Augeas bindings are bundled under F. The long -term plan is to remove this and use system ocaml-augeas when it is -more widely available in distros (Pino Toscano). - -All OCaml modules (C<*.ml> files) are now required to have an -interface file (C<*.mli>). If they don't export anything then the -interface will be empty except for comments. - -Certain OCaml features in OCaml E 4.01 are used throughout the -code, including replacing ‘{ field = field }’ with ‘{ field }’. - -Virt-builder C utility now uses the C option so that we should never need to clean up left over -domains after a crash. It also saves kickstarts and virt-install -commands, which are committed to git for future reference. - -F is now created in the appliance (Nicolas Hicher). - -In verbose mode on Fedora guests, virt-customize will now use C enabling better debugging output. - -Virt-v2v input and output classes now contain a C<#precheck> method -which is used to perform environmental checks before conversion -starts. - -Virt-p2v enables miniexpect debugging. It is written to stderr (of -virt-p2v). - -Virt-v2v free space checks are more liberal especially for smaller -guests (Pino Toscano). - -=head2 Bugs fixed - -=begin comment - -https_proxy= ./bugs-in-changelog.sh v1.36.0.. - -=end comment - -=over 4 - -=item L - -Example URI of "Convert from ESXi hypervisor over SSH to local libvirt" is incorrect in v2v man page - -=item L - -virt-customize segfaults after upgrading to 1.37.35-3 - -=item L - -Libguestfs Perl bindings can leak a small amount of memory on error - -=item L - -libguestfs Lua bindings use strerror(), which isn’t thread safe - -=item L - -man page makes no mention of using '--' when trying to change exit on error behavior - -=item L - -virt-df displays zeros for filesystems with block size =512 - -=item L - -v2v should improve the result when convert a rhel7.4 guest with no available kernels found in the bootloader - -=item L - -virt-v2v fails with "unsupported configuration: shared access for disk 'sdb' requires use of supported storage format" - -=item L - -Mere presence of QEMU file locking options breaks NBD (Block protocol 'nbd' doesn't support the option 'locking') - -=item L - -./configure --disable-ocaml breaks building common/mlpcre which breaks building daemon - -=item L - -[RFE]Should update some vddk info in v2v man page - -=item L - -virt-v2v: warning: ova disk has an unknown VMware controller type (20) - -=item L - -virt-v2v '-i ova' is not parsing the MAC address from the source OVF - -=item L - -virt-builder fails to parse repo file if it has blank space after the repository identifier - -=item L - -Failed to convert the rhel5 guest with kmod-xenpv installed from xen server by virt-v2v - -=item L - -qemu-kvm fails to open qcow2 files in read-only mode with qemu-kvm 1.5.3 - -=item L - -Error info shows wrong sometimes when ssh to conversion server using non-root user with sudo on p2v client - -=item L - -/dev/shm does not exist in the appliance environment - -=item L - -guestfish cannot list commands from interactive mode - -=item L - -Unbound constructor Hivex.OPEN_UNSAFE - -=item L - -bump debian images to use single-partition layout - -=item L - -virt-resize failed to expand swap partition for RHEL5.11 guest image with "parsing UUID failed" - -=item L - -Running file API on a special chardev may hang forever - -=item L - -inspect-os report error: could not parse integer in version number: V7Update2 - -=item L - -[RFE]Add warning in process of v2v converting guest which has pci passthrough device - -=item L - -virt-v2v fails on opensuse 13.2 guest with error: statns: statns_stub: path must start with a / character - -=item L - -firstboot scripts are not correctly installed in Fedora 26 - -=item L - -Libguestfs should pass copyonread flag through to the libvirt XML - -=item L - -1.36.x build failure: gtkdocize fails using newer autotools due to missing GTK_DOC_CHECK in configure.ac - -=item L - -guestfs_shutdown hangs if main process sets signal handlers - -=item L - -guestfs_add_domain_argv fails with readonly option when vdi/vhd disk is attached to libvirt domain - -=item L - -RFE: Virt-v2v can't convert the guest which has encrypted partition - -=item L - -document URI format for -a parameters of tools - -=item L - -RFE: Support multicore decompression for OVA files using pigz and pxz - -=item L - -Win 2016 guest is described as Win 10 after imported to RHEVM - -=item L - -RFE: ability to convert VMware virtual machines via vmx - -=item L - -Please drop or update GnuPG (1.4.x) dependency - -=item L - -[RFE] Install Windows virtio-rng drivers on VMs imported - -=item L - -virt-inspector can't get icon info from altlinux-centaurus - -=item L - -policycoreutils setfiles >= 2.6 does .. nothing - -=item L - -Windows 8 UEFI from VMware to KVM fails to boot after conversion - -=item L - -There is error info about "No such file or directory" when convert a guest from ova file by v2v - -=item L - -virt-dib should generate sha256 checksum instead of sha512 - -=item L - -RFE: OVMF should be detected on conversion server to prevent failed conversion - -=item L - -Should rename network name of rhv in virt-v2v man page - -=item L - -virt-sysprep should remove DHCP_HOSTNAME - -=item L - -QEMU image file locking (libguestfs) - -=item L - -[Debian] Missing db_dump abort inspection - -=item L - -Segmentation fault when reading corrupted path with Python 3 bindings - -=item L - -RFE: virt-p2v should support mnemonic operations - -=item L - -There is virt-v2v warning about during converting a guest which has listen type='none' in XML - -=item L - -qemu-system-s390x: -device isa-serial,chardev=charserial0,id=serial0: 'isa-serial' is not a valid device model name - -=item L - -selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success" - -=item L - -Missing bash completion scripts for: virt-diff guestunmount virt-copy-in virt-copy-out virt-customize virt-get-kernel virt-p2v-make-disk virt-p2v-make-kickstart virt-tar-in virt-tar-out virt-v2v-copy-to-local virt-win-reg - -=item L - -RFE: virt-sysprep does not utilize libguestfs encryption support - -=item L - -[RFE]virt-v2v failed to convert VMware ESX VM with snapshot - -=item L - -Modify a file in virt-rescue with vi on some linux terminal such as yakuake, can lead to abnormal display in virt-rescue shell - -=item L - -Remove "If reporting bugs, run virt-v2v with debugging enabled .." message when running virt-p2v - -=item L - -Can not end a running command in virt-rescue by press ^C or other keys, the only way is to exit virt-rescue - -=back - -=for comment ################################################################ - -=head1 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. - -=head2 New features - -=head3 New tools - -Virt-tail is a new tool for following (tailing) log files within a -guest, similar to the regular C command. - -=head3 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 I<--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 C for removing -editor backups, and C for removing F and -similar. - -Virt-dib can now create checksums using the new I<--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. - -=head3 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 C which -prevents conflicts between the Windows Plug-and-Play Manager and our -own scripts that install virtio device drivers. Enabling this -requires the C 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 C and C nodes from -the Windows Registry. - -Xen and vCenter conversions can now be done using the libvirt backend, -provided libvirt E 2.1.0 is used. - -F (SCSI CD-ROM) devices are ignored (Tomáš Golembiovský). - -When converting SUSE Linux guests, use F 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 C attribute from the metadata instead of -using content sniffing on the disk image (Tomáš Golembiovský). - -A new flag I<--vdsm-compat> has been added to I<-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, I<-o rhev> becomes I<-o rhv>, although the -old name can be used for backwards compatibility. - -The C 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. - -=head3 Language bindings - -Setting C before F<./configure> allows you to -add arbitrary flags to C 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). - -=head3 Inspection - -Inspection of Windows guests with mildly corrupted Windows Registry -hives should now work instead of failing with an error. This feature -requires hivex E 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 F -partition should now work more reliably (Pino Toscano). - -When parsing guest F, paths are reduced to a canonical -form (eg. C<"///usr//local//"> → C<"/usr/local">). - -Inspection of btrfs subvolumes now works where the F -options field contains commas. - -F devices in guest F are ignored (Pino Toscano). - -=head3 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. - -=head3 Other - -ExFAT filesystems are now supported (Miles Wolbe). - -=head2 Security - -See also L. - -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 -F (previously the C function L was used in -one case). - -The C<$TERM> environment variable is now validated before passing it -through to the appliance kernel command line. - -=head2 API - -=head3 New APIs - -=over 4 - -=item C - -Exposes the Augeas C API (Pino Toscano). - -=item C - -Find files by inode number (Matteo Cafasso). - -=item C - -=item C - -Return the path to the Windows C and C -hives computed during inspection. - -=item C - -Create a squashfs filesystem from a path (Pino Toscano). - -=back - -=head3 Other API changes - -=over 4 - -=item C - -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). - -=item C - -This call will no longer incorrectly modify Linux software RAID device -names (like F). - -=item C - -Previously the C API could return either of the -strings C or C for 32 bit x86 binaries. It now only -returns C (as documented). - -This API can now return the following new values: C, -C, C, C, C. - -=item C - -This now has an optional C flag which -allows certain corrupted Windows Registry hives to be opened. This -feature requires hivex E 1.3.14 (Dawid Zamirski). - -=item C - -This call now returns Linux software RAID partitions. - -=item C - -This call now correctly handles partition names which include -CNE> (Pino Toscano). - -=item C - -This call can now change the labels of swap partitions (Pino Toscano). - -=back - -=head2 Build changes - -libmagic, the library part of the C 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 C on the make command -line (Pino Toscano). - -Slow testing (C) now covers: firstboot scripts in -Linux guests; v2v conversion of a selection of real Linux guests; the -virt-customize I<--hostname> and I<--timezone> settings; the -I<--root-password> parameter; that the serial console works in -virt-builder guests. - -Large generated C source files, eg. the list of commands found in -F (and many more), have been split into smaller files to -speed parallel compilation. - -C now checks that all generated -files are included in the tarball. - -The tests no longer assume that C<.> is in Perl's C<@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 C comments. - -C<@VAR@> subtitutions in C<./run> are now fully quoted. This is -necessary so that (eg) C<./configure PYTHON=/some/path> works robustly -if C contains characters that need to be quoted (Hilko -Bengen). - -gperf E 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. - -=head2 Internals - -The generator and mllib C modules are now shared from -the same source file. - -A considerable amount of common code has been moved into the F -directory in the source and is now compiled only once. The -mini-libraries located under here are: F, -F, F, F, -F, F, F, -F, F, F. - -The directory containing the main library code has moved from F → -F. - -All tests written in shell script now use a common file of utility -functions (F). There are several new utility -functions, mainly for skipping tests. Also these test scripts can now -use autoconf-like path variables like C<$abs_top_srcdir>. - -UEFI paths are now stored in the generator (F). - -The way the generator handles actions and procedure numbers was -changed quite substantially. See F and -F. - -The gnulib C module is now used everywhere when -needing/printing the program name (Pino Toscano). - -F is not translatable (Nikos Skalkotos). - -Virt-builder templates moved from F to -F and there is now a single unified program which -can build any template. - -All Windows registry utilities used by virt-customize and virt-v2v -have been moved to a common module called C under F. - -All POSIX bindings have been moved to a new module called -C under F. - -Inspection, virt-customize and virt-v2v no longer recompute the -Windows C<%systemroot%>, C or paths to the -C and C hives in multiple places. Instead -these are all computed once (during inspection) and passed to the -other tools through various C APIs. - -C is now available inside the appliance, so any tools we run -which require a pty will now work (Pino Toscano). - -Most OCaml warnings have been fixed. - -There is now a single common function for creating temporary -files (C) (Matteo Cafasso). - -The C<$TERM> environment variable is now validated before passing it -through to the appliance kernel command line. - -Useless USB and memballoon devices are no longer created in the -appliance (Laine Stump). - -On aarch64 we now use virtio-pci for the appliance. This is somewhat -faster than virtio-mmio. - -Use of L and L has been minimized. In -particular, temporary filenames are no longer created based on -randomness returned by L, but F is used -instead. - -=head2 Bugs fixed - -=begin comment - -https_proxy= ./bugs-in-changelog.sh v1.34.0.. - -=end comment - -=over 4 - -=item L - -typo error in virt-tail man page - -=item L - -virt-v2v: appliance runs out of memory running setfiles command - -=item L - -/usr/bin/x86_64-linux-gnu-ld.bfd.real: ../common/progress/.libs/libprogress.a(libprogress_la-progress.o): undefined reference to symbol 'UP@@NCURSES_TINFO_5.0.19991023' - -=item L - -*** No rule to make target '../perl/lib/Sys/Guestfs.c', needed by 'libguestfs.pot' - -=item L - -compile of 1.34.3 fails with gperf 3.1 - -=item L - -guestfs_canonical_device_name incorrectly returns /dev/sd0 for MD devices (/dev/md0) - -=item L - -guestfs_list_filesystems does not recognize ddf partitions - -=item L - -[Debian] ldmtool not installed in the appliance - -=item L - -qemu-kvm cannot boot RHEL 7 kernel with TCG, hangs at "Probing EDD (edd=off to disable)..." - -=item L - -RFE: virt-resize should support a URL as the outdisk - -=item L - -Importing VMs from VMware is failing with error "Inspection field 'i_arch' was 'unknown'" - -=item L - -RFE: Increate virt-sysprep coverage a bit - -=item L - -Add --vdsm-compat=1.1 flag for VDSM - -=item L - -typo error in man page - -=item L - -secrets from libvirt domains are not read - -=item L - -"--machine-readable" info should be updated in virt-v2v manual page - -=item L - -RFE: virt-p2v should support mnemonic operations - -=item L - -There is virt-v2v warning about during converting a guest which has listen type='none' in XML - -=item L - -virt-p2v manual should update the new dialog information - -=item L - -virt-v2v: -i ova: Permission denied when using libvirt and running as root - -=item L - -Can't install qxl driver for display device in win7 guest after converting to glance by virt-v2v - -=item L - -There is HTTP 404 error info when convert guest to glance by virt-v2v - -=item L - -selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success" - -=item L - -Process status is not normal in windows guest after converted from kvm to rhev by virt-v2v - -=item L - -Builder does not set hostname properly for Debian 8 (Jessie) - -=item L - -Improve OVA import compatibility - -=item L - -virt-manager coredump when vm with gluster image exists - -=item L - -Cannot import VMs from Xen and VMware when using RHEL7.3 host. - -=item L - -Missing bash completion scripts for: virt-diff guestunmount virt-copy-in virt-copy-out virt-customize virt-get-kernel virt-p2v-make-disk virt-p2v-make-kickstart virt-tar-in virt-tar-out virt-v2v-copy-to-local virt-win-reg - -=item L - -OVMF file which is built for rhel7.3 can't be used for virt-v2v uefi conversion - -=item L - -Converting rhel7 host installed on RAID:warning: fstrim: fstrim: /sysroot/: the discard operation is not supported - -=item L - -RFE: libvirt backend: support handling disks stored as volume name in a pool - -=item L - -Guest name is incorrect if convert guest from disk image by virt-v2v - -=item L - -RFE: virt-sysprep does not utilize libguestfs encryption support - -=item L - -virt-v2v conversions from vCenter do not consistently obey the proxy environment variables - -=item L - -warning: fstrim: fstrim: /sysroot/: FITRIM ioctl failed: Operation not supported (ignored) when convert win2003 guest from xen server - -=item L - -RFE: Only install RHEV-APT if virt-v2v -o rhev/-o vdsm option is used - -=item L - -virt-v2v failed to convert RHEL 6.7 UEFI guest: no grub1/grub-legacy or grub2 configuration file was found - -=item L - -[RFE] virt-v2v should support convert a guest to a dir-pool with using pool's uuid - -=item L - -libvirt reports json "backing file" is missing - -=item L - -firstboot scripts (virt-builder, virt-sysprep) don't work for Debian 6 & 7 guests - -=item L - -virt-v2v windows xp - machine dies BSOD - processr,sys - workaround provided - -=back - -=for comment ################################################################ - -=head1 RELEASE NOTES FOR LIBGUESTFS 1.34 - -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. - -=head2 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 (F and -F 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, and many bug fixes. - -f2fs (Flash Friendly File System) is now supported (Pino Toscano). - -=head3 New tools - -L can be used to build the virt-p2v ISO based -on SLES and openSUSE, using the kiwi utility (Cédric Bosdonnat). - -=head3 New features in existing tools - -virt-resize will 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-resize will use sparse copying for (old MBR-style) extended -partitions. This makes resizing of guests that use extended -partitions much faster (Maxim Perevedentsev). - -virt-p2v kernel command line options can now be used to set defaults -for GUI configuration. - -The virt-p2v debugging options have been completely removed, -simplifying the interface and documentation. Debugging information is -now captured fully automatically. - -virt-p2v-make-disk lets you specify an I<--arch> option, allowing you -to build a 32 bit virt-p2v, for compatibility with older systems. - -virt-p2v-make-disk no longer requires that you specify an -C for the virt-p2v disk. If omitted it will try to choose -a suitable C depending on your host system. - -virt-p2v-make-disk and virt-p2v-make-kickstart both gain a new -I<--install> option that allows you to add arbitrary extra packages to -the virt-p2v ISO, for customization, additional debugging tools and so -on. - -virt-v2v will 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 I<--in-place> mode has been enhanced to allow the caller to -choose whether or not to install certain virtio drivers in the guest -(Roman Kagan). - -virt-v2v conversion of Windows guests was substantially rewritten and -simplified (Roman Kagan). - -virt-v2v I<--in-place> mode now supports installing virtio-scsi -drivers in guests (Roman Kagan). - -virt-v2v can now convert SUSE guests and SUSE guests using UEFI -(Cédric Bosdonnat and Jim Fehlig). - -virt-v2v can now convert guests to Glance that have multiple disks. -Previously it would fail on such guests. - -The virt-v2v I<--no-trim> and I<--vmtype> options are now no-ops. -They will print a warning but are otherwise ignored. virt-v2v can now -generate the OVF vmtype correctly without user intervention. - -virt-v2v has now been tested against SUSE Xen as a source hypervisor -(Cédric Bosdonnat). - -virt-v2v adds support for SUSE VMDP drivers (Cédric Bosdonnat). - -virt-v2v can convert OVA files containing subfolders, as produced -by SUSE Studio (Cédric Bosdonnat). - -virt-v2v sets the OVF COriginE> element correctly. oVirt -has been extended to support more source hypervisors (Shahar Havivi). - -virt-v2v now supports Windows Server 2016 (Tomáš Golembiovský). - -The virt-builder I<--list> option can now be used to show all -templates or a single template (Pino Toscano). - -All OCaml-based tools now use L for option parsing, -and I<--help> output has been improved (Pino Toscano). - -virt-builder and virt-customize I<--selinux-relabel> option can now -fully relabel the guest filesystem at build time, without requiring a -lengthy autorelabel at first boot. - -virt-customize I<--delete> now accepts globs. - -New virt-customize I<--uninstall> option lets you uninstall packages. - -virt-customize can now use C as an alternative to C -for running firstboot scripts in Windows guests (Cédric Bosdonnat). - -virt-customize now uses the strongest hashing scheme for passwords on -Arch and Void Linux (Pino Toscano). - -virt-customize I<--install> now works correctly on Arch (Pino -Toscano). - -virt-inspector has new options I<--no-applications> and I<--no-icon> -to prevent the list of applications and icon from being included in -the XML output (Pino Toscano). - -New virt-sysprep I<--network> option has been added, allowing you to -actually use the I<--install> etc options which were present in -virt-sysprep before but did not usually work. Note that the network -is still disabled by default. - -virt-sysprep C operation no longer fails on btrfs guests -(Maxim Perevedentsev). - -virt-dib can output Docker images (Pino Toscano). - -virt-dib has a new I<--drive-format> option to allow the user to -specify the format of the helper drive (Pino Toscano). - -All OCaml virt tools now have a I<--colors>/I<--colours> option 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. - -=head3 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 -L - -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 -I<-safe-string>, if supported by the OCaml compiler. - -=head3 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 E 3 are 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 -F file (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). - -=head3 Documentation - -New manual page L describes how to build -libguestfs from source. - -The man pages, tools and tool I<--help> output 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 L man page has been refreshed and based on a -newer libguestfs. - -=head3 Architectures and platforms - -virt-customize now works on POWER7 and POWER8 platforms, both big -endian and little endian (Xianghua Chen and Hu Zhang). - -=head2 Security - -See also L. - -=head3 CVE-2015-8869 - -L - -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). - -=head3 virt-customize ownership of F<.ssh>, F<.ssh/authorized_keys> - -L - -Previously when virt-customize injected an SSH key into a guest, when -it created the F<~/.ssh> and F<~/.ssh/authorized_keys> directory and -file (in case they were missing) it created them with owner and group -C. This has been fixed so the correct user is used. This -is not thought to have been exploitable. - -=head3 Windows C<%systemroot%> - -The inspection code has been made more robust against guests which -might use very long C<%systemroot%> (derived from the guest-controlled -Windows Registry). This is not thought to have been exploitable. - -=head3 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. - -=head2 API - -=head3 New APIs - -=over 4 - -=item C - -List all devices where a btrfs filesystem is spanned (Pino Toscano). - -=item C - -=item C - -=item C - -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) - -=item C - -Read the path where temporary sockets are stored (Pino Toscano). - -=item C - -=item C - -Split a Mountable into device name and subvolume -(Cédric Bosdonnat). - -=item C - -Download NTFS file by inode number (Matteo Cafasso). - -=item C - -Allow in-place expanding of GPT partitions by moving the second -(backup) partition table to the end of the disk (Maxim Perevedentsev). - -=item C - -=item C - -=item C - -Get and set the GPT disk GUID, or set it to a fresh random value -(Maxim Perevedentsev). - -=item C - -SELinux-relabel part or all of the guest filesystem. - -=back - -=head3 Other API changes - -C, C, C, -C and C have been deprecated. Use the -new API C to relabel filesystems. Use -C to list the C extended -attributes of existing files. - -C can now be used on dirty filesystems -(Maxim Perevedentsev). - -C now works on paths which contain absolute symlinks -(Pino Toscano). - -C now has an optional C boolean -parameter which controls whether trailing slashes are returned for -directory names (Pino Toscano). - -C will no longer return LVs which have the -C flag set. The reason is that such LVs have no -C device node and so code which read the list of LVs and -then probed the devices themselves would immediately fail. You can -use C if you want to read all LVs. -(Pino Toscano). - -C now no longer fails if no disks with -labels were added. Instead it now returns an empty list (Pino -Toscano). - -C no longer fails if passed a btrfs subvolume, it -returns false instead (Maxim Perevedentsev). - -=head2 Build changes - -qemu E 1.3.0 is required. - -yajl (a JSON parsing library) is required to build libguestfs. - -You can now build with GCC 6. - -C now has substantially better coverage. - -C now works again. - -Use C to clean the -supermin appliance (it will be rebuilt on next C). - -There are a variety of new rules for running virt-p2v from the source -directory: C | -C | C. These -are documented further in L. - -virt-p2v may be built using either Gtk 2 or Gtk 3. To force a -particular version of Gtk to be used, C<./configure --with-gtk=2|3> - -The C<./configure> options are now mostly documented in -L. - -=head2 Internals - -In git, versions are now tagged with C (previously they were -tagged with C<1.XX.YY>). Using the C prefix is more common in git -repositories. - -When using the libvirt backend, we now wait for qemu to exit -gracefully instead of killing it after 15 seconds. This helps when -writing to slow devices (especially cheap USB keys). - -Error messages from libvirt now include the Cint1> field -which usually contains the C. - -On ARM, all DTB (device tree) code has been removed. qemu creates the -right device tree on the fly, we do not need to specify one. - -The C API tests now use larger test disks, allowing BTRFS to be tested -properly (Pino Toscano). - -The tests should now work on a pure Python 3 host (Pino Toscano). - -In C bindings, internal functions are now (mostly) consistently named -C whereas previously there was no consistent scheme. - -The old C etc functions are now no longer exported by the -library, nor used in language bindings. - -Setting TMPDIR to a path longer than ~ 100 characters will no longer -cause libguestfs to fail silently and randomly when creating Unix -domain sockets (Pino Toscano). - -The C macro can now be used in the daemon. - -When tracing, results containing structs are now printed in full (Pino -Toscano). - -The Perl C module now no longer embeds an incrementing -API "version number". This module is now always at phony version -"1.0". To find the real version of libguestfs from Perl you must call -C<$g-Eversion>. - -All code is compiled with C<-Wstack-usage=10000> and multiple changes -have been made to remove stack allocation of large strings and -buffers. - -The L function is now used everywhere, replacing most -previous uses of L + L, and L + exit. - -In C code, C comments are turned into documentation which is -automatically added to the L manual page. - -A safe "getumask" function has been added. For recent Linux kernels -this uses the newly added C field in F. For -older Linux and other Unix, this uses a thread-safe technique -involving L (thanks: Josh Stone, Jiri Jaburek, Eric Blake). - -Safe L wrappers have been added, and more hints have -been added to the code which may make a minor difference to -performance. - -A safe wrapper around L has been added which handles -C properly. - -C (used to generate the manual pages) now stops if any -POD error is found. A new script called C does -cross-checking of I<--help> output, 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 F (Pino Toscano). - -On Windows guests, virt-customize will use the vendor-neutral path -S> to store firstboot scripts. -Previously it used S>. This -change should be invisible to the scripts themselves. -(Cédric Bosdonnat) - -On Linux guests, the firstboot services generated by virt-builder -I<--firstboot> etc have been renamed to C -(Pino Toscano). - -There is now a common C function used by all OCaml tools, -replacing previous code which did S>. - -virt-p2v copies files it needs over to the virt-v2v conversion server -using L, instead of trying to send them via the shell session. -This should improve reliability and should be a completely transparent -to end users. - -All code in F is now built into a single C or -C library. All code in F is now built into a -single C or C library. This simplifies -the build of the OCaml tools. - -L is now used in the appliance when available (Pino Toscano). - -"Silent rules" are used for OCaml, Java, Erlang and POD. Use -C to see the full command lines again (Pino Toscano). - -=head2 Bugs fixed - -=begin comment - -https_proxy= ./bugs-in-changelog.sh 1.32.0.. - -=end comment - -=over 4 - -=item L - -virt-sparsify --in-place failed with UEFI system - -=item L - -run_command runs exit handlers when execve fails (e.g. due to missing executable) - -=item L - -virt-dib failed to create image using DIB_YUM_REPO_CONF - -=item L - -Fail to inspect Windows ISO file - -=item L - -Some info will show when convert guest to libvirt by virt-v2v with parameter --quiet - -=item L - -overlay of disk images does not specify the format of the backing file - -=item L - -Virt-manager can't show OS icons of win7/win8/ubuntu guest. - -=item L - -Improve error info "remote server timeout unexpectedly waiting for password prompt" when connect to a bogus server at p2v client - -=item L - -virt-p2v should update error prompt when 'Test connection' with a non-existing user in conversion server - -=item L - -virt-sysprep --install always failed to install the packages specified - -=item L - -virt-customize --truncate-recursive should give an error message when specifying a no-existing path - -=item L - -[RFE]Should give a better description about 'curl error 22' when failed using ssh identity http url at p2v client - -=item L - -Failed SSH to conversion server by ssh identity http url at p2v client - -=item L - -[RFE] uninstall packages inside the VM - -=item L - -Ifconfig command is not supported on p2v client - -=item L - -Convert a guest from RHEL by virt-v2v but its origin info shows RHEV at rhevm - -=item L - -Should remind a warning about disk image has a partition when using virt-p2v-make-disk - -=item L - -virt-get-kernel prompts an 'invalid value' error when using --format auto - -=item L - -virt-p2v spinner should be hidden when it stops spinning - -=item L - -Testing connection timeout when input regular user of conversion server with checked "use sudo......"button - -=item L - -[RFE] Suggestion give user a reminder for "Cancel conversion" button - -=item L - -Multiple network ports will not be aligned at p2v client - -=item L - -Update UEFI whitelist for official fedora packages - -=item L - -virt-customize --ssh-inject not applying correct file permission - -=item L - -extra quotes around UUID confuses findfs in RHEL (but not in Fedora) - -=item L - -Inspection does not parse /etc/redhat-release containing "Derived from Red Hat Enterprise Linux 7.1 (Source)" - -=item L - -RFE: Allow p2v kernel options without p2v.server to set defaults - -=item L - -virt-v2v should prevent using multiple '-b' and '-n' option appears on the command line - -=item L - -libguestfs: error: could not parse integer in version number: 7" - -=item L - -[1.33.16] Compilation Error: Unbound value List.sort_uniq in v2v.ml line 988, characters 10-24: - -=item L - -`virt-builder --update` fails with: "dnf -y --best upgrade: command exited with an error" - -=item L - -v2v cmd cannot exit and "block I/O error in device 'appliance': No space left on device (28)" is printed when specified "-v -x" - -=item L - -virt-rescue fails, but missing error message - -=item L - -RFE: virt-p2v log window should process colour escapes and backspaces - -=item L - -virt-v2v -o libvirt doesn't preserve or use correct - -=item L - -error: internal error: Invalid floppy device name: hdb - -=item L - -Wrong warning info "use standard VGA" shows when converting windows > 7 by virt-v2v - -=item L - -OS name of win8.1 x64 guest shows incorrect in rhevm3.6 general info - -=item L - -virt-v2v does not copy additional disks to Glance - -=item L - -Failure when disk contains an LV with activationskip=y - -=item L - -virt-v2v doesn't remove VirtualBox additions correctly because of file quoting - -=item L - -There should be a reminder to avoid user to edit a guest image by multiple tools at the same time in guestfish man page - -=item L - -guestfish can not ll a symbolic link dir or edit a file in it - -=item L - -guestfish should be able to handle LVM thin layouts - -=item L - -ppc64le: virt-customize --install fail to detect the guest arch - -=item L - -Test that trimming in virt-v2v doesn't regress - -=item L - -Virt-v2v gives an error on a blank disk: part_get_parttype: unknown signature, of the output: BYT; - -=item L - -virt-p2v in non-GUI mode doesn't show any conversion progress or status - -=item L - -P2V invalid password prints unexpected end of file waiting for command prompt. - -=item L - -On Ubuntu, virt-builder --install and --update cannot use the network - -=item L - -virt-v2v: warning: unknown guest operating system: windows windows 6.3 when converting win8,win8.1,win2012,win2012R2,win10 to rhev - -=item L - -Support inspecting docker images without /etc/fstab - -=item L - -libguestfs cannot inspect recent Fedora / RHEL >= 7 when /usr is a separate partition - -=item L - -P2V: invalid conversion server prints unexpected end of file waiting for password prompt. - -=item L - -virt-rescue --selinux can not work well, when enable selinux in the command line the value of 'getenforce' is still Disabled in virt-rescue appliance - -=item L - -ARM 32 bit on Ubuntu: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] - -=item L - -NetworkManager avc unlink denied for resolv.conf after using --selinux-relabel - -=item L - -RFE: virt-sysprep should be SELinux-aware - -=item L - -RFE: virt-p2v: display more information about storage devices - -=item L - -SELinux handling could be done better. - -=back - -=for comment ################################################################ - -=head1 RELEASE NOTES FOR LIBGUESTFS 1.32 - -These release notes only cover the differences from the previous -stable/dev branch split (1.30.0). For detailed changelogs, please see -the git repository, or the ChangeLog file distributed in the tarball. - -=head2 New features - -=head3 New tools - -The new L tool is an ancillary tool for -L allowing you to convert source guests that virt-v2v is -unable to access directly. - -=head3 New features in existing tools - -Virt-customize knows how to write a random seed to CirrOS (Pino Toscano). - -On Fedora, virt-customize runs L with the I<--best> flag, -ensuring it always updates to the latest available packages. - -Virt-builder now provides 32 bit Fedora templates. - -Virt-builder and virt-customize I<--install> option now works on 32 -bit Fedora guests. Previously it would try to install 64 bit -packages (Jan Sedlák). - -Virt-builder can now fetch cloud images using Simple Streams v1.0 -metadata (Pino Toscano). - -Virt-builder can now fetch openSUSE cloud images out of the box -(Cédric Bosdonnat). - -Virt-customize will now use stronger (SHA-512) encrypted passwords by -default on openSUSE E 11 (Pino Toscano). - -Virt-builder will now correctly handle output filenames containing -colon characters (C<:>), and will create temporary files in the -libguestfs cache directory instead of defaulting to F -(Pino Toscano). - -Virt-resize has a new I<--unknown-filesystems> option to control what -to do when asked to resize a filesystem that libguestfs doesn't know -how to resize. - -Virt-v2v now has an I<--in-place> flag/mode, allowing in-place -conversion of guests (Roman Kagan). - -Virt-v2v has a I<--compressed> option for creating compressed qcow2 -output files. - -Virt-v2v can now correctly get the VMware datacenter path (dcPath) -from libvirt, instead of having to calculate it using an algorithm -that occasionally got the wrong answer (Matthias Bolte, Tingting -Zheng). - -Virt-v2v now processes RAM sizes correctly for 64 bit guests when -running on a 32 bit host. - -=head3 Language bindings - -In Perl and Python programs, the C API now returns -the true program name, instead of the incorrect string C or -C. - -The Python bindings can now be compiled against a different version of -libguestfs, allowing the pip module to be built against any version of -libguestfs (instead of requiring the pip module and libguestfs to have -exactly the same version). - -The quality of the Ruby rdoc (documentation) has been improved (Pino -Toscano). - -Perl scripts no longer hard-code the location of perl in the shebang -line, but use L to locate it instead (Pino Toscano). - -In OCaml programs, the guestfs handle was incorrectly made into a -global root, meaning it could never be garbage collected. If you -didn't call the C function explicitly, the handle would not be -closed until the whole program exited. This has now been fixed so -handles will be garbage collected in the usual way. This changes the -API of the OCaml function C. Note that non-C -language bindings are not covered by the libguestfs API/ABI guarantee, -although we try hard not to change them, but in this case it was -essential in order to fix this very serious bug. - -=head3 Inspection - -Alpine Linux and the APK package manager, ALT Linux, Frugalware, and -PLD Linux are now recognized (Pino Toscano). - -If it exists, F will be preferred for inspecting -Linux guests (Pino Toscano). - -The correct kernel version is returned for Windows guests E 10. - -=head3 Documentation - -The large L man page has been split into several separate -man pages: L L -L. In the source tree, a new F directory -contains this documentation. - -=head3 Architectures and platforms - -Libguestfs now supports ARM 64 bit platforms with vGICv3. - -=head2 Security - -See also L. - -=over 4 - -=item C - -L - -This is not a vulnerability in libguestfs, but because we always give -a virtio-serial port to each guest (since that is how guest-host -communication happens), an escalation from the appliance to the host -qemu process is possible. This could affect you if: - -=over 4 - -=item * - -your libguestfs program runs untrusted programs out of the guest -(using L etc), or - -=item * - -another exploit was found in (for example) kernel filesystem code that -allowed a malformed filesystem to take over the appliance. - -=back - -If you use sVirt to confine qemu, that would thwart some attacks. - -=item Virt-customize permissions on F<.ssh>, F<.ssh/authorized_keys> - -L. - -Previously when asked to inject an SSH key into a guest, -virt-customize (hence virt-builder too) would create the F<.ssh> -directory and F<.ssh/authorized_keys> file with too broad permissions, -allowing other users to read. They are now created as C<0700> and -C<0600> respectively, which is the same as the L -utility. - -=back - -=head2 API - -=head3 New APIs - -=over 4 - -=item C - -=item C - -Get/set a per-handle identifier. The main effect of this is to -change trace output from: - - libguestfs: trace: foo - -to: - - libguestfs: trace: ID: foo - -making it easier to follow traces in multi-threaded programs, or where -a program uses multiple handles (especially virt-v2v). - -=item C - -Return the minimum size of a filesystem (when shrunk). This supports -ext2/3/4, XFS and btrfs, and can support other filesystem types in -future (Maxim Perevedentsev). - -=back - -=head3 Other API changes - -=over 4 - -=item C: add C = C/C/C. - -For raw, this allows C as a synonym for C (making it -consistent with qcow2). For qcow2, this allows C as a synonym -for C. - -It also adds C, which corresponds to fully allocated, but uses -L for efficiency. - -=item C: new C, C, C parameters. - -=item C: new C, C, C parameters. - -These extra parameters control whether extended attributes, SELinux -contexts and/or POSIX ACLs are restored from / saved to tarballs. - -=item C - -The existing C and C parameters can be used to -supply authentication for iSCSI (Pino Toscano). - -=back - -=head2 Build changes - -The C<./configure --enable-valgrind-daemon> option has been removed. - -You can no longer build libguestfs on RHEL 5-era (c.2007) machines. -See the C branch if you need (limited) RHEL 5 support. - -Virt-p2v can now be built on RHEL 6-era (c.2010) Linux distros. - -OCaml E 3.11 (released in 2008) is now required to build from git. - -Building the Perl bindings now requires C (instead of -C). - -Builds should be faster (especially when incrementally rebuilding), -because work was done to reduce build times. - -Both OCaml and the OCaml findlib module are required if you need to -run the generator at build time. Previously the build would have -failed if findlib was not installed. - -C tests now run in parallel (within each test directory). - -C no longer installs OCaml F files -incorrectly. - -C can now be run twice. Previously it would fail on the -second run. - -C should now remove nearly every file that C -creates. - -A new C rule has been added, allowing the installed -copy of libguestfs to be tested. - -=head2 Internals - -Some effort was put into minimizing the size of the appliance, which -reduces temporary disk space and time needed by libguestfs handles. - -The appliance now passes the NIC name to dhcpd, fixing hangs when -running the appliance on some distros (Cédric Bosdonnat). - -OCaml C is now generated (Pino Toscano). - -In OCaml tools, common code now handles I<--debug-gc>, I<--verbose> -and other common options (Roman Kagan, Pino Toscano). - -The virt-v2v test harness allows us to boot the test guests at fixed -dates in the past, ensuring that Windows reactivation doesn't kick in. - -There is a new internal API for reading/writing a subprocess via a -pipe from library code. - -Used C program to remove unused C<#include> directives. - -In OCaml tools, the C and C modules now implicitly -reference the C and C modules -(instead of the ones from stdlib). The C modules -contain a number of extra char/string utility functions, and also hide -some unsafe functions in stdlib. - -Many more virt-v2v tests will now be run even if you don't have -rhsrvany and virtio-win installed (Roman Kagan). - -The huge F file has been split into several smaller -files called F. - -The old F and F directories have been moved -to F. This new top level directory carries all test data -which is common, large and/or shared between multiple tests. - -There is a new top level F directory containing the public -L website (or most of it). - -The fuzz testing of inspection (F) has been removed. - -Virt-p2v now saves the source physical machine dmesg output into the -conversion server debug directory, making it simpler to debug cases of -missing drivers, firmware etc. - -=head2 Bugs fixed - -=begin comment - -https_proxy= ./bugs-in-changelog.sh 1.30.0.. - -=end comment - -=over 4 - -=item L - -set-label returns wrong error message when set the ext3/ext4 filesystem label - -=item L - -Add a Fedora 23 32-bit base image for virt-builder - -=item L - -virt-builder writes temporary files to /tmp - -=item L - -virt-resize does not copy logical partitions - -=item L - -virt-inspector returns version 6.3 for win10 images (should return 10.0) - -=item L - -virt-inspector --xpath segfault on attribute get - -=item L - -libguestfs can run commands with stdin not open (or worse still, connected to arbitrary guest-chosen random devices) - -=item L - -About compression option for qcow2 - -=item L - -guestfish should be able to handle LVM thin layouts - -=item L - -DNF python programming error when run from virt-builder - -=item L - -inspection returns arch="unknown" for Windows guest if file command is not installed - -=item L - -Document permissions needed for non-admin users to use virt-v2v - -=item L - -RFE: virt-sparsify: make '--in-place' sparsification safe to abort (gracefully or ungracefully) - -=item L - -Virt-p2v client shouldn't present the vdsm option because it's not usable - -=item L - -virt-v2v fails to convert Windows raw image: error "device name is not a partition" - -=item L - -virt-builder: error: [file] is not a regular file in the guest - -=item L - -Simplestreams test fails: virt-builder: error: the value for the key 'size' is not an integer - -=item L - -guestfish copy-in command behaves oddly/unexpectedly with wildcards - -=item L - -python: Cannot compile pip module if installed libguestfs != pip guestfs version - -=item L - -Better diagnostic message when virbr0 doesn't exist - -=item L - -No warning shows when convert a win7 guest with AVG AntiVirus installed - -=item L - -virt-builder --ssh-inject doesn't set proper permissions on created files - -=item L - -RFE: V2V to check and warn user to disable group policy and anti virus on Windows guests - -=item L - -Wrong graphics protocal and video type set for guest after convert to rhev 3.6 by virt-v2v - -=item L - -extra slashes in vcenter URL confuses virt-v2v - -=item L - -[RHEV][V2V] virt-v2v ignores NIC if interface source/@network or source/@bridge is an empty string - -=item L - -virt-builder created Fedora 22 32bit disk image cannot be updated - -=item L - -virt-p2v no GUI mode:error opening control connection to $ip:22:unexpected …rompt - -=item L - -Option -oa preallocated -of qcow2 of virt-v2v didn't work efficiently - -=item L - -v2v: spaces need to be escaped as %20 in paths - -=item L - -Close all incoming ports on virt-p2v ISO - -=item L - -man virt-customize shows synopsis twice - -=item L - -mount-loop failed to setup loop device: No such file or directory - -=item L - -BUG: unable to handle kernel NULL pointer dereference at in function __blkg_lookup - -=item L - -virt-v2v should ignore bogus kernel entries in grub config - -=item L - -Unrelated info in fstab makes virt-v2v fail with unclear error info - -=item L - -virt-p2v: Using "Back" button causes output list to be repopulated multiple times - -=item L - -Wrong video driver is installed for rhel5.11 guest after conversion to libvirt - -=item L - -RFE: virt-builder creates qcow v3 images, add build option for qcow v2 - -=item L - -File /etc/sysconfig/kernel isn't updated when convert XenPV guest with regular kernel installed - -=item L - -"lstatnslist" and "lstatlist" don't give an error if the API is used wrongly - -=item L - -koji spin-livecd cannot build a working live CD - -=item L - -mount-loop command fails: mount failed: Unknown error -1 - -=item L - -set-label can only set <=127 bytes for btrfs and <=126 bytes for ntfs filesystem which not meet the help message. Also for ntfs it should give a warning message when the length >128 bytes - -=item L - -libvirt fails to shut down domain: could not destroy libvirt domain: Requested operation is not valid: domain is not running - -=item L - -mount-loop failed to setup loop device: No such file or directory - -=back - -=for comment ################################################################ - -=head1 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. - -=head2 New features - -=head3 New tools - -L is a secure and safe alternative to the OpenStack -"diskimage-builder" tool. It is compatible with diskimage-builder -elements. (Pino Toscano) - -L extracts the kernel and ramdisk from a disk -image. Previously this functionality was part of L, -but the new tool is more featureful. (Pino Toscano) - -=head3 New features in existing tools - -L I<-i ova> mode can now read a wider range of OVA files, -and also unpacked files (directories). - -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 I<--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 L. - -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 E 8. Note this is -experimental, and possibly broken. Use with caution. - -virt-v2v can now convert UEFI guests. - -L adds a network configuration dialog. - -virt-p2v now has C, C and C 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). - -L will remove C for -non-root accounts (Hu Tao). - -L, L and virt-sysprep have the -following new options: - -=over 4 - -=item I<--commands-from-file> - -allow long lists of commands to be read from a file instead of from -the command line (Pino Toscano) - -=item I<--copy> - -copy files inside the guest (Maros Zatko) - -=item I<--copy-in> - -copy host files recursively into the guest (Pino Toscano) - -=item I<--move> - -move files inside the guest (Maros Zatko) - -=item I<--ssh-inject> - -inject SSH keys into a guest (Pino Toscano) - -=item I<--sm-attach> - -=item I<--sm-credentials> - -=item I<--sm-register> - -=item I<--sm-remove> - -=item I<--sm-unregister> - -register and unregister a guest from subscription-manager -(Pino Toscano) - -=item I<--touch> - -touch a file in the guest (Pino Toscano) - -=item I<--truncate> - -=item I<--truncate-recursive> - -truncate files (Maros Zatko) - -=back - -Improvements to virt-customize firstboot support. In particular, -Windows firstboot should work as well as Linux (Roman Kagan). - -L 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). - -L 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). - -=head3 Language bindings - -The Java bindings now include validated Javadoc, and other improvements -(Pino Toscano). - -Multiple fixes and improvements to the PHP bindings (Pino Toscano). - -=head3 Inspection - -Inspection can now get icons from RHEL 7 and CentOS 7. - -F 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 E 22 is C. - -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). - -=head3 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 I<-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. - -=head2 Security - -=over 4 - -=item CVE-2014-8484 - -=item CVE-2014-8485 - -Libguestfs previously ran the L 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. - -=item 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 -L - -=item Denial of service problems when using C - -When using the American Fuzzy Lop fuzzer (C) on the -C command, Richard W.M. Jones found that certain files -can cause the C 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 -C 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 C, to avoid this problem. If a -malicious user tries to pass one of these disk images to libguestfs, -C will crash and the crash is reported back to libguestfs -callers as an error message. - - - - -=back - -=head2 API - -=head3 New APIs - -=over 4 - -=item C - -This exposes a previously private API that allows you to pass a -C object directly from libvirt to libguestfs. - -=item C - -Adjust readahead parameter for devices. -See C command. - -=item C - -=item C - -=item C - -=item C - -=item C - -Balance support for Btrfs filesystems (Hu Tao). - -=item C - -Filesystem defragmentation support for Btrfs filesystems (Hu Tao). - -=item C - -Create an image of a Btrfs filesystem (Chen Hanxiao) - -=item C - -=item C - -=item C - -=item C - -=item C - -=item C - -=item C - -=item C - -Quote support for Btrfs filesystems (Hu Tao). - -=item C - -Scan and recover the chunk tree in Btrfs filesystems (Hu Tao). - -=item C - -Restore superblocks in Btrfs filesystems (Hu Tao). - -=item C - -Replace a device in a Btrfs filesystem (Cao Jin). - -=item C - -=item C - -=item C - -=item C - -Scrub a Btrfs filesystem (Hu Tao). - -=item C - -Get the default subvolume of a Btrfs filesystem (Hu Tao). - -=item C - -List detailed information about the subvolume of a Btrfs filesystem -(Hu Tao). - -=item C - -=item C - -=item C - -Various tuning parameters for Btrfs filesystems (Chen Hanxiao). - -=item C - -Return the C pointer to the underlying C. This allows -interworking of libguestfs bindings with bindings from other -libraries. For further information see -L - -=item C - -=item C - -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). - -=item C - -=item C - -Get and set the GPT per-partition GUID. - -=item C - -Get MBR partition type (Chen Hanxiao). - -=item C - -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). - -=back - -=head3 Other API changes - -C can now use VMDK files as backing files. - -C takes extra optional -parameters (all added by Hu Tao): - -=over 4 - -=item C - -for creating a read-only Btrfs snapshot - -=item C - -for adding the snapshot to a qgroup - -=back - -C can also take the optional -C parameter (Hu Tao). - -C can set UUID of swap partitions, Btrfs -(Hu Tao, Chen Hanxiao). - -C and C have a -new optional C parameter, allowing you to append to the output -file instead of truncating it. - -C has a new optional C