mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
6679 lines
206 KiB
Plaintext
6679 lines
206 KiB
Plaintext
=head1 NAME
|
||
|
||
guestfs-release-notes - libguestfs Release Notes
|
||
|
||
=begin comment
|
||
|
||
UPDATED TO <commit id>
|
||
|
||
=end comment
|
||
|
||
=begin comment
|
||
|
||
<script>
|
||
document.body.style.backgroundImage = "url('draft.png')";
|
||
document.body.style.backgroundRepeat = "no-repeat";
|
||
</script>
|
||
|
||
=end 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<multi-user.target> instead of C<default.target>
|
||
so they will only run when the system is booted normally.
|
||
|
||
Virt-customize now sets a random F</etc/machine-id> 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<DHCP_HOSTNAME> from F<ifcfg-*> 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<does not> 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<vcenter-https>, C<xen-ssh> and C<in-place> 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<VERSION_ID>
|
||
in F</etc/os-release> (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<wrestool>
|
||
program which is run by libguestfs to create icons for Windows guests.
|
||
Using the latest C<wrestool> is recommended.
|
||
|
||
=head2 API
|
||
|
||
=head3 New APIs
|
||
|
||
=over 4
|
||
|
||
=item C<hivex_value_string>
|
||
|
||
This replaces the deprecated C<hivex_value_utf8> API, but does the
|
||
same thing.
|
||
|
||
=item C<part_get_gpt_attributes>
|
||
|
||
=item C<part_set_gpt_attributes>
|
||
|
||
Read and write GPT partition attribute flags (Cédric Bosdonnat).
|
||
|
||
=item C<part_resize>
|
||
|
||
Enlarge or shrink an existing partition (Nikos Skalkotos).
|
||
|
||
=item C<yara_destroy>
|
||
|
||
=item C<yara_load>
|
||
|
||
=item C<yara_scan>
|
||
|
||
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</dev/urandom> as an
|
||
input "device", eg. C<g.copy_device_to_device("/dev/urandom",
|
||
"/dev/sda")>. The code has been modified to I<forbid> this usage.
|
||
|
||
All APIs for inspecting installer CDs have been deprecated. Use
|
||
libosinfo for this task.
|
||
|
||
=head2 Build changes
|
||
|
||
A working OCaml compiler E<ge> 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<RELEASES> file which lists release dates for each version of
|
||
libguestfs. You must update this file when making a new release.
|
||
|
||
Documentation generated by C<gtk-doc> 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<crypt(3)>. This is required if using
|
||
glibc E<ge> 2.27.
|
||
|
||
C<ocaml-hivex> is now required.
|
||
|
||
Libvirt E<ge> 1.2.20 is now required.
|
||
|
||
There is now a C<make check-root> target for tests which need to be
|
||
run as root (analogous to C<make check-slow>).
|
||
|
||
C<./configure>-time check for C<__attribute__((cleanup))> now works in
|
||
the cross-compilation case (Yann E. Morin).
|
||
|
||
The C<AUTHORS> and C<p2v/about-authors.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<LIBGUESTFS_PATH>. 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<GUESTFSD_EXT_CMD> 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<ge> 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<common/> subdirectory, with
|
||
OCaml common code being in F<common/ml*> directories (eg.
|
||
F<common/visit> and F<common/mlvisit> contain the visitor library in C
|
||
and OCaml respectively). The F<mllib> directory has been deleted and
|
||
replaced by F<common/mltools>.
|
||
|
||
There is now a lightweight OCaml binding for PCRE, see
|
||
F<common/mlpcre>. Use of OCaml C<Str> library has been mostly
|
||
replaced with PCRE.
|
||
|
||
Add more calls to C<udev_settle> to improve stability of partition
|
||
code (Dawid Zamirski).
|
||
|
||
Run C<udev_settle> with I<--exit-if-exists> option, which improves the
|
||
speed of this command (Pavel Butsykin).
|
||
|
||
Detect new locations of L<major(3)>, L<minor(3)>, L<makedev(3)>.
|
||
|
||
Actions can now be deprecated with no suggested replacement, for APIs
|
||
such as C<guestfs_wait_ready> that should simply be removed from
|
||
client code.
|
||
|
||
Use gnulib C<set_nonblocking_flag> wrapper instead of calling
|
||
L<fcntl(2)> with C<O_NONBLOCK> (Eric Blake). Similarly
|
||
C<set_cloexec_flag>.
|
||
|
||
Fix memory leak in XFS version of C<guestfs_vfs_minimum_size> (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<is_zero> 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<String>, C<StringList>) with many subtypes
|
||
eg. C<FileIn> becomes C<String (FileIn, ...)>.
|
||
|
||
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<direct> 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<common/mlaugeas>. 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<ge> 4.01 are used throughout the
|
||
code, including replacing ‘{ field = field }’ with ‘{ field }’.
|
||
|
||
Virt-builder C<make-template> utility now uses the C<virt-install
|
||
--transient> 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</dev/shm> is now created in the appliance (Nicolas Hicher).
|
||
|
||
In verbose mode on Fedora guests, virt-customize will now use C<dnf
|
||
--verbose> 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<https://bugzilla.redhat.com/1540535>
|
||
|
||
Example URI of "Convert from ESXi hypervisor over SSH to local libvirt" is incorrect in v2v man page
|
||
|
||
=item L<https://bugzilla.redhat.com/1539395>
|
||
|
||
virt-customize segfaults after upgrading to 1.37.35-3
|
||
|
||
=item L<https://bugzilla.redhat.com/1536765>
|
||
|
||
Libguestfs Perl bindings can leak a small amount of memory on error
|
||
|
||
=item L<https://bugzilla.redhat.com/1536763>
|
||
|
||
libguestfs Lua bindings use strerror(), which isn’t thread safe
|
||
|
||
=item L<https://bugzilla.redhat.com/1536603>
|
||
|
||
man page makes no mention of using '--' when trying to change exit on error behavior
|
||
|
||
=item L<https://bugzilla.redhat.com/1525241>
|
||
|
||
virt-df displays zeros for filesystems with block size =512
|
||
|
||
=item L<https://bugzilla.redhat.com/1519204>
|
||
|
||
v2v should improve the result when convert a rhel7.4 guest with no available kernels found in the bootloader
|
||
|
||
=item L<https://bugzilla.redhat.com/1518517>
|
||
|
||
virt-v2v fails with "unsupported configuration: shared access for disk 'sdb' requires use of supported storage format"
|
||
|
||
=item L<https://bugzilla.redhat.com/1516094>
|
||
|
||
Mere presence of QEMU file locking options breaks NBD (Block protocol 'nbd' doesn't support the option 'locking')
|
||
|
||
=item L<https://bugzilla.redhat.com/1514756>
|
||
|
||
./configure --disable-ocaml breaks building common/mlpcre which breaks building daemon
|
||
|
||
=item L<https://bugzilla.redhat.com/1513884>
|
||
|
||
[RFE]Should update some vddk info in v2v man page
|
||
|
||
=item L<https://bugzilla.redhat.com/1508874>
|
||
|
||
virt-v2v: warning: ova disk has an unknown VMware controller type (20)
|
||
|
||
=item L<https://bugzilla.redhat.com/1506572>
|
||
|
||
virt-v2v '-i ova' is not parsing the MAC address from the source OVF
|
||
|
||
=item L<https://bugzilla.redhat.com/1506511>
|
||
|
||
virt-builder fails to parse repo file if it has blank space after the repository identifier
|
||
|
||
=item L<https://bugzilla.redhat.com/1503958>
|
||
|
||
Failed to convert the rhel5 guest with kmod-xenpv installed from xen server by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1503497>
|
||
|
||
qemu-kvm fails to open qcow2 files in read-only mode with qemu-kvm 1.5.3
|
||
|
||
=item L<https://bugzilla.redhat.com/1500673>
|
||
|
||
Error info shows wrong sometimes when ssh to conversion server using non-root user with sudo on p2v client
|
||
|
||
=item L<https://bugzilla.redhat.com/1500537>
|
||
|
||
/dev/shm does not exist in the appliance environment
|
||
|
||
=item L<https://bugzilla.redhat.com/1497475>
|
||
|
||
guestfish cannot list commands from interactive mode
|
||
|
||
=item L<https://bugzilla.redhat.com/1493048>
|
||
|
||
Unbound constructor Hivex.OPEN_UNSAFE
|
||
|
||
=item L<https://bugzilla.redhat.com/1484957>
|
||
|
||
bump debian images to use single-partition layout
|
||
|
||
=item L<https://bugzilla.redhat.com/1482737>
|
||
|
||
virt-resize failed to expand swap partition for RHEL5.11 guest image with "parsing UUID failed"
|
||
|
||
=item L<https://bugzilla.redhat.com/1477623>
|
||
|
||
Running file API on a special chardev may hang forever
|
||
|
||
=item L<https://bugzilla.redhat.com/1476081>
|
||
|
||
inspect-os report error: could not parse integer in version number: V7Update2
|
||
|
||
=item L<https://bugzilla.redhat.com/1472719>
|
||
|
||
[RFE]Add warning in process of v2v converting guest which has pci passthrough device
|
||
|
||
=item L<https://bugzilla.redhat.com/1472208>
|
||
|
||
virt-v2v fails on opensuse 13.2 guest with error: statns: statns_stub: path must start with a / character
|
||
|
||
=item L<https://bugzilla.redhat.com/1469655>
|
||
|
||
firstboot scripts are not correctly installed in Fedora 26
|
||
|
||
=item L<https://bugzilla.redhat.com/1466563>
|
||
|
||
Libguestfs should pass copyonread flag through to the libvirt XML
|
||
|
||
=item L<https://bugzilla.redhat.com/1465665>
|
||
|
||
1.36.x build failure: gtkdocize fails using newer autotools due to missing GTK_DOC_CHECK in configure.ac
|
||
|
||
=item L<https://bugzilla.redhat.com/1460338>
|
||
|
||
guestfs_shutdown hangs if main process sets signal handlers
|
||
|
||
=item L<https://bugzilla.redhat.com/1459979>
|
||
|
||
guestfs_add_domain_argv fails with readonly option when vdi/vhd disk is attached to libvirt domain
|
||
|
||
=item L<https://bugzilla.redhat.com/1451665>
|
||
|
||
RFE: Virt-v2v can't convert the guest which has encrypted partition
|
||
|
||
=item L<https://bugzilla.redhat.com/1450325>
|
||
|
||
document URI format for -a parameters of tools
|
||
|
||
=item L<https://bugzilla.redhat.com/1448739>
|
||
|
||
RFE: Support multicore decompression for OVA files using pigz and pxz
|
||
|
||
=item L<https://bugzilla.redhat.com/1447202>
|
||
|
||
Win 2016 guest is described as Win 10 after imported to RHEVM
|
||
|
||
=item L<https://bugzilla.redhat.com/1441197>
|
||
|
||
RFE: ability to convert VMware virtual machines via vmx
|
||
|
||
=item L<https://bugzilla.redhat.com/1438939>
|
||
|
||
Please drop or update GnuPG (1.4.x) dependency
|
||
|
||
=item L<https://bugzilla.redhat.com/1438794>
|
||
|
||
[RFE] Install Windows virtio-rng drivers on VMs imported
|
||
|
||
=item L<https://bugzilla.redhat.com/1433937>
|
||
|
||
virt-inspector can't get icon info from altlinux-centaurus
|
||
|
||
=item L<https://bugzilla.redhat.com/1433577>
|
||
|
||
policycoreutils setfiles >= 2.6 does .. nothing
|
||
|
||
=item L<https://bugzilla.redhat.com/1431579>
|
||
|
||
Windows 8 UEFI from VMware to KVM fails to boot after conversion
|
||
|
||
=item L<https://bugzilla.redhat.com/1430680>
|
||
|
||
There is error info about "No such file or directory" when convert a guest from ova file by v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1430184>
|
||
|
||
virt-dib should generate sha256 checksum instead of sha512
|
||
|
||
=item L<https://bugzilla.redhat.com/1429506>
|
||
|
||
RFE: OVMF should be detected on conversion server to prevent failed conversion
|
||
|
||
=item L<https://bugzilla.redhat.com/1429491>
|
||
|
||
Should rename network name of rhv in virt-v2v man page
|
||
|
||
=item L<https://bugzilla.redhat.com/1427529>
|
||
|
||
virt-sysprep should remove DHCP_HOSTNAME
|
||
|
||
=item L<https://bugzilla.redhat.com/1417306>
|
||
|
||
QEMU image file locking (libguestfs)
|
||
|
||
=item L<https://bugzilla.redhat.com/1409024>
|
||
|
||
[Debian] Missing db_dump abort inspection
|
||
|
||
=item L<https://bugzilla.redhat.com/1406906>
|
||
|
||
Segmentation fault when reading corrupted path with Python 3 bindings
|
||
|
||
=item L<https://bugzilla.redhat.com/1379289>
|
||
|
||
RFE: virt-p2v should support mnemonic operations
|
||
|
||
=item L<https://bugzilla.redhat.com/1378022>
|
||
|
||
There is virt-v2v warning about <listen type='none'> during converting a guest which has listen type='none' in XML
|
||
|
||
=item L<https://bugzilla.redhat.com/1376547>
|
||
|
||
qemu-system-s390x: -device isa-serial,chardev=charserial0,id=serial0: 'isa-serial' is not a valid device model name
|
||
|
||
=item L<https://bugzilla.redhat.com/1374232>
|
||
|
||
selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success"
|
||
|
||
=item L<https://bugzilla.redhat.com/1367738>
|
||
|
||
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<https://bugzilla.redhat.com/1362649>
|
||
|
||
RFE: virt-sysprep does not utilize libguestfs encryption support
|
||
|
||
=item L<https://bugzilla.redhat.com/1172425>
|
||
|
||
[RFE]virt-v2v failed to convert VMware ESX VM with snapshot
|
||
|
||
=item L<https://bugzilla.redhat.com/1171654>
|
||
|
||
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<https://bugzilla.redhat.com/1167623>
|
||
|
||
Remove "If reporting bugs, run virt-v2v with debugging enabled .." message when running virt-p2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1152819>
|
||
|
||
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<tail -f> 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<backup-files> for removing
|
||
editor backups, and C<passwd-backups> for removing F</etc/passwd-> 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<pnp_wait.exe> which
|
||
prevents conflicts between the Windows Plug-and-Play Manager and our
|
||
own scripts that install virtio device drivers. Enabling this
|
||
requires the C<pnp_wait.exe> program to be built separately
|
||
(Roman Kagan).
|
||
|
||
OVA files exported from AWS can now be converted (Shahar Havivi).
|
||
|
||
When converting OVA files, in some circumstances virt-v2v can now read
|
||
disk images directly from the OVA input file instead of needing to
|
||
unpack the OVA file to a temporary directory. This can save large
|
||
amounts of disk space, and is quicker (Tomáš Golembiovský).
|
||
|
||
Virt-p2v can now be built on RHEL 5 (2007-era) Linux and RHEL 6, which
|
||
means that 32 bit and hardware with ancient fakeraid disks can be
|
||
virtualized. Binaries of virt-p2v based on these old versions of
|
||
RHEL can be found at http://oirase.annexia.org/virt-p2v/
|
||
|
||
Virt-p2v can now use nbdkit (an NBD server) as an alternative to
|
||
qemu-nbd. In addition, virt-p2v can use "socket activation" which is
|
||
a more robust method for opening the NBD listening socket. Socket
|
||
activation works with qemu-nbd or nbdkit, but requires the most up to
|
||
date versions.
|
||
|
||
To prevent timeouts during P2V conversions, virt-p2v inhibits power
|
||
saving on the physical machine, and also sends ping packets over the
|
||
ssh control and data connections.
|
||
|
||
Virt-v2v no longer removes the C<Processor> and C<Intelppm> nodes from
|
||
the Windows Registry.
|
||
|
||
Xen and vCenter conversions can now be done using the libvirt backend,
|
||
provided libvirt E<ge> 2.1.0 is used.
|
||
|
||
F</dev/srX> (SCSI CD-ROM) devices are ignored (Tomáš Golembiovský).
|
||
|
||
When converting SUSE Linux guests, use F</etc/modprobe.conf.local> if
|
||
it exists.
|
||
|
||
Removing VMware tools from Linux guests should now work reliably
|
||
(Pino Toscano).
|
||
|
||
When converting OVA files, virt-v2v now checks the disk image hash
|
||
contained in the manifest file, whereas previously it was ignored
|
||
because of a mistake in the code. In addition, SHA256 hashes are now
|
||
supported (Tomáš Golembiovský).
|
||
|
||
When converting OVA files that contain compressed disk images, we now
|
||
trust the C<ovf:compression> 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<RHEV-APT> utility is only installed when the output hypervisor
|
||
is oVirt or RHV.
|
||
|
||
A problem with virt-v2v running out of memory when doing an SELinux
|
||
relabel of the guest filesystem should now be resolved.
|
||
|
||
=head3 Language bindings
|
||
|
||
Setting C<EXTRA_JAVAC_FLAGS> before F<./configure> allows you to
|
||
add arbitrary flags to C<javac> when compiling the Java bindings.
|
||
|
||
Use of any libguestfs API which returned a single struct, from Perl or
|
||
Java bindings, would have leaked memory. This has now been fixed
|
||
(Pino Toscano).
|
||
|
||
=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<ge> 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</usr>
|
||
partition should now work more reliably (Pino Toscano).
|
||
|
||
When parsing guest F</etc/fstab>, paths are reduced to a canonical
|
||
form (eg. C<"///usr//local//"> → C<"/usr/local">).
|
||
|
||
Inspection of btrfs subvolumes now works where the F</etc/fstab>
|
||
options field contains commas.
|
||
|
||
F</dev/cdN> devices in guest F</etc/fstab> 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<guestfs-security(1)>.
|
||
|
||
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</dev/urandom> (previously the C function L<random(3)> 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<guestfs_aug_transform>
|
||
|
||
Exposes the Augeas C<aug_transform> API (Pino Toscano).
|
||
|
||
=item C<guestfs_find_inode>
|
||
|
||
Find files by inode number (Matteo Cafasso).
|
||
|
||
=item C<guestfs_inspect_get_windows_software_hive>
|
||
|
||
=item C<guestfs_inspect_get_windows_system_hive>
|
||
|
||
Return the path to the Windows C<HKLM\SYSTEM> and C<HKLM\SOFTWARE>
|
||
hives computed during inspection.
|
||
|
||
=item C<guestfs_mksquashfs>
|
||
|
||
Create a squashfs filesystem from a path (Pino Toscano).
|
||
|
||
=back
|
||
|
||
=head3 Other API changes
|
||
|
||
=over 4
|
||
|
||
=item C<guestfs_add_domain>
|
||
|
||
This call now handles libvirt file-based volumes correctly, where
|
||
previously these would have been ignored. Also handled are disks
|
||
which require libvirt authentication secrets to open (Pino Toscano).
|
||
|
||
=item C<guestfs_canonical_device_name>
|
||
|
||
This call will no longer incorrectly modify Linux software RAID device
|
||
names (like F</dev/mdX>).
|
||
|
||
=item C<guestfs_file_architecture>
|
||
|
||
Previously the C<file_architecture> API could return either of the
|
||
strings C<i386> or C<i486> for 32 bit x86 binaries. It now only
|
||
returns C<i386> (as documented).
|
||
|
||
This API can now return the following new values: C<riscv32>,
|
||
C<riscv64>, C<riscv128>, C<s390>, C<s390x>.
|
||
|
||
=item C<guestfs_hivex_open>
|
||
|
||
This now has an optional C<GUESTFS_HIVEX_OPEN_UNSAFE> flag which
|
||
allows certain corrupted Windows Registry hives to be opened. This
|
||
feature requires hivex E<ge> 1.3.14 (Dawid Zamirski).
|
||
|
||
=item C<guestfs_list_partitions>
|
||
|
||
This call now returns Linux software RAID partitions.
|
||
|
||
=item C<guestfs_part_to_dev>
|
||
|
||
This call now correctly handles partition names which include
|
||
C<pE<lt>NE<gt>> (Pino Toscano).
|
||
|
||
=item C<guestfs_set_label>
|
||
|
||
This call can now change the labels of swap partitions (Pino Toscano).
|
||
|
||
=back
|
||
|
||
=head2 Build changes
|
||
|
||
libmagic, the library part of the C<file> command, is now required at
|
||
build time (previously optional).
|
||
|
||
GCC 7 is now supported.
|
||
|
||
"Silent rules" are now used for OCaml programs, Java bindings. To
|
||
show the full command line executed, add C<V=1> on the make command
|
||
line (Pino Toscano).
|
||
|
||
Slow testing (C<make check-slow>) 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<fish/cmds.c> (and many more), have been split into smaller files to
|
||
speed parallel compilation.
|
||
|
||
C<make maintainer-check-extra-dist> 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</some/path> contains characters that need to be quoted (Hilko
|
||
Bengen).
|
||
|
||
gperf E<ge> 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<Common_utils> modules are now shared from
|
||
the same source file.
|
||
|
||
A considerable amount of common code has been moved into the F<common>
|
||
directory in the source and is now compiled only once. The
|
||
mini-libraries located under here are: F<common/edit>,
|
||
F<common/errnostring>, F<common/miniexpect>, F<common/options>,
|
||
F<common/parallel>, F<common/progress>, F<common/protocol>,
|
||
F<common/utils>, F<common/visit>, F<common/windows>.
|
||
|
||
The directory containing the main library code has moved from F<src> →
|
||
F<lib>.
|
||
|
||
All tests written in shell script now use a common file of utility
|
||
functions (F<tests/test-functions.sh>). There are several new utility
|
||
functions, mainly for skipping tests. Also these test scripts can now
|
||
use autoconf-like path variables like C<$abs_top_srcdir>.
|
||
|
||
UEFI paths are now stored in the generator (F<generator/uefi.ml>).
|
||
|
||
The way the generator handles actions and procedure numbers was
|
||
changed quite substantially. See F<generator/actions_*.ml> and
|
||
F<generator/proc_nr.ml>.
|
||
|
||
The gnulib C<getprogname> module is now used everywhere when
|
||
needing/printing the program name (Pino Toscano).
|
||
|
||
F<perl/Guestfs.c> is not translatable (Nikos Skalkotos).
|
||
|
||
Virt-builder templates moved from F<builder/website> to
|
||
F<builder/templates> 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<Registry> under F<mllib>.
|
||
|
||
All POSIX bindings have been moved to a new module called
|
||
C<Unix_utils> under F<mllib>.
|
||
|
||
Inspection, virt-customize and virt-v2v no longer recompute the
|
||
Windows C<%systemroot%>, C<CurrentControlSet> or paths to the
|
||
C<HKLM\SYSTEM> and C<HKLM\SOFTWARE> hives in multiple places. Instead
|
||
these are all computed once (during inspection) and passed to the
|
||
other tools through various C<guestfs_inspect_get_windows_*> APIs.
|
||
|
||
C</dev/pts> 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<guestfs_int_make_temp_path>) (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<srandom(3)> and L<random(3)> has been minimized. In
|
||
particular, temporary filenames are no longer created based on
|
||
randomness returned by L<random(3)>, but F</dev/urandom> is used
|
||
instead.
|
||
|
||
=head2 Bugs fixed
|
||
|
||
=begin comment
|
||
|
||
https_proxy= ./bugs-in-changelog.sh v1.34.0..
|
||
|
||
=end comment
|
||
|
||
=over 4
|
||
|
||
=item L<https://bugzilla.redhat.com/1425306>
|
||
|
||
typo error in virt-tail man page
|
||
|
||
=item L<https://bugzilla.redhat.com/1418283>
|
||
|
||
virt-v2v: appliance runs out of memory running setfiles command
|
||
|
||
=item L<https://bugzilla.redhat.com/1417549>
|
||
|
||
/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<https://bugzilla.redhat.com/1417444>
|
||
|
||
*** No rule to make target '../perl/lib/Sys/Guestfs.c', needed by 'libguestfs.pot'
|
||
|
||
=item L<https://bugzilla.redhat.com/1416941>
|
||
|
||
compile of 1.34.3 fails with gperf 3.1
|
||
|
||
=item L<https://bugzilla.redhat.com/1414682>
|
||
|
||
guestfs_canonical_device_name incorrectly returns /dev/sd0 for MD devices (/dev/md0)
|
||
|
||
=item L<https://bugzilla.redhat.com/1414510>
|
||
|
||
guestfs_list_filesystems does not recognize ddf partitions
|
||
|
||
=item L<https://bugzilla.redhat.com/1409023>
|
||
|
||
[Debian] ldmtool not installed in the appliance
|
||
|
||
=item L<https://bugzilla.redhat.com/1404287>
|
||
|
||
qemu-kvm cannot boot RHEL 7 kernel with TCG, hangs at "Probing EDD (edd=off to disable)..."
|
||
|
||
=item L<https://bugzilla.redhat.com/1404182>
|
||
|
||
RFE: virt-resize should support a URL as the outdisk
|
||
|
||
=item L<https://bugzilla.redhat.com/1401474>
|
||
|
||
Importing VMs from VMware is failing with error "Inspection field 'i_arch' was 'unknown'"
|
||
|
||
=item L<https://bugzilla.redhat.com/1401320>
|
||
|
||
RFE: Increate virt-sysprep coverage a bit
|
||
|
||
=item L<https://bugzilla.redhat.com/1400205>
|
||
|
||
Add --vdsm-compat=1.1 flag for VDSM
|
||
|
||
=item L<https://bugzilla.redhat.com/1398070>
|
||
|
||
typo error in man page
|
||
|
||
=item L<https://bugzilla.redhat.com/1392798>
|
||
|
||
secrets from libvirt domains are not read
|
||
|
||
=item L<https://bugzilla.redhat.com/1390876>
|
||
|
||
"--machine-readable" info should be updated in virt-v2v manual page
|
||
|
||
=item L<https://bugzilla.redhat.com/1379289>
|
||
|
||
RFE: virt-p2v should support mnemonic operations
|
||
|
||
=item L<https://bugzilla.redhat.com/1378022>
|
||
|
||
There is virt-v2v warning about <listen type='none'> during converting a guest which has listen type='none' in XML
|
||
|
||
=item L<https://bugzilla.redhat.com/1377081>
|
||
|
||
virt-p2v manual should update the new dialog information
|
||
|
||
=item L<https://bugzilla.redhat.com/1375157>
|
||
|
||
virt-v2v: -i ova: Permission denied when using libvirt and running as root
|
||
|
||
=item L<https://bugzilla.redhat.com/1374651>
|
||
|
||
Can't install qxl driver for display device in win7 guest after converting to glance by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1374405>
|
||
|
||
There is HTTP 404 error info when convert guest to glance by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1374232>
|
||
|
||
selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success"
|
||
|
||
=item L<https://bugzilla.redhat.com/1372668>
|
||
|
||
Process status is not normal in windows guest after converted from kvm to rhev by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1372269>
|
||
|
||
Builder does not set hostname properly for Debian 8 (Jessie)
|
||
|
||
=item L<https://bugzilla.redhat.com/1371843>
|
||
|
||
Improve OVA import compatibility
|
||
|
||
=item L<https://bugzilla.redhat.com/1370424>
|
||
|
||
virt-manager coredump when vm with gluster image exists
|
||
|
||
=item L<https://bugzilla.redhat.com/1367839>
|
||
|
||
Cannot import VMs from Xen and VMware when using RHEL7.3 host.
|
||
|
||
=item L<https://bugzilla.redhat.com/1367738>
|
||
|
||
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<https://bugzilla.redhat.com/1367615>
|
||
|
||
OVMF file which is built for rhel7.3 can't be used for virt-v2v uefi conversion
|
||
|
||
=item L<https://bugzilla.redhat.com/1366456>
|
||
|
||
Converting rhel7 host installed on RAID:warning: fstrim: fstrim: /sysroot/: the discard operation is not supported
|
||
|
||
=item L<https://bugzilla.redhat.com/1366049>
|
||
|
||
RFE: libvirt backend: support handling disks stored as volume name in a pool
|
||
|
||
=item L<https://bugzilla.redhat.com/1365005>
|
||
|
||
Guest name is incorrect if convert guest from disk image by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1362649>
|
||
|
||
RFE: virt-sysprep does not utilize libguestfs encryption support
|
||
|
||
=item L<https://bugzilla.redhat.com/1354507>
|
||
|
||
virt-v2v conversions from vCenter do not consistently obey the proxy environment variables
|
||
|
||
=item L<https://bugzilla.redhat.com/1168144>
|
||
|
||
warning: fstrim: fstrim: /sysroot/: FITRIM ioctl failed: Operation not supported (ignored) when convert win2003 guest from xen server
|
||
|
||
=item L<https://bugzilla.redhat.com/1161019>
|
||
|
||
RFE: Only install RHEV-APT if virt-v2v -o rhev/-o vdsm option is used
|
||
|
||
=item L<https://bugzilla.redhat.com/1152369>
|
||
|
||
virt-v2v failed to convert RHEL 6.7 UEFI guest: no grub1/grub-legacy or grub2 configuration file was found
|
||
|
||
=item L<https://bugzilla.redhat.com/1141631>
|
||
|
||
[RFE] virt-v2v should support convert a guest to a dir-pool with using pool's uuid
|
||
|
||
=item L<https://bugzilla.redhat.com/1134878>
|
||
|
||
libvirt reports json "backing file" is missing
|
||
|
||
=item L<https://bugzilla.redhat.com/1019388>
|
||
|
||
firstboot scripts (virt-builder, virt-sysprep) don't work for Debian 6 & 7 guests
|
||
|
||
=item L<https://bugzilla.redhat.com/737600>
|
||
|
||
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<utils/boot-benchmark> and
|
||
F<utils/boot-analysis> in the source tree).
|
||
|
||
The virt-p2v tool for converting physical machines to virtual machines
|
||
was substantially improved. This includes: clearer, coloured output
|
||
during conversions, support for Gtk 3, more detailed information about
|
||
hardware, click to identify network interfaces, more debugging tools
|
||
included with the ISO, and many bug fixes.
|
||
|
||
f2fs (Flash Friendly File System) is now supported (Pino Toscano).
|
||
|
||
=head3 New tools
|
||
|
||
L<virt-p2v-make-kiwi(1)> can be used to build the virt-p2v ISO based
|
||
on SLES and openSUSE, using the kiwi utility (Cédric Bosdonnat).
|
||
|
||
=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<os-version> for the virt-p2v disk. If omitted it will try to choose
|
||
a suitable C<os-version> 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 C<E<lt>OriginE<gt>> 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<getopt_long(3)> 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<pvvxsvc> as an alternative to C<rhsrvany>
|
||
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<fs-uuids> 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<http://libguestfs.org/download/python/>
|
||
|
||
The Ruby bindings now print the full exception if one is thrown by the
|
||
event callback. Note this is still incorrect behaviour as event
|
||
callbacks should not throw exceptions, but it aids debugging.
|
||
|
||
All OCaml libraries and programs are now compiled with
|
||
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<lt> 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</etc/fstab> 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<guestfs-building(1)> 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<guestfs-testing(1)> 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<guestfs-security(1)>.
|
||
|
||
=head3 CVE-2015-8869
|
||
|
||
L<https://bugzilla.redhat.com/CVE-2015-8869>
|
||
|
||
This vulnerability in OCaml might affect virt tools written in the
|
||
OCaml programming language. It affects only 64 bit platforms.
|
||
Because this bug affects code generation it is difficult to predict
|
||
which precise software could be affected, and therefore our
|
||
recommendation is that you recompile libguestfs using a version of the
|
||
OCaml compiler where this bug has been fixed (or ask your Linux distro
|
||
to do the same).
|
||
|
||
=head3 virt-customize ownership of F<.ssh>, F<.ssh/authorized_keys>
|
||
|
||
L<https://bugzilla.redhat.com/1337561>
|
||
|
||
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<root.root>. 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<btrfs_filesystem_show>
|
||
|
||
List all devices where a btrfs filesystem is spanned (Pino Toscano).
|
||
|
||
=item C<download_blocks>
|
||
|
||
=item C<download_inode>
|
||
|
||
=item C<filesystem_walk>
|
||
|
||
Download filesystem data blocks from a given partition. Download
|
||
arbitrary files by inode number. Retrieve all files from a filesystem
|
||
including deleted files.
|
||
|
||
Note these require optional dependency The Sleuth Kit. (Matteo
|
||
Cafasso)
|
||
|
||
=item C<get_sockdir>
|
||
|
||
Read the path where temporary sockets are stored (Pino Toscano).
|
||
|
||
=item C<mountable_device>
|
||
|
||
=item C<mountable_subvolume>
|
||
|
||
Split a Mountable into device name and subvolume
|
||
(Cédric Bosdonnat).
|
||
|
||
=item C<ntfscat_i>
|
||
|
||
Download NTFS file by inode number (Matteo Cafasso).
|
||
|
||
=item C<part_expand_gpt>
|
||
|
||
Allow in-place expanding of GPT partitions by moving the second
|
||
(backup) partition table to the end of the disk (Maxim Perevedentsev).
|
||
|
||
=item C<part_get_disk_guid>
|
||
|
||
=item C<part_set_disk_guid>
|
||
|
||
=item C<part_set_disk_guid_random>
|
||
|
||
Get and set the GPT disk GUID, or set it to a fresh random value
|
||
(Maxim Perevedentsev).
|
||
|
||
=item C<selinux_relabel>
|
||
|
||
SELinux-relabel part or all of the guest filesystem.
|
||
|
||
=back
|
||
|
||
=head3 Other API changes
|
||
|
||
C<guestfs_set_selinux>, C<guestfs_get_selinux>, C<guestfs_setcon>,
|
||
C<guestfs_getcon> and C<guestfs_llz> have been deprecated. Use the
|
||
new API C<guestfs_selinux_relabel> to relabel filesystems. Use
|
||
C<guestfs_lgetxattrs> to list the C<security.selinux> extended
|
||
attributes of existing files.
|
||
|
||
C<guestfs_vfs_minimum_size> can now be used on dirty filesystems
|
||
(Maxim Perevedentsev).
|
||
|
||
C<guestfs_ll> now works on paths which contain absolute symlinks
|
||
(Pino Toscano).
|
||
|
||
C<guestfs_glob_expand> now has an optional C<directoryslash> boolean
|
||
parameter which controls whether trailing slashes are returned for
|
||
directory names (Pino Toscano).
|
||
|
||
C<guestfs_lvs> will no longer return LVs which have the
|
||
C<activationskip> flag set. The reason is that such LVs have no
|
||
C</dev/VG/LV> device node and so code which read the list of LVs and
|
||
then probed the devices themselves would immediately fail. You can
|
||
use C<guestfs_lvs_full> if you want to read all LVs.
|
||
(Pino Toscano).
|
||
|
||
C<guestfs_list_disk_labels> now no longer fails if no disks with
|
||
labels were added. Instead it now returns an empty list (Pino
|
||
Toscano).
|
||
|
||
C<guestfs_is_lv> no longer fails if passed a btrfs subvolume, it
|
||
returns false instead (Maxim Perevedentsev).
|
||
|
||
=head2 Build changes
|
||
|
||
qemu E<ge> 1.3.0 is required.
|
||
|
||
yajl (a JSON parsing library) is required to build libguestfs.
|
||
|
||
You can now build with GCC 6.
|
||
|
||
C<make check-valgrind> now has substantially better coverage.
|
||
|
||
C<make check-slow> now works again.
|
||
|
||
Use C<make -C appliance clean-supermin-appliance> to clean the
|
||
supermin appliance (it will be rebuilt on next C<make>).
|
||
|
||
There are a variety of new rules for running virt-p2v from the source
|
||
directory: C<make -C p2v run-virt-p2v-directly> |
|
||
C<run-virt-p2v-in-a-vm> | C<run-virt-p2v-non-gui-conversion>. These
|
||
are documented further in L<guestfs-hacking(1)>.
|
||
|
||
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<guestfs-building(1)>.
|
||
|
||
=head2 Internals
|
||
|
||
In git, versions are now tagged with C<v1.XX.YY> (previously they were
|
||
tagged with C<1.XX.YY>). Using the C<v-> 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 C<err-E<gt>int1> field
|
||
which usually contains the C<errno>.
|
||
|
||
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<guestfs_int_*> whereas previously there was no consistent scheme.
|
||
|
||
The old C<safe_malloc> 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<COMPILE_REGEXP> macro can now be used in the daemon.
|
||
|
||
When tracing, results containing structs are now printed in full (Pino
|
||
Toscano).
|
||
|
||
The Perl C<Sys::Guestfs> 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-E<gt>version>.
|
||
|
||
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<error(3)> function is now used everywhere, replacing most
|
||
previous uses of L<perror(3)> + L<exit(3)>, and L<fprintf(3)> + exit.
|
||
|
||
In C code, C</**> comments are turned into documentation which is
|
||
automatically added to the L<guestfs-hacking(1)> manual page.
|
||
|
||
A safe "getumask" function has been added. For recent Linux kernels
|
||
this uses the newly added C<Umask> field in F</proc/self/status>. For
|
||
older Linux and other Unix, this uses a thread-safe technique
|
||
involving L<fork(2)> (thanks: Josh Stone, Jiri Jaburek, Eric Blake).
|
||
|
||
Safe L<posix_fadvise(2)> 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<waitpid(2)> has been added which handles
|
||
C<INTR> properly.
|
||
|
||
C<podwrapper.pl> (used to generate the manual pages) now stops if any
|
||
POD error is found. A new script called C<podcheck.pl> 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<src/version.c> (Pino Toscano).
|
||
|
||
On Windows guests, virt-customize will use the vendor-neutral path
|
||
S<C<C:\Program Files\Guestfs\Firstboot>> to store firstboot scripts.
|
||
Previously it used S<C<C:\Program Files\Red Hat\Firstboot>>. This
|
||
change should be invisible to the scripts themselves.
|
||
(Cédric Bosdonnat)
|
||
|
||
On Linux guests, the firstboot services generated by virt-builder
|
||
I<--firstboot> etc have been renamed to C<guestfs-firstboot>
|
||
(Pino Toscano).
|
||
|
||
There is now a common C<debug> function used by all OCaml tools,
|
||
replacing previous code which did S<C<if verbose () then printf ...>>.
|
||
|
||
virt-p2v copies files it needs over to the virt-v2v conversion server
|
||
using L<scp(1)>, 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<mllib> is now built into a single C<mllib.cma> or
|
||
C<mllib.cmxa> library. All code in F<customize> is now built into a
|
||
single C<customize.cma> or C<customize.cmxa> library. This simplifies
|
||
the build of the OCaml tools.
|
||
|
||
L<lvmetad(8)> is now used in the appliance when available (Pino Toscano).
|
||
|
||
"Silent rules" are used for OCaml, Java, Erlang and POD. Use
|
||
C<make V=1> 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<https://bugzilla.redhat.com/1364347>
|
||
|
||
virt-sparsify --in-place failed with UEFI system
|
||
|
||
=item L<https://bugzilla.redhat.com/1362357>
|
||
|
||
run_command runs exit handlers when execve fails (e.g. due to missing executable)
|
||
|
||
=item L<https://bugzilla.redhat.com/1362354>
|
||
|
||
virt-dib failed to create image using DIB_YUM_REPO_CONF
|
||
|
||
=item L<https://bugzilla.redhat.com/1359652>
|
||
|
||
Fail to inspect Windows ISO file
|
||
|
||
=item L<https://bugzilla.redhat.com/1358142>
|
||
|
||
Some info will show when convert guest to libvirt by virt-v2v with parameter --quiet
|
||
|
||
=item L<https://bugzilla.redhat.com/1354335>
|
||
|
||
overlay of disk images does not specify the format of the backing file
|
||
|
||
=item L<https://bugzilla.redhat.com/1352761>
|
||
|
||
Virt-manager can't show OS icons of win7/win8/ubuntu guest.
|
||
|
||
=item L<https://bugzilla.redhat.com/1350363>
|
||
|
||
Improve error info "remote server timeout unexpectedly waiting for password prompt" when connect to a bogus server at p2v client
|
||
|
||
=item L<https://bugzilla.redhat.com/1348900>
|
||
|
||
virt-p2v should update error prompt when 'Test connection' with a non-existing user in conversion server
|
||
|
||
=item L<https://bugzilla.redhat.com/1345813>
|
||
|
||
virt-sysprep --install always failed to install the packages specified
|
||
|
||
=item L<https://bugzilla.redhat.com/1345809>
|
||
|
||
virt-customize --truncate-recursive should give an error message when specifying a no-existing path
|
||
|
||
=item L<https://bugzilla.redhat.com/1343423>
|
||
|
||
[RFE]Should give a better description about 'curl error 22' when failed using ssh identity http url at p2v client
|
||
|
||
=item L<https://bugzilla.redhat.com/1343414>
|
||
|
||
Failed SSH to conversion server by ssh identity http url at p2v client
|
||
|
||
=item L<https://bugzilla.redhat.com/1343375>
|
||
|
||
[RFE] uninstall packages inside the VM
|
||
|
||
=item L<https://bugzilla.redhat.com/1342447>
|
||
|
||
Ifconfig command is not supported on p2v client
|
||
|
||
=item L<https://bugzilla.redhat.com/1342398>
|
||
|
||
Convert a guest from RHEL by virt-v2v but its origin info shows RHEV at rhevm
|
||
|
||
=item L<https://bugzilla.redhat.com/1342337>
|
||
|
||
Should remind a warning about disk image has a partition when using virt-p2v-make-disk
|
||
|
||
=item L<https://bugzilla.redhat.com/1341984>
|
||
|
||
virt-get-kernel prompts an 'invalid value' error when using --format auto
|
||
|
||
=item L<https://bugzilla.redhat.com/1341564>
|
||
|
||
virt-p2v spinner should be hidden when it stops spinning
|
||
|
||
=item L<https://bugzilla.redhat.com/1340809>
|
||
|
||
Testing connection timeout when input regular user of conversion server with checked "use sudo......"button
|
||
|
||
=item L<https://bugzilla.redhat.com/1340464>
|
||
|
||
[RFE] Suggestion give user a reminder for "Cancel conversion" button
|
||
|
||
=item L<https://bugzilla.redhat.com/1340407>
|
||
|
||
Multiple network ports will not be aligned at p2v client
|
||
|
||
=item L<https://bugzilla.redhat.com/1338083>
|
||
|
||
Update UEFI whitelist for official fedora packages
|
||
|
||
=item L<https://bugzilla.redhat.com/1337561>
|
||
|
||
virt-customize --ssh-inject not applying correct file permission
|
||
|
||
=item L<https://bugzilla.redhat.com/1335671>
|
||
|
||
extra quotes around UUID confuses findfs in RHEL (but not in Fedora)
|
||
|
||
=item L<https://bugzilla.redhat.com/1332025>
|
||
|
||
Inspection does not parse /etc/redhat-release containing "Derived from Red Hat Enterprise Linux 7.1 (Source)"
|
||
|
||
=item L<https://bugzilla.redhat.com/1327488>
|
||
|
||
RFE: Allow p2v kernel options without p2v.server to set defaults
|
||
|
||
=item L<https://bugzilla.redhat.com/1325825>
|
||
|
||
virt-v2v should prevent using multiple '-b' and '-n' option appears on the command line
|
||
|
||
=item L<https://bugzilla.redhat.com/1321620>
|
||
|
||
libguestfs: error: could not parse integer in version number: 7"
|
||
|
||
=item L<https://bugzilla.redhat.com/1321338>
|
||
|
||
[1.33.16] Compilation Error: Unbound value List.sort_uniq in v2v.ml line 988, characters 10-24:
|
||
|
||
=item L<https://bugzilla.redhat.com/1317843>
|
||
|
||
`virt-builder --update` fails with: "dnf -y --best upgrade: command exited with an error"
|
||
|
||
=item L<https://bugzilla.redhat.com/1316479>
|
||
|
||
v2v cmd cannot exit and "block I/O error in device 'appliance': No space left on device (28)" is printed when specified "-v -x"
|
||
|
||
=item L<https://bugzilla.redhat.com/1316041>
|
||
|
||
virt-rescue fails, but missing error message
|
||
|
||
=item L<https://bugzilla.redhat.com/1314244>
|
||
|
||
RFE: virt-p2v log window should process colour escapes and backspaces
|
||
|
||
=item L<https://bugzilla.redhat.com/1312254>
|
||
|
||
virt-v2v -o libvirt doesn't preserve or use correct <graphics type="vnc|spice">
|
||
|
||
=item L<https://bugzilla.redhat.com/1309706>
|
||
|
||
error: internal error: Invalid floppy device name: hdb
|
||
|
||
=item L<https://bugzilla.redhat.com/1309619>
|
||
|
||
Wrong warning info "use standard VGA" shows when converting windows > 7 by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1309580>
|
||
|
||
OS name of win8.1 x64 guest shows incorrect in rhevm3.6 general info
|
||
|
||
=item L<https://bugzilla.redhat.com/1308769>
|
||
|
||
virt-v2v does not copy additional disks to Glance
|
||
|
||
=item L<https://bugzilla.redhat.com/1306666>
|
||
|
||
Failure when disk contains an LV with activationskip=y
|
||
|
||
=item L<https://bugzilla.redhat.com/1296606>
|
||
|
||
virt-v2v doesn't remove VirtualBox additions correctly because of file quoting
|
||
|
||
=item L<https://bugzilla.redhat.com/1293527>
|
||
|
||
There should be a reminder to avoid user to edit a guest image by multiple tools at the same time in guestfish man page
|
||
|
||
=item L<https://bugzilla.redhat.com/1293276>
|
||
|
||
guestfish can not ll a symbolic link dir or edit a file in it
|
||
|
||
=item L<https://bugzilla.redhat.com/1278878>
|
||
|
||
guestfish should be able to handle LVM thin layouts
|
||
|
||
=item L<https://bugzilla.redhat.com/1264835>
|
||
|
||
ppc64le: virt-customize --install fail to detect the guest arch
|
||
|
||
=item L<https://bugzilla.redhat.com/1264332>
|
||
|
||
Test that trimming in virt-v2v doesn't regress
|
||
|
||
=item L<https://bugzilla.redhat.com/1232192>
|
||
|
||
Virt-v2v gives an error on a blank disk: part_get_parttype: unknown signature, of the output: BYT;
|
||
|
||
=item L<https://bugzilla.redhat.com/1229386>
|
||
|
||
virt-p2v in non-GUI mode doesn't show any conversion progress or status
|
||
|
||
=item L<https://bugzilla.redhat.com/1227599>
|
||
|
||
P2V invalid password prints unexpected end of file waiting for command prompt.
|
||
|
||
=item L<https://bugzilla.redhat.com/1224795>
|
||
|
||
On Ubuntu, virt-builder --install and --update cannot use the network
|
||
|
||
=item L<https://bugzilla.redhat.com/1213324>
|
||
|
||
virt-v2v: warning: unknown guest operating system: windows windows 6.3 when converting win8,win8.1,win2012,win2012R2,win10 to rhev
|
||
|
||
=item L<https://bugzilla.redhat.com/1203898>
|
||
|
||
Support inspecting docker images without /etc/fstab
|
||
|
||
=item L<https://bugzilla.redhat.com/1186935>
|
||
|
||
libguestfs cannot inspect recent Fedora / RHEL >= 7 when /usr is a separate partition
|
||
|
||
=item L<https://bugzilla.redhat.com/1167916>
|
||
|
||
P2V: invalid conversion server prints unexpected end of file waiting for password prompt.
|
||
|
||
=item L<https://bugzilla.redhat.com/1152825>
|
||
|
||
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<https://bugzilla.redhat.com/1150298>
|
||
|
||
ARM 32 bit on Ubuntu: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
|
||
|
||
=item L<https://bugzilla.redhat.com/1089100>
|
||
|
||
NetworkManager avc unlink denied for resolv.conf after using --selinux-relabel
|
||
|
||
=item L<https://bugzilla.redhat.com/983969>
|
||
|
||
RFE: virt-sysprep should be SELinux-aware
|
||
|
||
=item L<https://bugzilla.redhat.com/855058>
|
||
|
||
RFE: virt-p2v: display more information about storage devices
|
||
|
||
=item L<https://bugzilla.redhat.com/554829>
|
||
|
||
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<virt-v2v-copy-to-local(1)> tool is an ancillary tool for
|
||
L<virt-v2v(1)> 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<dnf(8)> 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<ge> 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</tmp>
|
||
(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<get_program_name> API now returns
|
||
the true program name, instead of the incorrect string C<perl> or
|
||
C<python>.
|
||
|
||
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<env(1)> 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<close> 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<Guestfs.event_callback>. 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</etc/os-release> will be preferred for inspecting
|
||
Linux guests (Pino Toscano).
|
||
|
||
The correct kernel version is returned for Windows guests E<ge> 10.
|
||
|
||
=head3 Documentation
|
||
|
||
The large L<guestfs(3)> man page has been split into several separate
|
||
man pages: L<guestfs-hacking(1)> L<guestfs-internals(1)>
|
||
L<guestfs-security(1)>. In the source tree, a new F<docs> directory
|
||
contains this documentation.
|
||
|
||
=head3 Architectures and platforms
|
||
|
||
Libguestfs now supports ARM 64 bit platforms with vGICv3.
|
||
|
||
=head2 Security
|
||
|
||
See also L<guestfs-security(1)>.
|
||
|
||
=over 4
|
||
|
||
=item C<CVE-2015-5745>
|
||
|
||
L<https://bugzilla.redhat.com/1251157>
|
||
|
||
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</guestfs_sh> 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<https://bugzilla.redhat.com/1260778>.
|
||
|
||
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<ssh-copy-id(1)>
|
||
utility.
|
||
|
||
=back
|
||
|
||
=head2 API
|
||
|
||
=head3 New APIs
|
||
|
||
=over 4
|
||
|
||
=item C<guestfs_get_identifier>
|
||
|
||
=item C<guestfs_set_identifier>
|
||
|
||
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<guestfs_vfs_minimum_size>
|
||
|
||
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<guestfs_disk_create>: add C<preallocation> = C<off>/C<metadata>/C<full>.
|
||
|
||
For raw, this allows C<off> as a synonym for C<sparse> (making it
|
||
consistent with qcow2). For qcow2, this allows C<sparse> as a synonym
|
||
for C<off>.
|
||
|
||
It also adds C<full>, which corresponds to fully allocated, but uses
|
||
L<posix_fallocate(3)> for efficiency.
|
||
|
||
=item C<guestfs_tar_in>: new C<xattrs>, C<selinux>, C<acl> parameters.
|
||
|
||
=item C<guestfs_tar_out>: new C<xattrs>, C<selinux>, C<acl> parameters.
|
||
|
||
These extra parameters control whether extended attributes, SELinux
|
||
contexts and/or POSIX ACLs are restored from / saved to tarballs.
|
||
|
||
=item C<guestfs_add_drive>
|
||
|
||
The existing C<username> and C<secret> 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<oldlinux> branch if you need (limited) RHEL 5 support.
|
||
|
||
Virt-p2v can now be built on RHEL 6-era (c.2010) Linux distros.
|
||
|
||
OCaml E<ge> 3.11 (released in 2008) is now required to build from git.
|
||
|
||
Building the Perl bindings now requires C<Module::Build> (instead of
|
||
C<ExtUtils::MakeMaker>).
|
||
|
||
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<make check> tests now run in parallel (within each test directory).
|
||
|
||
C<make install> no longer installs OCaml F<bindtests.*> files
|
||
incorrectly.
|
||
|
||
C<make install> can now be run twice. Previously it would fail on the
|
||
second run.
|
||
|
||
C<make clean> should now remove nearly every file that C<make>
|
||
creates.
|
||
|
||
A new C<make installcheck> 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<Guestfs.Errno> 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<deheader> program to remove unused C<#include> directives.
|
||
|
||
In OCaml tools, the C<Char> and C<String> modules now implicitly
|
||
reference the C<Common_utils.Char> and C<Common_utils.String> modules
|
||
(instead of the ones from stdlib). The C<Common_utils> 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<configure.ac> file has been split into several smaller
|
||
files called F<m4/guestfs_*.m4>.
|
||
|
||
The old F<tests/data> and F<tests/guests> directories have been moved
|
||
to F<test-data/>. 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<website/> directory containing the public
|
||
L<http://libguestfs.org> website (or most of it).
|
||
|
||
The fuzz testing of inspection (F<tests/fuzz>) 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<https://bugzilla.redhat.com/1294956>
|
||
|
||
set-label returns wrong error message when set the ext3/ext4 filesystem label
|
||
|
||
=item L<https://bugzilla.redhat.com/1288733>
|
||
|
||
Add a Fedora 23 32-bit base image for virt-builder
|
||
|
||
=item L<https://bugzilla.redhat.com/1288201>
|
||
|
||
virt-builder writes temporary files to /tmp
|
||
|
||
=item L<https://bugzilla.redhat.com/1285847>
|
||
|
||
virt-resize does not copy logical partitions
|
||
|
||
=item L<https://bugzilla.redhat.com/1281578>
|
||
|
||
virt-inspector returns version 6.3 for win10 images (should return 10.0)
|
||
|
||
=item L<https://bugzilla.redhat.com/1281577>
|
||
|
||
virt-inspector --xpath segfault on attribute get
|
||
|
||
=item L<https://bugzilla.redhat.com/1280029>
|
||
|
||
libguestfs can run commands with stdin not open (or worse still, connected to arbitrary guest-chosen random devices)
|
||
|
||
=item L<https://bugzilla.redhat.com/1279273>
|
||
|
||
About compression option for qcow2
|
||
|
||
=item L<https://bugzilla.redhat.com/1278878>
|
||
|
||
guestfish should be able to handle LVM thin layouts
|
||
|
||
=item L<https://bugzilla.redhat.com/1278382>
|
||
|
||
DNF python programming error when run from virt-builder
|
||
|
||
=item L<https://bugzilla.redhat.com/1278371>
|
||
|
||
inspection returns arch="unknown" for Windows guest if file command is not installed
|
||
|
||
=item L<https://bugzilla.redhat.com/1277274>
|
||
|
||
Document permissions needed for non-admin users to use virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1277122>
|
||
|
||
RFE: virt-sparsify: make '--in-place' sparsification safe to abort (gracefully or ungracefully)
|
||
|
||
=item L<https://bugzilla.redhat.com/1277074>
|
||
|
||
Virt-p2v client shouldn't present the vdsm option because it's not usable
|
||
|
||
=item L<https://bugzilla.redhat.com/1276540>
|
||
|
||
virt-v2v fails to convert Windows raw image: error "device name is not a partition"
|
||
|
||
=item L<https://bugzilla.redhat.com/1275806>
|
||
|
||
virt-builder: error: [file] is not a regular file in the guest
|
||
|
||
=item L<https://bugzilla.redhat.com/1270011>
|
||
|
||
Simplestreams test fails: virt-builder: error: the value for the key 'size' is not an integer
|
||
|
||
=item L<https://bugzilla.redhat.com/1267032>
|
||
|
||
guestfish copy-in command behaves oddly/unexpectedly with wildcards
|
||
|
||
=item L<https://bugzilla.redhat.com/1262983>
|
||
|
||
python: Cannot compile pip module if installed libguestfs != pip guestfs version
|
||
|
||
=item L<https://bugzilla.redhat.com/1262127>
|
||
|
||
Better diagnostic message when virbr0 doesn't exist
|
||
|
||
=item L<https://bugzilla.redhat.com/1261436>
|
||
|
||
No warning shows when convert a win7 guest with AVG AntiVirus installed
|
||
|
||
=item L<https://bugzilla.redhat.com/1260778>
|
||
|
||
virt-builder --ssh-inject doesn't set proper permissions on created files
|
||
|
||
=item L<https://bugzilla.redhat.com/1260689>
|
||
|
||
RFE: V2V to check and warn user to disable group policy and anti virus on Windows guests
|
||
|
||
=item L<https://bugzilla.redhat.com/1260590>
|
||
|
||
Wrong graphics protocal and video type set for guest after convert to rhev 3.6 by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1258342>
|
||
|
||
extra slashes in vcenter URL confuses virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1257895>
|
||
|
||
[RHEV][V2V] virt-v2v ignores NIC if interface source/@network or source/@bridge is an empty string
|
||
|
||
=item L<https://bugzilla.redhat.com/1256405>
|
||
|
||
virt-builder created Fedora 22 32bit disk image cannot be updated
|
||
|
||
=item L<https://bugzilla.redhat.com/1256222>
|
||
|
||
virt-p2v no GUI mode:error opening control connection to $ip:22:unexpected …rompt
|
||
|
||
=item L<https://bugzilla.redhat.com/1251909>
|
||
|
||
Option -oa preallocated -of qcow2 of virt-v2v didn't work efficiently
|
||
|
||
=item L<https://bugzilla.redhat.com/1250715>
|
||
|
||
v2v: spaces need to be escaped as %20 in paths
|
||
|
||
=item L<https://bugzilla.redhat.com/1248678>
|
||
|
||
Close all incoming ports on virt-p2v ISO
|
||
|
||
=item L<https://bugzilla.redhat.com/1246882>
|
||
|
||
man virt-customize shows synopsis twice
|
||
|
||
=item L<https://bugzilla.redhat.com/1242853>
|
||
|
||
mount-loop failed to setup loop device: No such file or directory
|
||
|
||
=item L<https://bugzilla.redhat.com/1237136>
|
||
|
||
BUG: unable to handle kernel NULL pointer dereference at <addr> in function __blkg_lookup
|
||
|
||
=item L<https://bugzilla.redhat.com/1230412>
|
||
|
||
virt-v2v should ignore bogus kernel entries in grub config
|
||
|
||
=item L<https://bugzilla.redhat.com/1229119>
|
||
|
||
Unrelated info in fstab makes virt-v2v fail with unclear error info
|
||
|
||
=item L<https://bugzilla.redhat.com/1227609>
|
||
|
||
virt-p2v: Using "Back" button causes output list to be repopulated multiple times
|
||
|
||
=item L<https://bugzilla.redhat.com/1225789>
|
||
|
||
Wrong video driver is installed for rhel5.11 guest after conversion to libvirt
|
||
|
||
=item L<https://bugzilla.redhat.com/1204131>
|
||
|
||
RFE: virt-builder creates qcow v3 images, add build option for qcow v2
|
||
|
||
=item L<https://bugzilla.redhat.com/1176801>
|
||
|
||
File /etc/sysconfig/kernel isn't updated when convert XenPV guest with regular kernel installed
|
||
|
||
=item L<https://bugzilla.redhat.com/1174551>
|
||
|
||
"lstatnslist" and "lstatlist" don't give an error if the API is used wrongly
|
||
|
||
=item L<https://bugzilla.redhat.com/1168223>
|
||
|
||
koji spin-livecd cannot build a working live CD
|
||
|
||
=item L<https://bugzilla.redhat.com/1165785>
|
||
|
||
mount-loop command fails: mount failed: Unknown error -1
|
||
|
||
=item L<https://bugzilla.redhat.com/1164708>
|
||
|
||
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<https://bugzilla.redhat.com/1020216>
|
||
|
||
libvirt fails to shut down domain: could not destroy libvirt domain: Requested operation is not valid: domain is not running
|
||
|
||
=item L<https://bugzilla.redhat.com/1011907>
|
||
|
||
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<virt-dib(1)> is a secure and safe alternative to the OpenStack
|
||
"diskimage-builder" tool. It is compatible with diskimage-builder
|
||
elements. (Pino Toscano)
|
||
|
||
L<virt-get-kernel(1)> extracts the kernel and ramdisk from a disk
|
||
image. Previously this functionality was part of L<virt-builder(1)>,
|
||
but the new tool is more featureful. (Pino Toscano)
|
||
|
||
=head3 New features in existing tools
|
||
|
||
L<virt-v2v(1)> 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-test-harness(1)>.
|
||
|
||
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<ge> 8. Note this is
|
||
experimental, and possibly broken. Use with caution.
|
||
|
||
virt-v2v can now convert UEFI guests.
|
||
|
||
L<virt-p2v(1)> adds a network configuration dialog.
|
||
|
||
virt-p2v now has C<p2v.pre>, C<p2v.post> and C<p2v.fail> 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<virt-sysprep(1)> will remove C</var/spool/mail/username> for
|
||
non-root accounts (Hu Tao).
|
||
|
||
L<virt-customize(1)>, L<virt-builder(1)> 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<virt-df(1)> 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<guestfish(1)> 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</etc/favicon.png> 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<ge> 22 is C<dnf>.
|
||
|
||
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<strings(1)> 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<https://github.com/libguestfs/libguestfs/commit/6c6ce85f94c36803fe2db35a98db436bff0c14b0>
|
||
|
||
=item Denial of service problems when using C<qemu-img info>
|
||
|
||
When using the American Fuzzy Lop fuzzer (C<afl-fuzz>) on the
|
||
C<qemu-img info> command, Richard W.M. Jones found that certain files
|
||
can cause the C<qemu-img> 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<qemu-img info> 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<qemu-img info>, to avoid this problem. If a
|
||
malicious user tries to pass one of these disk images to libguestfs,
|
||
C<qemu-img> 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<guestfs_add_libvirt_dom>
|
||
|
||
This exposes a previously private API that allows you to pass a
|
||
C<virDomainPtr> object directly from libvirt to libguestfs.
|
||
|
||
=item C<guestfs_blockdev_setra>
|
||
|
||
Adjust readahead parameter for devices.
|
||
See C<blockdev --setra> command.
|
||
|
||
=item C<guestfs_btrfs_balance>
|
||
|
||
=item C<guestfs_btrfs_balance_cancel>
|
||
|
||
=item C<guestfs_btrfs_balance_pause>
|
||
|
||
=item C<guestfs_btrfs_balance_resume>
|
||
|
||
=item C<guestfs_btrfs_balance_status>
|
||
|
||
Balance support for Btrfs filesystems (Hu Tao).
|
||
|
||
=item C<guestfs_btrfs_filesystem_defragment>
|
||
|
||
Filesystem defragmentation support for Btrfs filesystems (Hu Tao).
|
||
|
||
=item C<guestfs_btrfs_image>
|
||
|
||
Create an image of a Btrfs filesystem (Chen Hanxiao)
|
||
|
||
=item C<guestfs_btrfs_qgroup_assign>
|
||
|
||
=item C<guestfs_btrfs_qgroup_create>
|
||
|
||
=item C<guestfs_btrfs_qgroup_destroy>
|
||
|
||
=item C<guestfs_btrfs_qgroup_limit>
|
||
|
||
=item C<guestfs_btrfs_qgroup_remove>
|
||
|
||
=item C<guestfs_btrfs_qgroup_show>
|
||
|
||
=item C<guestfs_btrfs_quota_enable>
|
||
|
||
=item C<guestfs_btrfs_quota_rescan>
|
||
|
||
Quote support for Btrfs filesystems (Hu Tao).
|
||
|
||
=item C<guestfs_btrfs_rescue_chunk_recover>
|
||
|
||
Scan and recover the chunk tree in Btrfs filesystems (Hu Tao).
|
||
|
||
=item C<guestfs_btrfs_rescue_super_recover>
|
||
|
||
Restore superblocks in Btrfs filesystems (Hu Tao).
|
||
|
||
=item C<guestfs_btrfs_replace>
|
||
|
||
Replace a device in a Btrfs filesystem (Cao Jin).
|
||
|
||
=item C<guestfs_btrfs_scrub>
|
||
|
||
=item C<guestfs_btrfs_scrub_cancel>
|
||
|
||
=item C<guestfs_btrfs_scrub_resume>
|
||
|
||
=item C<guestfs_btrfs_scrub_status>
|
||
|
||
Scrub a Btrfs filesystem (Hu Tao).
|
||
|
||
=item C<guestfs_btrfs_subvolume_get_default>
|
||
|
||
Get the default subvolume of a Btrfs filesystem (Hu Tao).
|
||
|
||
=item C<guestfs_btrfs_subvolume_show>
|
||
|
||
List detailed information about the subvolume of a Btrfs filesystem
|
||
(Hu Tao).
|
||
|
||
=item C<guestfs_btrfstune_enable_extended_inode_refs>
|
||
|
||
=item C<guestfs_btrfstune_enable_skinny_metadata_extent_refs>
|
||
|
||
=item C<guestfs_btrfstune_seeding>
|
||
|
||
Various tuning parameters for Btrfs filesystems (Chen Hanxiao).
|
||
|
||
=item C<guestfs_c_pointer>
|
||
|
||
Return the C pointer to the underlying C<guestfs_h *>. This allows
|
||
interworking of libguestfs bindings with bindings from other
|
||
libraries. For further information see
|
||
L<https://bugzilla.redhat.com/1075164>
|
||
|
||
=item C<guestfs_copy_in>
|
||
|
||
=item C<guestfs_copy_out>
|
||
|
||
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<guestfs_part_get_gpt_guid>
|
||
|
||
=item C<guestfs_part_set_gpt_guid>
|
||
|
||
Get and set the GPT per-partition GUID.
|
||
|
||
=item C<guestfs_part_get_mbr_part_type>
|
||
|
||
Get MBR partition type (Chen Hanxiao).
|
||
|
||
=item C<guestfs_set_uuid_random>
|
||
|
||
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<guestfs_disk_create> can now use VMDK files as backing files.
|
||
|
||
C<guestfs_btrfs_subvolume_snapshot> takes extra optional
|
||
parameters (all added by Hu Tao):
|
||
|
||
=over 4
|
||
|
||
=item C<ro>
|
||
|
||
for creating a read-only Btrfs snapshot
|
||
|
||
=item C<qgroupid>
|
||
|
||
for adding the snapshot to a qgroup
|
||
|
||
=back
|
||
|
||
C<guestfs_btrfs_subvolume_create> can also take the optional
|
||
C<qgroupid> parameter (Hu Tao).
|
||
|
||
C<guestfs_set_uuid> can set UUID of swap partitions, Btrfs
|
||
(Hu Tao, Chen Hanxiao).
|
||
|
||
C<guestfs_copy_device_to_file> and C<guestfs_copy_file_to_file> have a
|
||
new optional C<append> parameter, allowing you to append to the output
|
||
file instead of truncating it.
|
||
|
||
C<guestfs_mkfs> has a new optional C<label> parameter to set the
|
||
initial label of the new filesystem (Pino Toscano).
|
||
|
||
C<guestfs_set_label> and C<guestfs_set_uuid> now set C<ENOTSUP> as errno
|
||
when there is no implemented support for the filesystem of the specified
|
||
mountable (Chen Hanxiao).
|
||
|
||
Environment variables now let you write C<LIBGUESTFS_DEBUG=true>,
|
||
C<LIBGUESTFS_DEBUG=0> and so on.
|
||
|
||
All C<guestfs_sfdisk*> APIs have been deprecated. Because
|
||
L<sfdisk(8)> was rewritten, incompatibly, upstream, we don't recommend
|
||
using these APIs in future code. Use the C<guestfs_part*> APIs as
|
||
replacements.
|
||
|
||
APIs such as C<guestfs_download> do not truncate F</dev/stdout> or
|
||
F</dev/stderr> when writing to them, meaning that if you redirect
|
||
stdout or stderr to a file, the file is no longer truncated.
|
||
|
||
|
||
|
||
|
||
|
||
=head2 Build changes
|
||
|
||
The daemon no longer uses its own separate copy of gnulib. Instead it
|
||
shares a single copy with the library.
|
||
|
||
OCaml F<.annot> files are now created, so IDEs and editors like emacs
|
||
and vi can browse OCaml types in the source code.
|
||
|
||
Various fixes to allow different host/appliance architecture builds
|
||
(Pino Toscano).
|
||
|
||
Automake is now used directly to build all the OCaml programs, instead
|
||
of ad hoc Makefile rules. One side effect of this is to enable
|
||
warnings in all the C code used by OCaml programs.
|
||
|
||
C<-fno-strict-overflow> is used throughout the build to avoid dubious
|
||
GCC optimizations.
|
||
|
||
Multiple cleanups to support GCC 5.
|
||
|
||
OCaml OUnit2 is needed to run some OCaml tests.
|
||
|
||
Creating a statically linked F<libguestfs.a> should work again.
|
||
|
||
The F<src/api-support> subdirectory and its scripts are no longer
|
||
used. Instead we store in the F<generator/actions.ml> when the API
|
||
was added to libguestfs.
|
||
|
||
=head2 Internationalization
|
||
|
||
The translation service has changed from Transifex to Zanata.
|
||
|
||
Many more translations are available now, for both library and tools
|
||
messages and documentation.
|
||
|
||
=head2 Internals
|
||
|
||
In all OCaml tools, there are now common C<error>, C<warning>, C<info>
|
||
functions, and common way to set and get the I<--quiet>, I<-x> (trace)
|
||
and I<-v> (verbose) flags, and colour highlighting used consistently.
|
||
|
||
C<COMPILE_REGEXP> macros are used to simplify PCRE constructors and
|
||
destructors.
|
||
|
||
In the generator, C<Pointer> arguments have finally been implemented.
|
||
|
||
Internal identifiers no longer use double and triple underscores
|
||
(eg. C<guestfs___program_name>). These identifiers are invalid for
|
||
C99 and C++ programs, although compilers would accept them.
|
||
|
||
The daemon no longer parses C<guestfs_*> options from
|
||
F</proc/cmdline>. Instead it only takes ordinary command line
|
||
options. The appliance init script turns F</proc/cmdline> into daemon
|
||
command line options.
|
||
|
||
The tests can now run the daemon as a "captive process", allowing it
|
||
to be run directly on the host. The main advantage of this is we can
|
||
run valgrind directly on the daemon during testing.
|
||
|
||
=head2 Bugs fixed
|
||
|
||
=begin comment
|
||
|
||
https_proxy= ./bugs-in-changelog.sh 1.28.0..
|
||
|
||
=end comment
|
||
|
||
=over 4
|
||
|
||
=item L<https://bugzilla.redhat.com/1239053>
|
||
|
||
virt-v2v error reporting when grub.conf cannot be parsed by Augeas
|
||
|
||
=item L<https://bugzilla.redhat.com/1238053>
|
||
|
||
v2v:Duplicate disk target set when convert guest with cdrom attached
|
||
|
||
=item L<https://bugzilla.redhat.com/1237869>
|
||
|
||
Virtio drivers are not installed for windows 2008 guests by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1234351>
|
||
|
||
virt-v2v Support for Fedora virtio-win drivers
|
||
|
||
=item L<https://bugzilla.redhat.com/1232192>
|
||
|
||
Virt-v2v gives an error on a blank disk: part_get_parttype: unknown signature, of the output: BYT;
|
||
|
||
=item L<https://bugzilla.redhat.com/1229385>
|
||
|
||
virt-p2v in kernel command line mode should power off the machine after conversion
|
||
|
||
=item L<https://bugzilla.redhat.com/1229340>
|
||
|
||
virt-p2v no GUI mode appends \n to the final command line parameter
|
||
|
||
=item L<https://bugzilla.redhat.com/1229305>
|
||
|
||
virt-sysprep at cleanup deletes /var/spool/at/.SEQ which results in failing at
|
||
|
||
=item L<https://bugzilla.redhat.com/1226794>
|
||
|
||
"Doing conversion……" still shows after cancel the conversion from virt-p2v client
|
||
|
||
=item L<https://bugzilla.redhat.com/1215042>
|
||
|
||
Memory leak in virNetSocketNewConnectUNIX
|
||
|
||
=item L<https://bugzilla.redhat.com/1213324>
|
||
|
||
virt-v2v: warning: unknown guest operating system: windows windows 6.3 when converting win8,win8.1,win2012,win2012R2 to rhev
|
||
|
||
=item L<https://bugzilla.redhat.com/1213247>
|
||
|
||
virt tools should print the same format of version string
|
||
|
||
=item L<https://bugzilla.redhat.com/1212808>
|
||
|
||
RFE: virt-builder --touch
|
||
|
||
=item L<https://bugzilla.redhat.com/1212807>
|
||
|
||
virt-builder --selinux-relabel flag fails on cross-architecture builds
|
||
|
||
=item L<https://bugzilla.redhat.com/1212680>
|
||
|
||
RFE: virt-inspector xpath query should output a neat format of the query element
|
||
|
||
=item L<https://bugzilla.redhat.com/1212152>
|
||
|
||
virt-builder firstboot-command fails: File name too long
|
||
|
||
=item L<https://bugzilla.redhat.com/1211996>
|
||
|
||
virt-inspector gives incorrect arch (ppc64) for ppc64le guest
|
||
|
||
=item L<https://bugzilla.redhat.com/1203817>
|
||
|
||
RFE: virt-customize --move and --copy
|
||
|
||
=item L<https://bugzilla.redhat.com/1201526>
|
||
|
||
index-parser can't parse systemd mount files properly
|
||
|
||
=item L<https://bugzilla.redhat.com/1196101>
|
||
|
||
virt-builder --upload option doesn't work to a FAT partition
|
||
|
||
=item L<https://bugzilla.redhat.com/1196100>
|
||
|
||
virt-builder -x option on its own does not enable tracing
|
||
|
||
=item L<https://bugzilla.redhat.com/1195204>
|
||
|
||
`virt-builder` should create $HOME/.cache directory if it already doesn't exist
|
||
|
||
=item L<https://bugzilla.redhat.com/1193237>
|
||
|
||
Virt-builder fingerprint is required even when no check desired
|
||
|
||
=item L<https://bugzilla.redhat.com/1189284>
|
||
|
||
virt-resize should preserve GPT partition UUIDs, else EFI guests become unbootable
|
||
|
||
=item L<https://bugzilla.redhat.com/1188866>
|
||
|
||
Performance regression in virt-builder when uncompressing image
|
||
|
||
=item L<https://bugzilla.redhat.com/1186800>
|
||
|
||
virt-v2v should support gzip format ova as input
|
||
|
||
=item L<https://bugzilla.redhat.com/1185561>
|
||
|
||
virt-sparsify should ignore read-only LVs
|
||
|
||
=item L<https://bugzilla.redhat.com/1182463>
|
||
|
||
"mknod-b", "mknod-c", and "mkfifo" do not strip non-permissions bits from "mode"
|
||
|
||
=item L<https://bugzilla.redhat.com/1176493>
|
||
|
||
virt-v2v ignores sound device when convert xen guest to local kvm
|
||
|
||
=item L<https://bugzilla.redhat.com/1175676>
|
||
|
||
Typo error in 'help ping-daemon'
|
||
|
||
=item L<https://bugzilla.redhat.com/1175196>
|
||
|
||
"parse-environment" and "parse-environment-list" fail to parse "LIBGUESTFS_TRACE = 0"
|
||
|
||
=item L<https://bugzilla.redhat.com/1175035>
|
||
|
||
"is-blockdev"/"is-blockdev-opts" fail to detect "/dev/sda"
|
||
|
||
=item L<https://bugzilla.redhat.com/1174280>
|
||
|
||
RFE: Allow v2v conversion of Oracle Linux 5.8 VMware VM
|
||
|
||
=item L<https://bugzilla.redhat.com/1174200>
|
||
|
||
New virt-v2v failure: CURL: Error opening file: NSS: client certificate not found (nickname not specified): Invalid argument
|
||
|
||
=item L<https://bugzilla.redhat.com/1174123>
|
||
|
||
Graphics password disappear after conversion of virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1174073>
|
||
|
||
The listen address for vnc is changed after conversion by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1171666>
|
||
|
||
inspection thinks EFI partition is a separate operating system
|
||
|
||
=item L<https://bugzilla.redhat.com/1171130>
|
||
|
||
virt-v2v conversion of RHEL 3 guest fails with: All of your loopback devices are in use
|
||
|
||
=item L<https://bugzilla.redhat.com/1170685>
|
||
|
||
Conversion of RHEL 4 guest fails: rpm -ql 1:kernel-utils-2.4-23.el4: virt-v2v: error: libguestfs error: command_lines:
|
||
|
||
=item L<https://bugzilla.redhat.com/1170073>
|
||
|
||
virt-v2v picks debug kernels over non-debug kernels when versions are equal
|
||
|
||
=item L<https://bugzilla.redhat.com/1169045>
|
||
|
||
virt-sparsify: libguestfs error: qemu-img info: 'virtual-size' is not representable as a 64 bit integer
|
||
|
||
=item L<https://bugzilla.redhat.com/1169015>
|
||
|
||
virt-resize --expand fails on ubuntu-14.04.img image (regression)
|
||
|
||
=item L<https://bugzilla.redhat.com/1168144>
|
||
|
||
warning: fstrim: fstrim: /sysroot/: FITRIM ioctl failed: Operation not supported (ignored) when convert win2003 guest from xen server
|
||
|
||
=item L<https://bugzilla.redhat.com/1167921>
|
||
|
||
p2v: No Network Connection dialog
|
||
|
||
=item L<https://bugzilla.redhat.com/1167774>
|
||
|
||
virt-p2v fails with error:"nbd.c:nbd_receive_negotiate():L501: read failed"
|
||
|
||
=item L<https://bugzilla.redhat.com/1167623>
|
||
|
||
Remove "If reporting bugs, run virt-v2v with debugging enabled .." message when running virt-p2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1167601>
|
||
|
||
"Conversion was successful" pop out even virt-p2v fails
|
||
|
||
=item L<https://bugzilla.redhat.com/1167302>
|
||
|
||
virt-v2v: warning: ova hard disk has no parent controller when convert from a ova file
|
||
|
||
=item L<https://bugzilla.redhat.com/1166618>
|
||
|
||
virt-resize should give out the detail warning info to let customers know what's going wrong
|
||
|
||
=item L<https://bugzilla.redhat.com/1165975>
|
||
|
||
File "/boot/grub2/device.map" showing is not right after converting a rhel7 guest from esx server
|
||
|
||
=item L<https://bugzilla.redhat.com/1165785>
|
||
|
||
mount-loop command fails: mount failed: Unknown error -1
|
||
|
||
=item L<https://bugzilla.redhat.com/1165569>
|
||
|
||
Disable "cancel conversion" button after virt-p2v conversion finished
|
||
|
||
=item L<https://bugzilla.redhat.com/1165564>
|
||
|
||
Provide Reboot/Shutdown button after virt-p2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1164853>
|
||
|
||
Booting in qemu found no volume groups and failed checking the filesystems
|
||
|
||
=item L<https://bugzilla.redhat.com/1164732>
|
||
|
||
The description of 'help append' is not accurately, it add the kernel options to libguestfs appliance not the guest kernel
|
||
|
||
=item L<https://bugzilla.redhat.com/1164697>
|
||
|
||
typo errors in man pages
|
||
|
||
=item L<https://bugzilla.redhat.com/1164619>
|
||
|
||
Inspect-get-icon failed on RHEL7 guest
|
||
|
||
=item L<https://bugzilla.redhat.com/1162966>
|
||
|
||
xfs should also give a warning out to let customer know the limitation
|
||
|
||
=item L<https://bugzilla.redhat.com/1161575>
|
||
|
||
Failed to import guest with "rtl8139" nic to openstack server after converted by v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1159651>
|
||
|
||
virt-sysprep firstboot script is not deleted if it reboot a RHEL 7 guest
|
||
|
||
=item L<https://bugzilla.redhat.com/1159258>
|
||
|
||
esx win2008 32 bit guest fail to load after conversion because the firmware isn't ACPI compatible
|
||
|
||
=item L<https://bugzilla.redhat.com/1159016>
|
||
|
||
libvirt backend does not set RBD password
|
||
|
||
=item L<https://bugzilla.redhat.com/1158526>
|
||
|
||
Use password file instead of process interaction
|
||
|
||
=item L<https://bugzilla.redhat.com/1157679>
|
||
|
||
virt-p2v-make-disk should add firmwares
|
||
|
||
=item L<https://bugzilla.redhat.com/1156449>
|
||
|
||
libguestfs FTBFS on f21 ppc64le
|
||
|
||
=item L<https://bugzilla.redhat.com/1156301>
|
||
|
||
virt-inspector support adding a remote disk, but in its man page -a URI / --add URI is missing
|
||
|
||
=item L<https://bugzilla.redhat.com/1155121>
|
||
|
||
Virt-v2v will fail when using relative path for -i ova
|
||
|
||
=item L<https://bugzilla.redhat.com/1153844>
|
||
|
||
Redundancy whitespace at the end of directory name when use <TAB> to complete the directory name in guestfish with a xfs filesystem in guest
|
||
|
||
=item L<https://bugzilla.redhat.com/1153589>
|
||
|
||
virt-v2v will hang when converting esx guest before disk copy phase
|
||
|
||
=item L<https://bugzilla.redhat.com/1152998>
|
||
|
||
virt-v2v / qemu-img fails on ova image
|
||
|
||
=item L<https://bugzilla.redhat.com/1151910>
|
||
|
||
virt-ls should remove '/' in the output when specify the directory name as /etc/
|
||
|
||
=item L<https://bugzilla.redhat.com/1151900>
|
||
|
||
Should also add a field for directory files when run virt-ls with --csv option
|
||
|
||
=item L<https://bugzilla.redhat.com/1151033>
|
||
|
||
virt-v2v conversions from VMware vCenter server run slowly
|
||
|
||
=item L<https://bugzilla.redhat.com/1146832>
|
||
|
||
virt-v2v fail to convert guest with disk type volume
|
||
|
||
=item L<https://bugzilla.redhat.com/1146007>
|
||
|
||
Input/output error during conversion of esx guest.
|
||
|
||
=item L<https://bugzilla.redhat.com/1135585>
|
||
|
||
[RFE] virt-builder should support copying in a directory/list of files
|
||
|
||
=item L<https://bugzilla.redhat.com/1089566>
|
||
|
||
[abrt] livecd-tools: kickstart.py:276:apply:IOError: [Errno 2] No such file or directory: '/run/media/jones/2tp001data/createlive/temp/imgcreate-_dX8Us/install_root/etc/rpm/macros.imgcreate'
|
||
|
||
=item L<https://bugzilla.redhat.com/1079625>
|
||
|
||
virt-sparsify fails if a btrfs filesystem contains readonly snapshots
|
||
|
||
=item L<https://bugzilla.redhat.com/1075164>
|
||
|
||
RFE: allow passing in a pre-opened libvirt connection from python
|
||
|
||
=item L<https://bugzilla.redhat.com/912499>
|
||
|
||
Security context on image file gets reset
|
||
|
||
=item L<https://bugzilla.redhat.com/889082>
|
||
|
||
[RFE] virt-v2v should check whether guest with same name exist on target first then transfer the disk
|
||
|
||
=item L<https://bugzilla.redhat.com/855059>
|
||
|
||
RFE: virt-p2v: display more information about network devices such as topology, bonding, etc.
|
||
|
||
=item L<https://bugzilla.redhat.com/823758>
|
||
|
||
p2v client should have largest number restrictions for CPU and Memory settings
|
||
|
||
=item L<https://bugzilla.redhat.com/709327>
|
||
|
||
hivex cannot read registry hives from ReactOS
|
||
|
||
=item L<https://bugzilla.redhat.com/709326>
|
||
|
||
virt-inspector cannot detect ReactOS
|
||
|
||
=item L<https://bugzilla.redhat.com/119673>
|
||
|
||
installation via NFS doesn't seem to work
|
||
|
||
=back
|
||
|
||
=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<virt-v2v(1)> and L<virt-p2v(1)> 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<virt-v2v(1)> 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<virt-log(1)> 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<virt-builder(1)> has a new C<--machine-readable> option to make it
|
||
simpler to consume virt-builder from other programs.
|
||
|
||
New L<virt-builder(1)> and L<virt-customize(1)> I<--chmod> option.
|
||
|
||
L<virt-sysprep(1)> 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<user-account>
|
||
operation is now able to remove or keep particular user accounts.
|
||
(Pino Toscano).
|
||
|
||
New L<guestmount(1)> I<--fd> option, allowing you to run guestmount
|
||
captive under another process.
|
||
|
||
L<virt-sparsify(1)> has a new I<--tmp> option allowing you to
|
||
precisely control where temporary files are stored.
|
||
|
||
L<virt-sparsify(1)> can now write to a block device.
|
||
|
||
L<virt-customize(1)> and L<virt-sysprep(1)> now support adding
|
||
firstboot scripts to Windows guests.
|
||
|
||
L<virt-cat(1)>, L<virt-edit(1)>, L<virt-ls(1)> 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<make -C python sdist>
|
||
|
||
Ruby bindings have switched from C<Test::Unit> to C<MiniTest>.
|
||
|
||
The Java bindings are now compatible with OpenJDK 8 (Pino Toscano).
|
||
|
||
=head3 Inspection
|
||
|
||
Oracle Linux is returned as C<oraclelinux> (Nikos Skalkotos).
|
||
|
||
Linux guests which do not have F</etc/fstab> can now be handled
|
||
(Pino Toscano).
|
||
|
||
Minix is returned as C<minix> (Pino Toscano).
|
||
|
||
=head3 Architectures
|
||
|
||
Aarch64 (64 bit ARM) support has been added.
|
||
|
||
Inspection and the C<guestfs_file_architecture> 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<ge> 1.27.9 and the fix was backported
|
||
to stable versions E<ge> 1.26.2, E<ge> 1.24.9, E<ge> 1.22.10 and E<ge>
|
||
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<https://www.redhat.com/archives/libguestfs/2014-September/msg00252.html>
|
||
|
||
=back
|
||
|
||
=head2 API
|
||
|
||
=head3 New APIs
|
||
|
||
=over 4
|
||
|
||
=item C<guestfs_clear_backend_setting>
|
||
|
||
=item C<guestfs_get_backend_setting>
|
||
|
||
=item C<guestfs_set_backend_setting>
|
||
|
||
Use these APIs to set individual backend settings.
|
||
|
||
=item C<guestfs_cpio_out>
|
||
|
||
Convert a directory within the disk image to cpio format.
|
||
|
||
=item C<guestfs_journal_get_realtime_usec>
|
||
|
||
Fetch precise journal times, see L<sd_journal_get_realtime_usec(3)>.
|
||
|
||
=item C<guestfs_lstatns>
|
||
|
||
=item C<guestfs_lstatnslist>
|
||
|
||
=item C<guestfs_statns>
|
||
|
||
Enhanced versions of C<guestfs_lstat>, C<guestfs_lstatlist>,
|
||
C<guestfs_stat> 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<LIBGUESTFS_BACKEND_SETTINGS=gdb>
|
||
|
||
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<tests/qemu/qemu-boot.c>
|
||
|
||
There is a test for testing the speed of various qemu features such as
|
||
virtio-serial uploads and block device writes. See:
|
||
F<tests/qemu/qemu-speed-test.c>
|
||
|
||
GCC warnings are now enabled for OCaml-C bindings in the OCaml virt
|
||
tools.
|
||
|
||
The code for editing files used by L<virt-edit(1)>, L<guestfish(1)>
|
||
C<edit> command, L<virt-customize(1)> 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<update-bugs.sh> script has been fixed so it should no longer
|
||
create an empty C<BUGS> file if the Bugzilla server is unavailable.
|
||
|
||
The L<virt-resize(1)> 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<virbr0>
|
||
(can be overridden by setting
|
||
C<LIBGUESTFS_BACKEND_SETTINGS=network_bridge=E<lt>some_bridgeE<gt>>).
|
||
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<https://bugzilla.redhat.com/1153515>
|
||
|
||
empty (but set) LIBGUESTFS_BACKEND prints libguestfs: error: invalid backend:
|
||
|
||
=item L<https://bugzilla.redhat.com/1151766>
|
||
|
||
libguestfs-bash-completion package contains file /usr/share/bash-completion/completions/virt-log, but no _virt_log() function in that file
|
||
|
||
=item L<https://bugzilla.redhat.com/1151738>
|
||
|
||
typo error in man page of virt-edit
|
||
|
||
=item L<https://bugzilla.redhat.com/1151033>
|
||
|
||
virt-v2v conversions from VMware vCenter server run slowly
|
||
|
||
=item L<https://bugzilla.redhat.com/1150880>
|
||
|
||
virt-v2v: warning: display <graphics type='sdl'> was ignored when converting rhel5 guest with sdl graphics
|
||
|
||
=item L<https://bugzilla.redhat.com/1150867>
|
||
|
||
'copy-file-to-file /src /dest' create file /dest even if command 'copy-file-to-file /src /dest' failed
|
||
|
||
=item L<https://bugzilla.redhat.com/1150815>
|
||
|
||
Can not find "RECURSIVE LONG LISTING" in 'man virt-diff'
|
||
|
||
=item L<https://bugzilla.redhat.com/1150701>
|
||
|
||
virt-v2v does not fstrim data disks and non-mounted filesystems
|
||
|
||
=item L<https://bugzilla.redhat.com/1150475>
|
||
|
||
Exporting 2+ disk guest to RHEV, only one disk shows after import
|
||
|
||
=item L<https://bugzilla.redhat.com/1148355>
|
||
|
||
virt-filesystems: incorrect LVM vg name when listing Fedora 21 Alpha Atomic image filesystems
|
||
|
||
=item L<https://bugzilla.redhat.com/1148072>
|
||
|
||
Option missing --no-selinux-relabel
|
||
|
||
=item L<https://bugzilla.redhat.com/1148012>
|
||
|
||
RFE: Allow qemu-bridge-helper to be used to implement guestfs_set_network
|
||
|
||
=item L<https://bugzilla.redhat.com/1146815>
|
||
|
||
virt-v2v prints warning: /files/etc/fstab/8/spec references unknown device "cdrom"
|
||
|
||
=item L<https://bugzilla.redhat.com/1146275>
|
||
|
||
regression setting root password with virt-builder/virt-customize
|
||
|
||
=item L<https://bugzilla.redhat.com/1146017>
|
||
|
||
virt-v2v -v -x during windows guest conversion will hang at hivex: hivex_open: used block id ……
|
||
|
||
=item L<https://bugzilla.redhat.com/1145995>
|
||
|
||
Improve the error info when converting windows guest with unclean file system
|
||
|
||
=item L<https://bugzilla.redhat.com/1145916>
|
||
|
||
virt-v2v fails to convert win7 guest
|
||
|
||
=item L<https://bugzilla.redhat.com/1144891>
|
||
|
||
RFE: stat calls do not return nanosecond timestamps
|
||
|
||
=item L<https://bugzilla.redhat.com/1144766>
|
||
|
||
futimens() is a no-op via guestmount
|
||
|
||
=item L<https://bugzilla.redhat.com/1144201>
|
||
|
||
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<https://bugzilla.redhat.com/1143949>
|
||
|
||
virt-customize option '--password-crypto' do not work
|
||
|
||
=item L<https://bugzilla.redhat.com/1143887>
|
||
|
||
Warning shows when converting guests to rhev:chown: changing ownership of ‘/tmp/v2v.u48xag/*.ovf’: Invalid argument
|
||
|
||
=item L<https://bugzilla.redhat.com/1143883>
|
||
|
||
warning shows when converting rhel7 guest:virt-v2v:could not update grub2 console: aug_get: no matching node (ignored)
|
||
|
||
=item L<https://bugzilla.redhat.com/1143866>
|
||
|
||
virt-v2v fails with error: cannot open Packages index using db5
|
||
|
||
=item L<https://bugzilla.redhat.com/1142416>
|
||
|
||
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<https://bugzilla.redhat.com/1142186>
|
||
|
||
virt-sysprep option '--mount-options' don't work well
|
||
|
||
=item L<https://bugzilla.redhat.com/1142158>
|
||
|
||
Illegal command 'part-get-name /dev/sda1 1' cause libguestfs appliance crashed
|
||
|
||
=item L<https://bugzilla.redhat.com/1142004>
|
||
|
||
virt-v2v prints warning:WARNING:/files/boot/grub/device.map references unknown device "xvda"
|
||
|
||
=item L<https://bugzilla.redhat.com/1141723>
|
||
|
||
virt-v2v: error: disk sda has no defined format shows when converting xen hvm guest
|
||
|
||
=item L<https://bugzilla.redhat.com/1141680>
|
||
|
||
[RFE] virt-v2 should support convert a domain with using domain's UUID instead of domain name
|
||
|
||
=item L<https://bugzilla.redhat.com/1141631>
|
||
|
||
[RFE] virt-v2 should support convert a guest to a dir-pool with using pool's uuid
|
||
|
||
=item L<https://bugzilla.redhat.com/1141157>
|
||
|
||
virt-sysprep option '--user-accounts' don't work well
|
||
|
||
=item L<https://bugzilla.redhat.com/1141145>
|
||
|
||
virt-v2v fails to convert xen pv guests.
|
||
|
||
=item L<https://bugzilla.redhat.com/1141113>
|
||
|
||
virt-v2v fails to convert esx guests
|
||
|
||
=item L<https://bugzilla.redhat.com/1140946>
|
||
|
||
qemu-img shows error message for backing file twice
|
||
|
||
=item L<https://bugzilla.redhat.com/1140894>
|
||
|
||
No error messages output if append '--format qcow2' after '-a guest.img', guest.img is a raw format image file
|
||
|
||
=item L<https://bugzilla.redhat.com/1140547>
|
||
|
||
virt-builder option '--format' don't work well
|
||
|
||
=item L<https://bugzilla.redhat.com/1140156>
|
||
|
||
RFE: Export to RHEV data domain
|
||
|
||
=item L<https://bugzilla.redhat.com/1140050>
|
||
|
||
No error shows when multiple conflicting options used with virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1139973>
|
||
|
||
Improve the error info when converting xen guest with no passwordless SSH access configured
|
||
|
||
=item L<https://bugzilla.redhat.com/1139543>
|
||
|
||
Improve the error info when converting guest with no space left
|
||
|
||
=item L<https://bugzilla.redhat.com/1138586>
|
||
|
||
No error shows when converting running guest with virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1138184>
|
||
|
||
virt-v2v will fail when converting guests with initramfs-*kdump.img under /boot
|
||
|
||
=item L<https://bugzilla.redhat.com/1138182>
|
||
|
||
xen guest will be kernel panic after converted by virt-v2v
|
||
|
||
=item L<https://bugzilla.redhat.com/1130189>
|
||
|
||
Annoying message about permissions of /dev/kvm
|
||
|
||
=item L<https://bugzilla.redhat.com/1123007>
|
||
|
||
libguestfs 'direct' backend should close file descriptors before exec-ing qemu to avoid leaking !O_CLOEXEC fds
|
||
|
||
=item L<https://bugzilla.redhat.com/1122557>
|
||
|
||
virt-sparsify overwrites block devices if used as output files
|
||
|
||
=item L<https://bugzilla.redhat.com/1113156>
|
||
|
||
Empty fstab breaks libguestfs inspection
|
||
|
||
=item L<https://bugzilla.redhat.com/1111662>
|
||
|
||
Guestfs.Error("vgchange_uuid_all: Volume group has active logical volumes")
|
||
|
||
=item L<https://bugzilla.redhat.com/1109174>
|
||
|
||
virt-win-reg manual page is corrupted
|
||
|
||
=item L<https://bugzilla.redhat.com/1106548>
|
||
|
||
root gets an error accessing to a non-root dir on a snapshot guestmount VMDK img
|
||
|
||
=item L<https://bugzilla.redhat.com/1103877>
|
||
|
||
These APIs also need to add to `guestfish -h` command list
|
||
|
||
=item L<https://bugzilla.redhat.com/1102448>
|
||
|
||
mageia package list is incorrect
|
||
|
||
=item L<https://bugzilla.redhat.com/1102447>
|
||
|
||
libguestfs 1.27.13 does not build due to libxml library order
|
||
|
||
=item L<https://bugzilla.redhat.com/1100498>
|
||
|
||
RFE: non-polling mechanism to detect guestmount --no-fork readiness
|
||
|
||
=item L<https://bugzilla.redhat.com/1099490>
|
||
|
||
scrub-file can't handle link file
|
||
|
||
=item L<https://bugzilla.redhat.com/1099284>
|
||
|
||
typo errors in man pages
|
||
|
||
=item L<https://bugzilla.redhat.com/1098718>
|
||
|
||
RFE: virt-builder aliases
|
||
|
||
=item L<https://bugzilla.redhat.com/1096465>
|
||
|
||
virt-builder "proxy=off" setting doesn't turn off the proxy for downloads
|
||
|
||
=item L<https://bugzilla.redhat.com/1094746>
|
||
|
||
virt-sparsify man failes to mention what happens to snapshots within a qcow2 image (they are discarded)
|
||
|
||
=item L<https://bugzilla.redhat.com/1092753>
|
||
|
||
virt-builder: If several repos contain the same os-version images, then they are duplicated in -l output
|
||
|
||
=item L<https://bugzilla.redhat.com/1091803>
|
||
|
||
tar-in-opts execute failed that cause libguestfs appliance crashed
|
||
|
||
=item L<https://bugzilla.redhat.com/1088424>
|
||
|
||
virt-resize: libguestfs error: part_set_name: parted: /dev/sdb: Error during translation: Invalid or incomplete multibyte or wide character
|
||
|
||
=item L<https://bugzilla.redhat.com/1088262>
|
||
|
||
virt-builder cannot write to a block device
|
||
|
||
=item L<https://bugzilla.redhat.com/1085029>
|
||
|
||
Ruby tests fail with latest Ruby
|
||
|
||
=item L<https://bugzilla.redhat.com/1079210>
|
||
|
||
virt-sparsify --in-place cannot sparsify as much as it should
|
||
|
||
=item L<https://bugzilla.redhat.com/1079182>
|
||
|
||
virt-df cannot report used disk space of windows guest when updated to 6.5
|
||
|
||
=item L<https://bugzilla.redhat.com/1077817>
|
||
|
||
virt-builder error: "syntax error at line 3: syntax error"
|
||
|
||
=item L<https://bugzilla.redhat.com/1056290>
|
||
|
||
virt-sparsify overwrites block devices if used as output files
|
||
|
||
=item L<https://bugzilla.redhat.com/812970>
|
||
|
||
virt-rescue cannot set E<ge>E<lt>rescueE<gt> prompt, on Ubuntu 12.04
|
||
|
||
=back
|
||
|
||
=for comment ################################################################
|
||
|
||
=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<virt-customize(1)> 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<virt-builder(1)> and
|
||
L<virt-sysprep(1)> use virt-customize, and command line options across
|
||
all these tools are now identical.
|
||
|
||
L<virt-diff(1)> 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<virt-builder(1)> 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<virt-sparsify(1)> 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<virt-sysprep(1)> 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<virt-win-reg(1)> allows you to use URIs to specify remote disk
|
||
images.
|
||
|
||
L<virt-format(1)> can now pass the extra space that it recovers back
|
||
to the host.
|
||
|
||
L<guestfish(1)> has additional environment variables to give fine
|
||
control over the C<E<gt>E<lt>fsE<gt>> prompt. Guestfish reads its
|
||
(rarely used) configuration file in a different order now so that
|
||
local settings override global settings.
|
||
(Pino Toscano)
|
||
|
||
L<virt-make-fs(1)> 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<Guestfs.Errno> module, used to check
|
||
the error number returned by C<Guestfs.last_errno>.
|
||
|
||
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<E<ge> 1.26.0>, S<E<ge>
|
||
1.24.6> and S<E<ge> 1.22.8>, and also in RHEL S<E<ge> 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</dev/urandom> (most of which were just thrown
|
||
away). Secondly we changed the code to avoid modulo bias. These
|
||
issues were not thought to be exploitable.
|
||
(Both changes suggested by Edwin Török)
|
||
|
||
=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<guestfs_add_drive_opts>: new C<discard> parameter
|
||
|
||
The new C<discard> 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<guestfs_fstrim> API call.
|
||
|
||
=item C<guestfs_add_domain>: new parameters: C<cachemode>, C<discard>
|
||
|
||
These parameters are passed through when adding the domain's disks.
|
||
|
||
=item C<guestfs_blkdiscard>
|
||
|
||
Discard all blocks on a guestfs device. Combined with the C<discard>
|
||
parameter above, this makes the host file sparse.
|
||
|
||
=item C<guestfs_blkdiscardzeroes>
|
||
|
||
Test if discarded blocks read back as zeroes.
|
||
|
||
=item C<guestfs_compare_*>
|
||
|
||
=item C<guestfs_copy_*>
|
||
|
||
For each struct returned through the API, libguestfs now generates
|
||
C<guestfs_compare_*> and C<guestfs_copy_*> functions to allow you to
|
||
compare and copy structs.
|
||
|
||
=item C<guestfs_copy_attributes>
|
||
|
||
Copy attributes (like permissions, xattrs, ownership) from one
|
||
file to another.
|
||
(Pino Toscano)
|
||
|
||
=item C<guestfs_disk_create>
|
||
|
||
A flexible API for creating empty disk images from scratch. This
|
||
avoids the need to call out to external programs like L<qemu-img(1)>.
|
||
|
||
=item C<guestfs_get_backend_settings>
|
||
|
||
=item C<guestfs_set_backend_settings>
|
||
|
||
Per-backend settings (can also be set via the environment variable
|
||
C<LIBGUESTFS_BACKEND_SETTINGS>). The main use for this is forcing TCG
|
||
mode in the qemu-based backends, for example:
|
||
|
||
export LIBGUESTFS_BACKEND=direct
|
||
export LIBGUESTFS_BACKEND_SETTINGS=force_tcg
|
||
|
||
=item C<guestfs_part_get_name>
|
||
|
||
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<ge> 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<podwrapper> 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<git log>, 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</proc/sys/kernel/hotplug> when starting up.
|
||
|
||
Note that you B<must> configure your kernel to have
|
||
C<CONFIG_UEVENT_HELPER_PATH=""> 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<ocamlc(1)> but not
|
||
L<ocamlopt(1)>.
|
||
(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<m4> for macro expansion instead of C<cpp>.
|
||
|
||
=head2 Bugs fixed
|
||
|
||
=begin comment
|
||
|
||
./bugs-in-changelog.sh 1.24.0..
|
||
|
||
=end comment
|
||
|
||
=over 4
|
||
|
||
=item L<https://bugzilla.redhat.com/1073906>
|
||
|
||
java bindings inspect_list_applications2 throws java.lang.ArrayIndexOutOfBoundsException:
|
||
|
||
=item L<https://bugzilla.redhat.com/1063374>
|
||
|
||
[RFE] enable subscription manager clean or unregister operation to sysprep
|
||
|
||
=item L<https://bugzilla.redhat.com/1060404>
|
||
|
||
virt-resize does not preserve GPT partition names
|
||
|
||
=item L<https://bugzilla.redhat.com/1057504>
|
||
|
||
mount-local should give a clearer error if root is not mounted
|
||
|
||
=item L<https://bugzilla.redhat.com/1056290>
|
||
|
||
virt-sparsify overwrites block devices if used as output files
|
||
|
||
=item L<https://bugzilla.redhat.com/1055452>
|
||
|
||
libguestfs: error: invalid backend: appliance
|
||
|
||
=item L<https://bugzilla.redhat.com/1054761>
|
||
|
||
guestfs_pvs prints "unknown device" if a physical volume is missing
|
||
|
||
=item L<https://bugzilla.redhat.com/1053847>
|
||
|
||
Recommended default clock/timer settings
|
||
|
||
=item L<https://bugzilla.redhat.com/1046509>
|
||
|
||
ruby-libguestfs throws "expecting 0 or 1 arguments" on Guestfs::Guestfs.new
|
||
|
||
=item L<https://bugzilla.redhat.com/1045450>
|
||
|
||
Cannot inspect cirros 0.3.1 disk image fully
|
||
|
||
=item L<https://bugzilla.redhat.com/1045033>
|
||
|
||
LIBVIRT_DEFAULT_URI=qemu:///system breaks libguestfs
|
||
|
||
=item L<https://bugzilla.redhat.com/1044585>
|
||
|
||
virt-builder network (eg. --install) doesn't work if resolv.conf sets nameserver 127.0.0.1
|
||
|
||
=item L<https://bugzilla.redhat.com/1044014>
|
||
|
||
When SSSD is installed, libvirt configuration requires authentication, but not clear to user
|
||
|
||
=item L<https://bugzilla.redhat.com/1039995>
|
||
|
||
virt-make-fs fails making fat/vfat whole disk: Device partition expected, not making filesystem on entire device '/dev/sda' (use -I to override)
|
||
|
||
=item L<https://bugzilla.redhat.com/1039540>
|
||
|
||
virt-sysprep to delete more logfiles
|
||
|
||
=item L<https://bugzilla.redhat.com/1033207>
|
||
|
||
RFE: libguestfs inspection does not recognize Free4NAS live CD
|
||
|
||
=item L<https://bugzilla.redhat.com/1028660>
|
||
|
||
RFE: virt-sysprep/virt-builder should have an option to lock a user account
|
||
|
||
=item L<https://bugzilla.redhat.com/1026688>
|
||
|
||
libguestfs fails examining libvirt guest with ceph drives: rbd: image name must begin with a '/'
|
||
|
||
=item L<https://bugzilla.redhat.com/1022431>
|
||
|
||
virt-builder fails if $HOME/.cache doesn't exist
|
||
|
||
=item L<https://bugzilla.redhat.com/1022184>
|
||
|
||
libguestfs: do not use versioned jar file
|
||
|
||
=item L<https://bugzilla.redhat.com/1020806>
|
||
|
||
All libguestfs LVM operations fail on Debian/Ubuntu
|
||
|
||
=item L<https://bugzilla.redhat.com/1008417>
|
||
|
||
Need update helpout of part-set-gpt-type
|
||
|
||
=item L<https://bugzilla.redhat.com/953907>
|
||
|
||
virt-sysprep does not correctly set the hostname on Debian/Ubuntu
|
||
|
||
=item L<https://bugzilla.redhat.com/923355>
|
||
|
||
guestfish prints literal "\n" in error messages
|
||
|
||
=item L<https://bugzilla.redhat.com/660687>
|
||
|
||
guestmount: "touch" command fails: touch: setting times of `timestamp': Invalid argument
|
||
|
||
=item L<https://bugzilla.redhat.com/593511>
|
||
|
||
[RFE] function to get partition name
|
||
|
||
=item L<https://bugzilla.redhat.com/563450>
|
||
|
||
list-devices returns devices of different types out of order
|
||
|
||
=back
|
||
|
||
=for comment ################################################################
|
||
|
||
=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<guestfs(3)/USER-MODE LINUX BACKEND> for how to use this.
|
||
|
||
ARM (32 bit) and PPC64 are now fully supported.
|
||
|
||
=head3 Tools
|
||
|
||
L<virt-builder(1)> is a new tool for building virtual machine images.
|
||
It lets you rapidly and securely create guests and customize them.
|
||
|
||
New L<virt-sysprep(1)> operations:
|
||
Remove files in F</tmp> and F</var/tmp>.
|
||
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<virt-resize(1)> and virt-sysprep can now use URIs to specify a
|
||
remote disk.
|
||
|
||
Use C<guestfish -N filename=type> to create a named disk image
|
||
(instead of the default F<test1.img> etc).
|
||
|
||
L<virt-sparsify(1)> now tests if there is enough disk space to
|
||
complete the operation, instead of possibly running out of space half
|
||
way through.
|
||
|
||
L<virt-format(1)> and L<virt-make-fs(1)>: 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<guestfs_add_drive_opts> can now control the qemu caching mode
|
||
through a new C<cachemode> parameter. You can select improved
|
||
performance for temporary drives, or safety.
|
||
|
||
C<guestfs_set_label> 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<https://bugzilla.redhat.com/show_bug.cgi?id=968306>
|
||
|
||
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<https://www.redhat.com/archives/libguestfs/2013-October/msg00031.html>
|
||
|
||
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<is-file>, C<is-dir>, C<is-blockdev>, C<is-chardev>, C<is-fifo>,
|
||
C<is-socket> APIs now have an extra C<followsymlinks> flag.
|
||
|
||
C<add-drive> has a new C<cachemode> parameter.
|
||
|
||
=head2 Build changes
|
||
|
||
The following packages are required to build libguestfs 1.24:
|
||
|
||
=over 4
|
||
|
||
=item Augeas E<ge> 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<ge> 1.1.1
|
||
|
||
For Go language bindings.
|
||
|
||
=back
|
||
|
||
=head2 Internals
|
||
|
||
New C<make check-*> rules replace C<make extra-tests>. See C<make
|
||
help> and L<guestfs(3)> for details.
|
||
|
||
Perl code can now be valgrinded.
|
||
|
||
Inspection code is now fuzz-tested.
|
||
|
||
C<make> 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<https://bugzilla.redhat.com/1019889>
|
||
|
||
libguestfs-tools.conf should have a man page
|
||
|
||
=item L<https://bugzilla.redhat.com/1018149>
|
||
|
||
valgrind errors in btrfs_subvolume_list
|
||
|
||
=item L<https://bugzilla.redhat.com/1002032>
|
||
|
||
mke2fs can't return the correct filesystem type when blockscount is less than 2048 for ext3
|
||
|
||
=item L<https://bugzilla.redhat.com/1001876>
|
||
|
||
Update "rsync-out" helpout for using wildcard
|
||
|
||
=item L<https://bugzilla.redhat.com/1001875>
|
||
|
||
Argument 'excludes' of tar-out does not work
|
||
|
||
=item L<https://bugzilla.redhat.com/1000428>
|
||
|
||
virt-format uses wrong partition type for vfat filesystems
|
||
|
||
=item L<https://bugzilla.redhat.com/1000121>
|
||
|
||
'sh' command before mount causes daemon to segfault
|
||
|
||
=item L<https://bugzilla.redhat.com/998513>
|
||
|
||
guestfish does not work when you mix --remote and --add options
|
||
|
||
=item L<https://bugzilla.redhat.com/998482>
|
||
|
||
guestfish remote prints "libguestfs: error: waitpid (qemu): No child processes"
|
||
|
||
=item L<https://bugzilla.redhat.com/995711>
|
||
|
||
list-filesystems command fails if there are no block devices
|
||
|
||
=item L<https://bugzilla.redhat.com/994517>
|
||
|
||
cache=none/O_DIRECT workaround doesn't work for images with backing files
|
||
|
||
=item L<https://bugzilla.redhat.com/989356>
|
||
|
||
cap-get-file will return error if the file has not be set capabilities
|
||
|
||
=item L<https://bugzilla.redhat.com/986877>
|
||
|
||
RFE: Implement set-uuid command
|
||
|
||
=item L<https://bugzilla.redhat.com/986875>
|
||
|
||
RFE: Implement set-label for xfs
|
||
|
||
=item L<https://bugzilla.redhat.com/985269>
|
||
|
||
Can't set acl value for a specified user with 'acl-set-file'
|
||
|
||
=item L<https://bugzilla.redhat.com/983218>
|
||
|
||
libguestfs double free when kernel link fails during launch
|
||
|
||
=item L<https://bugzilla.redhat.com/981715>
|
||
|
||
Make xfs filesystem failed with specified blocksize, gives "unknown option -b" error
|
||
|
||
=item L<https://bugzilla.redhat.com/981683>
|
||
|
||
"hivex-commit" should fail with a relative path
|
||
|
||
=item L<https://bugzilla.redhat.com/981663>
|
||
|
||
disk-format "qemu-img info: JSON parse error" when target file does not exist
|
||
|
||
=item L<https://bugzilla.redhat.com/978302>
|
||
|
||
mke2fs-J should give a meaningful error when specified type is anything except 'ext{2,3,4}'
|
||
|
||
=item L<https://bugzilla.redhat.com/975797>
|
||
|
||
Specifying virtio interface ('iface' parameter) breaks the direct backend - libguestfs hangs
|
||
|
||
=item L<https://bugzilla.redhat.com/975753>
|
||
|
||
"virt-resize --expand" and "virt-resize --resize" outputs error message for Win2008 32bit OS
|
||
|
||
=item L<https://bugzilla.redhat.com/975412>
|
||
|
||
inspection: Augeas expressions are broken with augeas >= 0.10
|
||
|
||
=item L<https://bugzilla.redhat.com/974904>
|
||
|
||
virt-resize --expand fails on Ubuntu Cloud Image
|
||
|
||
=item L<https://bugzilla.redhat.com/974489>
|
||
|
||
Regression: Fedora inspection broken by change from guestfs_exists to guestfs_is_file
|
||
|
||
=item L<https://bugzilla.redhat.com/972775>
|
||
|
||
txz-out command produces a bzip2-compressed file (should be xz-compressed)
|
||
|
||
=item L<https://bugzilla.redhat.com/969845>
|
||
|
||
upload to a directory occasionally hangs instead of failing
|
||
|
||
=item L<https://bugzilla.redhat.com/968875>
|
||
|
||
virt-sysprep should support URL-type arguments
|
||
|
||
=item L<https://bugzilla.redhat.com/624334>
|
||
|
||
blockdev-setbsz succeeds, but does not affect blockdev-getbsz
|
||
|
||
=back
|
||
|
||
=for comment ################################################################
|
||
|
||
=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<true> C<t> C<yes> C<y> C<on> C<0>
|
||
C<false> C<f> C<no> C<n> C<off> for boolean values (case insensitive),
|
||
and gives an error for all other strings.
|
||
|
||
New tool C<guestunmount> for unmounting FUSE filesystems safely.
|
||
|
||
C<guestmount --no-fork> 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<object> 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<C<guestfs.GuestFS (python_return_dict=True)>>.
|
||
|
||
The PHP bindings are now tested properly, and have had multiple fixes.
|
||
|
||
The long-deprecated Perl C<Sys::Guestfs::Lib> library has been
|
||
removed.
|
||
L<https://www.redhat.com/archives/libguestfs/2013-April/msg00001.html>
|
||
|
||
=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<http://people.redhat.com/~rjones/supermin/>
|
||
|
||
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<make print-subdirs> rule, useful for selectively running tests.
|
||
|
||
Multiple fixes to allow separated (sourcedir != builddir) builds.
|
||
|
||
Multiple fixes to Haskell bindings.
|
||
|
||
C<ln> and C<ln-f> APIs now capture C<errno> 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<src/guestfs-internal*.h>
|
||
|
||
Internal code shared between the library and certain tools is now
|
||
located in a static C<libutils> library.
|
||
|
||
Almost all subdirectories can now use parallel builds, although note
|
||
that the top-level directories still build in series.
|
||
|
||
Use of C<PATH_MAX> and C<NAME_MAX> has been eliminated from the code.
|
||
|
||
The Java API now requires JVM E<ge> 1.6.
|
||
|
||
Force use of C<serial-tests> with automake E<ge> 1.12.
|
||
|
||
Use of sockets in the library protocol layer is abstracted, allowing
|
||
other non-POSIX layers to be added in future (see
|
||
F<src/conn-socket.c>).
|
||
|
||
C<qemu-img info --output json> is used if available, for more secure
|
||
parsing of the output of this command.
|
||
|
||
Distros can now use C<make INSTALLDIRS=vendor install> 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<tmp/valgrind-I<DATE>-I<PID>.log>
|
||
|
||
C<make clean> cleans the local C<tmp/> 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<https://bugzilla.redhat.com/961812>
|
||
|
||
Segfault in inspect-fs.c in mountable code
|
||
|
||
=item L<https://bugzilla.redhat.com/957772>
|
||
|
||
tar-out and base64-out quoting error
|
||
|
||
=item L<https://bugzilla.redhat.com/957380>
|
||
|
||
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<https://bugzilla.redhat.com/948324>
|
||
|
||
inspection fails if libosinfo is not installed
|
||
|
||
=item L<https://bugzilla.redhat.com/928995>
|
||
|
||
file on zero-sized file now produces "empty " instead of "empty"
|
||
|
||
=item L<https://bugzilla.redhat.com/921292>
|
||
|
||
qemu: could not open disk image /tmp/.../snapshot1: Permission denied
|
||
|
||
=item L<https://bugzilla.redhat.com/921040>
|
||
|
||
"error: external command failed, see earlier error messages" message needs to change
|
||
|
||
=item L<https://bugzilla.redhat.com/920225>
|
||
|
||
libguestfs should use --output json (if supported) to safely parse the output of qemu-img command
|
||
|
||
=item L<https://bugzilla.redhat.com/916780>
|
||
|
||
feature request: guestmount --with-cleanup-pipefd
|
||
|
||
=item L<https://bugzilla.redhat.com/914934>
|
||
|
||
oom-killer kills guestfsd when tar-in a lot of data
|
||
|
||
=item L<https://bugzilla.redhat.com/914931>
|
||
|
||
FileIn commands cause segfault if appliance dies during the file copy in
|
||
|
||
=item L<https://bugzilla.redhat.com/913145>
|
||
|
||
Misc leaks in virNetClientProgramCall in libvirt 1.0.2
|
||
|
||
=item L<https://bugzilla.redhat.com/912499>
|
||
|
||
Security context on image file gets reset
|
||
|
||
=item L<https://bugzilla.redhat.com/909836>
|
||
|
||
libguestfs-test-tool --qemu segfaults
|
||
|
||
=item L<https://bugzilla.redhat.com/909624>
|
||
|
||
Unexpected non-tail recursion in recv_from_daemon results in stack overflow in very long-running API calls that send progress messages
|
||
|
||
=item L<https://bugzilla.redhat.com/908322>
|
||
|
||
virt-tar fails on non-existent directory names "error in chunked encoding at /home/rjones/d/libguestfs/tools/virt-tar line 272."
|
||
|
||
=item L<https://bugzilla.redhat.com/908321>
|
||
|
||
virt-cat fails on directory names "/dev/stdout: error in chunked encoding"
|
||
|
||
=item L<https://bugzilla.redhat.com/907554>
|
||
|
||
btrfs causes subsequent ntfs-3g filesystem to fail
|
||
|
||
=item L<https://bugzilla.redhat.com/905341>
|
||
|
||
"No such file or directory" when execute "hivex-commit"
|
||
|
||
=item L<https://bugzilla.redhat.com/903620>
|
||
|
||
btrfs_subvolume_list broken due to change in subvolume list output
|
||
|
||
=item L<https://bugzilla.redhat.com/895910>
|
||
|
||
guestmount: rename() incorrectly follows symbolic links
|
||
|
||
=item L<https://bugzilla.redhat.com/895905>
|
||
|
||
guestmount: link() incorrectly returns ENOENT, when it should be EXDEV
|
||
|
||
=item L<https://bugzilla.redhat.com/895904>
|
||
|
||
checksums-out fail to compute the checksums of all regular files in directory
|
||
|
||
=item L<https://bugzilla.redhat.com/894545>
|
||
|
||
libguestfs FTBFS on Fedora 19 because of new ruby
|
||
|
||
=item L<https://bugzilla.redhat.com/890027>
|
||
|
||
virt-sysprep: Setting hostname, domain name and pretty name on Fedora 18 correctly
|
||
|
||
=item L<https://bugzilla.redhat.com/887971>
|
||
|
||
pvcreate fails if partition contains a swap signature
|
||
|
||
=item L<https://bugzilla.redhat.com/887520>
|
||
|
||
zero_free_space: open: /sysroot//ujqqq135.rd3: Cannot allocate memory
|
||
|
||
=item L<https://bugzilla.redhat.com/886915>
|
||
|
||
libguestfs with libvirt attach-method fails with odd error if default hypervisor is Xen
|
||
|
||
=item L<https://bugzilla.redhat.com/847549>
|
||
|
||
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<https://bugzilla.redhat.com/811649>
|
||
|
||
libguestfs cannot open disk images which are symlinks to files that contain ':' (colon) character
|
||
|
||
=item L<https://bugzilla.redhat.com/664558>
|
||
|
||
RFE: Allow to set log callback in Ruby bindings
|
||
|
||
=back
|
||
|
||
=for comment ################################################################
|
||
|
||
=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<optionally> use libvirt to launch and manage the backend
|
||
appliance by:
|
||
|
||
=over 4
|
||
|
||
=item *
|
||
|
||
setting C<LIBGUESTFS_ATTACH_METHOD=libvirt[:URI]>
|
||
|
||
=item *
|
||
|
||
using C<./configure --with-default-attach-method=libvirt[:URI]>
|
||
|
||
=item *
|
||
|
||
or calling the API method C<guestfs_set_attach_method>
|
||
|
||
=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<gt> 25 disks, in all APIs, tools and tests.
|
||
|
||
You can label drives when adding them, then refer to them by label
|
||
(F</dev/disk/guestfs/LABEL>) instead of having to use device names
|
||
(F</dev/sda>).
|
||
|
||
=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<guestfs_cat>,
|
||
C<guestfs_find>, C<guestfs_read_file>, C<guestfs_read_lines>,
|
||
C<guestfs_write>, C<guestfs_write_append>, C<guestfs_lstatlist>,
|
||
C<guestfs_lxattrlist>, C<guestfs_readlinklist>, C<guestfs_ls>.
|
||
|
||
=head3 virt tools
|
||
|
||
C<guestfish touch 'win:c:\new_file'> now works as expected.
|
||
|
||
C<guestfish> has a new I<--network> option, which enables the user
|
||
network in libguestfs.
|
||
|
||
You can set C<GUESTFISH_PS1> to use fancy prompts in C<guestfish>.
|
||
|
||
C<rsync>, C<ssh>, C<less> and C<lrzip> commands are now available in
|
||
virt-rescue. In addition, C<rsync> can be used through the API for
|
||
doing incremental copies.
|
||
|
||
C<virt-sparsify> uses qcow2 v3 for increased efficiency.
|
||
|
||
C<virt-sysprep> 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<ifcfg-eth*> 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<virt-make-fs> can now create virtual floppy disks (VFDs).
|
||
|
||
C<guestmount> 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<guestfsd(8)>) 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<virt-edit> and the C<guestfish> C<edit> 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</etc/shadow> then it would be left world-readable after the edit.
|
||
|
||
This issue was assigned CVE-2012-2690, and is fixed in libguestfs E<ge> 1.16.
|
||
|
||
For further information, see
|
||
L<https://bugzilla.redhat.com/show_bug.cgi?id=788642>
|
||
|
||
=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<ge> 1.1 is required (E<ge> 1.2 preferred).
|
||
|
||
febootstrap E<ge> 3.20 is required.
|
||
|
||
libvirt is optional, but if you want to use the new libvirt
|
||
backend for launching the appliance then libvirt E<ge> 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<src/launch-appliance.c>, C<src/launch-libvirt.c>.
|
||
|
||
=item *
|
||
|
||
Generated action code is now split over several F<src/action*.c>
|
||
files, for faster compilation.
|
||
|
||
=item *
|
||
|
||
The huge F<src/guestfs.c> 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<SKIP:> in C<make check> output.
|
||
|
||
The parallel mount-local test has been rewritten in C (RHBZ#838081).
|
||
|
||
Ruby 1.8.5 is now supported (though Ruby E<ge> 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<virt-rescue> command is now tested during C<make check>.
|
||
|
||
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<tmp/> directory in the source.
|
||
This allows the directory to be labelled for SELinux (sVirt), and also
|
||
makes it easier to clean up.
|
||
|
||
C<make syntax-check> 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</dev/tty> 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<tests/extra> directory has gone. The "extra tests" are now
|
||
split into separately runnable targets, such as C<make check-valgrind>.
|
||
Use C<make help> to get a summary of the targets.
|
||
|
||
The C<lpj> 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<https://bugzilla.redhat.com/882417>
|
||
|
||
libguestfs tools fail with odd error messages if TMPDIR is not an absolute path
|
||
|
||
=item L<https://bugzilla.redhat.com/882299>
|
||
|
||
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<https://bugzilla.redhat.com/881953>
|
||
|
||
libguestfs: migration to /etc/hostname, /etc/vconsole.conf, /etc/locale.conf
|
||
|
||
=item L<https://bugzilla.redhat.com/880801>
|
||
|
||
virt-df with two -a options displays incorrect disk image name
|
||
|
||
=item L<https://bugzilla.redhat.com/879416>
|
||
|
||
libguestfs-test-tool pauses when you use --help option
|
||
|
||
=item L<https://bugzilla.redhat.com/876579>
|
||
|
||
mke2fs API does not apply block device naming translation to journaldevice optarg
|
||
|
||
=item L<https://bugzilla.redhat.com/860235>
|
||
|
||
SELinux policy ought to allow qemu to write to unconfined_u:object_r:user_tmp_t:s0
|
||
|
||
=item L<https://bugzilla.redhat.com/859949>
|
||
|
||
RFE: inspect-list-applications does not return the architecture of RPM packages
|
||
|
||
=item L<https://bugzilla.redhat.com/859885>
|
||
|
||
inspect-list-applications does not list all installed RPM packages with same name and different versions
|
||
|
||
=item L<https://bugzilla.redhat.com/859876>
|
||
|
||
guestfish printed paths are not canonicalized
|
||
|
||
=item L<https://bugzilla.redhat.com/859875>
|
||
|
||
Progress bar output should go to tty(?) stderr(?)
|
||
|
||
=item L<https://bugzilla.redhat.com/858696>
|
||
|
||
virt-sysprep reports Guestfs.Error("read_lines: fopen: /etc/sysconfig/network: No such file or directory") on some Fedora guests
|
||
|
||
=item L<https://bugzilla.redhat.com/858128>
|
||
|
||
libguestfs fail to list devices added by add-drive-ro-with-if twice
|
||
|
||
=item L<https://bugzilla.redhat.com/858126>
|
||
|
||
virt-inspector fail to work with some windows guests
|
||
|
||
=item L<https://bugzilla.redhat.com/853762>
|
||
|
||
virt-sparsify should use a more robust method to detect the input format
|
||
|
||
=item L<https://bugzilla.redhat.com/853393>
|
||
|
||
libvirt doesn't label console, serial sockets
|
||
|
||
=item L<https://bugzilla.redhat.com/853159>
|
||
|
||
virt-rescue in Fedora 18 is completely broken
|
||
|
||
=item L<https://bugzilla.redhat.com/852394>
|
||
|
||
libguestfs inspection limits registries to 100 MiB
|
||
|
||
=item L<https://bugzilla.redhat.com/852194>
|
||
|
||
virt-sparsify --compress fails if output is raw format
|
||
|
||
=item L<https://bugzilla.redhat.com/847881>
|
||
|
||
RFE: allow extra arguments (like --exclude) to tar-out
|
||
|
||
=item L<https://bugzilla.redhat.com/847880>
|
||
|
||
tar-out should allow (or force) --numeric-owner
|
||
|
||
=item L<https://bugzilla.redhat.com/845522>
|
||
|
||
guestfish "copy-out / localdir" command fails with "No such file or directory"
|
||
|
||
=item L<https://bugzilla.redhat.com/845488>
|
||
|
||
Long filenames on NTFS cause tar-out, copy-out etc to fail with error "Cannot open: File name too long"
|
||
|
||
=item L<https://bugzilla.redhat.com/842307>
|
||
|
||
RFE: Need help designing and implementing selinux policy for libguestfs/sVirt
|
||
|
||
=item L<https://bugzilla.redhat.com/840572>
|
||
|
||
virt-make-fs / tar-in should support vfat properly
|
||
|
||
=item L<https://bugzilla.redhat.com/840115>
|
||
|
||
guestfish touch problem - case_sensitive_path API expects the file to exist
|
||
|
||
=item L<https://bugzilla.redhat.com/836710>
|
||
|
||
Data loss when writing to qcow2-format disk files
|
||
|
||
=item L<https://bugzilla.redhat.com/834712>
|
||
|
||
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<https://bugzilla.redhat.com/824716>
|
||
|
||
compress-device-out didn't support bzip2
|
||
|
||
=item L<https://bugzilla.redhat.com/824043>
|
||
|
||
guestfish unrecognized mount option gives confusing error message
|
||
|
||
=item L<https://bugzilla.redhat.com/823887>
|
||
|
||
Filenames containing Chinese characters can't be created on vfat filesystems
|
||
|
||
=item L<https://bugzilla.redhat.com/823885>
|
||
|
||
virt-make-fs cannot create vfat filesystem containing filesystems with Chinese characters
|
||
|
||
=item L<https://bugzilla.redhat.com/823883>
|
||
|
||
virt-make-fs -t fat fails with an obscure error message
|
||
|
||
=item L<https://bugzilla.redhat.com/823821>
|
||
|
||
Inspection fails when /etc/HOSTNAME is empty
|
||
|
||
=item L<https://bugzilla.redhat.com/801117>
|
||
|
||
libguestfs cannot get icon for Windows 8
|
||
|
||
=item L<https://bugzilla.redhat.com/798979>
|
||
|
||
Ubuntu install CDs from oneiric onwards are not recognized: "multi-boot operating systems are not supported"
|
||
|
||
=item L<https://bugzilla.redhat.com/782167>
|
||
|
||
libguestfs doesn't recognize Windows Dynamic disks in some configurations, eg. spanned
|
||
|
||
=item L<https://bugzilla.redhat.com/713678>
|
||
|
||
Not all febootstrap messages are redirected to log callbacks
|
||
|
||
=item L<https://bugzilla.redhat.com/627675>
|
||
|
||
libguestfs inspector code cannot handle /dev/disk/by-id/* paths
|
||
|
||
=item L<https://bugzilla.redhat.com/602997>
|
||
|
||
part-get-bootable gives wrong result with an unordered part layout
|
||
|
||
=back
|
||
|
||
=for comment ################################################################
|
||
|
||
=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 <guestfs.h> 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
|
||
|
||
=for comment ################################################################
|
||
|
||
=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 <! (inline execution) don't mix well: pclose: No child processes
|
||
- 760000 libguestfs fails to compile with Ruby >= 1.9
|
||
- 755729 Error message for resize2fs-M needs tweaking
|
||
- 750889 Python code incompatible with Python v3.
|
||
- 596761 Ctrl-\ causes guestfish to abort
|
||
|
||
=for comment ################################################################
|
||
|
||
=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 <readonly/> 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 <readonly/> 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 <readonly/> 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
|
||
|
||
=for comment ################################################################
|
||
|
||
=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. ><fs> 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\<SID> and HKEY_USERS\<username>.
|
||
|
||
- 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
|
||
|
||
=for comment ################################################################
|
||
|
||
=head1 Release notes for libguestfs 1.10.0
|
||
|
||
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 <! cmd which executes a shell cmd and inlines the result.
|
||
|
||
- guestfish, guestmount, virt-rescue now all support --ro and --rw
|
||
options, and the default for this can be chosen via a configuration
|
||
file (/etc/libguestfs-tools.conf).
|
||
|
||
- New event API allows more than one callback to be registered for
|
||
each event, makes it possible to call the API from other languages,
|
||
and allows nearly all log, debug and trace messages to be rerouted
|
||
from stderr.
|
||
|
||
- Greater FHS compliance for temporary files, including using /var/tmp
|
||
for large cached files that should survive reboot (instead of /tmp).
|
||
|
||
- guestfish, guestmount -m option allows mount options to be passed
|
||
through to the underlying filesystem.
|
||
|
||
- mkfs-opts allows filesystem features to be specified.
|
||
|
||
- More intelligent handling of mountpoints, allowing mkmountpoint, mount
|
||
and umount-all commands to work together properly.
|
||
|
||
- Trace messages are prefixed with a distinct string, allowing them to
|
||
be easily 'grepped' out from debug output.
|
||
|
||
- guestfs_launch (guestfish 'run' command) now produces progress
|
||
messages (a guestfish progress bar) if it takes longer than 5
|
||
seconds to run.
|
||
|
||
- Several long-running commands where we are unable to estimate time
|
||
to completion generate "pulse mode" progress events. Progress bar
|
||
in guestfish has been updated to display these.
|
||
|
||
- Publish new example code in: C, Perl, Python, OCaml, Ruby.
|
||
|
||
- New virt-dhcp-address example program.
|
||
|
||
- The Java and Ruby bindings have been improved greatly.
|
||
|
||
- Perl includes a way to get the errno of the last error.
|
||
|
||
- Python bindings now compatible with rpyc (thanks Erez Shinan).
|
||
|
||
- Transifex is now being used to manage translations.
|
||
http://www.transifex.net/projects/p/libguestfs/
|
||
|
||
- Inspection now supports Red Hat Desktop, Slackware distributions.
|
||
|
||
- Inspection no longer fails for Windows guests that have two or
|
||
more disks.
|
||
|
||
- Inspection can now tell the difference between Windows 2008 Server
|
||
and Windows 7.
|
||
|
||
- Inspection can detect 32 bit applications installed in 64 bit
|
||
Windows, running on the WOW64 emulator.
|
||
|
||
- A series of protocol fixes has fixed the old bug RHBZ#576879
|
||
which used to cause errors during the upload command to lose
|
||
protocol synchronization.
|
||
|
||
- New logo!
|
||
|
||
=head2 Security
|
||
|
||
[none]
|
||
|
||
=head2 New APIs
|
||
|
||
first-private, get-attach-method, inspect-get-drive-mappings,
|
||
inspect-get-product-variant,
|
||
inspect-get-windows-current-control-set, next-private, resize2fs-M,
|
||
set-attach-method.
|
||
|
||
=head2 Internals
|
||
|
||
- The 'HACKING' file is obsolete. The contents have been moved into
|
||
a section of the guestfs(3) manual page.
|
||
|
||
- libguestfs-test-tool simplified. It no longer needs the static
|
||
binary or tries to construct an ISO.
|
||
|
||
- rpcgen-generated files are compiled with -fno-strict-aliasing
|
||
which should be safer (thanks Matt Booth).
|
||
|
||
- virt-resize was rewritten in OCaml.
|
||
|
||
- guestfish and other tools tested with valgrind; some memory leaks
|
||
were fixed.
|
||
|
||
=head2 Bugs fixed
|
||
|
||
- 502533 Updated Polish translation of libguestfs
|
||
- 576879 libguestfs protocol loses synchronization if you 'upload' before mounting disks
|
||
- 599503 document that mkmountpoint and umount-all cannot be mixed
|
||
- 617440 guestfish: fails to tilde expand '~' when the $HOME env is unset
|
||
- 664558 RFE: Allow to set log callback in Ruby bindings
|
||
- 665358 Punjabi Translation Completed (pa_IN)
|
||
- 666577 libguestfs: unknown filesystem /dev/fd0
|
||
- 667610 Multiple bugs, memory leaks in libguestfs ruby bindings
|
||
- 668112 virt-filesystems command fails on guest with corrupt filesystem label
|
||
- 668574 guestfish -i is trying to mount all mounts from /etc/fstab and fails with an error when device doesn't exists
|
||
- 673479 Add a grep-friendly string to LIBGUESTFS_TRACE output
|
||
- 674130 Inspection code fails for Windows guest with two disks
|
||
- 682756 libguestfs trace segfaults when list-filesystems returns error
|
||
- 682979 libguestfs incorrectly detects Red Hat desktop as 'redhat-based' instead of 'redhat'
|
||
- 690819 mkfs fails creating a filesystem on a disk device when using a disk with 'ide' interface
|
||
- 691389 Extended attributes don't work over guestmount (FUSE)
|
||
- 691724 virt-inspector reports unknown filesystem /dev/vda1
|
||
- 692545 inspect-list-applications fails to detect 32 bit apps installed under WOW64 emulator on 64 bit Windows
|
||
- 693324 sfdisk's python interface only accepts lists of type 'list' for the lines parameter
|
||
|
||
=for comment ################################################################
|
||
|
||
=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.
|
||
|
||
- <guestfs.h> is now a single file.
|
||
|
||
- <guestfs.h> 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
|
||
|
||
=for comment ################################################################
|
||
|
||
=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 <domain>' 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
|
||
|
||
=for comment ################################################################
|
||
|
||
=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
|
||
|
||
=for comment ################################################################
|
||
|
||
=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<https://www.redhat.com/archives/libguestfs/2009-November/msg00095.html>
|
||
|
||
=item 2009-09-13 (1.0.67)
|
||
|
||
L<https://www.redhat.com/archives/libguestfs/2009-August/msg00281.html>
|
||
|
||
=item 2009-07-23 (1.0.64)
|
||
|
||
L<https://www.redhat.com/archives/libguestfs/2009-July/msg00059.html>
|
||
|
||
=item 2009-07-14 (1.0.59)
|
||
|
||
L<https://www.redhat.com/archives/libguestfs/2009-July/msg00023.html>
|
||
|
||
=item 2009-04-01 (the initial announcement)
|
||
|
||
L<http://rwmj.wordpress.com/2009/04/01/libguestfs-access-and-modify-virtual-machine-disk-images/>
|
||
|
||
=back
|
||
|
||
=head1 SEE ALSO
|
||
|
||
L<guestfs-examples(1)>,
|
||
L<guestfs-faq(1)>,
|
||
L<guestfs-performance(1)>,
|
||
L<guestfs-recipes(1)>,
|
||
L<guestfs-testing(1)>,
|
||
L<guestfs(3)>,
|
||
L<guestfish(1)>,
|
||
L<http://libguestfs.org/>
|
||
|
||
=head1 AUTHOR
|
||
|
||
Richard W.M. Jones
|
||
|
||
=head1 COPYRIGHT
|
||
|
||
Copyright (C) 2009-2018 Red Hat Inc.
|