mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
3523 lines
109 KiB
Plaintext
3523 lines
109 KiB
Plaintext
=head1 NAME
|
||
|
||
guestfs-release-notes - libguestfs Release Notes
|
||
|
||
=begin comment
|
||
|
||
UPDATED TO (put commit hash here)
|
||
|
||
=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.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 C</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: C<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:
|
||
C<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 C<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 C</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
|
||
C</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 C</tmp> and C</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 C<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
|
||
C<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
|
||
C<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 C<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
|
||
(C</dev/disk/guestfs/LABEL>) instead of having to use device names
|
||
(C</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 C<$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
|
||
C</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. C<src/launch-appliance.c>, C<src/launch-libvirt.c>.
|
||
|
||
=item *
|
||
|
||
Generated action code is now split over several C<src/action*.c>
|
||
files, for faster compilation.
|
||
|
||
=item *
|
||
|
||
The huge C<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 C</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-2014 Red Hat Inc.
|