1guestfs-release-notes-1.20(1)Virtualization Supportguestfs-release-notes-1.20(1)
2
3
4
6 guestfs-release-notes - libguestfs Release Notes
7
9 These release notes only cover the differences from the previous
10 stable/dev branch split (1.18.0). For detailed changelogs, please see
11 the git repository, or the ChangeLog file distributed in the tarball.
12
13 New features
14 libvirt and sVirt (SELinux confinement)
15
16 You can optionally use libvirt to launch and manage the backend
17 appliance by:
18
19 • setting "LIBGUESTFS_ATTACH_METHOD=libvirt[:URI]"
20
21 • using "./configure --with-default-attach-method=libvirt[:URI]"
22
23 • or calling the API method "guestfs_set_attach_method"
24
25 SVirt (SELinux confinement) is used to secure the libguestfs appliance,
26 if the libvirt backend is selected.
27
28 virtio-scsi, larger number of drives, hotplugging
29
30 Virtio-scsi is now used by default, if it is available. This greatly
31 increases the number of drives that can be added to a single libguestfs
32 handle (up to 255).
33
34 You can now hotplug drives (add and remove drives after launch).
35
36 Libguestfs can now handle > 25 disks, in all APIs, tools and tests.
37
38 You can label drives when adding them, then refer to them by label
39 (/dev/disk/guestfs/LABEL) instead of having to use device names
40 (/dev/sda).
41
42 new library features
43
44 POSIX Access Control Lists (ACLs) and Linux filesystem capabilities can
45 now be read and written through the API.
46
47 Windows Dynamic Disks are now supported. The metadata can only be read
48 (volumes cannot be modified or created). However the data/filesystems
49 in the volumes themselves can be mounted, read and written (Matthew
50 Booth).
51
52 Hivex (Windows Registry editing) is now directly supported through the
53 API, making reading or editing the Windows Registry much more
54 efficient.
55
56 Several libguestfs APIs were reimplemented so they no longer have any
57 limits on output. The reimplemented APIs are: "guestfs_cat",
58 "guestfs_find", "guestfs_read_file", "guestfs_read_lines",
59 "guestfs_write", "guestfs_write_append", "guestfs_lstatlist",
60 "guestfs_lxattrlist", "guestfs_readlinklist", "guestfs_ls".
61
62 virt tools
63
64 "guestfish touch 'win:c:\new_file'" now works as expected.
65
66 "guestfish" has a new --network option, which enables the user network
67 in libguestfs.
68
69 You can set "GUESTFISH_PS1" to use fancy prompts in "guestfish".
70
71 "rsync", "ssh", "less" and "lrzip" commands are now available in virt-
72 rescue. In addition, "rsync" can be used through the API for doing
73 incremental copies.
74
75 "virt-sparsify" uses qcow2 v3 for increased efficiency.
76
77 "virt-sysprep" enhancements:
78
79 • generate new UUIDs for PVs and VGs
80
81 • remove the local machine ID (Wanlong Gao)
82
83 • remove ABRT data (Wanlong Gao)
84
85 • remove puppet keys and log files (Wanlong Gao)
86
87 • remove process accounting files (Wanlong Gao)
88
89 • new --firstboot parameter allowing firstboot scripts for
90 customizing guests
91
92 • remove HOSTNAME field from "ifcfg-eth*" files (Wanlong Gao)
93
94 • miscellaneous improvements for SuSE (Olaf Hering)
95
96 • remove man pages cache (Wanlong Gao)
97
98 • remove crash data generated by kexec-tools (Wanlong Gao)
99
100 "virt-make-fs" can now create virtual floppy disks (VFDs).
101
102 "guestmount" has a --pid-file option, which can be used to avoid a race
103 condition between unmounting the filesystem and using the underlying
104 disk image.
105
106 language bindings
107
108 Full-featured Lua bindings have been added in this release (thanks to
109 Jerome Vuarand for many suggestions).
110
111 In Ruby, optional arguments hash is optional.
112
113 In Python, optional arguments now don't use special "sentinel" values,
114 so any integer can be passed as an optional argument.
115
116 Erlang bindings now come with examples and tests.
117
118 Erlang bindings now handle 64 bit integer parameters correctly.
119
120 The automated 'bindtests' now test for 64 bit cleanliness in parameter
121 passing. Several bugs in the bindings were found and fixed as a
122 result.
123
124 Better handling of blocking and non-blocking functions should make
125 libguestfs calls more efficient.
126
127 inspection
128
129 Windows guests with unlimited-sized Registries are now supported. By
130 adding the hivex API to the libguestfs API, it is much more efficient
131 and easier to inspect and modify the Windows Registry in guests.
132
133 Better support for SuSE guests (Olaf Hering).
134
135 Return the architecture of installed applications (John Eckersberg).
136
137 Windows 8 is now supported.
138
139 Fedora 18 is now supported.
140
141 Inspection of ISOs/CDs/DVDs can now use the libosinfo database.
142
143 ports
144
145 Libguestfs without the appliance can be compiled on Mac OS X (Masami
146 HIRATA).
147
148 RHEL 5 is now explicitly supported through the 'oldlinux' branch in
149 upstream git.
150
151 PowerPC 64 bit is now supported. Also libguestfs has been examined for
152 endianness bugs and these have been fixed.
153
154 daemon
155
156 A man page for the daemon (guestfsd(8)) is included.
157
158 Security
159 guestfish history file
160
161 The $HOME/.guestfish history file is now created with 0600 permissions
162 (instead of 0644 before) so it is no longer world readable.
163
164 CVE-2012-2690
165
166 Old versions of both "virt-edit" and the "guestfish" "edit" command
167 created a new file containing the changes but did not set the
168 permissions, etc of the new file to match the old one. The result of
169 this was that if you edited a security sensitive file such as
170 /etc/shadow then it would be left world-readable after the edit.
171
172 This issue was assigned CVE-2012-2690, and is fixed in libguestfs ≥
173 1.16.
174
175 For further information, see
176 https://bugzilla.redhat.com/show_bug.cgi?id=788642
177
178 New APIs
179 acl-delete-def-file
180 acl-get-file
181 acl-set-file
182 canonical-device-name
183 cap-get-file
184 cap-set-file
185 create-flags
186 device-index
187 disk-has-backing-file
188 disk-format
189 disk-virtual-size
190 filesystem-available
191 fill-dir
192 fstrim
193 get-cachedir
194 get-libvirt-requested-credentials
195 get-libvirt-requested-credential-prompt
196 get-libvirt-requested-credential-challenge
197 get-libvirt-requested-credential-defresult
198 get-tmpdir
199 hivex-close
200 hivex-commit
201 hivex-node-add-child
202 hivex-node-children
203 hivex-node-delete-child
204 hivex-node-get-child
205 hivex-node-get-value
206 hivex-node-name
207 hivex-node-parent
208 hivex-node-set-value
209 hivex-node-values
210 hivex-open
211 hivex-root
212 hivex-value-key
213 hivex-value-type
214 hivex-value-utf8
215 hivex-value-value
216 inspect-list-applications2 (John Eckersberg)
217 list-ldm-volumes
218 list-ldm-partitions
219 ldmtool-create-all
220 ldmtool-diskgroup-disks
221 ldmtool-diskgroup-name
222 ldmtool-diskgroup-volumes
223 ldmtool-remove-all
224 ldmtool-scan
225 ldmtool-scan-devices
226 ldmtool-volume-hint
227 ldmtool-volume-partitions
228 ldmtool-volume-type
229 ls0
230 max-disks
231 mke2fs (Wanlong Gao)
232 mklost-and-found
233 mkswap [added label and uuid optional arguments]
234 mktemp (Wanlong Gao)
235 nr-devices
236 parse-environment
237 parse-environment-list
238 rm-f
239 rsync
240 rsync-in
241 rsync-out
242 set-cachedir
243 set-libvirt-supported-credentials
244 set-libvirt-requested-credential
245 set-tmpdir
246 shutdown [backported to 1.16 and 1.18]
247 tar-in [added compress flag]
248 tar-out [added compress, numericowner, excludes flags]
249 umount [added force and lazy optional arguments]
250 utsname
251 xfs-admin (Wanlong Gao)
252 xfs-growfs (Wanlong Gao)
253 xfs-info (Wanlong Gao)
254 xfs-repair (Wanlong Gao)
255
256 In the C API only:
257
258 guestfs_push_error_handler
259 guestfs_pop_error_handler
260
261 Internals
262 qemu ≥ 1.1 is required (≥ 1.2 preferred).
263
264 febootstrap ≥ 3.20 is required.
265
266 libvirt is optional, but if you want to use the new libvirt backend for
267 launching the appliance then libvirt ≥ 0.10.2 would be required.
268
269 Coverity has been run over the complete codebase, and many issues fixed
270 (thanks Ondrej Vasik, Kamil Dudka).
271
272 Functions which previously had no optargs can now be converted to ones
273 with optargs, making extending the API much more flexible. Source and
274 binary backwards compatibility is preserved for users of the API.
275
276 The way that libguestfs APIs and structures are represented in the
277 generator has changed to use an OCaml struct instead of a tuple. This
278 makes generator descriptions more flexible and easier to understand.
279 For details see commits 39d1a7db and eb185eef.
280
281 Separation of the library code into more files:
282
283 • Launch backends are now located in separate files eg.
284 src/launch-appliance.c, "src/launch-libvirt.c".
285
286 • Generated action code is now split over several src/action*.c
287 files, for faster compilation.
288
289 • The huge src/guestfs.c file is now split into smaller logical
290 units.
291
292 POD (documentation) is now generated using a rewritten Perl program
293 instead of pod2* + shell scripts.
294
295 Man pages now contain stable dates (Hilko Bengen).
296
297 Skipped tests now exit with code 77, so they appear as "SKIP:" in "make
298 check" output.
299
300 The parallel mount-local test has been rewritten in C (RHBZ#838081).
301
302 Ruby 1.8.5 is now supported (though Ruby ≥ 1.9 is preferred).
303
304 Perl bindings can be disabled via "./configure --disable-perl" (Wulf C.
305 Krueger). Note that Perl is still required in order to build
306 libguestfs.
307
308 Java bindings are now enabled/disabled using "./configure --with-java"
309 or "./configure --without-java" (Wulf C. Krueger).
310
311 New configure options "./configure --enable-code-profiling" and
312 "./configure --enable-code-coverage".
313
314 Multiple fixes to use of 64 bit integers in language bindings.
315
316 The appliance backend now uses sgabios instead of vgabios (Dan
317 Berrange).
318
319 The "./run" script now sets enough environment variables that you can
320 run OCaml, Python, Ruby, Java, GJS, Erlang, Lua programs.
321
322 "./run --test" flag for running tests with minimal output. It also
323 prints the time taken to run each test.
324
325 The "./run" script now builds up paths cumulatively, meaning that you
326 can use "./run" twice, or use the libguestfs and libvirt "./run"
327 scripts together.
328
329 You can extract a list of external commands required by the daemon,
330 making building the appliance on certain distros easier (Olaf Hering).
331
332 The "virt-rescue" command is now tested during "make check".
333
334 The generator now removes unused generated files. This helps when
335 going back and forth with git rebase, git bisect, etc.
336
337 Tests now run in a separate toplevel "tmp/" directory in the source.
338 This allows the directory to be labelled for SELinux (sVirt), and also
339 makes it easier to clean up.
340
341 "make syntax-check" now works to a greater extent, and many problems in
342 the main code that were found by syntax-check have been fixed (thanks
343 Jim Meyering).
344
345 Emacs mode (-*- foo -*-) has been added to generated files.
346
347 Progress bar output is now sent to /dev/tty so it doesn't end up in the
348 regular output of the program. virt-resize and virt-sparsify now
349 suppress progress bars if stdout is not a tty.
350
351 There is now a "./configure --without-libvirt" option. This is useful
352 for testing that the code still compiles without libvirt.
353
354 There is now an internal mini-library for running commands. This
355 allows us to redirect errors from external commands into events.
356
357 Code for handling temporary directories and the appliance cache was
358 completely overhauled.
359
360 Code for temporarily ignoring/disabling errors now looks like this:
361
362 guestfs_push_error_handler (g, NULL, NULL);
363 guestfs_mkdir (g, "/foo"); /* We don't care if this fails. */
364 guestfs_pop_error_handler (g);
365
366 The "tests/extra" directory has gone. The "extra tests" are now split
367 into separately runnable targets, such as "make check-valgrind". Use
368 "make help" to get a summary of the targets.
369
370 The "lpj" option is passed to the appliance kernel when using TCG.
371 This should improve clock stability (thanks Marcelo Tosatti, Olaf
372 Hering).
373
374 Bugs fixed
375 https://bugzilla.redhat.com/882417
376 libguestfs tools fail with odd error messages if TMPDIR is not an
377 absolute path
378
379 https://bugzilla.redhat.com/882299
380 Windows 8 guest disks can't be mounted: "The NTFS partition is in
381 an unsafe state. Please resume and shutdown Windows fully (no
382 hibernation or fast restarting), or mount the volume read-only with
383 the 'ro' mount option."
384
385 https://bugzilla.redhat.com/881953
386 libguestfs: migration to /etc/hostname, /etc/vconsole.conf,
387 /etc/locale.conf
388
389 https://bugzilla.redhat.com/880801
390 virt-df with two -a options displays incorrect disk image name
391
392 https://bugzilla.redhat.com/879416
393 libguestfs-test-tool pauses when you use --help option
394
395 https://bugzilla.redhat.com/876579
396 mke2fs API does not apply block device naming translation to
397 journaldevice optarg
398
399 https://bugzilla.redhat.com/860235
400 SELinux policy ought to allow qemu to write to
401 unconfined_u:object_r:user_tmp_t:s0
402
403 https://bugzilla.redhat.com/859949
404 RFE: inspect-list-applications does not return the architecture of
405 RPM packages
406
407 https://bugzilla.redhat.com/859885
408 inspect-list-applications does not list all installed RPM packages
409 with same name and different versions
410
411 https://bugzilla.redhat.com/859876
412 guestfish printed paths are not canonicalized
413
414 https://bugzilla.redhat.com/859875
415 Progress bar output should go to tty(?) stderr(?)
416
417 https://bugzilla.redhat.com/858696
418 virt-sysprep reports Guestfs.Error("read_lines: fopen:
419 /etc/sysconfig/network: No such file or directory") on some Fedora
420 guests
421
422 https://bugzilla.redhat.com/858128
423 libguestfs fail to list devices added by add-drive-ro-with-if twice
424
425 https://bugzilla.redhat.com/858126
426 virt-inspector fail to work with some windows guests
427
428 https://bugzilla.redhat.com/853762
429 virt-sparsify should use a more robust method to detect the input
430 format
431
432 https://bugzilla.redhat.com/853393
433 libvirt doesn't label console, serial sockets
434
435 https://bugzilla.redhat.com/853159
436 virt-rescue in Fedora 18 is completely broken
437
438 https://bugzilla.redhat.com/852394
439 libguestfs inspection limits registries to 100 MiB
440
441 https://bugzilla.redhat.com/852194
442 virt-sparsify --compress fails if output is raw format
443
444 https://bugzilla.redhat.com/847881
445 RFE: allow extra arguments (like --exclude) to tar-out
446
447 https://bugzilla.redhat.com/847880
448 tar-out should allow (or force) --numeric-owner
449
450 https://bugzilla.redhat.com/845522
451 guestfish "copy-out / localdir" command fails with "No such file or
452 directory"
453
454 https://bugzilla.redhat.com/845488
455 Long filenames on NTFS cause tar-out, copy-out etc to fail with
456 error "Cannot open: File name too long"
457
458 https://bugzilla.redhat.com/842307
459 RFE: Need help designing and implementing selinux policy for
460 libguestfs/sVirt
461
462 https://bugzilla.redhat.com/840572
463 virt-make-fs / tar-in should support vfat properly
464
465 https://bugzilla.redhat.com/840115
466 guestfish touch problem - case_sensitive_path API expects the file
467 to exist
468
469 https://bugzilla.redhat.com/836710
470 Data loss when writing to qcow2-format disk files
471
472 https://bugzilla.redhat.com/834712
473 lvresize, lvresize-free fail unnecessarily if you don't change the
474 size of the LV: "New size (nn extents) matches existing size (nn
475 extents)"
476
477 https://bugzilla.redhat.com/824716
478 compress-device-out didn't support bzip2
479
480 https://bugzilla.redhat.com/824043
481 guestfish unrecognized mount option gives confusing error message
482
483 https://bugzilla.redhat.com/823887
484 Filenames containing Chinese characters can't be created on vfat
485 filesystems
486
487 https://bugzilla.redhat.com/823885
488 virt-make-fs cannot create vfat filesystem containing filesystems
489 with Chinese characters
490
491 https://bugzilla.redhat.com/823883
492 virt-make-fs -t fat fails with an obscure error message
493
494 https://bugzilla.redhat.com/823821
495 Inspection fails when /etc/HOSTNAME is empty
496
497 https://bugzilla.redhat.com/801117
498 libguestfs cannot get icon for Windows 8
499
500 https://bugzilla.redhat.com/798979
501 Ubuntu install CDs from oneiric onwards are not recognized: "multi-
502 boot operating systems are not supported"
503
504 https://bugzilla.redhat.com/782167
505 libguestfs doesn't recognize Windows Dynamic disks in some
506 configurations, eg. spanned
507
508 https://bugzilla.redhat.com/713678
509 Not all febootstrap messages are redirected to log callbacks
510
511 https://bugzilla.redhat.com/627675
512 libguestfs inspector code cannot handle /dev/disk/by-id/* paths
513
514 https://bugzilla.redhat.com/602997
515 part-get-bootable gives wrong result with an unordered part layout
516
518 guestfs-examples(1), guestfs-faq(1), guestfs-performance(1),
519 guestfs-recipes(1), guestfs-testing(1), guestfs(3), guestfish(1),
520 http://libguestfs.org/
521
523 Richard W.M. Jones
524
526 Copyright (C) 2009-2020 Red Hat Inc.
527
529 This program is free software; you can redistribute it and/or modify it
530 under the terms of the GNU General Public License as published by the
531 Free Software Foundation; either version 2 of the License, or (at your
532 option) any later version.
533
534 This program is distributed in the hope that it will be useful, but
535 WITHOUT ANY WARRANTY; without even the implied warranty of
536 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
537 General Public License for more details.
538
539 You should have received a copy of the GNU General Public License along
540 with this program; if not, write to the Free Software Foundation, Inc.,
541 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
542
544 To get a list of bugs against libguestfs, use this link:
545 https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
546
547 To report a new bug against libguestfs, use this link:
548 https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
549
550 When reporting a bug, please supply:
551
552 • The version of libguestfs.
553
554 • Where you got libguestfs (eg. which Linux distro, compiled from
555 source, etc)
556
557 • Describe the bug accurately and give a way to reproduce it.
558
559 • Run libguestfs-test-tool(1) and paste the complete, unedited output
560 into the bug report.
561
562
563
564libguestfs-1.49.9 2023-01-19 guestfs-release-notes-1.20(1)