guestfs-release-notes(1)

НАЗВА
guestfs-release-notes - нотатки щодо випусків libguestfs

RELEASE NOTES FOR LIBGUESTFS 1.40
These release notes only cover the differences from the previous stable/dev branch split (1.38.0). For detailed changelogs, please see the git repository, or the ChangeLog file distributed in the tarball.

  Нові можливості
Нові можливості у наявних інструментах

Virt-inspector now displays the libosinfo short ID for guests (Pino Toscano).

Guestfish -N will now generate 1G disks instead of 100M disks by default.

Virt-resize supports f2fs filesystems (Pino Toscano).

libguestfs-test-tool now supports bash tab completion (Pino Toscano).

The --machine-readable option now supports sending output to files or stdout/stderr. This works uniformly across most OCaml-based virt tools, specifically: virt-builder, virt-builder-repository, virt-dib, virt-get-kernel, virt-resize, virt-sparsify, and virt-v2v (Pino Toscano).

Virt-builder --uninstall option now works on SUSE (Sebastian Meyer).

Virt-builder now supports Windows. We are not able to ship Windows templates in the public respository for obvious licensing reasons, but if you are an MSDN subscriber you may build your own. See https://rwmj.wordpress.com/2018/09/13/creating-windows-templates-for-virt-builder/

Many tools now support a --key option allowing you to pass in decryption keys for filesystems stored in local files on the host rather than having to feed them in over stdin (Pino Toscano).

virt-v2v і virt-p2v

New -o rhv-upload mode for directly uploading images to RHV, bypassing the Export Storage Domain (Tomáš Golembiovský, Nir Soffer, Daniel Erez, Pino Toscano).

New -o openstack mode for directly uploading images to OpenStack and Cinder using OpenStack APIs.

Virt-v2v now has a general mechanism for input and output options: -io and -oo.

Virt-v2v can now install the RHV tools or QEMU GA in guests (Tomáš Golembiovský).

The huge manual has now been split into several smaller documents and is more focused on helping users to accomplish specific v2v tasks.

Multiple improvements to the OVF metadata when converting to RHV (Tomáš Golembiovský, Pino Toscano, Arik Hadas).

Virt-v2v can now convert Linux guests with split kernel packages, especially Ubuntu 18.04 (Pino Toscano).

Virt-v2v old --password-file option has been replaced by -ip (the old option remains for backwards compatibility).

Virt-v2v now preserves the VM Generation ID.

Virt-v2v has a new --mac option allowing specific NICs to be mapped precisely to networks or bridges on the target.

New virt-v2v --print-estimate option to estimate the size of data that virt-v2v will copy.

Virt-v2v is now usually able to remove open-vm-tools and VMware Tools from the Linux guest during conversion (Pino Toscano).

Virt-v2v can now support UEFI conversions to RHV (Tomáš Golembiovský).

Virt-p2v now prefers you to shut down instead of rebooting the machine after conversion has finished (Pino Toscano).

Virt-v2v now writes the libosinfo short ID to the libvirt metadata when using -o local and -o libvirt output modes (Martin Kletzander).

Прив’язки до мов програмування

OpenJDK 10+ is supported (Pino Toscano).

Java bindings fixed for Gentoo host (Martin Kletzander).

Перевірка

Support Kali Linux (Pino Toscano).

When inspecting mountpoints, look for /etc/mdadm/mdadm.conf as well as /etc/mdadm.conf (Nikolay Ivanets).

Improved support for OpenSUSE Tumbleweed (Pino Toscano).

Архітектури і платформи

Miscellaneous macOS build fixes (Adam Robinson).

Інше

Multiple documentation typos fixed (Yuri Chornoivan).

  Безпека
Див. також guestfs-security(1).

CVE-2018-11806

Qemu's slirp (userspace networking) had several buffer overflows which could be triggered from the guest or network side.

  API
Нові програмні інтерфейси

"f2fs_expand"
    Expand an f2fs filesystem (Pino Toscano).

"inspect_get_osinfo"
    Get the libosinfo short ID for the inspected guest (Pino Toscano).

"lvm_scan"
    This rescans all PVs, VGs and LVs, optionally activating them.

Інші зміни у програмному інтерфейсі

"part_get_mbr_part_type" was reimplemented in OCaml (Nikolay Ivanets).

"list_filesystems" now filters out MBR extended partitions (Nikolay Ivanets).

"vgscan" has been deprecated. Use the new "lvm_scan" API in preference.

  Зміни у збиранні
The JSON library switched from yajl to Jansson ≥ 2.7 (Pino Toscano).

Support for The Sleuth Kit 4.5 (Pino Toscano).

Multiple improvements in the "./configure" script (Lin Ma).

More out-of-tree build fixes (Hilko Bengen).

Some work on reproducible builds (Bernhard M. Wiedemann).

  Внутрішня частина роботи програми
lvmetad is now used unconditionally, and is started much earlier in the appliance boot process. This fixes support for certain PV types.

On Debian, dash is installed inside the appliance and in virt-rescue (Pino Toscano).

The amount of RAM assigned to the appliance has been increased from 500M to 768M (on x86_64, other architectures have different limits). This enables use of up to 255 disks when using recent Linux kernels.

Virt-v2v now models the source machine type (eg. i440FX, Q35 or virt).

Virt-p2v now generates configuration code automatically, also code for parsing the kernel command line.

Use "LT_INIT" instead of "AC_PROG_LIBTOOL".

The OCaml "JSON" code for parsing and serializing has been unified into a single abstract data type.

Most OCaml tools are now built using the PIC runtime. This has a performance penalty on i686, but is relatively free on other architectures and has security benefits.

The direct backend now queries the qemu binary for availability of KVM, instead of using a heuristic based on /dev/kvm (Andrea Bolognani).

Our "clever" libxml2 writer macros are now used consistently across all parts of the code base.

Qemu dropped -nodefconfig without telling us. The equivalent -no-user-config option is now used instead. Qemu also moved the "serial" option from -drive to -device, again without any notice, and this is also fixed.

  Виправлені вади

https://bugzilla.redhat.com/1664310
    [RHEL 7.6 LP] openstack output leaks passwords

https://bugzilla.redhat.com/1661038
    virt-inspector fails with "error: int_of_string" on a Linux image when /etc/fstab contains a partionless device

https://bugzilla.redhat.com/1651432
    v2v - support for -insecure option to support OSP SSL connection for VM migrations

https://bugzilla.redhat.com/1642044
    [RFE] virt-p2v UI should give the option to shutdown after conversion is finished

https://bugzilla.redhat.com/1634248
    virt-v2v cannot convert opensuse15 guest

https://bugzilla.redhat.com/1624902
    Fix rhev-apt command that virt-v2v runs in Windows guests on first boot

https://bugzilla.redhat.com/1624878
    Update v2v docs to describe support for SHA 2 certs required for converting Windows 7 and 2008 R2 guests

https://bugzilla.redhat.com/1615885
    Minor log issue of virt-v2v

https://bugzilla.redhat.com/1614276
    VixDiskLib: VixDiskLib_Read: Read 4096 sectors at 57516160 failed. Error 2 (Memory allocation failed. Out of memory.) (DiskLib error 802: NBD_ERR_INSUFFICIENT_RESOURCES) at 5240.

https://bugzilla.redhat.com/1612785
    "warning: <target dev='sr0'> was ignored because the device name could not be recognized" should be hidden since convert cdrom is supported by virt-v2v

https://bugzilla.redhat.com/1611690
    part_to_dev "/dev/sdp1" returns "/dev/sd" instead of "/dev/sdp"

https://bugzilla.redhat.com/1608131
    inspection fails when swap partition in /etc/fstab has incorrect UUID compared to actual swap partition

https://bugzilla.redhat.com/1605071
    On machines where /dev/kvm exists but KVM doesn't work, libguestfs will not fall back to TCG

https://bugzilla.redhat.com/1602353
    virt-inspector can't inspect LUKS-encrypted RHEL7 guest image

https://bugzilla.redhat.com/1601943
    Improve error "No module named ovirtsdk4" in v2v rhv-upload conversion

https://bugzilla.redhat.com/1598715
    Adding QXL device in OVF causes Cirrus Logic device to be added to guest

https://bugzilla.redhat.com/1598350
    RFE: virt-v2v should preserve <genid>

https://bugzilla.redhat.com/1596851
    Transfer fails if local host is in maintenance mode

https://bugzilla.redhat.com/1596810
    Transfer fails if local host belongs to another DC

https://bugzilla.redhat.com/1592468
    v2v to RHV transfer fails with: error: [empty name]: cannot read '//*/disksection' with value: null

https://bugzilla.redhat.com/1592061
    virt-v2v convert rhel5.3 failure when executing rpm -ql kernel-2.6.18-128.el5 command

https://bugzilla.redhat.com/1591789
    p2v: error: XML error: CPU vendor specified without CPU model

https://bugzilla.redhat.com/1590220
    Hide rhv-upload option in virt-p2v client

https://bugzilla.redhat.com/1588451
    Don't use relative socket paths for NBD

https://bugzilla.redhat.com/1588088
    RFE: Support for -o rhv-upload via Unix domain socket

https://bugzilla.redhat.com/1586198
    ovirt-imageio-daemon times out during migration

https://bugzilla.redhat.com/1580309
    virt-v2v rhel7.6 build can't convert guest to null with qemu-kvm rhel7.5.z build

https://bugzilla.redhat.com/1580292
    Virt-v2v rhel7.6 build can't convert guest with qemu-kvm rhel7.5.z build

https://bugzilla.redhat.com/1579047
    virt-builder: ubuntu-18.04 template has stray HTTP proxy configured for apt

https://bugzilla.redhat.com/1575640
    virt-builder: error: host cpu (x86_64) and guest arch (unknown) are not compatible

https://bugzilla.redhat.com/1570407
    virt-v2v -i ova gives checksum error when missing files are mentioned in .mf

https://bugzilla.redhat.com/1567763
    guestfsd: error: /Windows/Drivers/VirtIO: Read-only file system

https://bugzilla.redhat.com/1564983
    The mount-vfs failed to mount the logical volume

https://bugzilla.redhat.com/1561828
    RHV tools not properly installed in migrated Windows VM's causing boot failure

https://bugzilla.redhat.com/1559027
    virt-v2v does not honor --network with -o rhv-upload

https://bugzilla.redhat.com/1557273
    [RFE] Upload images directly to oVirt (virt-v2v -o rhv-upload)

https://bugzilla.redhat.com/1544842
    [RFE] Add libosinfo short-id to virt-inspector output

https://bugzilla.redhat.com/1544674
    virt-inspector --help differs from manpage

https://bugzilla.redhat.com/1544227
    RFE: recognize the Kali Linux distribution

https://bugzilla.redhat.com/1532224
    Resume=/dev/sdaX can't be updated to resume=/dev/vdaX in rhel7 guest's grub file after v2v conversion

https://bugzilla.redhat.com/1530967
    Change categories of "Guest Operating system management by VIX API" in v2v man page

https://bugzilla.redhat.com/1527334
    Various -it vddk -io vddk* options should be documented, removed or fixed

https://bugzilla.redhat.com/1148012
    Reverted: RFE: Allow qemu-bridge-helper to be used to implement guestfs_set_network

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.38
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.36.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
Нові інструменти

Virt-builder-repository — новий інструмент, який надає кінцевим користувачам змогу створювати і оновлювати сховища virt-builder (Cédric Bosdonnat).

Virt-rescue (хоча це і не новий інструмент) було суттєво переписано, реалізовано керування завданнями, параметри -m та -i, клавіші скасовування тощо.

Нові можливості у наявних інструментах

Поліпшено планувальник virt-builder. У новій версії програма вибирає швидші та ефективніші плани збирання для складних випадків, особливо якщо тимчасовий каталог або каталог виведення даних перебувають на сховищі даних у мережі.

Нові шаблони virt-builder для Fedora (починаючи з Fedora 26) матимуть просте компонування розділів і використовуватимуть GPT.

Скрипти першого завантаження virt-customize у гостьових системах, де використовується systemd, тепер встановлюються до "multi-user.target", а не до "default.target", отже запускаються лише тоді, коли система завантажується у звичайному режимі.

Virt-customize тепер встановлює випадковий /etc/machine-id для гостьових систем Linux, якщо такий ще не встановлено.

Virt-df now works correctly on filesystems with block sizes smaller than 1K (Nikolay Ivanets).

Virt-dib містить подальші поліпшення у сумісності з diskimage-builder (Pino Toscano).

Virt-sysprep вилучає "DHCP_HOSTNAME" з файлів ifcfg-*.

Virt-sysprep тепер працює і в Oracle Linux (Jamie Iles).

Virt-resize тепер правильно копіює атрибути розділів GPT з джерела до призначення (Cédric Bosdonnat).

Реалізовано або поліпшено доповнення за tab у bash для таких програм: virt-win-reg, virt-v2v-copy-to-local.

virt-v2v і virt-p2v

Virt-v2v тепер може читати файли VMX VMware безпосередньо або з локального диска, сховища NFS, або за допомогою SSH з гіпервізору ESXi.

Virt-v2v тепер може використовувати VDDK як джерело вхідних даних.

Обидві програми, virt-v2v і virt-p2v, тепер можуть передавати дані щодо виробника процесора, моделі і топології початкової системи. Втім, на жаль, не усі гіпервізори поточних версій здатні надати або використати ці дані (Tomáš Golembiovský).

У virt-v2v реалізовано підтримку шифрованих гостьових систем (Pino Toscano).

Virt-v2v тепер може працювати зі знімками VMware. Зауважте, що знімки мають бути згорнутими — програма не перетворює ланцюжок знімків у ланцюжок знімків.

Virt-v2v тепер встановлює блокові пристрої virtio Windows 10 / Windows Server 2016 належним чином (Pavel Butsykin, Kun Wei).

У virt-v2v реалізовано встановлення драйверів virtio-rng, balloon та pvpanic та належне налаштовування цих драйверів у метаданих гіпервізору призначення для гіпервізорів, у яких передбачено підтримку цього (Tomáš Golembiovský).

У virt-v2v реалізовано встановлення застарілих і сучасних ключів virtio у реєстрі Windows (Ladi Prosek).

У virt-p2v реалізовано збереження (у певних випадках) часового поясу у годиннику реального часу (RTC).

Тепер virt-p2v поєднує декілька команд scp до сервера перетворення у одну команду, щоб зменшує час, потрібний на перетворення.

У virt-v2v реалізовано виявлення спеціалізованих ядер Linux лише для паравіртуалізації у Xen належним чином (Laszlo Ersek).

У virt-v2v -o glance реалізовано підтримку створення належних властивостей для гостьових систем UEFI (Pino Toscano).

Тепер virt-v2v -o null уникає буферизації гостьової системи до тимчасового файла. Замість цього, виконується запис до «нульового блокового пристрою» qemu. Це пришвидшує роботу і знижує потребу у використанні місця на диску.

У virt-v2v -o rhv реалізовано підтримку типу гостьової системи Windows 2016 Server.

У virt-v2v -i libvirtxml реалізовано підтримку відкриття мережевих дисків за допомогою http або https.

У virt-v2v реалізовано попереджання щодо транзитних пристроїв у основній системі (Pino Toscano).

Розширено можливості виведення virt-v2v --machine-readable так, щоб було включено факти "vcenter-https", "xen-ssh" і "in-place" (Pino Toscano).

Прив’язки до мов програмування

Усунено декілька витоків пам'яті та інших проблем із пошкодженням даних у прив'язках до Java (Pino Toscano).

Відкинуто підтримку у Perl %guestfs_introspection.

Перевірка

Підтримку інспектування було переписано на OCaml і включено у фонову службу. Це значно пришвидшує інспектування, збільшує його стійкість та поліпшує можливості із його розширення у майбутньому.

Краща підтримка піктограм гостьових систем ALT Linux (Pino Toscano).

Краща підтримка NeoKylin (Qingzheng Zhang).

Уможливлено роботу з операційними системами, подібними до Void Linux, у яких "VERSION_ID" не включено до /etc/os-release (Pino Toscano).

Add support for Microsoft MS-DOS (Daniel Berrangé).

Архітектури і платформи

Декілька виправлень для архітектури S/390. Libguestfs і усі інструменти тепер можна зібрати і запустити на цій архітектурі.

Інше

Програмний інтерфейс libguestfs тепер є безпечним щодо потоків обробки (хоча ще не є паралелізованим). Ви можете викликати інтерфейс для одного дескриптора із декількох потоків без потреби у блокуванні.

  Безпека
Було виявлено декілька вразливостей у програмі icoutils "wrestool", яку libguestfs запускала для створення піктограм гостьових систем Windows. Рекомендуємо використовувати лише найсвіжішу версію "wrestool".

  API
Нові програмні інтерфейси

"hivex_value_string"
    Замінює собою застарілий програмний інтерфейс "hivex_value_utf8", виконуючи ті самі завдання.

"part_get_gpt_attributes"
"part_set_gpt_attributes"
    Читання і запис прапорців атрибутів розділів GPT (Cédric Bosdonnat).

"part_resize"
    Збільшення і зменшення наявного розділу (Nikos Skalkotos).

"yara_destroy"
"yara_load"
"yara_scan"
    Підтримка рушія пошуку шкідливого програмного забезпечення Yara (Matteo Cafasso).

Інші зміни у програмному інтерфейсі

Програмні інтерфейси, реалізовані у фоновій службі, тепер можна писати на C або OCaml. Декілька програмних інтерфейсів було переписано на OCaml, хоча ми і не плануємо переписувати цією мовою усі інтерфейси.

Тепер ви отримуватимете зрозуміле повідомлення про помилку, якщо спробуєте додати забагато дисків до базової системи, замість доволі розпливчастого повідомлення про помилку від qemu.

У деяких програмних інтерфейсах випадково можна було скористатися "/dev/urandom" як «пристроєм» вхідних даних. Приклад: "g.copy_device_to_device("/dev/urandom", "/dev/sda")". Код було змінено таким чином, щоб не можна було так робити.

Усі програмні інтерфейси для інспектування компакт-дисків із засобом для встановлення визнано застарілими. Для виконання цього завдання слід використовувати libosinfo.

  Зміни у збиранні
Для збирання libguestfs нової версії потрібен компілятор OCaml ≥ 4.01. Параметр "./configure --disable-ocaml" лишається працездатним, але використовується лише для вимикання прив'язок до мови OCaml.

Додано файл "RELEASES" зі списком дат усіх випусків libguestfs. Цей файл слід оновлювати під час кожного випуску.

Було вилучено документацію, яку створює "gtk-doc". Тепер використання "./configure --enable-gtk-doc" не має жодних наслідків.

Для функції XDR та rpcgen тепер використовується libtirpc. Зауважте, що для glibc вона вважається застарілою і у більшості дистрибутивів Linux ці залежності викинуто, тому для більшості користувачів ця залежність буде додатковою (Martin Kletzander).

Тепер для crypt(3) використовується libxcrypt. Ця бібліотека є обов'язковою, якщо використовується glibc ≥ 2.27.

"ocaml-hivex" is now required.

Тепер обов'язковою є libvirt ≥ 1.2.20.

Тепер для тестів, які слід запускати від імені користувача root, передбачено нову ціль, "make check-root" (аналогічно до "make check-slow").

Перевірка щодо часу "./configure" для "__attribute__((cleanup))" тепер працює і у випадку крос-компіляції (Yann E. Morin).

Файли "AUTHORS" і "p2v/about-authors.c" тепер створюються із одного джерела.

Можна використовувати і GnuPG v1, і v2.

Для визначення типового значення "LIBGUESTFS_PATH" може бути використано "./configure --with-guestfs-path". Крім того, трохи змінено спосіб, у який виконується пошук за шляхом, для того, щоб виконати пошук усіх типів базових систем у кожному з елементів шляху окремо (Pavel Butsykin).

Змінну "GUESTFSD_EXT_CMD", яка використовувалася для позначення зовнішніх команд у фоновій службі, вилучено. Її спочатку використовували для збирання у SUSE, але там тепер вона не використовується.

Виведені дані "./configure" тепер візуально групуються за заголовками, відповідними до виконуваної дії, що спрощує пошук потрібних даних (Pino Toscano).

Залежності OCaml тепер створюються з одного скрипту, замість декількох трохи різних фрагментів Makefile.

"./configure --with-distro=ідентифікатор" можна скористатися для перевизначення автоматичного визначення дистрибутива Linux під час збирання (Pino Toscano).

qemu ≥ 2.10 is supported (but not required). This adds mandatory locking to disks and libguestfs turns this off in certain circumstances when it is known to be safe (Lars Seipel, Peter Krempa, Daniel Berrangé, Pino Toscano, Fam Zheng, Yongkui Guo, Václav Kadlčík).

  Внутрішня частина роботи програми
Найвикористовуваніший код пересунуто до підкаталогу common/, а спільний код OCaml тепер зберігається у каталогах common/ml* (наприклад, common/visit і common/mlvisit містять бібліотеку visitor мовами C та OCaml, відповідно). Каталог mllib вилучено і замінено каталогом common/mltools.

Реалізовано невибагливу до ресурсів прив'язку OCaml для PCRE, див. common/mlpcre. Використання бібліотеки OCaml "Str" здебільшого замінено на PCRE.

Додано більше викликів до "udev_settle" для поліпшення стабільності коду поділу на розділи (Dawid Zamirski).

Реалізовано запуск "udev_settle" з параметром --exit-if-exists, який пришвидшує виконання команди (Pavel Butsykin).

Реалізовано виявлення нових місць зберігання major(3), minor(3), makedev(3).

Дії тепер може бути визнано застарілими без пропозицій щодо заміни для програмних інтерфейсів, подібних до "guestfs_wait_ready", які слід просто вилучити з коду клієнта.

Реалізовано використання обгортки "set_nonblocking_flag" gnulib замість виклику fcntl(2) з "O_NONBLOCK" (Eric Blake). Те саме для "set_cloexec_flag".

Усунено виток пам'яті у версії XFS "guestfs_vfs_minimum_size" (Pino Toscano).

Перевірки valgrind тепер працюють для виконуваного файла virt-p2v.

Тепер у коді і документації використовується одинарні лапки Unicode ("‘’") замість '' і `'. Те саме стосується "’s" замість "'s".

Функцію "is_zero" було реалізовано заново із суттєвим пришвидшенням (Eric Blake).

У модулі безпосередньої обробки вилучено підтримку virtio-blk. Тепер єдиним підтримуваним способом додавання дисків є virtio-scsi.

Рядковий параметр і повернуті типи засобу створення раціоналізовано так, щоб було лише два типи ("String", "StringList") з багатьма підтипами, наприклад "FileIn" став "String (FileIn, ...)".

Тепер можна використовувати формати образу диска базово системи, відмінні від простого (raw) (Pavel Butsykin).

Декілька поліпшень у автоматичному збиранні шаблонів Debian для virt-builder (Pino Toscano). Уможливлено послідовну консоль для цих шаблонів (Florian Klink).

У фоновій службі замість створення приватної копії lvm.conf і внесення змін до неї (наприклад для фільтрів) створюється порожній файл, оскільки LVM розуміє, що означає «усе типове» (Alasdair Kergon, Zdenek Kabelac).

Модуль "direct" тепер може запускати запити QMP щодо виконуваного файла QEMU, що розширює типи інформації, які можна виявляти. Крім того, код для надсилання запитів до QEMU зроблено стійкішим для обробки декількох паралельних запитів до різних версій QEMU.

Прив'язки Augeas до OCaml зібрано у common/mlaugeas. Згідно з довготерміновим планом їх має бути вилучено з метою використання загальносистемного ocaml-augeas, коли він стане широкодоступним у дистрибутивах (Pino Toscano).

Усі модулі OCaml (файли "*.ml") тепер повинні мати файл інтерфейсу ("*.mli"). Якщо ці модулі нічого не експортують, файл інтерфейсу буде порожнім, окрім коментарів.

У коді використовуються певні особливості OCaml ≥ 4.01, зокрема заміна «{ поле = поле }» на «{ поле }».

Інструмент virt-builder "make-template" тепер використовує параметр "virt-install --transient", отже, тепер немає потреби у чищенні залишків доменів після аварійного завершення роботи. Це також заощаджує запуски kickstart та virt-install, зміни щодо чого внесено до git із довідковою метою.

/dev/shm тепер створюється у базовій системі (Nicolas Hicher).

У докладному режимі на гостьових системах Fedora virt-customize тепер використовує "dnf --verbose", що дає змогу отримати докладніші діагностичні дані.

У класах введення і виведення virt-v2v тепер міститься метод "#precheck", який використовується для виконання перевірки середовища до того, як буде розпочато перетворення.

Virt-p2v уможливлює діагностику miniexpect. Дані виводяться до stderr (у virt-p2v).

Перевірки щодо вільного місця virt-v2v тепер є ліберальнішими, особливо для невеликих гостьових систем (Pino Toscano).

  Виправлені вади

https://bugzilla.redhat.com/1540535
    Example URI of "Convert from ESXi hypervisor over SSH to local libvirt" is incorrect in v2v man page

https://bugzilla.redhat.com/1539395
    Помилки сегментації virt-customize після оновлення до 1.37.35-3

https://bugzilla.redhat.com/1536765
    У прив'язках до Perl libguestfs можуть траплятися незначні витоки пам'яті, якщо станеться помилка

https://bugzilla.redhat.com/1536763
    У прив'язках libguestfs до Lua використовується strerror(), що не є безпечним щодо потоків виконання

https://bugzilla.redhat.com/1536603
    man page makes no mention of using '--' when trying to change exit on error behavior

https://bugzilla.redhat.com/1525241
    virt-df показує нулі для файлових систем із розміром блоку =512

https://bugzilla.redhat.com/1519204
    v2v should improve the result when convert a rhel7.4 guest with no available kernels found in the bootloader

https://bugzilla.redhat.com/1518517
    virt-v2v fails with "unsupported configuration: shared access for disk 'sdb' requires use of supported storage format"

https://bugzilla.redhat.com/1516094
    Mere presence of QEMU file locking options breaks NBD (Block protocol 'nbd' doesn't support the option 'locking')

https://bugzilla.redhat.com/1514756
    ./configure --disable-ocaml breaks building common/mlpcre which breaks building daemon

https://bugzilla.redhat.com/1513884
    [RFE]Should update some vddk info in v2v man page

https://bugzilla.redhat.com/1508874
    virt-v2v: warning: ova disk has an unknown VMware controller type (20)

https://bugzilla.redhat.com/1506572
    virt-v2v '-i ova' is not parsing the MAC address from the source OVF

https://bugzilla.redhat.com/1506511
    virt-builder fails to parse repo file if it has blank space after the repository identifier

https://bugzilla.redhat.com/1503958
    Failed to convert the rhel5 guest with kmod-xenpv installed from xen server by virt-v2v

https://bugzilla.redhat.com/1503497
    qemu-kvm fails to open qcow2 files in read-only mode with qemu-kvm 1.5.3

https://bugzilla.redhat.com/1500673
    Error info shows wrong sometimes when ssh to conversion server using non-root user with sudo on p2v client

https://bugzilla.redhat.com/1500537
    /dev/shm does not exist in the appliance environment

https://bugzilla.redhat.com/1497475
    guestfish cannot list commands from interactive mode

https://bugzilla.redhat.com/1493048
    Unbound constructor Hivex.OPEN_UNSAFE

https://bugzilla.redhat.com/1484957
    bump debian images to use single-partition layout

https://bugzilla.redhat.com/1482737
    virt-resize failed to expand swap partition for RHEL5.11 guest image with "parsing UUID failed"

https://bugzilla.redhat.com/1477623
    Running file API on a special chardev may hang forever

https://bugzilla.redhat.com/1476081
    inspect-os report error: could not parse integer in version number: V7Update2

https://bugzilla.redhat.com/1472719
    [RFE]Add warning in process of v2v converting guest which has pci passthrough device

https://bugzilla.redhat.com/1472208
    virt-v2v fails on opensuse 13.2 guest with error: statns: statns_stub: path must start with a / character

https://bugzilla.redhat.com/1469655
    Скрипти firstboot неправильно встановлюються у Fedora 26

https://bugzilla.redhat.com/1466563
    Libguestfs should pass copyonread flag through to the libvirt XML

https://bugzilla.redhat.com/1465665
    1.36.x build failure: gtkdocize fails using newer autotools due to missing GTK_DOC_CHECK in configure.ac

https://bugzilla.redhat.com/1460338
    guestfs_shutdown повисає, якщо основний процес встановлює обробники сигналів

https://bugzilla.redhat.com/1459979
    guestfs_add_domain_argv fails with readonly option when vdi/vhd disk is attached to libvirt domain

https://bugzilla.redhat.com/1451665
    RFE: Virt-v2v не здатна перетворювати гостьові системи із зашифрованими розділами

https://bugzilla.redhat.com/1450325
    Потрібна документація до формату адреси параметрів -a інструментів

https://bugzilla.redhat.com/1448739
    RFE: Support multicore decompression for OVA files using pigz and pxz

https://bugzilla.redhat.com/1447202
    Гостьова система Win 2016 описується як Win 10 після імпортування до RHEVM

https://bugzilla.redhat.com/1441197
    RFE: ability to convert VMware virtual machines via vmx

https://bugzilla.redhat.com/1438939
    Будь ласка, викиньте або оновіть залежність від GnuPG (1.4.x)

https://bugzilla.redhat.com/1438794
    [RFE] Install Windows virtio-rng drivers on VMs imported

https://bugzilla.redhat.com/1433937
    virt-inspector can't get icon info from altlinux-centaurus

https://bugzilla.redhat.com/1433577
    policycoreutils setfiles >= 2.6 does .. nothing

https://bugzilla.redhat.com/1431579
    Windows 8 UEFI from VMware to KVM fails to boot after conversion

https://bugzilla.redhat.com/1430680
    There is error info about "No such file or directory" when convert a guest from ova file by v2v

https://bugzilla.redhat.com/1430184
    virt-dib should generate sha256 checksum instead of sha512

https://bugzilla.redhat.com/1429506
    RFE: OVMF should be detected on conversion server to prevent failed conversion

https://bugzilla.redhat.com/1429491
    Should rename network name of rhv in virt-v2v man page

https://bugzilla.redhat.com/1427529
    virt-sysprep should remove DHCP_HOSTNAME

https://bugzilla.redhat.com/1417306
    QEMU image file locking (libguestfs)

https://bugzilla.redhat.com/1409024
    [Debian] Missing db_dump abort inspection

https://bugzilla.redhat.com/1406906
    Помилка сегментації при читанні пошкодженого шляху за допомогою прив'язок до Python 3

https://bugzilla.redhat.com/1379289
    RFE: virt-p2v має підтримувати мнемонічні операції

https://bugzilla.redhat.com/1378022
    There is virt-v2v warning about <listen type='none'> during converting a guest which has listen type='none' in XML

https://bugzilla.redhat.com/1376547
    qemu-system-s390x: -device isa-serial,chardev=charserial0,id=serial0: 'isa-serial' is not a valid device model name

https://bugzilla.redhat.com/1374232
    selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success"

https://bugzilla.redhat.com/1367738
    Missing bash completion scripts for: virt-diff guestunmount virt-copy-in virt-copy-out virt-customize virt-get-kernel virt-p2v-make-disk virt-p2v-make-kickstart virt-tar-in virt-tar-out virt-v2v-copy-to-local virt-win-reg

https://bugzilla.redhat.com/1362649
    RFE: virt-sysprep does not utilize libguestfs encryption support

https://bugzilla.redhat.com/1172425
    [RFE]virt-v2v failed to convert VMware ESX VM with snapshot

https://bugzilla.redhat.com/1171654
    Modify a file in virt-rescue with vi on some linux terminal such as yakuake, can lead to abnormal display in virt-rescue shell

https://bugzilla.redhat.com/1167623
    Remove "If reporting bugs, run virt-v2v with debugging enabled .." message when running virt-p2v

https://bugzilla.redhat.com/1152819
    Can not end a running command in virt-rescue by press ^C or other keys, the only way is to exit virt-rescue

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.36
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.34.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
Нові інструменти

Virt-tail — новий інструмент для стеження (за кінцем) файлів журналу у гостьовій системі, подібний до звичайної команди "tail -f".

Нові можливості у наявних інструментах

Virt-customize, virt-get-kernel, virt-sparsify і virt-sysprep тепер можуть працювати із зашифрованими гостьовими системами (Pino Toscano).

У virt-builder і virt-customize тепер передбачено підтримку --append-line, що корисно для додавання рядків наприкінці файлів налаштувань.

Virt-resize тепер може зменшувати і збільшувати розміри розділів резервної пам'яті (Pino Toscano).

Virt-resize тепер може виводити дані на нелокальні диски (Pino Toscano).

У virt-sysprep передбачено нову операцію із назвою "backup-files" для вилучення резервних копій редактора і "passwd-backups" для вилучення /etc/passwd- та подібних файлів.

Virt-dib тепер може створювати контрольні суми за допомогою нового параметра --checksum (Pino Toscano).

Virt-dib тепер може створювати файли tgz. Крім того, у виведеному файлі tar зберігаються розширені атрибути і мітки SELinux (Pino Toscano).

Virt-dib тепер може створювати файли squashfs (Pino Toscano).

Автоматичне доповнення за Tab у bash тепер доступне для усіх інструментів командного рядка, який постачається у пакунках.

virt-v2v і virt-p2v

Передбачено підтримку перетворень Debian (6+) і Ubuntu (10.04+) (Tomáš Golembiovský, Pino Toscano).

Перевірено перетворення з гіпервізору Xen SUSE (Cédric Bosdonnat).

Під час перетворення Windows тепер встановлюється програма "pnp_wait.exe", яка запобігає конфліктам між Керуванням Plug-and-Play Windows і нашими скриптами, які встановлюють драйвери пристроїв virtio. Вмикання цієї можливості потребує, щоб програму "pnp_wait.exe" було зібрано окремо (Roman Kagan).

Тепер можна перетворювати файли OVA, експортовані з AWS (Shahar Havivi).

Під час перетворення файлів OVA за певних обставин virt-v2v тепер може читати образи дисків безпосередньо з вхідного файла OVA, замість розпаковування файла OVA до тимчасового каталогу. Це може заощадити місце на диску і пришвидшити обробку (Tomáš Golembiovský).

Virt-p2v тепер можна зібрати на RHEL 5 (приблизно 2007 рік) Linux та RHEL 6, що означає, що 32-бітові системи та обладнання із давніми дисками fakeraid можна віртуалізувати. Виконувані файли virt-p2v, засновані на цих застарілих версіях RHEL, можна знайти на http://oirase.annexia.org/virt-p2v/

Virt-p2v тепер може використовувати nbdkit (сервер NBD) як альтернативу qemu-nbd. Крім того, virt-p2v тепер може використовувати «активацію сокетом», яка є стійкішим методом для відкриття сокета для очікування даних NBD. Активація за сокетом працює з qemu-nbd і nbdkit, але потребує найновіших версій цих компонентів.

Щоб запобігти перевищенню часу очікування під час перетворень P2V, virt-p2v успадковує параметри заощадження енергії від фізичної машини і також надсилає луна-пакети крізь з'єднання керування ssh та даних.

Virt-v2v більше не вилучає вузли "Processor" і "Intelppm" з реєстру Windows.

Перетворення Xen і vCenter тепер можна виконувати за допомогою модуля libvirt, якщо використовується libvirt ≥ 2.1.0.

Ігноруються пристрої /dev/srX (SCSI CD-ROM) (Tomáš Golembiovský).

Під час перетворення гостьових систем SUSE Linux реалізовано використання /etc/modprobe.conf.local, якщо такий файл існує.

Вилучення інструментів VMware з гостьових систем Linux тепер має працювати надійно (Pino Toscano).

Під час перетворення файлів OVA virt-v2v тепер перевіряє хеш образу диска, який міститься у файлі маніфесту, тоді як раніше цей хеш ігнорувався через помилку у коді. Крім того, тепер передбачено підтримку хешів SHA256 (Tomáš Golembiovský).

Під час перетворення файлів OVA, який містить стиснені образи дисків, тепер враховується атрибут "ovf:compression" з метаданих, замість безпосереднього аналізу образу диска (Tomáš Golembiovský).

Додано новий прапорець --vdsm-compat до режиму -o vdsm. За його допомогою можна створювати ефективніші образи qcow2.

Оскільки продукт RHEV [комерційно підтримувану версію oVirt] тепер перейменовано на RHV, «RHEV» було замінено на «RHV» у всьому інструментарії. Зокрема, -o rhev тепер стало -o rhv, хоча і стара назва використовується для забезпечення зворотної сумісності.

Програма "RHEV-APT" встановлюється тепер лише, якщо гіпервізором виведення даних є oVirt або RHV.

Має бути вирішено проблему із нестачею пам'яті для роботи virt-v2v при виконанні повторного встановлення міток SELinux у гостьовій файловій системі.

Прив’язки до мов програмування

Встановлення значення "EXTRA_JAVAC_FLAGS" до ./configure надає вам змогу додавати довільні прапорці до "javac" під час збирання прив'язок до Java.

Використання будь-якого програмного інтерфейсу libguestfs, який повертає окрему структуру, з прив'язок до Perl або Java призводило до витоку пам'яті. Тепер цю помилку виправлено. (Pino Toscano).

Перевірка

Інспектування гостьових систем Windows із помірно пошкодженими роями регістру Windows тепер спрацьовує, замість завершення з повідомленням про помилку. Для користування цією можливістю слід встановити hivex ≥ 1.3.14 (Dawid Zamirski).

Для пакунків Debian тепер передбачено можливість читати адресу, назву початкового пакунка, резюме і повний опис встановлених пакунків. Для гостьових систем на основі RPM можливе читання адреси, резюме та опису (Pino Toscano).

Інспектування гостьових операційних систем, де використовується окремий розділ /usr, тепер має працювати надійніше (Pino Toscano).

Під час обробки /etc/fstab гостьової системи шляхи згортаються до канонічної форми (наприклад, "///usr//local//" → "/usr/local").

Інспектування підтомів btrfs тепер працює там, де поле параметрів /etc/fstab містить коми.

Ігноруються пристрої /dev/cdN у /etc/fstab гостьової системи (Pino Toscano).

Архітектури і платформи

Тепер стабільні випуски тестуються на архітектурах aarch64, ppc64 та ppc64le.

Архітектура RISC-V тепер обробляється як гостьова, а libguestfs принаймні збирається на RISC-V (але, ймовірно, не працює, оскільки там немає придатного до користування qemu на час написання цього запису).

Реалізовано підтримку виявлення бінарних файлів і гостьових систем S/390 та S/390x.

Інше

Реалізовано підтримку файлових систем ExFAT (Miles Wolbe).

  Безпека
Див. також guestfs-security(1).

Протягом цього циклу розробки не було повідомлено про жодну вразливість захисту. Втім, було виконано певні роботи із удосконалення захисту, які описано нижче.

Назви тимчасових файлів тепер завжди створюються з використанням випадкових значень з /dev/urandom (раніше в одному випадку використовувалася функція C random(3)).

Реалізовано перевірку змінної середовища $TERM перед передаванням її до командного рядка ядра базової системи.

  API
Нові програмні інтерфейси

"guestfs_aug_transform"
    Надає доступ до програмного інтерфейсу Augeas "aug_transform" (Pino Toscano).

"guestfs_find_inode"
    Пошук файлів за номером inode (Matteo Cafasso).

"guestfs_inspect_get_windows_software_hive"
"guestfs_inspect_get_windows_system_hive"
    Повертає шлях до роїв Windows "HKLM\SYSTEM" та "HKLM\SOFTWARE", який було визначено під час інспектування.

"guestfs_mksquashfs"
    Створює файлову систему squashfs зі шляху (Pino Toscano).

Інші зміни у програмному інтерфейсі

"guestfs_add_domain"
    Цей виклик тепер коректно обробляє томи libvirt, засновані на файлах. Раніше такі томи ігнорувалися. Також реалізовано обробку дисків, які потребують розпізнавання за реєстраційними даними для відкриття їх у libvirt (Pino Toscano).

"guestfs_canonical_device_name"
    Цей виклик більше не помиляється при внесенні змін до назв пристроїв програмного RAID у Linux (зокрема /dev/mdX).

"guestfs_file_architecture"
    Раніше програмний інтерфейс "file_architecture" між повертати будь-який рядок, "i386" або "i486", для 32-бітових виконуваних файлів x86. Тепер він повертає лише "i386" (за документацією).

    Цей програмний інтерфейс тепер може повертати такі нові значення: "riscv32", "riscv64", "riscv128", "s390", "s390x".

"guestfs_hivex_open"
    Цей виклик тепер має необов'язковий прапорець "GUESTFS_HIVEX_OPEN_UNSAFE", який надає змогу відкривати деякі пошкоджені рої реєстру Windows. Для користування цією можливістю слід встановити hivex ≥ 1.3.14 (Dawid Zamirski).

"guestfs_list_partitions"
    Цей виклик тепер повертає програмні розділи RAID у Linux.

"guestfs_part_to_dev"
    Цей виклик тепер коректно обробляє назви розділів, які містять "p<N>" (Pino Toscano).

"guestfs_set_label"
    Цей виклик тепер може змінювати мітки розділів резервної пам'яті (Pino Toscano).

  Зміни у збиранні
libmagic, бібліотечна частина програми "file", тепер потрібна для збирання (раніше вона була необов'язковою).

Реалізовано підтримку GCC 7.

Тепер програми OCaml та прив'язки до Java використовують «мовчазні правила». Щоб переглянути рядок команди, яка виконується, додайте "V=1" до рядка команди make (Pino Toscano).

Повільне тестування ("make check-slow") тепер покриває: скрипти firstboot у гостьових системах Linux; перетворення v2v набору справжніх гостьових систем Linux; параметри virt-customize --hostname та --timezone; параметр --root-password; те, що послідовна консоль працює у гостьових системах virt-builder.

Великі автоматично створені файли з кодом мовою C, наприклад список команд у fish/cmds.c (та багато інших), поділено на менші файли для пришвидшення паралельного збирання.

"make maintainer-check-extra-dist" тепер перевіряє, чи усі створені файли було включено до архіву tar.

Тести тепер не припускають, що "." перебуває у @INC Perl, оскільки її скоро збираються вилучити (Pino Toscano).

Реалізовано підтримку основних систем Debian з UsrMerge (Pino Toscano).

Файли заголовків та структури C тепер можуть містити вбудовану документацію з використання спеціальних коментарів "/** ... */".

Підстановки "@VAR@" у "./run" тепер повністю екрануються лапками. Це потрібно для того, щоб (наприклад) команда "./configure PYTHON=/якийсь/шлях" працювала належним чином, якщо у "/якийсь/шлях" містяться символи, які слід екранувати (Hilko Bengen).

Реалізовано підтримку gperf ≥ 3.1.

Старі збірки Kraxel-я для edk2 тепер не можна використовувати для забезпечення підтримки UEFI. Код UEFI тепер повністю програмний, тому слід використовувати версії з комплекту вашого дистрибутива Linux.

Virt-p2v тепер можна зібрати на Linux RHEL 5 (випущено у 2007 році) з Gtk 2.10.

  Внутрішня частина роботи програми
Тепер модулі generator та mllib "Common_utils" використовуються спільно з одного файла початкового коду.

Значну частку загального коду було пересунуто до каталогу common у початковому коді. Тепер вона збирається лише одного разу. Мінібібліотеки, які містяться у цьому каталозі: common/edit, common/errnostring, common/miniexpect, common/options, common/parallel, common/progress, common/protocol, common/utils, common/visit, common/windows.

Каталог, у якому зберігається основний код бібліотеки пересунуто, src → lib.

Усі тести, які було написано мовою командної оболонки, тепер використовують спільний файл із допоміжними функціями (tests/test-functions.sh). Написано ще декілька нових допоміжних функцій, зокрема для пропускання певних перевірок. Крім того, ці скрипти тестування тепер можуть використовувати autoconf-подібні змінні шляхів, зокрема $abs_top_srcdir.

Шляхи UEFI тепер зберігаються у generator (generator/uefi.ml).

Спосіб, у який засіб створення обробляє дії і номери процедур, було суттєво змінено. Див. generator/actions_*.ml і generator/proc_nr.ml.

Тепер модуль gnulib "getprogname" використовується всюди, де потрібна назва програми чи виведення назви програми (Pino Toscano).

perl/Guestfs.c не придатний до перекладу (Nikos Skalkotos).

Шаблони virt-builder пересунуто з builder/website до builder/templates. Тепер є одна уніфікована програма, яка може зібрати будь-який шаблон.

Усі засоби роботи з реєстром Windows, які використовуються virt-customize і virt-v2v, було пересунуто до спільного модуля із назвою "Registry" у mllib.

Усі прив'язки POSIX було пересунуто до нового модуля з назвою "Unix_utils" у mllib.

У засобі інспектування, virt-customize та virt-v2v у декількох місцях усунено повторне визначення "%systemroot%", "CurrentControlSet" та шляхів до роїв "HKLM\SYSTEM" і "HKLM\SOFTWARE" у Windows. Усі ці дані визначаються один раз (під час інспектування) і передаються іншим інструментам за допомогою різноманітних програмних інтерфейсів "guestfs_inspect_get_windows_*".

"/dev/pts" тепер доступний у базовій системі, отже будь-які інструменти, які потребують для роботи pty, тепер працюватимуть (Pino Toscano).

Виправлено більшу частину попереджень OCaml.

Тепер існує єдина загальна функція для створення тимчасових файлів ("guestfs_int_make_temp_path") (Matteo Cafasso).

Реалізовано перевірку змінної середовища $TERM перед передаванням її до командного рядка ядра базової системи.

У базовій системі більше не створюються непотрібні пристрої USB та memballoon (Laine Stump).

На aarch64 для базової системи тепер використовується virtio-pci. Це дещо швидше за virtio-mmio.

Було мінімізовано використання srandom(3) і random(3). Зокрема, тимчасові назви файлів більше не створюються на основі даних, які повертає random(3), замість цього використовується /dev/urandom.

  Виправлені вади

https://bugzilla.redhat.com/1425306
    описка на сторінці підручника virt-tail

https://bugzilla.redhat.com/1418283
    virt-v2v: вичерпання пам'яті базовою системою під час виконання команди setfiles

https://bugzilla.redhat.com/1417549
    /usr/bin/x86_64-linux-gnu-ld.bfd.real: ../common/progress/.libs/libprogress.a(libprogress_la-progress.o): undefined reference to symbol 'UP@@NCURSES_TINFO_5.0.19991023'

https://bugzilla.redhat.com/1417444
    *** Немає правила для створення ../perl/lib/Sys/Guestfs.c, потрібне для libguestfs.pot

https://bugzilla.redhat.com/1416941
    не вдається зібрати 1.34.3 з gperf 3.1

https://bugzilla.redhat.com/1414682
    guestfs_canonical_device_name incorrectly returns /dev/sd0 for MD devices (/dev/md0)

https://bugzilla.redhat.com/1414510
    guestfs_list_filesystems не розпізнає розділи ddf

https://bugzilla.redhat.com/1409023
    [Debian] у базовій системі не встановлено ldmtool

https://bugzilla.redhat.com/1404287
    qemu-kvm cannot boot RHEL 7 kernel with TCG, hangs at "Probing EDD (edd=off to disable)..."

https://bugzilla.redhat.com/1404182
    RFE: virt-resize має підтримувати адресу як диск виведення

https://bugzilla.redhat.com/1401474
    Importing VMs from VMware is failing with error "Inspection field 'i_arch' was 'unknown'"

https://bugzilla.redhat.com/1401320
    RFE: дещо збільшити покриття virt-sysprep

https://bugzilla.redhat.com/1400205
    Додати прапорець --vdsm-compat=1.1 для VDSM

https://bugzilla.redhat.com/1398070
    описка на сторінці підручника

https://bugzilla.redhat.com/1392798
    не читаються реєстраційні дані з доменів libvirt

https://bugzilla.redhat.com/1390876
    дані щодо --machine-readable на сторінці підручника virt-v2v слід оновити

https://bugzilla.redhat.com/1379289
    RFE: virt-p2v має підтримувати мнемонічні операції

https://bugzilla.redhat.com/1378022
    There is virt-v2v warning about <listen type='none'> during converting a guest which has listen type='none' in XML

https://bugzilla.redhat.com/1377081
    на сторінці підручника virt-p2v слід оновити дані щодо діалогу

https://bugzilla.redhat.com/1375157
    virt-v2v: -i ova: заборонено доступ, якщо використовується libvirt і запуск відбувається від імені root

https://bugzilla.redhat.com/1374651
    Can't install qxl driver for display device in win7 guest after converting to glance by virt-v2v

https://bugzilla.redhat.com/1374405
    There is HTTP 404 error info when convert guest to glance by virt-v2v

https://bugzilla.redhat.com/1374232
    selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success"

https://bugzilla.redhat.com/1372668
    Стан процесу у гостьовій системі windows після перетворення з kvm на rhev за допомогою virt-v2v не є нормальним

https://bugzilla.redhat.com/1372269
    Засіб збирання не встановлює належним чином назву вузла для Debian 8 (Jessie)

https://bugzilla.redhat.com/1371843
    Поліпшення сумісності імпортування OVA

https://bugzilla.redhat.com/1370424
    virt-manager coredump when vm with gluster image exists

https://bugzilla.redhat.com/1367839
    Cannot import VMs from Xen and VMware when using RHEL7.3 host.

https://bugzilla.redhat.com/1367738
    Missing bash completion scripts for: virt-diff guestunmount virt-copy-in virt-copy-out virt-customize virt-get-kernel virt-p2v-make-disk virt-p2v-make-kickstart virt-tar-in virt-tar-out virt-v2v-copy-to-local virt-win-reg

https://bugzilla.redhat.com/1367615
    OVMF file which is built for rhel7.3 can't be used for virt-v2v uefi conversion

https://bugzilla.redhat.com/1366456
    Converting rhel7 host installed on RAID:warning: fstrim: fstrim: /sysroot/: the discard operation is not supported

https://bugzilla.redhat.com/1366049
    RFE: libvirt backend: support handling disks stored as volume name in a pool

https://bugzilla.redhat.com/1365005
    Назва гостьової системи є помилковою, якщо перетворення гостьової системи з образу диска виконується virt-v2v

https://bugzilla.redhat.com/1362649
    RFE: virt-sysprep does not utilize libguestfs encryption support

https://bugzilla.redhat.com/1354507
    virt-v2v conversions from vCenter do not consistently obey the proxy environment variables

https://bugzilla.redhat.com/1168144
    warning: fstrim: fstrim: /sysroot/: FITRIM ioctl failed: Operation not supported (ignored) when convert win2003 guest from xen server

https://bugzilla.redhat.com/1161019
    RFE: Only install RHEV-APT if virt-v2v -o rhev/-o vdsm option is used

https://bugzilla.redhat.com/1152369
    virt-v2v failed to convert RHEL 6.7 UEFI guest: no grub1/grub-legacy or grub2 configuration file was found

https://bugzilla.redhat.com/1141631
    [RFE] virt-v2v should support convert a guest to a dir-pool with using pool's uuid

https://bugzilla.redhat.com/1134878
    libvirt reports json "backing file" is missing

https://bugzilla.redhat.com/1019388
    Скрипти firstboot (virt-builder, virt-sysprep) не працюють у гостьових системах Debian 6 і 7

https://bugzilla.redhat.com/737600
    virt-v2v windows xp - machine dies BSOD - processr,sys - workaround provided

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.34
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.32.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
Декілька поліпшень швидкодії у libguestfs. Час «кешування угарячу» для запуску базової системи має бути меншим за 1 секунду, якщо встановлено новітні qemu та ядро. Також створено нові інструменти для точного тестування швидкодії libguestfs (utils/boot-benchmark та utils/boot-analysis у ієрархії початкового коду).

Програма virt-p2v для перетворення фізичних машин на віртуальні машини зазнала значного поліпшення. Це зокрема простіше розфарбоване виведення даних під час перетворень, підтримка Gtk 3, докладніші відомості щодо обладнання, реалізація клацання для ідентифікації інтерфейсів мережі, більше засобів діагностики, що включаються до ISO та багато виправлень вад.

Реалізовано підтримку f2fs (дружньої до флешок файлової системи) (Pino Toscano).

Нові інструменти

Реалізовано можливість скористатися virt-p2v-make-kiwi(1) для збирання образів ISO virt-p2v на основі SLES і openSUSE за допомогою інструментарію kiwi (Cédric Bosdonnat).

Нові можливості у наявних інструментах

Нова версія virt-resize зберігає GUID GPT. Ця версія є обов'язковою для роботи з Windows Server 2012 R2, де завантажувач не працюватиме, якщо змінюється GUID (Maxim Perevedentsev).

Нова версія virt-resize використовує розріджене копіювання для розширених розділів (у старому стилі MBR). Значно пришвидшує зміну розмірів гостьових систем, які використовують розширені розділи (Maxim Perevedentsev).

Реалізовано використання параметрів командного рядка ядра virt-p2v для встановлення типових значень у графічному засобі налаштовування.

Повністю вилучено параметри діагностики virt-p2v, що спростило інтерфейс і документацію. Діагностичні відомості тепер перехоплюються повністю автоматично.

virt-p2v-make-disk у новій версії надає вам змогу вказати параметр --arch, уможливлюючи збирання 32-бітової virt-p2v для сумісності із застарілими системами.

Для нової версії virt-p2v-make-disk більше немає потреби вказувати "версію-ОС" для диска virt-p2v. Якщо версію не вказано, програма намагатиметься вибрати відповідну "версію-ОС" за вашою основною системою.

До virt-p2v-make-disk і virt-p2v-make-kickstart додано новий параметр --install, за допомогою якого можна додавати довільні пакунки до образу ISO virt-p2v, для налаштовування, отримання додаткових інструментів діагностики тощо.

Нова версія virt-v2v вилучає Parallels Tools (або еквівалентні Virtuozzo Tools) з гостьових систем Linux. Також припинено завантаження драйверів Windows під час завантаження системи . (Roman Kagan і Pavel Butsykin)

Розширено можливості режиму virt-v2v --in-place так, щоб уможливити для функції виклику вибір, встановлювати чи ні певні драйвери virtio до гостьової системи (Roman Kagan).

Засоби перетворення virt-v2v гостьових систем Windows значно переписано і спрощено (Roman Kagan).

У новій версії режиму virt-v2v --in-place передбачено підтримку встановлення драйверів virtio-scsi до гостьової системи (Roman Kagan).

Нова версія virt-v2v може перетворювати гостьові системи SUSE та гостьові системи SUSE з використанням UEFI (Cédric Bosdonnat і Jim Fehlig).

Нова версія virt-v2v може перетворювати гостьові системи Glance із декількома дисками. Раніше програма показувала повідомлення про помилку для таких гостьових систем.

Параметри virt-v2v --no-trim і --vmtype тепер не призводять до виконання будь-яких дій. Програма показує попередження і просто ігнорує параметри. Нова версія virt-v2v може створювати vmtype OVF правильно без втручання користувача.

Нову версію virt-v2v можна тестувати у Xen SUSE як початковому гіпервізорі (Cédric Bosdonnat).

У virt-v2v додано підтримку драйверів VMDP SUSE (Cédric Bosdonnat).

Нова версія virt-v2v може перетворювати файли OVA, які містять підтеки, які створено за допомогою SUSE Studio (Cédric Bosdonnat).

Нова версія virt-v2v правильно встановлює елемент OVF "<Origin>". Можливості oVirt розширено з метою підтримки ширшого спектра гіпервізорів (Shahar Havivi).

У новій версії virt-v2v передбачено підтримку Windows Server 2016 (Tomáš Golembiovský).

Параметром virt-builder --list тепер можна скористатися для перегляду усіх шаблонів або окремого шаблона (Pino Toscano).

В усіх заснованих на OCaml інструментах тепер використовується getopt_long(3) для обробки параметрів. Поліпшено виведення --help (Pino Toscano).

За допомогою параметра --selinux-relabel virt-builder і virt-customize у новій версії можна повністю повторно встановити мітки для усієї гостьової файлової системи під час збирання без потреби у довгому автоматичному повторному встановленні міток під час першого завантаження.

virt-customize --delete у новій версії може обробляти символи-замінники.

За допомогою нового параметра virt-customize --uninstall ви зможете вилучати пакунки.

Нова версія virt-customize може використовувати "pvvxsvc" як альтернативу до "rhsrvany" для запуску скриптів firstboot у гостьових системах Windows (Cédric Bosdonnat).

virt-customize тепер використовує найстійкішу схему хешування паролів у Arch та Void Linux (Pino Toscano).

virt-customize --install тепер працює належним чином у Arch (Pino Toscano).

virt-inspector має нові параметри --no-applications і --no-icon для запобігання включенню списку програм та піктограм до виведених даних XML (Pino Toscano).

Додано новий параметр virt-sysprep --network, за допомогою якого ви можете насправді скористатися параметрами --install та іншими, які були у virt-sysprep і раніше, але не працювали. Зауважте, що типово мережу все ще вимкнено.

Дія virt-sysprep "fs-uuids" більше не завершує роботу помилкою для гостьових систем btrfs (Maxim Perevedentsev).

virt-dib тепер може виводити образи для Docker (Pino Toscano).

У virt-dib реалізовано новий параметр --drive-format, за допомогою якого можна вказати формат допоміжного диска (Pino Toscano).

Усі засоби віртуалізації OCaml тепер мають параметр --colors/--colours, який вмикає розфарбовування виведених даних (за допомогою екранованих послідовностей ANSI), навіть якщо виведення відбувається не до tty. Типовою поведінкою є перевірка, чи виводяться дані до tty, і вимикання розфарбовування даних, якщо ні. Це надає змогу передавати розфарбовані виведені дані для обробки іншим програмам.

Прив’язки до мов програмування

Удосконалено покриття тестами PHP (Pino Toscano).

Реалізовано підтримку PHP 7 (Pino Toscano).

Прив'язки Python тепер сумісні з PEP 8 (Pino Toscano).

Пакунок pip Python доступний з http://libguestfs.org/download/python/

Прив'язки до Ruby тепер виводять текст виключення повністю, якщо такий видано зворотним викликом події. Зауважте, що це не зовсім коректна поведінка, оскільки зворотні виклики подій не повинні видавати виключення, але це допомагає у діагностиці.

Усі бібліотеки і програми OCaml тепер збираються з прапорцем -safe-string, якщо його підтримку передбачено у компіляторі OCaml.

Перевірка

Тепер можна інспектувати Alpine Linux з використанням busybox. Крім того, у virt-customize передбачено підтримку засобу керування пакунками APK (Pino Toscano).

Реалізовано інспектування Mageia 4 (Pino Toscano).

Повністю реалізовано підтримку Void Linux та засобу керування пакунками pbs з Void Linux xbps (Pino Toscano).

Удосконалено обробку даних щодо версії CoreOS (Pino Toscano).

Уможливлено отримання піктограми з ALT Linux (Pino Toscano).

Тепер розпізнаються версії PLD Linux < 3 (Pino Toscano).

Реалізовано повернення літер дисків Windows для гостьових систем з використанням розділів GPT (Dawid Zamirski).

Реалізовано правильне інспектування гостьових систем Unix, у яких немає файла /etc/fstab (Pino Toscano).

Додано нове джерело піктограми Ubuntu, яке не покладається на встановлення GNOME у гостьовій системі.

Реалізовано отримання піктограми для 64-бітових гостьових систем Windows 7.

Переписано код інтеграції libosinfo так, щоб можна було працювати із новим форматом бази даних від osinfo (Pino Toscano).

Документація

Нова сторінка підручника, guestfs-building(1), де наведено настанови щодо того, як зібрати libguestfs з початкових кодів.

Сторінки підручника, засоби та виведення параметра --help тепер автоматично перевіряються так, щоб забезпечити повне документування, включення належних розділів попередження та додавання до кожної сторінки розділу опису.

Оновлено сторінку підручника guestfs-testing(1); тепер дані на ній відповідають новішій libguestfs.

Архітектури і платформи

virt-customize тепер працює на платформах POWER7 і POWER8, у обох варіантах, із прямим та зворотним порядком байтів (Xianghua Chen і Hu Zhang).

  Безпека
Див. також guestfs-security(1).

CVE-2015-8869

https://bugzilla.redhat.com/CVE-2015-8869

Ця вразливість у OCaml може стосуватися усіх інструментів віртуалізації, які написано мовою програмування OCaml. Вона стосується лише 64-бітових платформ. Оскільки ця вада стосується створення коду, важко визначити точний перелік вражених програм, тому рекомендують повторно зібрати libguestfs за допомогою версії компілятора OCaml, де цю ваду виправлено (або попросити розробників вашого дистрибутива Linux зробити це для вас).

Права власності virt-customize на .ssh, .ssh/authorized_keys

https://bugzilla.redhat.com/1337561

Раніше, коли virt-customize вставляла ключ SSH до гостьової системи, створюючи у каталозі ~/.ssh файл ~/.ssh/authorized_keys (якщо їх ще не було), вона надавала їм права власності "root.root". Цю помилку було виправлено. Тепер використовується правильні значення користувача і групи. Ми думаємо, що цією вразливість було неможливо скористатися.

Windows "%systemroot%"

Код засобу інспектування було зроблено стійкішим до гостьових систем, де міг використовуватися дуже довгий "%systemroot%" (успадкований від керованого гостьовою системою реєстру Windows). Ми вважаємо, що цією вразливістю неможливо скористатися.

У базовій системі тепер доступною є програма Virtio-rng

virtio-rng (віртуальний пристрій-генератор випадкових чисел) тепер передається до базової системи, що має поліпшити якість псевдовипадкових чисел, які використовуються для GUID та створення криптографічних ключів.

  API
Нові програмні інтерфейси

"btrfs_filesystem_show"
    Реалізовано показу усіх пристроїв, на які поширюється файлова система btrfs (Pino Toscano).

"download_blocks"
"download_inode"
"filesystem_walk"
    Отримує блоки даних файлової системи для вказаного розділу. Отримує довільні файли за номером inode. Отримує усі файли з файлової системи, включно із вилученими.

    Зауважте, що ці зміни потребують встановлення додаткової залежності, The Sleuth Kit. (Matteo Cafasso)

"get_sockdir"
    Реалізовано читання шляху, де зберігаються тимчасові сокети (Pino Toscano).

"mountable_device"
"mountable_subvolume"
    Реалізовано поділ адреси змонтованого пристрою на назву пристрою і підтом (Cédric Bosdonnat).

"ntfscat_i"
    Реалізовано отримання файлів NTFS за номером inode (Matteo Cafasso).

"part_expand_gpt"
    Уможливлює розширення розділів GPT на місці з пересуванням другої (резервної) таблиці розділів у напрямку кінця диска (Maxim Perevedentsev).

"part_get_disk_guid"
"part_set_disk_guid"
"part_set_disk_guid_random"
    Отримує і встановлює GUID диска GPT або встановлює для них свіже випадкове значення (Maxim Perevedentsev).

"selinux_relabel"
    Виконує оновлення міток SELinux для частини гостьової файлової системи або для усієї гостьової файлової системи.

Інші зміни у програмному інтерфейсі

"guestfs_set_selinux", "guestfs_get_selinux", "guestfs_setcon", "guestfs_getcon" і "guestfs_llz" тепер вважаються застарілими. Скористайтеся новим програмним інтерфейсом "guestfs_selinux_relabel" для повторного встановлення міток у файлових системах. Скористайтеся "guestfs_lgetxattrs", щоб отримати список розширених атрибутів "security.selinux" наявних файлів.

"guestfs_vfs_minimum_size" тепер можна використовувати для файлових систем у проміжних станах (Maxim Perevedentsev).

"guestfs_ll" тепер працює для шляхів, які містять абсолютні символічні посилання (Pino Toscano).

"guestfs_glob_expand" тепер має необов'язковий булевий параметр "directoryslash", який керує тим, чи повертатимуться кінцеві похилі риски у назвах каталогів (Pino Toscano).

"guestfs_lvs" більше не повертає логічні томи, для яких встановлено прапорець "activationskip". Причиною є те, що такі логічні томи не мають вузла пристрою "/dev/VG/LV", отже, код, який читає список логічних томів, а потім зондує самі пристрої, негайно повертає помилку. Ви можете скористатися "guestfs_lvs_full", якщо хочете прочитати усі логічні томи (Pino Toscano).

"guestfs_list_disk_labels" більше не повертає повідомлення про помилку, якщо не було додано жодного диска із мітками. Замість цього, буде повернуто порожній список (Pino Toscano).

"guestfs_is_lv" більше не повертає повідомлення про помилку, якщо передано підтом btrfs. Замість цього буде повернуто false (Maxim Perevedentsev).

  Зміни у збиранні
Потрібен qemu ≥ 1.3.0.

Для збирання libguestfs потрібна yajl (бібліотека для обробки коду JSON).

Тепер можливе збирання за допомогою GCC 6.

"make check-valgrind" тепер має суттєво ліпше покриття.

"make check-slow" тепер знову є працездатним.

Скористайтеся "make -C appliance clean-supermin-appliance" щоб спорожнити базову систему supermin (її буде перезібрано під час наступного "make").

Реалізовано спектр нових правил для запуску virt-p2v з каталогу початкового коду: "make -C p2v run-virt-p2v-directly" | "run-virt-p2v-in-a-vm" | "run-virt-p2v-non-gui-conversion". Документацію щодо цього можна знайти на сторінці guestfs-hacking(1).

virt-p2v може бути зібрано з використанням Gtk 2 або Gtk 3. Щоб примусово вказати версію Gtk, скористайтеся "./configure --with-gtk=2|3"

Параметри "./configure" тепер здебільшого документовано на сторінці guestfs-building(1).

  Внутрішня частина роботи програми
У git версії тепер позначаються "v1.XX.YY" (раніше вони позначалися "1.XX.YY"). Використання префікса "v-" є поширенішим для сховищ git.

Якщо використовується модуль обробки libvirt, тепер програма очікує на коректне завершення роботи qemu, замість того, щоб примусово завершувати роботу за 15 секунд. Це має допомогти у записі на повільні пристрої (особливо, дешеві флешки USB).

До повідомлень про помилки від libvirt тепер додається поле "err->int1", у якому, зазвичай, міститься "errno".

На ARM вилучено увесь код DTB (ієрархії пристроїв). qemu створює належну ієрархію на льоту, нам не потрібно вказувати її власноруч.

У тестах програмного інтерфейсу C тепер використовуються більші тестові диски, що надає змогу належно перевірити BTRFS (Pino Toscano).

Тести тепер мають належним чином працювати у основній системі, де встановлено лише Python 3 (Pino Toscano).

У прив'язках до C реалізовано однорідне (майже) іменування "guestfs_int_*". Раніше не було якоїсь спільної схеми визначення назв.

Застарілі функції "safe_malloc" та інші тепер не експортуються бібліотекою і не використовуються у прив'язках до мов програмування.

Встановлення для TMPDIR шляху, довшого за ~ 100 символів, більше не спричиняє аварійного випадкового завершення libguestfs без повідомлень під час створення сокетів доменів Unix (Pino Toscano).

Тепер у фоновій службі можна використовувати макрос "COMPILE_REGEXP".

Під час трасування тепер повністю виводяться результати, які містять структури (Pino Toscano).

До модуля Perl "Sys::Guestfs" більше не вбудовується програмний інтерфейс збільшення номера версії. Тепер цей модуль завжди має фіктивну версію 1.0. Щоб визначити справжню версію libguestfs з Perl, вам слід викликати "$g->version".

Увесь код було зібрано з "-Wstack-usage=10000", внесено багато змін для вилучення розміщень у стеку великих рядків та буферів.

Тепер усюди використовується функція error(3), якою замінено більшість колишніх вживань perror(3) + exit(3) та fprintf(3) + exit.

У коді C коментарі "/**" перетворено на документацію, яка автоматично додається до сторінки підручника guestfs-hacking(1).

Було додано безпечну функцію getumask. У свіжих ядрах Linux ця функція використовує нещодавно додане поле "Umask" у /proc/self/status. У давніших Linux та інших системах Unix ця функція використовує безпечну щодо потоків методику з використанням fork(2) (подяки: Josh Stone, Jiri Jaburek, Eric Blake).

Було додано безпечні обгортки posix_fadvise(2), також у код додано більше орієнтирів, які можуть трошки поліпшити швидкодію.

Додано безпечну обгортку до waitpid(2), яка належним чином обробляє властивість "INTR".

"podwrapper.pl" (використовується для створення сторінок підручника) тепер припиняє роботу, якщо знайдено будь-яку помилку у POD. Новий скрипт із назвою "podcheck.pl" виконує перехресну перевірку даних, виведених --help, параметрів засобів та сторінок підручника.

Усі номери версій у бібліотеці (наприклад, версії qemu, версії libvirt, версії гостьових операційних систем) уніфіковано у єдиному файлі src/version.c (Pino Toscano).

У гостьових системах Windows virt-customize використовуватиме нейтральний щодо постачальника шлях "C:\Program Files\Guestfs\Firstboot" для зберігання скриптів першого завантаження. Раніше використовувався "C:\Program Files\Red Hat\Firstboot". Ця зміна має бути непомітною для самих скриптів. (Cédric Bosdonnat)

У гостьових системах Linux служби першого завантаження, створені virt-builder --firstboot тощо, було перейменовано на "guestfs-firstboot" (Pino Toscano).

Тепер існує загальна функція "debug", яка використовується усіма засобами OCaml і замінює собою попередній код, який виконував "if verbose () then printf ...".

virt-p2v копіює файли, які їй потрібні на сервер перетворення virt-v2v за допомогою scp(1), замість спроб надсилати їх через сеанс оболонки. Це має поліпшити стійкість процесу і має бути повністю прозорим для кінцевого користувача.

Увесь код у mllib тепер збирається до єдиної бібліотеки "mllib.cma" або "mllib.cmxa". Увесь код у customize тепер збирається до єдиної бібліотеки "customize.cma" або "customize.cmxa". Це спрощує збирання засобів OCaml.

Тепер у базовій системі використовується lvmetad(8), якщо доступна (Pino Toscano).

Використовуються «мовчазні правила» для OCaml, Java, Erlang і POD. Скористайтеся "make V=1", щоб знову побачити рядки команд повністю (Pino Toscano).

  Виправлені вади

https://bugzilla.redhat.com/1364347
    virt-sparsify --in-place failed with UEFI system

https://bugzilla.redhat.com/1362357
    run_command runs exit handlers when execve fails (e.g. due to missing executable)

https://bugzilla.redhat.com/1362354
    virt-dib failed to create image using DIB_YUM_REPO_CONF

https://bugzilla.redhat.com/1359652
    Fail to inspect Windows ISO file

https://bugzilla.redhat.com/1358142
    Some info will show when convert guest to libvirt by virt-v2v with parameter --quiet

https://bugzilla.redhat.com/1354335
    overlay of disk images does not specify the format of the backing file

https://bugzilla.redhat.com/1352761
    Virt-manager can't show OS icons of win7/win8/ubuntu guest.

https://bugzilla.redhat.com/1350363
    Improve error info "remote server timeout unexpectedly waiting for password prompt" when connect to a bogus server at p2v client

https://bugzilla.redhat.com/1348900
    virt-p2v should update error prompt when 'Test connection' with a non-existing user in conversion server

https://bugzilla.redhat.com/1345813
    virt-sysprep --install always failed to install the packages specified

https://bugzilla.redhat.com/1345809
    virt-customize --truncate-recursive should give an error message when specifying a no-existing path

https://bugzilla.redhat.com/1343423
    [RFE]Should give a better description about 'curl error 22' when failed using ssh identity http url at p2v client

https://bugzilla.redhat.com/1343414
    Failed SSH to conversion server by ssh identity http url at p2v client

https://bugzilla.redhat.com/1343375
    [RFE] uninstall packages inside the VM

https://bugzilla.redhat.com/1342447
    Ifconfig command is not supported on p2v client

https://bugzilla.redhat.com/1342398
    Convert a guest from RHEL by virt-v2v but its origin info shows RHEV at rhevm

https://bugzilla.redhat.com/1342337
    Should remind a warning about disk image has a partition when using virt-p2v-make-disk

https://bugzilla.redhat.com/1341984
    virt-get-kernel prompts an 'invalid value' error when using --format auto

https://bugzilla.redhat.com/1341564
    virt-p2v spinner should be hidden when it stops spinning

https://bugzilla.redhat.com/1340809
    Testing connection timeout when input regular user of conversion server with checked "use sudo......"button

https://bugzilla.redhat.com/1340464
    [RFE] Suggestion give user a reminder for "Cancel conversion" button

https://bugzilla.redhat.com/1340407
    Multiple network ports will not be aligned at p2v client

https://bugzilla.redhat.com/1338083
    Update UEFI whitelist for official fedora packages

https://bugzilla.redhat.com/1337561
    virt-customize --ssh-inject не застосовує належних прав доступу до файлів

https://bugzilla.redhat.com/1335671
    extra quotes around UUID confuses findfs in RHEL (but not in Fedora)

https://bugzilla.redhat.com/1332025
    Inspection does not parse /etc/redhat-release containing "Derived from Red Hat Enterprise Linux 7.1 (Source)"

https://bugzilla.redhat.com/1327488
    RFE: Allow p2v kernel options without p2v.server to set defaults

https://bugzilla.redhat.com/1325825
    virt-v2v should prevent using multiple '-b' and '-n' option appears on the command line

https://bugzilla.redhat.com/1321620
    libguestfs: error: could not parse integer in version number: 7"

https://bugzilla.redhat.com/1321338
    [1.33.16] Compilation Error: Unbound value List.sort_uniq in v2v.ml line 988, characters 10-24:

https://bugzilla.redhat.com/1317843
    `virt-builder --update` fails with: "dnf -y --best upgrade: command exited with an error"

https://bugzilla.redhat.com/1316479
    v2v cmd cannot exit and "block I/O error in device 'appliance': No space left on device (28)" is printed when specified "-v -x"

https://bugzilla.redhat.com/1316041
    virt-rescue fails, but missing error message

https://bugzilla.redhat.com/1314244
    RFE: virt-p2v log window should process colour escapes and backspaces

https://bugzilla.redhat.com/1312254
    virt-v2v -o libvirt doesn't preserve or use correct <graphics type="vnc|spice">

https://bugzilla.redhat.com/1309706
    error: internal error: Invalid floppy device name: hdb

https://bugzilla.redhat.com/1309619
    Wrong warning info "use standard VGA" shows when converting windows > 7 by virt-v2v

https://bugzilla.redhat.com/1309580
    OS name of win8.1 x64 guest shows incorrect in rhevm3.6 general info

https://bugzilla.redhat.com/1308769
    virt-v2v does not copy additional disks to Glance

https://bugzilla.redhat.com/1306666
    Failure when disk contains an LV with activationskip=y

https://bugzilla.redhat.com/1296606
    virt-v2v doesn't remove VirtualBox additions correctly because of file quoting

https://bugzilla.redhat.com/1293527
    There should be a reminder to avoid user to edit a guest image by multiple tools at the same time in guestfish man page

https://bugzilla.redhat.com/1293276
    guestfish can not ll a symbolic link dir or edit a file in it

https://bugzilla.redhat.com/1278878
    guestfish should be able to handle LVM thin layouts

https://bugzilla.redhat.com/1264835
    ppc64le: virt-customize --install fail to detect the guest arch

https://bugzilla.redhat.com/1264332
    Test that trimming in virt-v2v doesn't regress

https://bugzilla.redhat.com/1232192
    Virt-v2v gives an error on a blank disk: part_get_parttype: unknown signature, of the output: BYT;

https://bugzilla.redhat.com/1229386
    virt-p2v in non-GUI mode doesn't show any conversion progress or status

https://bugzilla.redhat.com/1227599
    P2V invalid password prints unexpected end of file waiting for command prompt.

https://bugzilla.redhat.com/1224795
    On Ubuntu, virt-builder --install and --update cannot use the network

https://bugzilla.redhat.com/1213324
    virt-v2v: warning: unknown guest operating system: windows windows 6.3 when converting win8,win8.1,win2012,win2012R2,win10 to rhev

https://bugzilla.redhat.com/1203898
    Support inspecting docker images without /etc/fstab

https://bugzilla.redhat.com/1186935
    libguestfs cannot inspect recent Fedora / RHEL >= 7 when /usr is a separate partition

https://bugzilla.redhat.com/1167916
    P2V: invalid conversion server prints unexpected end of file waiting for password prompt.

https://bugzilla.redhat.com/1152825
    virt-rescue --selinux can not work well, when enable selinux in the command line the value of 'getenforce' is still Disabled in virt-rescue appliance

https://bugzilla.redhat.com/1150298
    ARM 32 bit on Ubuntu: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

https://bugzilla.redhat.com/1089100
    NetworkManager avc unlink denied for resolv.conf after using --selinux-relabel

https://bugzilla.redhat.com/983969
    RFE: virt-sysprep має враховувати роботу SELinux

https://bugzilla.redhat.com/855058
    RFE: virt-p2v: display more information about storage devices

https://bugzilla.redhat.com/554829
    SELinux handling could be done better.

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.32
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.30.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
Нові інструменти

Новий засіб virt-v2v-copy-to-local(1), який є допоміжним для virt-v2v(1), надає вам змогу перетворювати початкові гостьові системи, до яких virt-v2v не може отримати безпосередній доступ.

Нові можливості у наявних інструментах

Virt-customize тепер знає, як записати породжувач випадковості до CirrOS (Pino Toscano).

У Fedora virt-customize запускає dnf(8) з прапорцем --best, забезпечуючи те, що програма завжди оновлює систему до найсвіжіших доступних пакунків.

Virt-builder тепер містить 32-бітові шаблони для Fedora.

Параметр virt-builder і virt-customize --install тепер працює у 32-бітових гостьових системах Fedora. Раніше його використання призводило до спроби встановити 64-бітові пакунки (Jan Sedlák).

Virt-builder тепер може отримувати образи для хмар за допомогою метаданих Simple Streams v1.0 (Pino Toscano).

Virt-builder тепер може отримувати хмарні образи openSUSE без додаткових налаштовувань (Cédric Bosdonnat).

Virt-customize тепер використовує стійкіше типове шифрування паролів (SHA-512) у openSUSE ≥ 11 (Pino Toscano).

Virt-builder тепер правильно обробляє вихідні назви файлів, що містять символи двокрапок (":"), і створює тимчасові файли у каталогу кешу libguestfs безпосередньо, замість типового /tmp (Pino Toscano).

Virt-resize має новий параметр --unknown-filesystems для керування тим, що робити, якщо програму попросять змінити розмір файлової системи, спосіб зміни якої libguestfs не є відомим.

Virt-v2v тепер має прапорець або режим --in-place, який уможливлює перетворення на місці гостьових систем (Roman Kagan).

Virt-v2v має параметр --compressed для створення стиснених файлів виведення qcow2.

Virt-v2v тепер може правильно отримувати шлях до датацентру VMware (dcPath) від libvirt, замість визначення його за допомогою алгоритму, який іноді визначає помилкову відповідь (Matthias Bolte, Tingting Zheng).

Virt-v2v тепер правильно обробляє розміри оперативної пам'яті для 64-бітових гостьових систем, якщо програму запущено у 32-бітовій основній системі.

Прив’язки до мов програмування

У програмах мовами Perl і Python програмний інтерфейс "get_program_name" тепер повертає справжню назву програми, а не помилковий рядок "perl" або "python".

Прив'язки до Python тепер можна зібрати для іншої версії libguestfs, що уможливлює збирання модуля pip для будь-якої версії libguestfs (замість строгої вимоги щодо однакових версій модуля pip і libguestfs).

Поліпшено якість документації Ruby rdoc (Pino Toscano).

У скриптах Perl більше немає рядка із жорсткою прив'язкою до розташування інтерпретатора perl, замість цього використовується env(1) (Pino Toscano).

У програмах мовою OCaml дескриптор guestfs помилково вказував на загальну кореневу файлову систему, тобто його ніколи не можна було обробити засобом збирання сміття. Якщо ви не викликали функцію "close" явним чином, дескриптор не закривався, аж доки не завершувала роботу уся програма. Тепер цю помилку виправлено, отже дескриптори можуть прибиратися засобом збирання сміття у звичний спосіб. Це призвело до зміни програмного інтерфейсу функції OCaml "Guestfs.event_callback". Зауважте, що прив'язки до мов, відмінних від C, не мають гарантій щодо незмінності програмного інтерфейсу та бінарної сумісності, хоча ми і намагаємося не змінювати їх, але у цьому випадку зміна була важливою, оскільки надала змогу виправити дуже серйозну ваду.

Перевірка

Тепер розпізнаються Alpine Linux та засіб керування пакунками APK, ALT Linux, Frugalware та PLD Linux (Pino Toscano).

Якщо існує /etc/os-release дані з нього матимуть пріоритет над безпосереднім інспектуванням гостьових систем Linux (Pino Toscano).

Тепер повертається правильна версія ядра для гостьових систем Windows ≥ 10.

Документація

Велику сторінку підручника з guestfs(3) поділено на декілька окремих сторінок підручника: guestfs-hacking(1) guestfs-internals(1) guestfs-security(1). Ця документація міститься у новому каталозі docs ієрархії коду.

Архітектури і платформи

У новій версії libguestfs передбачено підтримку 64-бітовий платформ ARM з vGICv3.

  Безпека
Див. також guestfs-security(1).

"CVE-2015-5745"
    https://bugzilla.redhat.com/1251157

    Це не вразливість у libguestfs, але оскільки ми завжди надаємо порт virtio-serial для кожної гостьової системи (оскільки так здійснюється обмін даними між гостьовою і основною системами), можливе проникнення з базової системи до процесу qemu основної системи. Це може стосуватися таких випадків:

    •   ваша програма libguestfs запускає ненадійні програми з гостьової системи (за допомогою "guestfs_sh" тощо) або

    •   у коді файлових систем ядра буде виявлено іншу властивість (наприклад), яка надає змогу відповідним чином створеній файловій системі захопити контроль над базовою системою.

    Якщо ви використовуєте sVirt для обмеження qemu, це може запобігти деяким нападам.

Права доступу virt-customize до .ssh, .ssh/authorized_keys
    https://bugzilla.redhat.com/1260778.

    Раніше, якщо надходила команда щодо вставляння ключа SSH до гостьової системи, virt-customize (а отже, virt-builder) створювала каталог .ssh і файл .ssh/authorized_keys із надто широким доступом, що надавало стороннім користувачам доступ до читання цих даних. Тепер цей каталог і файл створюються з правами доступу 0700 і 0600, відповідно, що збігається із правилами, які використовує програма ssh-copy-id(1).

  API
Нові програмні інтерфейси

"guestfs_get_identifier"
"guestfs_set_identifier"
    Отримати або встановити окремий для обробника ідентифікатор. Основним ефектом цього є зміна виведення trace з такого:

     libguestfs: trace: foo

    на таке:

     libguestfs: trace: ID: foo

    що спрощує стеження за трасуванням у багатопотокових програма або там, де програма використовує декілька дескрипторів (особливо virt-v2v).

"guestfs_vfs_minimum_size"
    Повертає мінімальний розмір файлової системи (після стискання). Передбачено підтримку ext2/3/4, XFS і btrfs, у майбутньому можлива підтримка інших файлових систем (Maxim Perevedentsev).

Інші зміни у програмному інтерфейсі

"guestfs_disk_create": додано "preallocation" = "off"/"metadata"/"full".
    Для raw це уможливлює "off" як синонім "sparse" (робить сумісним із qcow2). Для qcow2 це уможливлює "sparse" як синонім "off".

    Це також додає "full", який відповідає повному розміщенню, але використовує posix_fallocate(3) для забезпечення ефективності.

"guestfs_tar_in": нові параметри "xattrs", "selinux", "acl".
"guestfs_tar_out": нові параметри "xattrs", "selinux", "acl".
    Ці додаткові параметри керують тим, чи буде відновлено розширені атрибути, контексти SELinux і/або ACL POSIX з /, збережених у архівах tar.

"guestfs_add_drive"
    Наявними параметрами "username" і "secret" можна скористатися для надання підтримки розпізнавання для iSCSI (Pino Toscano).

  Зміни у збиранні
Вилучено параметр "./configure --enable-valgrind-daemon".

Тепер libguestfs не можна зібрати на дистрибутивах ери RHEL 5 (близько 2007 року). Див. гілку "oldlinux", якщо вам потрібна (обмежена) підтримка RHEL 5.

Virt-p2v тепер можна зібрати на дистрибутивах Linux ери RHEL 6 (близько 2010 року).

Тепер для збирання з git потрібен OCaml ≥ 3.11 (випущено у 2008 році).

Для збирання прив'язок до Perl тепер потрібен "Module::Build" (замість "ExtUtils::MakeMaker").

Збирання має пришвидшитися (особливо нарощувальне повторне збирання), оскільки виконано певну роботу із зменшення тривалості збирання.

Для запуску генератора під час збирання потрібні OCaml і модуль findlib OCaml. Раніше збирання завершувалося помилкою, якщо не було встановлено findlib.

Тести "make check" тепер виконуються у паралельному режимі (у межах кожного з каталогів тестування).

"make install" тепер встановлює файли OCaml bindtests.* правильно.

"make install" тепер можна запускати двічі. Раніше, під час другого запуску видавалося повідомлення про помилку.

"make clean" тепер має вилучати майже усі файли, які створює "make".

Додано нове правило "make installcheck", яке уможливлює тестування встановленої версії libguestfs.

  Внутрішня частина роботи програми
Певних зусиль було докладено до мінімізації розміру базової системи, що зменшило об'єм тимчасового диска і час, потрібний на обробку у libguestfs.

Базова система тепер передає назву NIC до dhcpd, це виправляє повисання під час роботи базової системи у деяких дистрибутивах (Cédric Bosdonnat).

Тепер створюється "Guestfs.Errno" OCaml (Pino Toscano).

У засобах мовою OCaml загальний код тепер обробляє --debug-gc, --verbose та інші загальні параметри (Roman Kagan, Pino Toscano).

Комплекс тестування virt-v2v надає нам змогу завантажувати тестовані гостьові системи у фіксовані моменти часу у минулому, забезпечуючи надійну роботу системи повторної активації Windows.

Реалізовано новий внутрішній програмний інтерфейс для читання і запису підпроцесів за допомогою каналу з коду бібліотеки.

Використано програму "deheader" для вилучення невикористаних інструкцій "#include".

У засобах мовою OCaml модулі "Char" і "String" тепер наявно посилаються на модулі "Common_utils.Char" і "Common_utils.String" (замість модулів зі stdlib). Модулі "Common_utils" містять декілька додаткових допоміжних функцій для роботи із символами і рядками, а також приховування деяких незахищених функцій у stdlib.

Тепер запускається набагато більше тестів virt-v2v, навіть якщо не встановлено rhsrvany і virtio-win (Roman Kagan).

Величезний файл configure.ac було поділено на декілька менших файлів із назвами m4/guestfs_*.m4.

Застарілі каталоги tests/data і tests/guests було пересунуто до test-data/. Цей новий каталог верхнього рівня містить усі дані засобів тестування, які є спільними, великим і/або використовуються у декількох тестах.

Створено новий каталог верхнього рівня website/, який містить загальнодоступні дані сайта http://libguestfs.org (або більшу частину цих даних).

Нечітке тестування засобів інспектування (tests/fuzz) було вилучено.

Virt-p2v тепер зберігає виведення dmesg фізичної машини джерела до каталогу діагностичних даних сервера перетворення, що діагностику у випадку нестачі драйверів, мікропрограми тощо.

  Виправлені вади

https://bugzilla.redhat.com/1294956
    set-label повертає помилкове повідомлення про помилку, якщо встановлено мітку файлової системи ext3/ext4

https://bugzilla.redhat.com/1288733
    Add a Fedora 23 32-bit base image for virt-builder

https://bugzilla.redhat.com/1288201
    virt-builder записує тимчасові файли до /tmp

https://bugzilla.redhat.com/1285847
    virt-resize не копіює логічні розділи

https://bugzilla.redhat.com/1281578
    virt-inspector повертає версію 6.3 для образів win10 (має повертати 10.0)

https://bugzilla.redhat.com/1281577
    virt-inspector --xpath segfault on attribute get

https://bugzilla.redhat.com/1280029
    libguestfs can run commands with stdin not open (or worse still, connected to arbitrary guest-chosen random devices)

https://bugzilla.redhat.com/1279273
    Про параметр стискання для qcow2

https://bugzilla.redhat.com/1278878
    guestfish should be able to handle LVM thin layouts

https://bugzilla.redhat.com/1278382
    DNF python programming error when run from virt-builder

https://bugzilla.redhat.com/1278371
    inspection returns arch="unknown" for Windows guest if file command is not installed

https://bugzilla.redhat.com/1277274
    Document permissions needed for non-admin users to use virt-v2v

https://bugzilla.redhat.com/1277122
    RFE: virt-sparsify: make '--in-place' sparsification safe to abort (gracefully or ungracefully)

https://bugzilla.redhat.com/1277074
    Virt-p2v client shouldn't present the vdsm option because it's not usable

https://bugzilla.redhat.com/1276540
    virt-v2v fails to convert Windows raw image: error "device name is not a partition"

https://bugzilla.redhat.com/1275806
    virt-builder: error: [file] is not a regular file in the guest

https://bugzilla.redhat.com/1270011
    Simplestreams test fails: virt-builder: error: the value for the key 'size' is not an integer

https://bugzilla.redhat.com/1267032
    guestfish copy-in command behaves oddly/unexpectedly with wildcards

https://bugzilla.redhat.com/1262983
    python: Cannot compile pip module if installed libguestfs != pip guestfs version

https://bugzilla.redhat.com/1262127
    Better diagnostic message when virbr0 doesn't exist

https://bugzilla.redhat.com/1261436
    No warning shows when convert a win7 guest with AVG AntiVirus installed

https://bugzilla.redhat.com/1260778
    virt-builder --ssh-inject doesn't set proper permissions on created files

https://bugzilla.redhat.com/1260689
    RFE: V2V to check and warn user to disable group policy and anti virus on Windows guests

https://bugzilla.redhat.com/1260590
    Wrong graphics protocal and video type set for guest after convert to rhev 3.6 by virt-v2v

https://bugzilla.redhat.com/1258342
    extra slashes in vcenter URL confuses virt-v2v

https://bugzilla.redhat.com/1257895
    [RHEV][V2V] virt-v2v ignores NIC if interface source/@network or source/@bridge is an empty string

https://bugzilla.redhat.com/1256405
    virt-builder created Fedora 22 32bit disk image cannot be updated

https://bugzilla.redhat.com/1256222
    virt-p2v no GUI mode:error opening control connection to $ip:22:unexpected …rompt

https://bugzilla.redhat.com/1251909
    Option -oa preallocated -of qcow2 of virt-v2v didn't work efficiently

https://bugzilla.redhat.com/1250715
    v2v: у шляхах пробіли слід екранувати, ось так: %20

https://bugzilla.redhat.com/1248678
    Закрити усі вхідні порти на образі ISO virt-p2v

https://bugzilla.redhat.com/1246882
    man virt-customize показував короткий опис двічі

https://bugzilla.redhat.com/1242853
    mount-loop failed to setup loop device: No such file or directory

https://bugzilla.redhat.com/1237136
    BUG: unable to handle kernel NULL pointer dereference at <addr> in function __blkg_lookup

https://bugzilla.redhat.com/1230412
    virt-v2v should ignore bogus kernel entries in grub config

https://bugzilla.redhat.com/1229119
    Unrelated info in fstab makes virt-v2v fail with unclear error info

https://bugzilla.redhat.com/1227609
    virt-p2v: Using "Back" button causes output list to be repopulated multiple times

https://bugzilla.redhat.com/1225789
    Wrong video driver is installed for rhel5.11 guest after conversion to libvirt

https://bugzilla.redhat.com/1204131
    RFE: virt-builder creates qcow v3 images, add build option for qcow v2

https://bugzilla.redhat.com/1176801
    File /etc/sysconfig/kernel isn't updated when convert XenPV guest with regular kernel installed

https://bugzilla.redhat.com/1174551
    "lstatnslist" and "lstatlist" don't give an error if the API is used wrongly

https://bugzilla.redhat.com/1168223
    koji spin-livecd cannot build a working live CD

https://bugzilla.redhat.com/1165785
    mount-loop command fails: mount failed: Unknown error -1

https://bugzilla.redhat.com/1164708
    set-label can only set <=127 bytes for btrfs and <=126 bytes for ntfs filesystem which not meet the help message. Also for ntfs it should give a warning message when the length >128 bytes

https://bugzilla.redhat.com/1020216
    libvirt fails to shut down domain: could not destroy libvirt domain: Requested operation is not valid: domain is not running

https://bugzilla.redhat.com/1011907
    mount-loop failed to setup loop device: No such file or directory

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.30
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.28.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
Нові інструменти

virt-dib(1) є безпечною і захищеною альтернативою до програми «diskimage-builder» з OpenStack. Вона сумісна із елементами diskimage-builder. (Pino Toscano)

virt-get-kernel(1) видобуває ядро і диск у пам'яті з образу диска. Раніше ця функціональна можливість була частиною virt-builder(1), але нова програм є ширшою за можливостями. (Pino Toscano)

Нові можливості у наявних інструментах

У режимі virt-v2v(1) -i ova програма тепер здатна читати ширший діапазон файлів OVA, а також незапаковані файли (каталоги).

virt-v2v тепер безпечно передає параметри до curl, отже, паролі, куки та інші дані будуть недоступними для перегляду іншими користувачами із доступом до командної оболонки та комп'ютері основної системи.

У virt-v2v передбачено новий параметр --password-file, який надає вам змогу безпечно передати пароль і уникнути роботи із інтерактивним рядком запиту.

virt-v2v вимикає автоматичне перезавантаження Windows, щоб робить діагностику помилок при перетворенні Windows простішою.

virt-v2v тепер постачається із широким зовнішнім комплектом для тестування. Див. virt-v2v-test-harness(1).

virt-v2v надає змогу використовувати драйвери virtio з будь-якого місця (Roman Kagan), драйвери тепер може бути прочитано безпосередньо з образу ISO virtio.

У virt-v2v передбачено перетворення Windows ≥ 8. Зауважте, що ця можливість є експериментальною. Користуйтеся нею обережно.

virt-v2v тепер може перетворювати гостьові системи з UEFI.

До virt-p2v(1) додано діалог налаштовування мережі.

virt-p2v тепер має перемикачі "p2v.pre", "p2v.post" і "p2v.fail", які уможливлюють довільні скрипти для приготування перетворення і коригування після перетворення.

У virt-p2v тепер використовується досконаліший засіб керування вікнами metacity (замість matchbox).

virt-sysprep(1) тепер вилучає "/var/spool/mail/ім'я_користувача" для облікових записів, відмінних від root (Hu Tao).

virt-customize(1), virt-builder(1) і virt-sysprep тепер мають такі нові параметри:

--commands-from-file
    надає змогу читати довгі списки команд з файла, а не з командного рядка (Pino Toscano)

--copy
    копіює файли до гостьової системи (Maros Zatko)

--copy-in
    рекурсивно копіює файли з основної системи до гостьової (Pino Toscano)

--move
    пересуває файли у гостьовій системі (Maros Zatko)

--ssh-inject
    вставляє ключі SSH до гостьової системи (Pino Toscano)

--sm-attach
--sm-credentials
--sm-register
--sm-remove
--sm-unregister
    реєструє і скасовує реєстрацію гостьової системи у subscription-manager (Pino Toscano)

--touch
    актуалізує часову позначку файла у гостьовій системі (Pino Toscano)

--truncate
--truncate-recursive
    обрізає файли (Maros Zatko)

Поліпшення у підтримці firstboot у virt-customize. Зокрема у Windows firstboot має працювати як і у Linux (Roman Kagan).

virt-df(1) тепер може використовувати PolicyKit, SASL та інші способи розпізнавання при отриманні списку доменів від libvirt.

Поліпшення у доповненні команд guestfish у bash (Pino Toscano).

Засіб доповнення команд у bash тепер доповнює і скорочені форми запису параметрів, і повні (Pino Toscano).

guestfish(1) тепер показує короткий опис команди, якщо через командний рядок передається помилкова кількість параметрів (Hu Tao).

У virt-builder тепер передбачено підтримку Red Hat Enterprise Linux версій, ах до RHEL 3.

У virt-builder передбачено підтримку гостьових систем SUSE, де використовується zypper (Cédric Bosdonnat).

Прив’язки до мов програмування

До прив'язок до Java тепер включено перевірені Javadoc, інші поліпшення (Pino Toscano).

Декілька виправлень і поліпшень у прив'язках до PHP (Pino Toscano).

Перевірка

Засіб інспектування тепер може отримувати піктограми з RHEL 7 та CentOS 7.

/etc/favicon.png тепер може бути символічним посиланням.

У заснованих на RPM гостьових системах засіб інспектування тепер повертає поля Epoch RPM.

Пакунки Debian тепер мають окремі поля Epoch і Version (Nikos Skalkotos).

Додано виявлення OpenBSD, FreeBSD і NetBSD додано як окремі дистрибутиви, інші поліпшення у інспектуванні BSD та виправлення вад (Nikos Skalkotos).

Додано виявлення CoreOS (Nikos Skalkotos).

Засобом керування пакунками у Fedora ≥ 22 є "dnf".

Тепер можна інспектувати гостьові системи ReactOS (Maros Zatko).

Додано підтримку гостьових систем UEFI.

Інспектування тепер працює, якщо модулі ядра стиснуто за допомогою gzip або xz (Pino Toscano).

Засіб інспектування тепер розпізнає гостьові системи ppc64 і ppc64le (Maros Zatko).

Засіб інспектування тепер може показувати списки встановлених програм у гостьових системах Archlinux (Nikos Skalkotos).

Архітектури і платформи

Тепер підтримка архітектур PPC64 (POWER7) і PPC64LE (POWER8) є набагато ліпшою і має працювати без додаткових налаштовувань.

Для aarch64 ми використовуємо AAVMF (реалізацію UEFI з відкритим кодом на основі OVMF), якщо вона доступна, для запуску базової системи.

Для armv7 ми тепер використовуємо типово тип комп'ютера -M virt.

Реалізовано кращу підтримку збирання на платформах, відмінних від Linux (Pino Toscano, Margaret Lewicka).

Тепер libguestfs має працювати на 32-бітових MIPS з прямим порядком байтів ("mipsel"). Не вдалося перевірити 64-бітову версію або версію зі зворотним порядком байтів.

  Безпека

CVE-2014-8484
CVE-2014-8485
    Libguestfs раніше запускала програму strings(1) для недовірених файлів. Strings могла обробляти заголовки BFD у незахищений спосіб, що могло призвести до виконання довільного коду. Тепер libguestfs запускає strings з прапорцем для забезпечення того, щоб заголовки BFD не оброблятимуться. Обробка заголовків могла призвести до втручання у роботу базової системи libguestfs, але оскільки libguestfs додатково обмежує базову систему через віртуалізацію, SELinux та інші методики, це навряд чи могло призвести до розширення прав доступу в основній системі.

XPath-ін'єкція у virt-v2v
    Було виправлено одну вразливість, пов'язану із XPath-ін'єкцією у virt-v2v. Вразливість могла призвести до того, що код зловмисника у гостьовій системі, яка перетворюється за допомогою virt-v2v, будував довільний вираз XPath, який мало бути оброблено у основній системі (за допомогою бібліотеки libxml2, скомпонованої із виконуваним файлом virt-v2v). Незрозуміло, яким міг бути ефект від усього цього.

    Щоб дізнатися більше, ознайомтеся із внеском https://github.com/libguestfs/libguestfs/commit/6c6ce85f94c36803fe2db35a98db436bff0c14b0

Проблеми із відмовою у обслуговуванні при використанні "qemu-img info"
    Використовуючи American Fuzzy Lop fuzzer ("afl-fuzz") на програмі "qemu-img info", Richard W.M. Jones виявив, що певні файли можуть спричинити до надмірного використання пам'яті та часу процесора у програмі "qemu-img" (наприклад, 6 ГБ оперативної пам'яті та 14 секунд процесорного часу на швидкому процесорі Intel), а іноді призводити до аварійного завершення роботи програми. Оскільки libguestfs може запускати "qemu-img info" на образах диска для визначення їхнього вмісту, це могло призвести до повисання або споживання надмірного об'єму пам'яті самою libguestfs.

    До libguestfs було внесено зміни щодо обмеження споживання ресурсів за об'ємом і часом, які стосуються "qemu-img info" і усувають вказану проблему. Якщо зловмисник спробує передати один зі спеціально створених образів диска libguestfs, "qemu-img" завершить роботу в аварійному режимі і поверне керування libguestfs, надавши дані щодо аварії як повідомлення про помилку.

  API
Нові програмні інтерфейси

"guestfs_add_libvirt_dom"
    Це розкриває раніше закритий програмний інтерфейс, який надає вам змогу передавати об'єкт "virDomainPtr" безпосередньо від libvirt до libguestfs.

"guestfs_blockdev_setra"
    Коригує параметр readahead для пристроїв. Див. команду "blockdev --setra".

"guestfs_btrfs_balance"
"guestfs_btrfs_balance_cancel"
"guestfs_btrfs_balance_pause"
"guestfs_btrfs_balance_resume"
"guestfs_btrfs_balance_status"
    Підтримка балансування для файлових систем Btrfs (Hu Tao).

"guestfs_btrfs_filesystem_defragment"
    Підтримка дефрагментації файлових систем для файлових систем Btrfs (Hu Tao).

"guestfs_btrfs_image"
    Створює образ файлової системи Btrfs (Chen Hanxiao)

"guestfs_btrfs_qgroup_assign"
"guestfs_btrfs_qgroup_create"
"guestfs_btrfs_qgroup_destroy"
"guestfs_btrfs_qgroup_limit"
"guestfs_btrfs_qgroup_remove"
"guestfs_btrfs_qgroup_show"
"guestfs_btrfs_quota_enable"
"guestfs_btrfs_quota_rescan"
    Підтримка квот для файлових систем Btrfs (Hu Tao).

"guestfs_btrfs_rescue_chunk_recover"
    Сканування і відновлення ієрархії фрагментів у файлових системах Btrfs (Hu Tao).

"guestfs_btrfs_rescue_super_recover"
    Відновлення суперблоків у файлових системах Btrfs (Hu Tao).

"guestfs_btrfs_replace"
    Заміна пристрою у файловій системі Btrfs (Cao Jin).

"guestfs_btrfs_scrub"
"guestfs_btrfs_scrub_cancel"
"guestfs_btrfs_scrub_resume"
"guestfs_btrfs_scrub_status"
    Витирання файлової системи Btrfs (Hu Tao).

"guestfs_btrfs_subvolume_get_default"
    Отримання типового підтому файлової системи Btrfs (Hu Tao).

"guestfs_btrfs_subvolume_show"
    Виведення докладної інформації щодо підтому файлової системи Btrfs (Hu Tao).

"guestfs_btrfstune_enable_extended_inode_refs"
"guestfs_btrfstune_enable_skinny_metadata_extent_refs"
"guestfs_btrfstune_seeding"
    Різноманітні параметри налаштовування для файлових систем Btrfs (Chen Hanxiao).

"guestfs_c_pointer"
    Повертає вказівник C на підлеглий "guestfs_h *". Це надає змогу працювати спільно прив'язкам libguestfs та прив'язкам з інших бібліотек. Докладніше про це тут: https://bugzilla.redhat.com/1075164

"guestfs_copy_in"
"guestfs_copy_out"
    Гнучкі програмні інтерфейси для рекурсивного копіювання каталогів з файлами між основною і гостьовою файловими системами. Раніше цими можливостями можна було скористатися лише у командах guestfish, тепер же ними можуть користуватися будь-які засоби, які використовуються програмний інтерфейс (Pino Toscano).

"guestfs_part_get_gpt_guid"
"guestfs_part_set_gpt_guid"
    Отримання і встановлення GUID для окремих розділів GPT.

"guestfs_part_get_mbr_part_type"
    Отримання типу розділу MBR (Chen Hanxiao).

"guestfs_set_uuid_random"
    Встановлює для UUID файлової системи випадкове значення; підтримувані файлові системи у поточній версії — ext2/3/4, XFS, Btrfs та розділи swap (Chen Hanxiao).

Інші зміни у програмному інтерфейсі

"guestfs_disk_create" тепер може використовувати файли VMDK як файли резервної пам'яті.

"guestfs_btrfs_subvolume_snapshot" приймає додаткові необов'язкові параметри (усі додано Hu Tao):

"ro"
    для створення придатного лише для читання знімка Btrfs

"qgroupid"
    для додавання знімка до qgroup

"guestfs_btrfs_subvolume_create" також може приймати необов'язковий параметр "qgroupid" (Hu Tao).

"guestfs_set_uuid" може встановлювати UUID розділів резервної пам'яті (swap), Btrfs (Hu Tao, Chen Hanxiao).

"guestfs_copy_device_to_file" і "guestfs_copy_file_to_file" мають новий необов'язковий параметр "append", за допомогою якого ви можете дописувати дані до файла виведення, замість його заповнення від початку.

"guestfs_mkfs" має новий необов'язковий параметр "label" для встановлення початкової мітки нової файлової системи (Pino Toscano).

"guestfs_set_label" і "guestfs_set_uuid" тепер встановлюють "ENOTSUP" як номер помилки, якщо немає реалізованої підтримки файлової системи вказаного монтованого пристрою (Chen Hanxiao).

Змінні середовища тепер надають вам змогу написати "LIBGUESTFS_DEBUG=true", "LIBGUESTFS_DEBUG=0" тощо.

Увесь програмний інтерфейс "guestfs_sfdisk*" визнано застарілим. Оскільки sfdisk(8) було переписано у несумісний спосіб у головній гілці розробки, ми не рекомендуємо використовувати ці програмні інтерфейси у новому коді. Користуйтеся його замінниками — "guestfs_part*".

Програмні інтерфейси, зокрема "guestfs_download", не обрізають /dev/stdout або /dev/stderr під час запису до них, тобто, якщо ви переспрямовуєте stdout або stderr до файла, файл більше не обрізається.

  Зміни у збиранні
Фонова служба більше не використовує власну окрему копію gnulib. Замість цього, вона спільно використовує єдину копію з бібліотекою.

Тепер автоматично створюються файли OCaml .annot, отже комплексні середовища для розробки та редактори, зокрема emacs і vi, можуть здійснювати навігацію типами OCaml у початковому коді програм.

Різноманітні виправлення з метою уможливити збирання на різних основних системах та за різних архітектур (Pino Toscano).

Тепер для збирання усіх програм OCaml безпосередньо використовується automake, замість ситуативних правил Makefile. Одним із побіжних ефектів цього є те, що тепер можна бачити попередження щодо усього коду C, який використовується програмами мовою OCaml.

Для збирання використано "-fno-strict-overflow", що уникнути неоднозначних оптимізацій з боку GCC.

Чищення коду з метою підтримки GCC 5.

Для виконання деяких тестів OCaml потрібна бібліотека OCaml OUnit2.

Знову має працювати створення статично скомпонованого libguestfs.a.

Ми більше не використовуємо підкаталог src/api-support і скрипти у ньому. Замість цього, дані зберігаються у generator/actions.ml, коли до libguestfs додається програмний інтерфейс.

  Інтернаціоналізація
Службу перекладу змінено з Transifex на Zanata.

Виконано багато перекладів, інтерфейсу бібліотеки і програм та документації.

  Внутрішня частина роботи програми
У всіх інструментах мовою OCaml тепер є загальні функції "error", "warning", "info" та загальний спосіб встановити і отримати прапорці --quiet, -x (трасування) та -v (докладний режим) і використовується однорідне підсвічування кольором.

Для спрощення конструкторів і деструкторів PCRE використовуються макроси "COMPILE_REGEXP".

У генераторі нарешті реалізовано аргументи "Pointer".

У внутрішніх ідентифікаторах більше не використовуються подвійні і потрійні підкреслювання (наприклад, "guestfs___program_name"). Такі ідентифікатори є некоректними у програмах C99 та C++, хоча компілятори і можуть їх використовувати.

Фонова служба більше не обробляє параметри "guestfs_*" від /proc/cmdline. Замість цього, вона приймає лише звичайні параметри командного рядка. Скрипти ініціалізації базової системи перетворюють дані /proc/cmdline у параметри командного рядка фонової служби.

Тести тепер можуть запускати фонову службу як «полонений процес», що уможливлює її роботу безпосередньо у основній системі. Головною перевагою цього є те, що ви можемо запускати valgrind безпосередньо для фонової служби під час тестування.

  Виправлені вади

https://bugzilla.redhat.com/1239053
    virt-v2v error reporting when grub.conf cannot be parsed by Augeas

https://bugzilla.redhat.com/1238053
    v2v:Duplicate disk target set when convert guest with cdrom attached

https://bugzilla.redhat.com/1237869
    Virtio drivers are not installed for windows 2008 guests by virt-v2v

https://bugzilla.redhat.com/1234351
    virt-v2v Support for Fedora virtio-win drivers

https://bugzilla.redhat.com/1232192
    Virt-v2v gives an error on a blank disk: part_get_parttype: unknown signature, of the output: BYT;

https://bugzilla.redhat.com/1229385
    virt-p2v in kernel command line mode should power off the machine after conversion

https://bugzilla.redhat.com/1229340
    virt-p2v no GUI mode appends \n to the final command line parameter

https://bugzilla.redhat.com/1229305
    virt-sysprep at cleanup deletes /var/spool/at/.SEQ which results in failing at

https://bugzilla.redhat.com/1226794
    "Doing conversion……" still shows after cancel the conversion from virt-p2v client

https://bugzilla.redhat.com/1215042
    Memory leak in virNetSocketNewConnectUNIX

https://bugzilla.redhat.com/1213324
    virt-v2v: warning: unknown guest operating system: windows windows 6.3 when converting win8,win8.1,win2012,win2012R2 to rhev

https://bugzilla.redhat.com/1213247
    virt tools should print the same format of version string

https://bugzilla.redhat.com/1212808
    RFE: virt-builder --touch

https://bugzilla.redhat.com/1212807
    virt-builder --selinux-relabel flag fails on cross-architecture builds

https://bugzilla.redhat.com/1212680
    RFE: virt-inspector xpath query should output a neat format of the query element

https://bugzilla.redhat.com/1212152
    virt-builder firstboot-command fails: File name too long

https://bugzilla.redhat.com/1211996
    virt-inspector gives incorrect arch (ppc64) for ppc64le guest

https://bugzilla.redhat.com/1203817
    RFE: virt-customize --move and --copy

https://bugzilla.redhat.com/1201526
    index-parser can't parse systemd mount files properly

https://bugzilla.redhat.com/1196101
    virt-builder --upload option doesn't work to a FAT partition

https://bugzilla.redhat.com/1196100
    virt-builder -x option on its own does not enable tracing

https://bugzilla.redhat.com/1195204
    `virt-builder` should create $HOME/.cache directory if it already doesn't exist

https://bugzilla.redhat.com/1193237
    Virt-builder fingerprint is required even when no check desired

https://bugzilla.redhat.com/1189284
    virt-resize should preserve GPT partition UUIDs, else EFI guests become unbootable

https://bugzilla.redhat.com/1188866
    Performance regression in virt-builder when uncompressing image

https://bugzilla.redhat.com/1186800
    virt-v2v should support gzip format ova as input

https://bugzilla.redhat.com/1185561
    virt-sparsify should ignore read-only LVs

https://bugzilla.redhat.com/1182463
    "mknod-b", "mknod-c", and "mkfifo" do not strip non-permissions bits from "mode"

https://bugzilla.redhat.com/1176493
    virt-v2v ignores sound device when convert xen guest to local kvm

https://bugzilla.redhat.com/1175676
    Друкарська помилка у «help ping-daemon»

https://bugzilla.redhat.com/1175196
    "parse-environment" and "parse-environment-list" fail to parse "LIBGUESTFS_TRACE = 0"

https://bugzilla.redhat.com/1175035
    "is-blockdev"/"is-blockdev-opts" fail to detect "/dev/sda"

https://bugzilla.redhat.com/1174280
    RFE: Allow v2v conversion of Oracle Linux 5.8 VMware VM

https://bugzilla.redhat.com/1174200
    New virt-v2v failure: CURL: Error opening file: NSS: client certificate not found (nickname not specified): Invalid argument

https://bugzilla.redhat.com/1174123
    Graphics password disappear after conversion of virt-v2v

https://bugzilla.redhat.com/1174073
    The listen address for vnc is changed after conversion by virt-v2v

https://bugzilla.redhat.com/1171666
    Засіб інспектування вважає розділ EFI окремою операційною системою

https://bugzilla.redhat.com/1171130
    virt-v2v conversion of RHEL 3 guest fails with: All of your loopback devices are in use

https://bugzilla.redhat.com/1170685
    Conversion of RHEL 4 guest fails: rpm -ql 1:kernel-utils-2.4-23.el4: virt-v2v: error: libguestfs error: command_lines:

https://bugzilla.redhat.com/1170073
    virt-v2v picks debug kernels over non-debug kernels when versions are equal

https://bugzilla.redhat.com/1169045
    virt-sparsify: libguestfs error: qemu-img info: 'virtual-size' is not representable as a 64 bit integer

https://bugzilla.redhat.com/1169015
    virt-resize --expand fails on ubuntu-14.04.img image (regression)

https://bugzilla.redhat.com/1168144
    warning: fstrim: fstrim: /sysroot/: FITRIM ioctl failed: Operation not supported (ignored) when convert win2003 guest from xen server

https://bugzilla.redhat.com/1167921
    p2v: No Network Connection dialog

https://bugzilla.redhat.com/1167774
    virt-p2v fails with error:"nbd.c:nbd_receive_negotiate():L501: read failed"

https://bugzilla.redhat.com/1167623
    Remove "If reporting bugs, run virt-v2v with debugging enabled .." message when running virt-p2v

https://bugzilla.redhat.com/1167601
    "Conversion was successful" pop out even virt-p2v fails

https://bugzilla.redhat.com/1167302
    virt-v2v: warning: ova hard disk has no parent controller when convert from a ova file

https://bugzilla.redhat.com/1166618
    virt-resize should give out the detail warning info to let customers know what's going wrong

https://bugzilla.redhat.com/1165975
    File "/boot/grub2/device.map" showing is not right after converting a rhel7 guest from esx server

https://bugzilla.redhat.com/1165785
    mount-loop command fails: mount failed: Unknown error -1

https://bugzilla.redhat.com/1165569
    Disable "cancel conversion" button after virt-p2v conversion finished

https://bugzilla.redhat.com/1165564
    Provide Reboot/Shutdown button after virt-p2v

https://bugzilla.redhat.com/1164853
    Booting in qemu found no volume groups and failed checking the filesystems

https://bugzilla.redhat.com/1164732
    The description of 'help append' is not accurately, it add the kernel options to libguestfs appliance not the guest kernel

https://bugzilla.redhat.com/1164697
    Друкарські помилки у сторінках man

https://bugzilla.redhat.com/1164619
    Inspect-get-icon failed on RHEL7 guest

https://bugzilla.redhat.com/1162966
    xfs should also give a warning out to let customer know the limitation

https://bugzilla.redhat.com/1161575
    Failed to import guest with "rtl8139" nic to openstack server after converted by v2v

https://bugzilla.redhat.com/1159651
    virt-sysprep firstboot script is not deleted if it reboot a RHEL 7 guest

https://bugzilla.redhat.com/1159258
    esx win2008 32 bit guest fail to load after conversion because the firmware isn't ACPI compatible

https://bugzilla.redhat.com/1159016
    libvirt backend does not set RBD password

https://bugzilla.redhat.com/1158526
    Use password file instead of process interaction

https://bugzilla.redhat.com/1157679
    virt-p2v-make-disk should add firmwares

https://bugzilla.redhat.com/1156449
    libguestfs FTBFS on f21 ppc64le

https://bugzilla.redhat.com/1156301
    virt-inspector support adding a remote disk, but in its man page -a URI / --add URI is missing

https://bugzilla.redhat.com/1155121
    Virt-v2v will fail when using relative path for -i ova

https://bugzilla.redhat.com/1153844
    Redundancy whitespace at the end of directory name when use <TAB> to complete the directory name in guestfish with a xfs filesystem in guest

https://bugzilla.redhat.com/1153589
    virt-v2v will hang when converting esx guest before disk copy phase

https://bugzilla.redhat.com/1152998
    virt-v2v / qemu-img fails on ova image

https://bugzilla.redhat.com/1151910
    virt-ls should remove '/' in the output when specify the directory name as /etc/

https://bugzilla.redhat.com/1151900
    Should also add a field for directory files when run virt-ls with --csv option

https://bugzilla.redhat.com/1151033
    virt-v2v conversions from VMware vCenter server run slowly

https://bugzilla.redhat.com/1146832
    virt-v2v fail to convert guest with disk type volume

https://bugzilla.redhat.com/1146007
    Input/output error during conversion of esx guest.

https://bugzilla.redhat.com/1135585
    [RFE] virt-builder should support copying in a directory/list of files

https://bugzilla.redhat.com/1089566
    [abrt] livecd-tools: kickstart.py:276:apply:IOError: [Errno 2] No such file or directory: '/run/media/jones/2tp001data/createlive/temp/imgcreate-_dX8Us/install_root/etc/rpm/macros.imgcreate'

https://bugzilla.redhat.com/1079625
    virt-sparsify fails if a btrfs filesystem contains readonly snapshots

https://bugzilla.redhat.com/1075164
    RFE: allow passing in a pre-opened libvirt connection from python

https://bugzilla.redhat.com/912499
    Security context on image file gets reset

https://bugzilla.redhat.com/889082
    [RFE] virt-v2v should check whether guest with same name exist on target first then transfer the disk

https://bugzilla.redhat.com/855059
    RFE: virt-p2v: display more information about network devices such as topology, bonding, etc.

https://bugzilla.redhat.com/823758
    p2v client should have largest number restrictions for CPU and Memory settings

https://bugzilla.redhat.com/709327
    hivex cannot read registry hives from ReactOS

https://bugzilla.redhat.com/709326
    virt-inspector cannot detect ReactOS

https://bugzilla.redhat.com/119673
    installation via NFS doesn't seem to work

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.28
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.26.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
Інструменти

virt-v2v(1) і virt-p2v(1) є інструментами для перетворення даних сторонніх гіпервізорів (зокрема VMware або Xen) чи фізичних машин на дані KVM. Ці інструменти раніше були частиною окремого проекту. Код обох цих інструментів інтегровано до ієрархії коду libguestfs. У межах перевпорядковування virt-p2v було переписано (з Ruby на C), а virt-v2v тепер використовує декілька сучасних можливостей qemu, що пришвидшують роботу програми у багато разів. virt-v2v(1) може імпортувати дані з VMware vCenter, файлів VMware OVA, локальних файлів дисків, libvirt, RHEL 5 Xen. Дані може бути виведено у таких форматах: oVirt або Red Hat Enterprise Virtualization (RHEV-M), OpenStack Glance, libvirt, qemu, локальні файли дисків.

virt-log(1) —новий засіб для показу файлів журналу з гостьових систем. Передбачено підтримку широкого спектру гостьових систем, зокрема традиційних систем Linux, систем Linux із журналом та журналу подій Windows.

У virt-builder(1) передбачено новий параметр "--machine-readable" для спрощення передавання даних virt-builder до інших програм.

Новий параметр --chmod у програмах virt-builder(1) і virt-customize(1).

virt-sysprep(1) тепер вилучає такі дані: журнали systemd, журнали anaconda, журнали lightdm, файли debian-installer, журнали apt, журнали exim, журнали ConsoleKit, журнали firewalld, журнали grubby, журнали proftpd, журнали libvirt/libxml та деякі інші файли журналів. Команда virt-sysprep "user-account" тепер здатна вилучати чи зберігати певні облікові записи користувачів. (Pino Toscano).

Новий параметр guestmount(1) --fd, за допомогою якого ви можете запускати guestmount «полоненим» у іншому процесі.

virt-sparsify(1) має новий параметр --tmp, який надає вам змогу точно контролювати, де зберігатимуться тимчасові файли.

virt-sparsify(1) тепер може записувати на блоковий пристрій.

у virt-customize(1) і virt-sysprep(1) тепер передбачено підтримку додавання скриптів firstboot до гостьових систем Windows.

У virt-cat(1), virt-edit(1), virt-ls(1) тепер передбачено підтримку параметра -m, який надає вам змогу перевизначати автоматичне інспектування гостьових систем і, замість цього, вказувати, куди слід монтувати розділи (Pino Toscano).

Для засобів віртуалізації тепер передбачено розфарбовування виведених даних: зелений — усе гаразд, червоний — помилки, синій — попередження.

Прив’язки до мов програмування

Ви можете зібрати дистрибутив для Python за допомогою команди "make -C python sdist"

Прив'язки до Ruby перемкнуто з "Test::Unit" на "MiniTest".

Прив'язки до Java тепер сумісні із OpenJDK 8 (Pino Toscano).

Перевірка

Для Oracle Linux тепер повертається "oraclelinux" (Nikos Skalkotos).

Тепер можлива обробка гостьових систем Linux, де немає /etc/fstab (Pino Toscano).

Для Minix тепер повертається "minix" (Pino Toscano).

Архітектури

Було додано підтримку Aarch64 (64-бітових ARM).

Засіб інспектування та виклик "guestfs_file_architecture" тепер можуть розпізнавати гостьові системи arm (32-бітову) і aarch64.

  Безпека

CVE-2014-0191 Використання мережі і визначення замінників при обробці коду XML
    У попередніх версіях libguestfs використовувала незахищені програмні інтерфейси libxml2 для обробки XML libvirt. Ці програмні інтерфейси типово надавали доступ до встановлення з'єднань мережі, якщо передавалися документи XML певного вмісту. За допомогою спеціально сформованого документа XML також можна було вичерпати можливості комп'ютера за процесорним часом, пам'яттю або дескрипторами файлів.

    Оскільки XML libvirt надходить із надійного джерела (фонової служби libvirt), ми вважаємо, що цією вразливістю неможливо було скористатися.

    Вразливість виправлено у libguestfs ≥ 1.27.9, виправлення було зворотно портовано до стабільних версій ≥ 1.26.2, ≥ 1.24.9, ≥ 1.22.10 та ≥ 1.20.13. (Подяки: Dan Berrange, Pino Toscano).

Shellshock (bash CVE-2014-6271)
    Вада у bash опосередковано торкнулася libguestfs. Докладніша інформація: https://www.redhat.com/archives/libguestfs/2014-September/msg00252.html

  API
Нові програмні інтерфейси

"guestfs_clear_backend_setting"
"guestfs_get_backend_setting"
"guestfs_set_backend_setting"
    Скористайтеся цими програмними інтерфейсами для встановлення параметрів окремих модулів обробки.

"guestfs_cpio_out"
    Перетворення каталогу у образі диска на формат cpio.

"guestfs_journal_get_realtime_usec"
    Отримання точних значень часу у журналі, див. sd_journal_get_realtime_usec(3).

"guestfs_lstatns"
"guestfs_lstatnslist"
"guestfs_statns"
    Удосконалені версії "guestfs_lstat", "guestfs_lstatlist", "guestfs_stat", які повертають часові позначки з точністю до наносекунд.

  Зміни у збиранні
Libguestfs тепер можна зібрати з qemu 2.x.

Додано підтримку пакування базової системи у Mageia (Joseph Wang, Thierry Vignaud).

Augeas тепер є обов'язковою залежністю.

Flex і bison тепер є обов'язковими залежностями.

  Внутрішня частина роботи програми
User-Mode Linux (UML) виключено із переліку підтримуваних модулів (хоча він все ще доступний). Його буде включено знову,, якщо з'явиться хтось, хто виправить різноманітні регресії та помилки у ядрі UML (Linux).

Тепер gdb можна з'єднати з qemu за допомогою значення змінної середовища "LIBGUESTFS_BACKEND_SETTINGS=gdb"

Тепер модулем обробки libvirt використовується Serial BIOS (sgabios) (лише на x86), отже, ви зможете бачити ранні повідомлення BIOS.

У засобах віртуалізації мовою OCaml обробкою і виведенням виключень займається загальна функція.

Тепер типово увімкнено попередження GCC щодо великих кадрів стеку. Виправлено декілька місць, де використовувалися великі масиви або структури у стеку.

Створено тест для кратного послідовного завантаження базової системи. Такий тест буде корисним для виявлення витоків пам'яті у ядрі. Див. tests/qemu/qemu-boot.c

Створено тест для перевірки швидкості роботи різних можливостей qemu, зокрема вивантажень за допомогою virtio-serial та запису на блокові пристрої. Див. tests/qemu/qemu-speed-test.c

Тепер увімкнено попередження GCC для прив'язок OCaml-C у засобах віртуалізації мовою OCaml.

Код для редагування файлів у програмі virt-edit(1), командах guestfish(1) "edit" і virt-customize(1) --edit тощо тепер є спільним для усіх цих засобів (дякуємо Pino Toscano).

Тести FUSE було переписано на C з метою забезпечення точнішого керування тестуванням системних викликів.

Скрипт update-bugs.sh було виправлено — він більше не створює порожнього файла "BUGS", якщо сервер системи звітування щодо вад є недоступним.

У тестах virt-resize(1) тепер використовується стохастичний метод для забезпечення глибшого і ширшого тестування.

Якщо увімкнено мережу, базова система тепер використовує DHCP для отримання IP-адреси.

Якщо використовується libvirt, базова система встановлюватиме з'єднання із "virbr0" (можна перевизначити за допомогою "LIBGUESTFS_BACKEND_SETTINGS=network_bridge=<якийсь місток>"). Це уможливлює повноцінні мережеві з'єднання із працездатним ICMP, ping тощо.

  Виправлені вади

https://bugzilla.redhat.com/1153515
    порожнє (але встановлене) LIBGUESTFS_BACKEND виводить libguestfs: помилка: некоректний модуль:

https://bugzilla.redhat.com/1151766
    Пакунок libguestfs-bash-completion містить файл file /usr/share/bash-completion/completions/virt-log, але у цьому файлі немає функції _virt_log()

https://bugzilla.redhat.com/1151738
    друкарська помилка у сторінці man virt-edit

https://bugzilla.redhat.com/1151033
    virt-v2v conversions from VMware vCenter server run slowly

https://bugzilla.redhat.com/1150880
    virt-v2v: warning: display <graphics type='sdl'> was ignored when converting rhel5 guest with sdl graphics

https://bugzilla.redhat.com/1150867
    'copy-file-to-file /src /dest' create file /dest even if command 'copy-file-to-file /src /dest' failed

https://bugzilla.redhat.com/1150815
    Can not find "RECURSIVE LONG LISTING" in 'man virt-diff'

https://bugzilla.redhat.com/1150701
    virt-v2v does not fstrim data disks and non-mounted filesystems

https://bugzilla.redhat.com/1150475
    Exporting 2+ disk guest to RHEV, only one disk shows after import

https://bugzilla.redhat.com/1148355
    virt-filesystems: incorrect LVM vg name when listing Fedora 21 Alpha Atomic image filesystems

https://bugzilla.redhat.com/1148072
    Не вистачає параметра --no-selinux-relabel

https://bugzilla.redhat.com/1148012
    RFE: Allow qemu-bridge-helper to be used to implement guestfs_set_network

https://bugzilla.redhat.com/1146815
    virt-v2v prints warning: /files/etc/fstab/8/spec references unknown device "cdrom"

https://bugzilla.redhat.com/1146275
    regression setting root password with virt-builder/virt-customize

https://bugzilla.redhat.com/1146017
    virt-v2v -v -x during windows guest conversion will hang at hivex: hivex_open: used block id ……

https://bugzilla.redhat.com/1145995
    Improve the error info when converting windows guest with unclean file system

https://bugzilla.redhat.com/1145916
    virt-v2v fails to convert win7 guest

https://bugzilla.redhat.com/1144891
    RFE: stat calls do not return nanosecond timestamps

https://bugzilla.redhat.com/1144766
    futimens() is a no-op via guestmount

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

https://bugzilla.redhat.com/1143949
    virt-customize option '--password-crypto' do not work

https://bugzilla.redhat.com/1143887
    Warning shows when converting guests to rhev:chown: changing ownership of ‘/tmp/v2v.u48xag/*.ovf’: Invalid argument

https://bugzilla.redhat.com/1143883
    warning shows when converting rhel7 guest:virt-v2v:could not update grub2 console: aug_get: no matching node (ignored)

https://bugzilla.redhat.com/1143866
    virt-v2v fails with error: cannot open Packages index using db5

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'

https://bugzilla.redhat.com/1142186
    virt-sysprep option '--mount-options' don't work well

https://bugzilla.redhat.com/1142158
    Illegal command 'part-get-name /dev/sda1 1' cause libguestfs appliance crashed

https://bugzilla.redhat.com/1142004
    virt-v2v prints warning:WARNING:/files/boot/grub/device.map references unknown device "xvda"

https://bugzilla.redhat.com/1141723
    virt-v2v: error: disk sda has no defined format shows when converting xen hvm guest

https://bugzilla.redhat.com/1141680
    [RFE] virt-v2 should support convert a domain with using domain's UUID instead of domain name

https://bugzilla.redhat.com/1141631
    [RFE] virt-v2 should support convert a guest to a dir-pool with using pool's uuid

https://bugzilla.redhat.com/1141157
    virt-sysprep option '--user-accounts' don't work well

https://bugzilla.redhat.com/1141145
    virt-v2v fails to convert xen pv guests.

https://bugzilla.redhat.com/1141113
    virt-v2v fails to convert esx guests

https://bugzilla.redhat.com/1140946
    qemu-img shows error message for backing file twice

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

https://bugzilla.redhat.com/1140547
    virt-builder option '--format' don't work well

https://bugzilla.redhat.com/1140156
    RFE: Export to RHEV data domain

https://bugzilla.redhat.com/1140050
    No error shows when multiple conflicting options used with virt-v2v

https://bugzilla.redhat.com/1139973
    Improve the error info when converting xen guest with no passwordless SSH access configured

https://bugzilla.redhat.com/1139543
    Improve the error info when converting guest with no space left

https://bugzilla.redhat.com/1138586
    No error shows when converting running guest with virt-v2v

https://bugzilla.redhat.com/1138184
    virt-v2v will fail when converting guests with initramfs-*kdump.img under /boot

https://bugzilla.redhat.com/1138182
    xen guest will be kernel panic after converted by virt-v2v

https://bugzilla.redhat.com/1130189
    Annoying message about permissions of /dev/kvm

https://bugzilla.redhat.com/1123007
    libguestfs 'direct' backend should close file descriptors before exec-ing qemu to avoid leaking !O_CLOEXEC fds

https://bugzilla.redhat.com/1122557
    virt-sparsify overwrites block devices if used as output files

https://bugzilla.redhat.com/1113156
    Empty fstab breaks libguestfs inspection

https://bugzilla.redhat.com/1111662
    Guestfs.Error("vgchange_uuid_all: Volume group has active logical volumes")

https://bugzilla.redhat.com/1109174
    virt-win-reg manual page is corrupted

https://bugzilla.redhat.com/1106548
    root gets an error accessing to a non-root dir on a snapshot guestmount VMDK img

https://bugzilla.redhat.com/1103877
    These APIs also need to add to `guestfish -h` command list

https://bugzilla.redhat.com/1102448
    Список пакунків mageia є помилковим

https://bugzilla.redhat.com/1102447
    libguestfs 1.27.13 does not build due to libxml library order

https://bugzilla.redhat.com/1100498
    RFE: non-polling mechanism to detect guestmount --no-fork readiness

https://bugzilla.redhat.com/1099490
    scrub-file can't handle link file

https://bugzilla.redhat.com/1099284
    Друкарські помилки у сторінках man

https://bugzilla.redhat.com/1098718
    RFE: virt-builder aliases

https://bugzilla.redhat.com/1096465
    virt-builder "proxy=off" setting doesn't turn off the proxy for downloads

https://bugzilla.redhat.com/1094746
    virt-sparsify man failes to mention what happens to snapshots within a qcow2 image (they are discarded)

https://bugzilla.redhat.com/1092753
    virt-builder: If several repos contain the same os-version images, then they are duplicated in -l output

https://bugzilla.redhat.com/1091803
    tar-in-opts execute failed that cause libguestfs appliance crashed

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

https://bugzilla.redhat.com/1088262
    virt-builder cannot write to a block device

https://bugzilla.redhat.com/1085029
    Ruby tests fail with latest Ruby

https://bugzilla.redhat.com/1079210
    virt-sparsify --in-place cannot sparsify as much as it should

https://bugzilla.redhat.com/1079182
    virt-df cannot report used disk space of windows guest when updated to 6.5

https://bugzilla.redhat.com/1077817
    virt-builder error: "syntax error at line 3: syntax error"

https://bugzilla.redhat.com/1056290
    virt-sparsify overwrites block devices if used as output files

https://bugzilla.redhat.com/812970
    virt-rescue cannot set ≥<rescue> prompt, on Ubuntu 12.04

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.26
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.24.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
Інструменти

virt-customize(1) — новий інструмент для налаштовування образів дисків віртуальної машини. За його допомогою ви можете встановлювати пакунки, редагувати файли налаштувань, запускати скрипти, встановлювати паролі тощо. virt-builder(1) і virt-sysprep(1) використовують virt-customize. Параметри командного рядка усіх цих інструментів тепер є ідентичними.

virt-diff(1) — новий інструмент для показу відмінностей між файловими системами двох віртуальних машин. Основним його призначенням є показ файлів, які було змінено між двома знімками віртуальної машини.

Значно розширено можливості virt-builder(1). Передбачено набагато більше способів налаштовування віртуальної машини. Можливе отримання шаблонів з декількох сховищ. Паралелізована внутрішня реалізація xzcat пришвидшує розпаковування шаблонів. Virt-builder використовує оптимізований планувальник для вибору найшвидшого способу побудови віртуальної машини. Тепер простіше користуватися virt-builder з інших програм. Додано підтримку перекладу метаданих. Реалізовано ефективнішу процедуру повторного встановлення міток SELinux для файлів. Можлива побудова гостьових систем для декількох архітектур. Поліпшено повідомлення щодо помилок. (Pino Toscano)

У virt-sparsify(1) передбачено новий параметр --in-place. Його використання призводить до розрідження системи на місці (без її копіювання), що набагато пришвидшує виконання завдання. (Значна допомога з боку Paolo Bonzini)

virt-sysprep(1) може вилучати і витирати файли під керуванням користувача. Ви можете заблокувати облікові записи користувачів або встановити випадкові паролі для облікових записів. Можна вилучати більше файлів журналу. Можна скасовувати передплату гостьових систем у Red Hat Subscription Manager. Новий гнучкий спосіб вмикати і вимикати дії. (Wanlong Gao, Pino Toscano)

У virt-win-reg(1) передбачено можливість використовувати адреси для визначення віддалених образів дисків.

virt-format(1) тепер може повертати отримане додаткове вільне місце основній системі.

guestfish(1) має додаткові змінні середовища для надання можливості точнішого налаштовування за допомогою запиту "><fs>". Guestfish тепер читає його (нечасто використовуваний) файл налаштувань у іншому порядку так, що локальні параметри перевизначають загальні параметри. (Pino Toscano)

virt-make-fs(1) було переписано на C, але програма лишилася незмінною за функціональними можливостями і використанням командного рядка.

Прив’язки до мов програмування

Прив'язки до OCaml містять новий модуль "Guestfs.Errno", який використовується для перевірки номерів помилок, які повертає "Guestfs.last_errno".

Відновлення працездатності тестів PHP. (Pino Toscano)

Перевірка

Засіб інспектування тепер може розпізнавати образи портативних систем Debian.

Архітектури

На ARMv7 (32-бітових) тепер передбачено підтримку пришвидшення KVM.

Передбачено підтримку Aarch64 (ARM 64-бітових), але частина, пов'язана із базовою системою, ще не працює.

Виправлено і удосконалено підтримку PPC64.

  Безпека

Відмова у обслуговуванні при інспектуванні образів дисків із пошкодженими томами btrfs
    Можна було спричинити аварійне завершення роботи libguestfs (та програм, які використовують libguestfs як бібліотеку) передаванням їм образу диска, на якому містився пошкоджений том btrfs.

    Причиною було розіменування нульового вказівника, яке спричиняло відмову в обслуговуванні. Ми вважаємо, що ширше використання цієї вразливості неможливе.

    Див. внесок d70ceb4cbea165c960710576efac5a5716055486 із виправленням. Це виправлено включено до стабільних гілок libguestfs ≥ 1.26.0, ≥ 1.24.6 та ≥ 1.22.8, а також до RHEL ≥ 7.0. Старіші версії libguestfs не є вразливими.

Якісніше створення випадкових паролів root та породжувачів псевдовипадкових послідовностей
    Виявлено і виправлено дві пов'язаних із захистом вади під час створення випадкових паролів root та породжувачів псевдовипадкових послідовностей чисел. По-перше, ми більше не читаємо зайві байти з /dev/urandom (більшу частину даних з якого ми просто відкидали). По-друге, ми змінили код, щоб уникнути нерівномірного розподілу за лишками. Ми вважаємо, що цими вразливостями не можна скористатися. (Обидві зміни запропоновано Edwin Török)

  API
Тепер перевіряється коректність параметрів GUID, коли їх передають до викликів програмного інтерфейсу. Раніше можна було передати довільний рядок. (Pino Toscano)

Нові програмні інтерфейси

"guestfs_add_drive_opts": новий параметр "discard"
    За допомогою нового параметра "discard" можливий точніший контроль над підтримкою відкидання та обрізання для певного диска. Це уможливлює створення розрідженіших файлів у основній системі, коли ви вилучаєте файли або надсилаєте виклик до програмного інтерфейсу "guestfs_fstrim".

"guestfs_add_domain": нові параметри: "cachemode", "discard"
    Ці параметри передаються під час додавання дисків домену.

"guestfs_blkdiscard"
    Відкинути усі блоки на пристрої guestfs. У поєднанні із описаним вище параметром "discard" це робить файл у основній системі розрідженим.

"guestfs_blkdiscardzeroes"
    Для перевірки того, чи відкинуті блоки читаються як нульові.

"guestfs_compare_*"
"guestfs_copy_*"
    Для усіх структури, повернути через програмний інтерфейс, libguestfs тепер створює функції "guestfs_compare_*" і "guestfs_copy_*", за допомогою яких можна порівнювати і копіювати структури.

"guestfs_copy_attributes"
    Копіювання атрибутів (зокрема прав доступу, xattrs, прав власності) з одного файла до іншого. (Pino Toscano)

"guestfs_disk_create"
    Гнучкий програмний інтерфейс для створення порожніх образів дисків з нуля. Надає змогу обійтися без викликів зовнішніх програм, зокрема qemu-img(1).

"guestfs_get_backend_settings"
"guestfs_set_backend_settings"
    Окремі параметри для різних модулів обробки (можна також встановити за допомогою змінної середовища "LIBGUESTFS_BACKEND_SETTINGS"). Основним призначенням є примусовий режим TCG у заснованих на qemu модулях обробки. Приклад:

     export LIBGUESTFS_BACKEND=direct
     export LIBGUESTFS_BACKEND_SETTINGS=force_tcg

"guestfs_part_get_name"
    Отримання мітки або назви розділу (для образів дисків GPT).

  Зміни у збиранні
Для збирання libguestfs 1.26 потрібні такі додаткові пакунки:

supermin ≥ 5
    Для збирання цієї версії libguestfs потрібен supermin версії 5.

flex, bison
    Virt-builder тепер використовує справжній засіб обробки для свого файла метаданих, отже ці інструменти тепер є обов'язковими.

xz  Тепер це обов'язкова частина для збирання там, де раніше (теоретично) вона була необов'язковою.

  Внутрішня частина роботи програми
Переписано засіб видобування повідомлень PO, що мало зробити його стійкішим. (Pino Toscano)

"podwrapper" повідомляє про помилку, якщо не знайдено аргумент зразка для --insert або --verbatim.

Libguestfs тепер передає параметр qemu -enable-fips для вмикання FIPS, якщо у qemu передбачено його підтримку.

Якщо ви не хочете вказувати типовий гіпервізор, можете скористатися "./configure --without-qemu".

Накладки copy-on-write [COW], які використовуються, наприклад, для придатних лише для читання дисків, тепер створюються за допомогою вбудованого програмного інтерфейсу (".create_cow_overlay").

Модуль обробки libvirt використовує якийсь вигадливий макрос C для створення XML. Ці є простішими і безпечнішими.

Було змінено формат файла ChangeLog. Тепер він такий самий як у "git log". Нетиповий формат більше не використовується.

Змінено процедуру запуску базової системи:

•   Базова система libguestfs тепер ініціалізує LVM у той самий спосіб, у який це робиться на фізичних машинах.

•   Базова система libguestfs не записує порожній рядок до /proc/sys/kernel/hotplug під час запуску.

    Зауважте, що вам слід налаштувати ваше ядро так, щоб у ньому було "CONFIG_UEVENT_HELPER_PATH=""", інакше ви матимете справу із дивними помилками LVM (це стосується будь-якої машини Linux, не лише libguestfs). (Peter Rajnoha)

Libguestfs тепер можна зібрати на архітектурах, де є ocamlc(1), але немає ocamlopt(1). (Hilko Bengen, Olaf Hering)

Не можна використовувати "./configure --disable-daemon --enable-appliance". Така комбінація усе одно не мала сенсу. Тепер її заборонено явним чином у скрипті configure.

Файл packagelist використовує "m4" для розгортання макросів замість "cpp".

  Виправлені вади

https://bugzilla.redhat.com/1073906
    java bindings inspect_list_applications2 throws java.lang.ArrayIndexOutOfBoundsException:

https://bugzilla.redhat.com/1063374
    [RFE] enable subscription manager clean or unregister operation to sysprep

https://bugzilla.redhat.com/1060404
    virt-resize does not preserve GPT partition names

https://bugzilla.redhat.com/1057504
    mount-local should give a clearer error if root is not mounted

https://bugzilla.redhat.com/1056290
    virt-sparsify overwrites block devices if used as output files

https://bugzilla.redhat.com/1055452
    libguestfs: error: invalid backend: appliance

https://bugzilla.redhat.com/1054761
    guestfs_pvs prints "unknown device" if a physical volume is missing

https://bugzilla.redhat.com/1053847
    Recommended default clock/timer settings

https://bugzilla.redhat.com/1046509
    ruby-libguestfs throws "expecting 0 or 1 arguments" on Guestfs::Guestfs.new

https://bugzilla.redhat.com/1045450
    Cannot inspect cirros 0.3.1 disk image fully

https://bugzilla.redhat.com/1045033
    LIBVIRT_DEFAULT_URI=qemu:///system breaks libguestfs

https://bugzilla.redhat.com/1044585
    virt-builder network (eg. --install) doesn't work if resolv.conf sets nameserver 127.0.0.1

https://bugzilla.redhat.com/1044014
    When SSSD is installed, libvirt configuration requires authentication, but not clear to user

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)

https://bugzilla.redhat.com/1039540
    virt-sysprep to delete more logfiles

https://bugzilla.redhat.com/1033207
    RFE: libguestfs inspection does not recognize Free4NAS live CD

https://bugzilla.redhat.com/1028660
    RFE: virt-sysprep/virt-builder повинні мати можливість блокувати обліковий запис користувача

https://bugzilla.redhat.com/1026688
    libguestfs fails examining libvirt guest with ceph drives: rbd: image name must begin with a '/'

https://bugzilla.redhat.com/1022431
    virt-builder не працює, якщо не існує $HOME/.cache

https://bugzilla.redhat.com/1022184
    libguestfs: не слід використовувати файл jar із зазначенням версії

https://bugzilla.redhat.com/1020806
    Усі дії libguestfs із LVM завершуються невдало у Debian/Ubuntu

https://bugzilla.redhat.com/1008417
    Need update helpout of part-set-gpt-type

https://bugzilla.redhat.com/953907
    virt-sysprep does not correctly set the hostname on Debian/Ubuntu

https://bugzilla.redhat.com/923355
    guestfish виводить у повідомленнях про помилки «\n» буквально

https://bugzilla.redhat.com/660687
    guestmount: "touch" command fails: touch: setting times of `timestamp': Invalid argument

https://bugzilla.redhat.com/593511
    [RFE] function to get partition name

https://bugzilla.redhat.com/563450
    list-devices returns devices of different types out of order

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.24
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.22.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
Можна використовувати User-Mode Linux (UML) як альтернативний модуль обробки (замість KVM). Використання цього модуля поліпшує швидкодію, особливо, якщо libguestfs використовується у віртуальній машині (наприклад, у хмарі). Підтримка UML здійснюється як для основного модуля. Див. "МОДУЛЬ USER-MODE LINUX" in guestfs(3), щоб дізнатися про цей модуль більше.

Тепер повністю підтримуються архітектури ARM (32-бітова) та PPC64.

Інструменти

virt-builder(1) — новий інструмент для збирання образів для віртуальних машин. За його допомогою ви можете швидко і безпечно створювати і налаштовувати гостьові системи.

Нові дії у virt-sysprep(1): вилучення файлів у /tmp і /var/tmp. Вилучення файлів баз даних RPM. Зміна паролів root та користувача. Вилучається більше файлів журналів. Нові дії, які типово не увімкнено: створення випадкових UUID для файлових систем. Скидання правил брандмауера. (Wanlong Gao)

virt-resize(1) та virt-sysprep тепер можуть використовувати адреси для визначення віддаленого диска.

Реалізовано використання "guestfish -N назва_файла=тип" для створення іменованого образу диска (замість типового test1.img тощо).

virt-sparsify(1) тепер перевіряє, чи достатньо місця на диску для завершення дії. Тепер неможлива ситуація, коли місце вичерпується під час виконання завдання.

virt-format(1) і virt-make-fs(1): новий параметр --label для встановлення мітки файлової системи.

Тепер можна скористатися прапорцем virt-resize --no-sparse для зміни розмірів на розділи або інші незанулені місця.

Прив’язки до мов програмування

Нові прив'язки до мови програмування Go.

API

Підтримка журналу systemd.

"guestfs_add_drive_opts" тепер може контролювати режим кешування qemu за допомогою нового параметра "cachemode". Ви можете вибрати поліпшену швидкодію для тимчасових дисків або надійний захист.

"guestfs_set_label" тепер працює з XFS і btrfs.

Нова подія GUESTFS_EVENT_WARNING для повідомлень із попередженнями.

Перевірка

Поліпшено інспектування гостьових систем SUSE (Olaf Hering).

Поліпшено підтримку нестандартних %systemroot% у Windows (Matthew Booth).

Удосконалено звітування про помилки у Augeas.

  Безпека

CVE-2013-2124
    https://bugzilla.redhat.com/show_bug.cgi?id=968306

    Була можливою відмова у обслуговування під час інспектування певних гостьових систем. Виправлення зворотно портовано на гілки 1.20 і 1.22.

CVE-2013-4419
    https://www.redhat.com/archives/libguestfs/2013-October/msg00031.html

    Виправлено незахищену обробку тимчасових каталогів для віддалених guestfish. Виправлення зворотно портовано на гілки 1.20 і 1.22.

  Нові програмні інтерфейси
 add-drive-scratch: додавання тимчасового диска
 aug-label
 aug-setm
 journal-open: підтримка журналу Systemd
 journal-close
 journal-next
 journal-skip
 journal-get
 journal-get-data-threshold
 journal-set-data-threshold
 remount: уможливлення коригування прапорця rw для змонтованих файлових систем
 set-uuid: встановлення UUID файлової системи

У програмних інтерфейсів "is-file", "is-dir", "is-blockdev", "is-chardev", "is-fifo", "is-socket" тепер з'явився додатковий прапорець "followsymlinks".

У "add-drive" передбачено новий параметр "cachemode".

  Зміни у збиранні
Для збирання libguestfs 1.24 потрібні такі пакунки:

Augeas ≥ 1.0.0

Вказаними нижче пакунками можна скористатися для розширення можливостей, але вони не є обов'язковими:

sd-journal
    Для читання файлів журналів з гостьових систем, де використовуються журнали.

url_mkcow
    Для модуля обробки UML.

curl
gpg
xz  Для virt-builder.

golang ≥ 1.1.1
    Для прив’язок до мови Go.

  Внутрішня частина роботи програми
Нові правила "make check-*", які замінили "make extra-tests". Докладніший опис можна отримати за допомогою команди "make help" і сторінки підручника guestfs(3).

Тепер можна використовувати valgrind для коду мовою Perl.

Код засобу інспектування перевірено за допомогою fuzz.

"make" більше не переходить рекурсивно до каталогу generator у кожному іншому каталозі. Це значно зменшує час збирання.

Додаткові тести для Augeas, hivex.

Додано час очікування на запуск у 20 хвилин для базової системи.

Додано час очікування (4 години) для усіх тестів, щоб можна було розібратися із випадком, коли повисає qemu або інші компоненти.

Реалізовано використання kvmclock і "-cpu host". Це поліпшує стабільність відліку часу та загальну швидкодію.

Виправлено режим "./configure --enable-packet-dump".

Переписано режим "./configure --enable-valgrind-daemon". Тепер розробники можуть використовувати цей прапорець увесь час.

Переписано модулі обробки так, щоб вони не залежали один від одного (хоча насправді вони не є завантажуваними модулями).

Якщо мережу увімкнено, використовуються налаштування визначення адрес (тобто /etc/resolv.conf) з основної системи.

  Виправлені вади

https://bugzilla.redhat.com/1019889
    libguestfs-tools.conf потрібна сторінка man

https://bugzilla.redhat.com/1018149
    Помилки valgrind у btrfs_subvolume_list

https://bugzilla.redhat.com/1002032
    mke2fs can't return the correct filesystem type when blockscount is less than 2048 for ext3

https://bugzilla.redhat.com/1001876
    Update "rsync-out" helpout for using wildcard

https://bugzilla.redhat.com/1001875
    Argument 'excludes' of tar-out does not work

https://bugzilla.redhat.com/1000428
    virt-format uses wrong partition type for vfat filesystems

https://bugzilla.redhat.com/1000121
    'sh' command before mount causes daemon to segfault

https://bugzilla.redhat.com/998513
    guestfish does not work when you mix --remote and --add options

https://bugzilla.redhat.com/998482
    guestfish remote prints "libguestfs: error: waitpid (qemu): No child processes"

https://bugzilla.redhat.com/995711
    list-filesystems command fails if there are no block devices

https://bugzilla.redhat.com/994517
    cache=none/O_DIRECT workaround doesn't work for images with backing files

https://bugzilla.redhat.com/989356
    cap-get-file will return error if the file has not be set capabilities

https://bugzilla.redhat.com/986877
    RFE: Implement set-uuid command

https://bugzilla.redhat.com/986875
    RFE: Implement set-label for xfs

https://bugzilla.redhat.com/985269
    Can't set acl value for a specified user with 'acl-set-file'

https://bugzilla.redhat.com/983218
    libguestfs double free when kernel link fails during launch

https://bugzilla.redhat.com/981715
    Make xfs filesystem failed with specified blocksize, gives "unknown option -b" error

https://bugzilla.redhat.com/981683
    "hivex-commit" should fail with a relative path

https://bugzilla.redhat.com/981663
    disk-format "qemu-img info: JSON parse error" when target file does not exist

https://bugzilla.redhat.com/978302
    mke2fs-J should give a meaningful error when specified type is anything except 'ext{2,3,4}'

https://bugzilla.redhat.com/975797
    Specifying virtio interface ('iface' parameter) breaks the direct backend - libguestfs hangs

https://bugzilla.redhat.com/975753
    "virt-resize --expand" and "virt-resize --resize" outputs error message for Win2008 32bit OS

https://bugzilla.redhat.com/975412
    inspection: Augeas expressions are broken with augeas >= 0.10

https://bugzilla.redhat.com/974904
    virt-resize --expand fails on Ubuntu Cloud Image

https://bugzilla.redhat.com/974489
    Regression: Fedora inspection broken by change from guestfs_exists to guestfs_is_file

https://bugzilla.redhat.com/972775
    txz-out command produces a bzip2-compressed file (should be xz-compressed)

https://bugzilla.redhat.com/969845
    upload to a directory occasionally hangs instead of failing

https://bugzilla.redhat.com/968875
    virt-sysprep should support URL-type arguments

https://bugzilla.redhat.com/624334
    blockdev-setbsz succeeds, but does not affect blockdev-getbsz

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.22
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.20.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
API

Віддалений доступ до таких дисків:

•   Network Block Device (nbd)

•   Secure Shell (ssh)

•   HTTP та HTTPS

•   FTP та FTPS

•   iSCSI

•   Gluster

•   Ceph/rbd (Mike Kelly)

•   Sheepdog

•   TFTP

Завантажувачі SYSLINUX і EXTLINUX тепер можна встановлювати на образи дисків за допомогою програмного інтерфейсу.

Засіб інспектування тепер може обробляти файлові системи, зокрема btrfs, у яких підтомами є окремі точки монтування (Matthew Booth).

«Методи долучення» тепер називатимуться «модулями обробки». Сумісність із наявним кодом збережено.

У назвах файлів можуть міститися символи «:», якщо використовується нова версія QEMU.

Інструменти

Virt-alignment-scan і virt-df можуть сканувати декілька гостьових систем паралельно.

Guestmount тепер передає до простору користувача точний номер помилки майже завжди.

Guestfish та інші інструменти тепер можуть використовувати адресоподібний синтаксис для доступу до віддалених дисків. Приклад:

 guestfish -a ssh://example.com/шлях/до/диска.img

Guestfish та guestmount тепер надають вам змогу вказувати тип файлової системи під час монтування, що є безпечнішими способом монтування (Dave Vasilevsky).

Guestfish тепер є «командною оболонкою файлової системи гостьової операційної системи».

Guestfish тепер надає змогу використовувати лише 1 "true" "t" "yes" "y" "on" 0 "false" "f" "no" "n" "off" як булеві значення (без врахування регістру символів) і повертає помилку для усіх інших рядків.

Новий інструмент "guestunmount" для безпечного демонтування файлових систем FUSE.

За допомогою прапорця "guestmount --no-fork" тепер можна запобігти перетворенню guestmount на фонову службу.

Virt-resize тепер типово використовує розріджені копії, значно заощаджуючи місце на диску для гостьових систем, які є майже порожніми.

Інструкції доповнення команд за Tab у bash було переписано, тепер у них враховано більшість інструментів та реалізовано правильне доповнення "--довгих" параметрів. Крім того, скрипти доповнення bash завантажуються на вимогу.

Прив’язки до мов програмування

У програмному інтерфейсі Java тепер передбачено підтримку подій.

Об'єкт Python тепер успадковується від базового класу "object".

Методи Python, які раніше повертали список кортежів, тепер можуть повертати словники Python. З метою забезпечення зворотної сумісності, вам доведеться увімкнути цю можливість за допомогою використання параметра конструктора "guestfs.GuestFS (python_return_dict=True)".

Прив'язки до PHP тепер належним чином перевірено, у них виправлено декілька вад.

Вилучено застарілу бібліотеку Perl "Sys::Guestfs::Lib". https://www.redhat.com/archives/libguestfs/2013-April/msg00001.html

Приклади

Нові приклади програм показують, як увімкнути діагностику і перехопити повідомлення журналу.

Інше

Автори дистрибутивів можуть додавати довільні додаткові пакунки до базової системи за допомогою такої команди:

 ./configure --with-extra-packages="список назв пакунків"

Автори дистрибутивів можуть скористатися такою командою:

 ./configure --with-supermin-extra-options="..."

для додавання довільних додаткових параметрів supermin.

  Безпека
У цьому випуску вад захисту не виявлено.

  Нові програмні інтерфейси
 cp-r
 extlinux
 feature-available
 get-program
 is-whole-device
 part-get-gpt-type
 part-set-gpt-type
 rename
 set-program
 syslinux

Лише C:

 guestfs_event_to_string

  Внутрішня частина роботи програми
Інструмент febootstrap перейменовано на «supermin». Libguestfs може використовувати обидві назви, але тепер пріоритетною назвою є «supermin». http://people.redhat.com/~rjones/supermin/

Для збирання libguestfs тепер обов'язковою є libxml2.

Для збирання версії з git тепер обов'язковою є програма hivexregedit (з hivex).

Внутрішніми функціями більше не можна користуватися, якщо функція виклику не визначає "-DGUESTFS_PRIVATE=1".

Увімкнено попередження компілятора C у прив'язках до Python і Ruby.

Реалізовано раннє і зрозуміле завершення роботи, якщо у libvirt не передбачено підтримки qemu/KVM (наприклад, якщо типовим з'єднанням libvirt є Xen).

Реалізовано правило "make print-subdirs", яке є корисним для вибіркового запуску тестів.

Декілька виправлень, які уможливлюють роздільне збирання (каталог коду != каталог збирання).

Декілька виправлень у прив’язках до Haskell.

Програмні інтерфейси "ln" та "ln-f" тепер правильно перехоплюють "errno".

Тести прив'язок до мов (здебільшого) використовують стандартну схему нумерування і тестують однаковий діапазон можливостей для усіх мов. Крім того, зменшено кількість запусків, які для цього потрібні, отже виконання тестів значно пришвидшено.

Код бібліотеки на внутрішньому рівні використовує GCC "__attribute__((cleanup))" (якщо доступне) для спрощення отримання пам'яті.

Перевпорядковано внутрішні файли заголовків. Див. коментарі у src/guestfs-internal*.h

Код внутрішнього використання, який є спільним для бібліотеки та деяких інструментів, тепер зберігається у статичній бібліотеці "libutils".

Майже у всіх підкаталогах тепер використовується паралельне збирання, хоча, слід зауважити, що усі каталоги верхнього рівня все ще збираються послідовно.

З коду вилучено усі випадки використання "PATH_MAX" і "NAME_MAX".

Для програмного інтерфейсу Java тепер потрібна JVM ≥ 1.6.

Реалізовано примусове використання "serial-tests" із automake ≥ 1.12.

Створено абстракцію використання сокетів у шарі протоколу бібліотеки, що уможливлює додавання інших нових шарів, відмінних від POSIX (див. src/conn-socket.c).

Якщо можливо, використовується "qemu-img info --output json" з метою зробити обробку виведених цією командою даних безпечнішою.

Тепер дистрибутиви можуть використовувати "make INSTALLDIRS=vendor install" для розміщення прив'язок до Ruby у відповідному каталозі. Таким чином усунено потребу у зовнішній латці у Fedora та Debian.

Файли журналу valgrind тепер записуються до tmp/valgrind-ДАТА-PID.log

"make clean" очищує локальний каталог "tmp/".

Тести програмного інтерфейсу мовою C переписано із використанням гнучкішої мови генератора, що уможливило виконання довільного коду C під час тестування.

  Виправлені вади

https://bugzilla.redhat.com/961812
    Segfault in inspect-fs.c in mountable code

https://bugzilla.redhat.com/957772
    tar-out and base64-out quoting error

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

https://bugzilla.redhat.com/948324
    Не вдається виконати інспектування, якщо не встановлено libosinfo

https://bugzilla.redhat.com/928995
    file on zero-sized file now produces "empty " instead of "empty"

https://bugzilla.redhat.com/921292
    qemu: could not open disk image /tmp/.../snapshot1: Permission denied

https://bugzilla.redhat.com/921040
    "error: external command failed, see earlier error messages" message needs to change

https://bugzilla.redhat.com/920225
    libguestfs should use --output json (if supported) to safely parse the output of qemu-img command

https://bugzilla.redhat.com/916780
    feature request: guestmount --with-cleanup-pipefd

https://bugzilla.redhat.com/914934
    oom-killer kills guestfsd when tar-in a lot of data

https://bugzilla.redhat.com/914931
    FileIn commands cause segfault if appliance dies during the file copy in

https://bugzilla.redhat.com/913145
    Misc leaks in virNetClientProgramCall in libvirt 1.0.2

https://bugzilla.redhat.com/912499
    Security context on image file gets reset

https://bugzilla.redhat.com/909836
    libguestfs-test-tool --qemu segfaults

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

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."

https://bugzilla.redhat.com/908321
    virt-cat fails on directory names "/dev/stdout: error in chunked encoding"

https://bugzilla.redhat.com/907554
    btrfs causes subsequent ntfs-3g filesystem to fail

https://bugzilla.redhat.com/905341
    "No such file or directory" when execute "hivex-commit"

https://bugzilla.redhat.com/903620
    btrfs_subvolume_list broken due to change in subvolume list output

https://bugzilla.redhat.com/895910
    guestmount: rename() incorrectly follows symbolic links

https://bugzilla.redhat.com/895905
    guestmount: link() incorrectly returns ENOENT, when it should be EXDEV

https://bugzilla.redhat.com/895904
    checksums-out fail to compute the checksums of all regular files in directory

https://bugzilla.redhat.com/894545
    libguestfs FTBFS on Fedora 19 because of new ruby

https://bugzilla.redhat.com/890027
    virt-sysprep: Setting hostname, domain name and pretty name on Fedora 18 correctly

https://bugzilla.redhat.com/887971
    pvcreate fails if partition contains a swap signature

https://bugzilla.redhat.com/887520
    zero_free_space: open: /sysroot//ujqqq135.rd3: Cannot allocate memory

https://bugzilla.redhat.com/886915
    libguestfs with libvirt attach-method fails with odd error if default hypervisor is Xen

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.

https://bugzilla.redhat.com/811649
    libguestfs cannot open disk images which are symlinks to files that contain ':' (colon) character

https://bugzilla.redhat.com/664558
    RFE: Allow to set log callback in Ruby bindings

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.20
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.18.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
libvirt і sVirt (контейнер SELinux)

Ви можете, якщо хочете, скористатися libvirt для запуску і керування базовою системою за допомогою:

•   встановленням "LIBGUESTFS_ATTACH_METHOD=libvirt[:URI]"

•   за допомогою "./configure --with-default-attach-method=libvirt[:URI]"

•   або виклику методу "guestfs_set_attach_method" програмного інтерфейсу

Для захисту базової системи libguestfs використовується SVirt (контейнер SELinux), якщо вибрано модуль обробки libvirt.

virtio-scsi, більша кількість дисків, з'єднання у «гарячому» режимі

Тепер типово використовується virtio-scsi, якщо цей інтерфейс доступний. Це набагато збільшує кількість дисків, які можна додати до одного дескриптора libguestfs (аж до 255).

Тепер можна додавати і вилучати диски після запуску у «гарячому» режимі.

Libguestfs тепер може працювати із > 25 дисками, в усіх програмних інтерфейсах, засобах та тестах.

Тепер ви можете додавати до дисків мітку і посилатися на них за міткою (/dev/disk/guestfs/МІТКА) замість використання назв пристроїв (/dev/sda).

Нові можливості бібліотеки

Через програмний інтерфейс читаються і записуються списки керування доступом POSIX (ACL) та можливості файлової системи Linux.

Реалізовано підтримку динамічних дисків Windows. Метадані можна лише читати (не можна вносити зміни до томів або створювати томи). Втім дані та файлові системи на томах можна монтувати, читати та записувати (Matthew Booth).

Реалізовано Hivex (редагування реєстру Windows) безпосередньо за допомогою програмного інтерфейсу, що робить читання та редагування реєстру Windows набагато ефективнішим.

Повторно реалізовано декілька програмних інтерфейсів libguestfs так, що у них більше немає жодних обмежень на виведення даних. Серед повторно реалізованих програмних інтерфейсів такі: "guestfs_cat", "guestfs_find", "guestfs_read_file", "guestfs_read_lines", "guestfs_write", "guestfs_write_append", "guestfs_lstatlist", "guestfs_lxattrlist", "guestfs_readlinklist", "guestfs_ls".

virt tools

"guestfish touch 'win:c:\новий_файл'" тепер працює як слід.

У "guestfish" реалізовано новий параметр --network, за допомогою якого можна увімкнути для користувача мережу у libguestfs.

Уможливлено встановлення змінної середовища "GUESTFISH_PS1" для використання форматованих запитів щодо команд у "guestfish".

Тепер у virt-rescue доступні команди "rsync", "ssh", "less" та "lrzip". Крім того, для створення нарощувальних копій можна скористатися "rsync" за допомогою програмного інтерфейсу.

"virt-sparsify" використовує qcow2 v3 для підвищення ефективності.

Поліпшення у "virt-sysprep":

•   створення нових UUID для фізичних томів та груп томів

•   вилучення ідентифікатора локальної машини (Wanlong Gao)

•   вилучення даних ABRT (Wanlong Gao)

•   вилучення ключів і файлів журналів puppet (Wanlong Gao)

•   вилучення файлів обліку процесів (Wanlong Gao)

•   новий параметр --firstboot, який уможливлює створення скриптів firstboot для налаштовування гостьових систем

•   вилучення поля HOSTNAME з файлів "ifcfg-eth*" (Wanlong Gao)

•   різноманітні поліпшення для SuSE (Olaf Hering)

•   вилучення кешу сторінок підручника (Wanlong Gao)

•   вилучення даних щодо аварій, створених kexec-tools (Wanlong Gao)

"virt-make-fs" тепер може створювати віртуальні дискети (VFD).

У "guestmount" реалізовано параметр --pid-file, яким можна скористатися для уникнення конкуренції між демонтуванням файлової системи і використанням підлеглого образу диска.

прив’язки до мов програмування

У цьому випуску додано повноцінні прив'язки до Lua (дякуємо Jerome Vuarand за багато пропозицій).

У Ruby хеш для необов'язкових аргументів є необов'язковим.

У Python необов'язкові аргументи тепер не використовують спеціальних «сторожових» значень, отже як необов'язковий параметр можна передавати будь-яке ціле число.

Прив'язки до Erlang тепер постачаються із прикладами і тестами.

Прив'язки до Erlang тепер обробляють 64-бітові цілі параметри належним чином.

Автоматизовані «bindtests» тепер тестують правильність передавання 64-бітових параметрів. У результатів виявлено і виправлено декілька вад у прив'язках до мов програмування.

Поліпшено обробку блокування та впроваджено функції, які не блокують обробку. Це має зробити виклики libguestfs ефективнішими.

перевірка

Тепер передбачено обробку гостьових систем Windows без обмежень на розмір реєстру. Додавання програмного інтерфейсу hivex до програмного інтерфейсу libguestfs зробило інспектування на внесення змір до реєстру Windows у гостьових системах набагато ефективнішим.

Поліпшено підтримку гостьових систем SuSE (Olaf Hering).

Реалізовано повернення даних щодо архітектури встановлених програм (John Eckersberg).

Реалізовано підтримку Windows 8.

Тепер підтримується Fedora 18.

Засіб інспектування ISO, CD та DVD тепер може використовувати базу даних libosinfo.

порти

Libguestfs без базової системи можна зібрати у Mac OS X (Masami HIRATA).

RHEL 5 тепер явним чином підтримується у гілці «oldlinux» основного сховища git.

Реалізовано підтримку 64-бітової архітектури PowerPC. Крім того, libguestfs було проінспектовано на вади, пов'язані із порядком байтів. Виявлені вади було виправлено.

фонова служба

Включено сторінку підручника для фонової служби (guestfsd(8)).

  Безпека
Файл журналу guestfish

Файл журналу $HOME/.guestfish тепер створюється із правами доступу 0600 (раніше використовувалася маска 0644), отже, його більше не зможуть читати сторонні користувачі.

CVE-2012-2690

У старих версіях програми "virt-edit" та команди команди "edit" "guestfish" створювався новий файл, у якому зберігалися зміни, але не встановлювалися права доступу та інші параметри так, щоб вони збігалися із параметрами старого редагованого файла. У результаті після редагування конфіденційного файла, зокрема /etc/shadow, він ставав доступним для сторонніх користувачів.

Цій ваді було надано код CVE-2012-2690. Її було виправлено у libguestfs ≥ 1.16.

Докладніші дані можна знайти на сторінці https://bugzilla.redhat.com/show_bug.cgi?id=788642

  Нові програмні інтерфейси
 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 [додано додаткові аргументи label та uuid]
 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 [зворотне портування на 1.16 та 1.18]
 tar-in [додано прапорець compress]
 tar-out [додано прапорці compress, numericowner, excludes]
 umount [додано додаткові аргументи force і lazy]
 utsname
 xfs-admin (Wanlong Gao)
 xfs-growfs (Wanlong Gao)
 xfs-info (Wanlong Gao)
 xfs-repair (Wanlong Gao)

Лише у програмному інтерфейсі C:

 guestfs_push_error_handler
 guestfs_pop_error_handler

  Внутрішня частина роботи програми
qemu ≥ 1.1 є обов'язковою (бажаною є версія ≥ 1.2).

febootstrap ≥ 3.20 є обов'язковою.

libvirt є необов'язковою, але якщо ви хочете користуватися новим модулем libvirt для запуску базової системи, тоді обов'язковою є libvirt ≥ 0.10.2.

Для усього коду було виконано перевірку Coverity. Виправлено багато вад (дякуємо Ondrej Vasik, Kamil Dudka).

Функції, у яких раніше не було необов'язкових аргументів, тепер можна перетворити на функції із необов'язковими аргументами, що робить розширення програмного інтерфейсу набагато гнучкішим. Для користувачів програмного інтерфейсу збережено зворотну сумісність за кодом і виконуваними файлами.

Змінено спосіб, у який програмні інтерфейси і структури libguestfs представляються у генераторі, так, щоб використовувалися структури OCaml замість кортежів. Це робить описи у генераторів гнучкішими та простішими для розуміння. Подробиці викладено у внесках 39d1a7db і eb185eef.

Поділ коду бібліотеки на більшу кількість файлів:

•   Модулі запуску тепер зберігаються у окремих файлах, наприклад src/launch-appliance.c, "src/launch-libvirt.c".

•   Породжений код дій тепер поділено на декілька файлів src/action*.c для пришвидшення збирання.

•   Величезний файл src/guestfs.c поділено на декілька менших логічних модулів.

POD (документація) тепер створюється з використанням переписаної програми на Perl, а не pod2* + скриптів оболонки.

Сторінки підручника тепер містять стабільні дати (Hilko Bengen).

Пропущені тести тепер виходять із кодом 77, отже потрапляють до "SKIP:" у виведених "make check" даних.

Паралельний тест щодо mount-local було переписано на C (RHBZ#838081).

Тепер передбачено підтримку Ruby 1.8.5 (хоча перевага надається Ruby ≥ 1.9).

Прив'язки до Perl тепер можна вимкнути за допомогою "./configure --disable-perl" (Wulf C. Krueger). Зауважте, що сам інтерпретатор Perl усе ще потрібен для збирання libguestfs.

Прив'язки до Java тепер можна увімкнути або вимкнути за допомогою "./configure --with-java" або "./configure --without-java" (Wulf C. Krueger).

Нові параметри налаштування: "./configure --enable-code-profiling" і "./configure --enable-code-coverage".

Декілька виправлень щодо використання 64-бітових цілих чисел у прив'язках до мов програмування.

Модуль базової системи тепер використовує sgabios замість vgabios (Dan Berrange).

Скрипт "./run" тепер встановлює достатньо змінних середовища, щоб можна було запускати програми на OCaml, Python, Ruby, Java, GJS, Erlang, Lua.

Реалізовано прапорець "./run --test" для запуску тестів із мінімальним виведенням. Також скрипт виводить час, який було витрачено на кожен із тестів.

Скрипт "./run" тепер збирає шляхи накопичувально, тобто ви можете скористатися "./run" двічі або скористатися скриптами "./run" libguestfs і libvirt разом.

Тепер можна видобути список зовнішніх команд, потрібних для роботи фонової служби, що робить збирання базової системи на деяких дистрибутивах простішим (Olaf Hering).

Тепер під час виконання "make check" виконується тестування "virt-rescue".

Генератор тепер вилучає невикористані створені файли. Це допомагає, якщо виконуються маневри модифікаціями коду за допомогою git rebase, git bisect тощо.

Тести тепер запускаються у окремому каталозі "tmp/" верхнього рівня у ієрархії коду. Це надає змогу створювати мітки для каталогу для SELinux (sVirt), а також спрощує чищення ієрархії коду.

Розширено діапазон роботи "make syntax-check" і усунено багато проблем у основному коді, які було виявлено за допомогою перевірки синтаксису (дякуємо Jim Meyering).

До створених файлів додано режим Emacs (-*- foo -*-).

Виведення смужки поступу тепер надсилається до /dev/tty, отже не потрапляє до звичайних виведених програмою даних. virt-resize і virt-sparsify тепер придушують дані смужки поступу, якщо стандартним виведенням не є tty.

Впроваджено параметр "./configure --without-libvirt". Він є корисним для тестування того, чи можна зібрати код без libvirt.

Впроваджено вбудовану мінібібліотеку для запуску команд. Це надало нам змогу переспрямувати повідомлення про помилки від зовнішніх команд до записів подій.

Повністю переглянуто код для обробки тимчасових каталогів та кешу базової системи.

Код для тимчасового ігнорування або вимикання повідомлень про помилки тепер виглядає так:

 guestfs_push_error_handler (g, NULL, NULL);
 guestfs_mkdir (g, "/foo"); /* Нам все одно, якщо спроба буде невдалою. */
 guestfs_pop_error_handler (g);

Усунено каталог "tests/extra". «Додаткові тести» тепер поділено на декілька окремих цілей, наприклад "make check-valgrind". Скористайтеся командою "make help", щоб дізнатися більше про ці цілі.

Ядру базової системи тепер передається параметр "lpj", якщо використовується TCG. Це має поліпшити стабільність відліку часу (дякуємо Marcelo Tosatti, Olaf Hering).

  Виправлені вади

https://bugzilla.redhat.com/882417
    Інструменти libguestfs показують повідомлення про незрозумілі помилки, якщо TMPDIR не є абсолютним шляхом

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."

https://bugzilla.redhat.com/881953
    libguestfs: перехід на /etc/hostname, /etc/vconsole.conf, /etc/locale.conf

https://bugzilla.redhat.com/880801
    virt-df із двома параметрами -a options показує некоректну назву образу диска

https://bugzilla.redhat.com/879416
    libguestfs-test-tool pauses when you use --help option

https://bugzilla.redhat.com/876579
    mke2fs API does not apply block device naming translation to journaldevice optarg

https://bugzilla.redhat.com/860235
    SELinux policy ought to allow qemu to write to unconfined_u:object_r:user_tmp_t:s0

https://bugzilla.redhat.com/859949
    RFE: inspect-list-applications does not return the architecture of RPM packages

https://bugzilla.redhat.com/859885
    inspect-list-applications does not list all installed RPM packages with same name and different versions

https://bugzilla.redhat.com/859876
    guestfish printed paths are not canonicalized

https://bugzilla.redhat.com/859875
    Progress bar output should go to tty(?) stderr(?)

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

https://bugzilla.redhat.com/858128
    libguestfs fail to list devices added by add-drive-ro-with-if twice

https://bugzilla.redhat.com/858126
    virt-inspector fail to work with some windows guests

https://bugzilla.redhat.com/853762
    virt-sparsify should use a more robust method to detect the input format

https://bugzilla.redhat.com/853393
    libvirt doesn't label console, serial sockets

https://bugzilla.redhat.com/853159
    virt-rescue у Fedora 18 повністю непрацездатний

https://bugzilla.redhat.com/852394
    libguestfs inspection limits registries to 100 MiB

https://bugzilla.redhat.com/852194
    virt-sparsify --compress не працює, якщо дані виводяться у необробленому форматі (raw)

https://bugzilla.redhat.com/847881
    RFE: allow extra arguments (like --exclude) to tar-out

https://bugzilla.redhat.com/847880
    tar-out should allow (or force) --numeric-owner

https://bugzilla.redhat.com/845522
    guestfish "copy-out / localdir" command fails with "No such file or directory"

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"

https://bugzilla.redhat.com/842307
    RFE: Need help designing and implementing selinux policy for libguestfs/sVirt

https://bugzilla.redhat.com/840572
    virt-make-fs / tar-in має підтримувати vfat належним чином

https://bugzilla.redhat.com/840115
    guestfish touch problem - case_sensitive_path API expects the file to exist

https://bugzilla.redhat.com/836710
    Втрата даних під час запису до файлів дисків у форматі qcow2

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)"

https://bugzilla.redhat.com/824716
    compress-device-out didn't support bzip2

https://bugzilla.redhat.com/824043
    guestfish unrecognized mount option gives confusing error message

https://bugzilla.redhat.com/823887
    Файли із китайськими ієрогліфами у назвах не можна створити у файловій системі vfat

https://bugzilla.redhat.com/823885
    virt-make-fs cannot create vfat filesystem containing filesystems with Chinese characters

https://bugzilla.redhat.com/823883
    virt-make-fs -t fat не працює, повідомляючи про незрозумілу помилку

https://bugzilla.redhat.com/823821
    Inspection fails when /etc/HOSTNAME is empty

https://bugzilla.redhat.com/801117
    libguestfs cannot get icon for Windows 8

https://bugzilla.redhat.com/798979
    Ubuntu install CDs from oneiric onwards are not recognized: "multi-boot operating systems are not supported"

https://bugzilla.redhat.com/782167
    libguestfs doesn't recognize Windows Dynamic disks in some configurations, eg. spanned

https://bugzilla.redhat.com/713678
    Not all febootstrap messages are redirected to log callbacks

https://bugzilla.redhat.com/627675
    libguestfs inspector code cannot handle /dev/disk/by-id/* paths

https://bugzilla.redhat.com/602997
    part-get-bootable gives wrong result with an unordered part layout

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.18
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.16.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
virt tools

   - virt-sysprep переписано із розширенням можливостей (дякуємо Wanlong Gao)
     http://libguestfs.org/virt-sysprep.1.html

- virt-sparsify --zero — новий параметр, який занулює вказаний за назвою розділ або файлову систему

- virt-sparsify тепер може безпечно розріджувати розділи резервної пам'яті Linux

   - virt-sparsify виправлено так, щоб вона виконувала спорожнення після ^C
     http://libguestfs.org/virt-sparsify.1.html

- створено новий інструмент «libguestfs-make-fixed-appliance» для збирання фіксованих базових систем, які може бути скопійовано на інші машини, де не передбачено підтримки febootstrap
     http://libguestfs.org/libguestfs-make-fixed-appliance.1.html

- virt-filesystems тепер показує батьківські записи (контейнери) MD
     devices and volume groups

- virt-alignment-scan, запущена без аргументів, показує дані щодо вирівнювання для усіх доменів libvirt

- virt-df та virt-alignment-scan показують інформацію з усіх гостьових систем, навіть якщо диск недоступний

- новий параметр virt-rescue --scratch для створення тестових дисків
     https://rwmj.wordpress.com/2012/04/26/virt-rescue-scratch/#content

- virt-make-fs тепер можна скористатися для створення btrfs

- virt-edit зберігає права доступу, UID, GID та контекст SELinux під час редагування файлів

- guestfish передає подію закриття за допомогою stdout та віддаленого зв'язку належним чином

- новий параметр guestfish --pipe-error надає вам змогу виявляти помилку у каналах командної обробки

   - guestfish, у замінниках тепер розгортаються назви пристроїв

- усі засоби віртуалізації тепер правильно обробляють коми і двокрапки у назвах файлів

перевірка

   - додано підтримку Fedora 17+

- додано підтримку FreeDOS

- додано підтримку Buildroot та Cirros

- засіб інспектування тепер повністю сумісний із гостьовими системами Windows, які оброблено sysprep (дякуємо Grant Williamson).

API

- реалізовано широку підтримку btrfs, зокрема додавання декількох пристроїв, fsck, знімки (дякуємо Wanlong Gao)

- новий програмний інтерфейс mount-local впроваджує підтримку FUSE безпосередньо до основного програмного інтерфейсу libguestfs
     https://rwmj.wordpress.com/2012/05/14/tip-using-mount-local-api-from-c/#content

- нова сторінка підручника: guestfs-performance(1), де містяться підказки щодо поліпшення швидкодії
     http://libguestfs.org/guestfs-performance.1.html

   - Нова сторінка підручника: guestfs-faq(1), Поширені питання та відповіді на них
     http://libguestfs.org/guestfs-faq.1.html

- тепер для програмних інтерфейсів, підтримки яких не передбачено, повертається ENOTSUP (від guestfs_last_errno)

приклади

- у прикладі copy_over продемонстровано копіювання між двома дескрипторами

- програма display_icon показує піктограму, пов'язану із гостьовою системою

- приклад mount_local.c» демонструє, як користуватися програмним інтерфейсом mount-local

  Безпека
  (у цьому випуску не було виявлено або виправлено жодної проблеми захисту)

  Нові програмні інтерфейси
rfs-device-add: додавання пристроїв до файлової системи btrfs. btrfs-device-delete: вилучення пристроїв із файлової системи btrfs. btrfs-filesystem-sync: синхронізація файлової системи btrfs. btrfs-filesystem-balance: балансування файлової системи btrfs. btrfs-fsck: перевірка файлової системи btrfs. btrfs-set-seeding: вмикання або вимикання розсіювання. btrfs-subvolume-create: створення знімка btrfs. btrfs-subvolume-delete: вилучення знімка btrfs. btrfs-subvolume-list: виведення списку знімків і підтомів btrfs. btrfs-subvolume-set-default: встановлення типового підтому btrfs. btrfs-subvolume-snapshot: створення придатного до запису знімка btrfs. get-e2attrs: виведення списку атрибутів файла ext2. get-e2generation: отримання засобу створення файла ext2. isoinfo, isoinfo-device: отримання даних із заголовка файлів ISO. llz: виведення списку файлів із даними SELinux. lvcreate-free: створення логічного тому LVM у відсотках до залишкового вільного місця. md-stat: повертає список підлеглих пристроїв пристрою MD. mkfs-brtfs: створення файлової системи btrfs із усіма налаштовуваними параметрами. mount-local, mount-local-run, umount-local: підтримка FUSE у програмному інтерфейсі. ntfsclone-in, ntfsclone-out: збереження і відновлення NTFS з резервної копії. ntfsfix: виправлення типових помилок і примусове виконання у Windows перевірки NTFS. set-e2attrs: встановити або зняти атрибути ext2 файла. set-e2generation: встановити створення файла ext2. set-label: уніфікований інтерфейс для встановлення мітки файлової системи. vgmeta: отримання метаданих групи томів. wipefs: витирання підписів файлових систем з пристрою. zero-free-space: занулення вільного місця у файловій системі.

  Внутрішня частина роботи програми
- Вилучено підкаталог debian/. Рекомендуємо вам користуватися офіційними пакунками Debian, створеними Hilko Bengen.
   http://people.debian.org/~bengen/libguestfs/
   http://packages.debian.org/search?keywords=libguestfs

- Тепер майже для усіх дескрипторів файлів, які відкриває файлова система, використовується O_CLOEXEC / SOCK_CLOEXEC.

- при послідовному читанні або запису великих файлів викликається posix_fadvise.

- реалізовано закриття усіх дескрипторів файлів та вилучення усіх обробників сигналів у процесі відновлення

- виправлено декілька попереджень gcc та вад, виявлених Coverity; також було виправлено багато вад строго переповнення

- впроваджено використання ./configure --enable-valgrind-daemon для того, щоб можна було скористатися valgrind для фонової служби; виправлено багато помилок

- впроваджено використання ./configure --with-qemu-options для передавання додаткових параметрів qemu

- тепер у фоновій службі є придатний до розширення тип рядкового буфера (DECLARE_STRINGSBUF)

- файл заголовків <guestfs.h> тепер працює у C++, і у нас є перевірка пов'язаних із цим регресій

- декілька програмних інтерфейсів, які слід викликати лише у стані CONFIG, тепер повідомляють про помилку, якщо їх викликано у іншому стані

- виправлено .gitignore так, щоб шляхи були абсолютними

- розгорнуто прив'язки до gobject, зокрема прив'язку подій libguestfs до сигналів gobject (дякуємо Matt Booth)

- належним чином створюється документація gobject (дякуємо Matt Booth)

- файли заголовків gobject тепер зберігаються у окремому підкаталозі

- тепер працює тест CompareWithString у генераторі

- у типах полів структур FUInt32, FUInt64 тепер використовуються належні типи XDR

- тести OCaml тепер працюють із байткодом і звичайним кодом.

- у java використовується -Xlint:all і виправлено усі попередження

 - bmptopng, wrestool (тощо) missing або failure більше не виводить повідомлень із попередженнями

- ruby: використано RbConfig замість Config.

- PYTHONPATH встановлюється скриптом ./run.

- процес збирання базової системи тепер є безпечним щодо потоків виконання.

- у базовій системі тепер використовується ip замість програм ifconfig і netstat

 - декілька виправлень, які уможливили належну роботу засобів паралельного збирання

 - guestfish --listen у новій версії належним чином виконує чищення від зайвих даних

 - вилучено стан BUSY

 - gettextize вилучено і замінено на простий Makefile.am

 - реалізовано підтримку gettext у virt-resize, virt-sparsify і virt-sysprep

 - ліпша підтримка архітектури arm

  Виправлені вади
 - 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

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.16
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.14.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
libguestfs

 - уможливлено створення файлових систем XFS на наявних файлових системах (Wanlong Gao)

- (невказане) типове вирівнювання для part-disk змінено на 64 кБ для поліпшення підтримки високоякісних сховищ, з'єднаних із мережею

   - нова сторінка підручника, guestfs-testing(1)

 - list-filesystems тепер повертає пункти пристроїв MD, які містять файлові системи (Matthew Booth)

   - підтримка GCC >= 4.7 (Jim Meyering)

- реалізовано перевірку повторного додавання користувачем диска (Wanlong Gao).

прив’язки до мов програмування

- експериментальні прив'язки до GObject із підтримкою інтроспекції GObject. Тепер ви можете використовувати libguestfs з Javascript. Будь ласка, зауважте, що прив'язки у цьому випуску не є стабільними і остаточними. (Matthew Booth).

   - підтримка Ruby >= 1.9

- прив'язки до Ruby можна вимикати окремо (Hilko Bengen)

   - підтримка Python 2.6, 3.x (Richard Jones, Hilko Bengen)

   - підтримка PHP >= 5.4

- у прив'язках до Perl доступний новий хеш %guestfs_introspection, отже ви можете виконувати за його допомогою опитування щодо необов'язкових аргументів

перевірка

- уможливлено інспектування пристроїв MD (Matthew Booth)

- реалізовано підтримку гостьових систем GNU/Hurd

guestfish

- події libguestfs (зокрема події смужки поступу та повідомлення журналу) тепер можна перехоплювати і обробляти за допомогою визначених користувачем скриптів оболонки.

- уможливлено доповнення за Tab для пристроїв MD (Matthew Booth)

virt tools

- новий інструмент virt-format для витирання і створення порожніх дисків

- нові параметри virt-sparsify --compress і -o для уможливлення виведення стиснених даних та виведення у іншому форматі

- virt-sparsify тепер може виявляти і розріджувати файли .vdi

- virt-sysprep більше не потребує xmlstarlet; додано новий параметр virt-inspector --xpath для заміни цієї функціональної можливості

- virt-rescue має новий параметр --suggest, за допомогою якого реалізовано пропозиції команд монтування для гостьової системи

- virt-resize більше не потребує виконуваного файла pcre OCaml

libguestfs live

- фонова служба більше не намагається редагувати ваші поточні налаштування /etc/lvm

- усунено потенційну проблему захисту, пов'язану із передбачуваними назвами у /tmp (Steve Kemp)

  Безпека
  CVE-2011-4127, RHBZ#757071
  Усунено можливе розширення прав доступу за допомогою SG_IO ioctl
  Докладніший опис: https://github.com/libguestfs/libguestfs/commit/9a5f784d511a8f00a8386f316eab41fe660430db

  Нові програмні інтерфейси
blkid: виводить усі атрибути пристрою, відомого blkid (Wanlong Gao) e2fsck: надає доступ до ширшого спектра можливостей e2fsck (Wanlong Gao) list-md-devices: повертає список пристроїв MD Linux (Matthew Booth) md-create: створює пристрій MD md-detail: повертає метадані пристрою MD (Matthew Booth) md-stop: зупиняє роботу пристрою MD (Wanlong Gao) tune2fs: надає змогу коригувати параметри файлових систем ext2/3/4

  Внутрішня частина роботи програми
сховище коду git перенесено до http://github.com/libguestfs

Різноманітні каталоги для тестування перевпорядковано логічно: тепер усі вони є підкаталогами tests/.

Реалізовано правило make extra-tests, яке запускає звичайні тести і додаткові тести, використовуючи valgrind для пошуку проблем із пам'яттю.

Виявлено за допомогою valgrind і усунено витоки пам'яті та інші проблеми.

Підтримку необов'язкових аргументів у генераторі було переписано із метою розширення можливостей та поліпшення захисту (Matthew Booth).

Використання gcc -fvisibility=hidden для внутрішніх символів надало змогу уникнути опосередкованих викликів за допомогою PLT.

Уможливлено тестування функцій RHashtable у генераторі.

Макрос ADD_ARG у фоновій службі надає змогу будувати списки аргументів без ризику порушення стека.

Виправлено створення функцій OCaml, які мають понад 10 аргументів.

у базову систему додано psmisc, що уможливлює використання fuser, killall та pstree для діагностування.

bindtests тепер стосуються і RBufferOut та необов'язкових аргументів (Matthew Booth).

  Виправлені вади
 - 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

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.14
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.12.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
  прив’язки до Erlang.

virt-alignment-scan — новий інструмент для перевірки вирівнювання розділів у віртуальних машинах або образах дисків.

virt-sparsify — новий інструмент для розрідження віртуальних машин та образів дисків.

virt-sysprep — новий інструмент для спрощення клонування гостьових систем за шаблоном.

guestfish

- Нові команди setenv, unsetenv для встановлення значень змінних середовища.

- У повідомленнях про помилки тепер виводиться назва файла вхідних даних та номер рядка.

- смужки поступу guestfish тепер є «мінібібліотекою», яка використовується також іншими інструментами.

guestmount

- параметр --live (для доступу до інтерактивних віртуальних машин) тепер працює.

virt-cat

- virt-cat тепер може обробляти шляхи і літери дисків Windows (RHBZ#693359).

virt-filesystems

- байт типу розділу MBR тепер показується у даних, які виведено --long.

virt-make-fs

- virt-make-fs тепер встановлює байт типу розділу MBR належним чином, що поліпшує сумісність із Windows (RHBZ#746295).

virt-resize

- virt-resize тепер може працювати із гостьовими системами з використанням розширених і логічних розділів, зокрема із гостьовими системами Ubuntu.

- virt-resize тепер може вирівнювати перший розділ гостьових систем Windows, що поліпшує швидкодію. Цією поведінкою керує новий параметр virt-resize --align-first.

- Прапорець virt-resize --machine-readable уможливлює використання virt-resize іншими програмами.

- Розділи тепер вирівнюються на 128 секторів (зазвичай, 64 кБ). Це поліпшує ефективність для високоякісних сховищ даних. За допомогою нового параметра virt-resize --alignment можна коригувати вирівнювання.

virt-win-reg

- Синтаксис команд для вилучення ключів та значень реєстру документовано на сторінці підручника (RHBZ#737944).

Бібліотека

- у діагностичних повідомленнях належним чином екрануються непризначені для друку символи.

- GUESTFS_EVENT_ENTER — новий тип подій, повідомлення про які створюються, коли викликається функція libguestfs.

- у бібліотеці містяться зонди systemtap/DTrace.

- тепер бібліотеку можна зібрати без hivex (RHBZ#723474).

перевірка

- Поліпшено виявлення дисків Windows.

- Додано підтримку:
         ttylinux - мінімального Linux
         Mageia (дякуємо Michael Scherer)
         OpenSUSE і zypper (дякуємо Michael Scherer, Vincent Untz)
         логотипів Ubuntu (дякуємо Michael Scherer)
         NetBSD і pkgsrc (дякуємо Michael Scherer)

- Реалізовано роботу із певними типами гостьових систем, де використовується /dev/root у /etc/fstab.

- Виправлено обробку гостьових систем із > 26 дисками (дякуємо Matthew Booth)

- Додано підтримку гостьових систем із дисками HP Smart Array (дякуємо Matthew Booth)

febootstrap

- Реалізовано використання змінних середовища FEBOOTSTRAP_KERNEL, FEBOOTSTRAP_MODULES для вибору ядра, яке слід використовувати у базовій системі.

інше

   - Підтримка ArchLinux тепер працює для Linux 3.0 (завдяки Erik Nolte)

- Диски libvirt, які позначено як <readonly/>, тепер додаються у режимі лише читання за допомогою параметра virt-tools -d.

  Безпека
  (у цьому випуску не було виявлено або виправлено жодної проблеми захисту)

  Нові програмні інтерфейси
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.

Програмний інтерфейс монтування більше не додає неявним чином параметри -o sync,noatime.

у add-domain реалізовано новий необов'язковий параметр readonlydisk» для керування тим, як обробляються диски <readonly/>.

  Внутрішня частина роботи програми
- Виконано перевірку коду за допомогою Coverity, виявлено і усунено вади.

- для збирання libguestfs тепер потрібна бібліотека PCRE.

- Тепер для базової системи типово увімкнено APIC. Ви також можете увімкнути підтримку SMP у базовій системі.

- Прив'язки до OCaml тепер правильно надсилають запит щодо блокування збірника сміття під час зворотних викликів.

- Тепер правильно працює збирання поза ієрархією коду (дякуємо Hilko Bengen).

- Для встановлення додаткового рядка версії пакувальники тепер можуть скористатися ./configure --with-extra="...".

- Програмні інтерфейси zero, zero-device: якщо у блоках уже містяться нулі, записування нулів не виконується, отже без потреби програма не скасовує розрідженість відповідних сховищ даних.

- Програмні інтерфейси is-zero, is-zero-device: оптимізація з метою пришвидшення виявлення нулів.

  Виправлені вади
 - 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

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.12
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.10.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
guestfish

- Тепер у рядках guestfish можна використовувати екранування, приклад: ><fs> write /щось "рядок 1\nрядок 2\n"

- Для дописування даних до файлів можна скористатися командою guestfish write-append.

- Довготривалі вивантаження і отримання файлів можна скасувати за допомогою програмного інтерфейсу або натискання ^C у guestfish.

- Нова команда guestfish display для показу графічних файлів у гостьовій системі.

- У guestfish доповнення за Tab тепер працює і на пристроях /dev/mapper.

virt-inspector

- Програмний інтерфейс інспектування тепер здатен отримувати піктограму або логотип певних гостьових систем.

- До virt-inspector включено логотипи і назви вузлів для певних гостьових систем.

- virt-inspector тепер може отримувати дані щодо версії і випуску пакунків RPM.

- CentOS і Scientific Linux тепер вважаються окремими дистрибутивами у програмному інтерфейсі інспектування.

virt-resize

- virt-resize тепер може працювати з btrfs.

- За допомогою нового параметра virt-resize --ntfsresize-force можна змінювати розмір віртуальних машин Windows декілька разів.

інші virt tools

- У guestfish, guestmount, virt-cat, virt-df, virt-edit, virt-filesystems, virt-inspector, virt-ls та virt-rescue тепер можна скористатися параметром -d UUID для визначення гостьової системи за UUID. Це значно підвищує надійність роботи цих програм, якщо їх викликано іншими програмами.

- Параметр virt-ls -lR уможливлює складну ітерацію файловою системою та аналіз гостьової системи.

- У virt-win-reg реалізовано підтримку HKEY_USERS\<SID> та HKEY_USERS\<користувач>.

- Параметр virt-win-reg --unsafe-printable-strings уможливлює показ придатних до друку рядків у виведених даних (не є безпечним: ознайомтеся із документацією, перш ніж користуватися).

- virt-edit переписано на C.

Програмний інтерфейс і прив'язки до мов програмування

- Реалізовано повну підтримку Java. Див. http://libguestfs.org/guestfs-java.3.html

- За допомогою прив'язок до Java реалізовано підтримку JRuby.

- Тепер у повідомленнях трасування з'являється guestfs_close.

- У прив'язках до Python додано явний метод g.close().

- Програми мовою Python тепер можуть використовувати новий програмний інтерфейс подій.

- GIL Python вимикається на час викликів libguestfs, що уможливлює належну роботу багатопотокових програм мовою Python.

- Реалізовано підтримку 9pfs (файлових систем Plan 9, експортованих із основної системи).

- Додано -DGUESTFS_WARN_DEPRECATED=1 для попередження щодо використання функцій застарілого програмного інтерфейсу у програмах мовою C.

- Нова сторінка підручника guestfs-recipes(1), яку призначено для зберігання рецептів.

- mkfs-opts тепер може встановлювати розміри inode та сектора на створених файлових системах (дякуємо Nikita Menkovich).

- guestfs_last_errno тепер є доступною з OCaml (як g#last_errno ()).

  Безпека
- optargs_bitmask перевіряється навіть для викликів, які не мають необов'язкових аргументів. Це унеможливлює використання можливої дірки у захисті фонової служби для ненадійних джерел викликів.

  Нові програмні інтерфейси
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

  Внутрішня частина роботи програми
- Для визначення вад у коді було запущено Coverity (інструмент статичного аналізу). Було виправлено багато вад.

- Тепер генератор може обробляти функції, які повертають RBufferOut і мають необов'язкові аргументи.

- Реалізовано сумісність із Perl 5.14.

 - Сумісність з gcc 4.6.

- Було виконано перевірки захисту QEMU.

- Тести програмного інтерфейсу C тепер можуть повністю тестувати виклики із необов'язковими аргументами.

 - Скористайтеся ./configure --enable-install-daemon, щоб встановити /usr/sbin/guestfsd.

 - Каталог po-docs тепер стосується усіх сторінок підручника (man).

- stderr з процесу qemu тепер перехоплюється підсистемою подій.

  Виправлені вади
 - 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

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.10.0
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.8.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
- libguestfs та інструменти можна використовувати для роботи із робочими віртуальними машинами. Див. параметри guestfish --live та guestmount --live, а також (для низькорівневого інтерфейсу) нові програмні інтерфейси set-attach-method і get-attach-method.

 - Нові інструменти віртуалізації:
   virt-copy-in, virt-copy-out, virt-tar-in, virt-tar-out.

- libguestfs може отримувати прив'язки до літер дисків для гостьових систем Windows.

- virt-inspector показує прив'язки до літер дисків для гостьових систем Windows.

- Літери дисків тепер можна використовувати у програмах virt-edit і guestfish під час роботи із гостьовими системами Windows.

- virt-resize тепер працює із 32-бітовими основними системами.

- Тепер ви можете інспектувати диски для встановлення та образи портативних систем для компакт-дисків багатьох різних операційних систем.

- guestfish <! команда, виконує команду оболонки і вбудовує результат її виконання.

- guestfish, guestmount, virt-rescue тепер усі підтримують параметри --ro і --rw. Типовий варіант можна вибрати за допомогою файла налаштувань (/etc/libguestfs-tools.conf).

- Новий програмний інтерфейс подій надає змогу реєструвати декілька зворотних викликів для кожної події, уможливлює виклики програмного інтерфейсу з інших мов програмування і надає змогу переспрямовувати з stderr майже усі повідомлення журналу, діагностики та трасування.

- Ширша сумісність із FHS для тимчасових файлів, зокрема використання /var/tmp для великих кешованих файлів, які мають переживати перезавантаження (замість /tmp).

- параметр guestfish, guestmount -m уможливлює передавання параметрів монтування до підлеглої файлової системи.

- mkfs-opts уможливлює визначення можливостей файлових систем.

- Ефективніша обробка точок монтування, яка уможливлює належну сумісну роботу команд mkmountpoint, mount та umount-all.

- Реалізовано дописування префікса до повідомлень трасування, що уможливлює їхнє просте фільтрування за допомогою grep у виведених діагностичних повідомленнях.

 - guestfs_launch (команда guestfish run) тепер створює повідомлення щодо поступу (смужка поступу guestfish), якщо виконання триває понад 5 секунд.

- Реалізовано надсилання подій щодо поступу у режимі пульсації для декількох команд, час виконання яких не можна наперед оцінити. Оновлено код смужки поступу у guestfish для показу даних таких подій.

- Оприлюднено нові приклади коду такими мовами: C, Perl, Python, OCaml, Ruby.

 - Новий приклад програми virt-dhcp-address.

- Значні поліпшення у прив'язках до Java і Ruby.

 - До Perl включено спосіб отримання номера останньої помилки.

 - Прив'язки Python тепер сумісні з rpyc (завдяки Erez Shinan).

 - Для керування перекладами тепер використовується Transifex.
   http://www.transifex.net/projects/p/libguestfs/

 - У інспекції реалізовано підтримку дистрибутивів Red Hat Desktop, Slackware.

- Засіб інспектування тепер може обробляти гостьові системи Windows, у яких два або декілька дисків.

- Засіб інспектування тепер може відрізняти Windows 2008 Server і Windows 7.

- Засіб інспектування може виявляти встановлені 32-бітові програми у 64-бітовій Windows, де використовується емулятор WOW64.

 - За допомогою послідовного виправлення протоколу виправлено давню ваду RHBZ#576879, яка спричиняла помилки під час виконання команди вивантаження через втрату синхронізації у протоколі.

 - Новий логотип!

  Безпека
  [немає]

  Нові програмні інтерфейси
  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.

  Внутрішня частина роботи програми
- Файл HACKING застарів. Вміст файла було перенесено до розділу на сторінці підручника щодо guestfs(3).

- Спрощено libguestfs-test-tool. Тепер програма не вимагає статичного виконуваного файла і не намагається побудувати ISO.

- Створені за допомогою rpcgen файли збираються з використанням -fno-strict-aliasing, що має бути безпечнішим (дякуємо Matt Booth).

- virt-resize було переписано на OCaml.

- guestfish та інші інструменти було перевірено за допомогою valgrind; виправлено деякі витоки пам'яті.

  Виправлені вади
 - 502533 Оновлення перекладу 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 Завершено переклад пенджабською (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

Нотатки щодо випуску libguestfs 1.8
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.6.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
- Підтримка і пакунки для Debian і Ubuntu.

- Щоденні збірки зі сховища git для Debian і Ubuntu для зменшення ризику регресій.

- Портовано на pacman ArchLinux (дякуємо Thomas S Hatch).

- Переписано на C такі інструменти (початково ці інструменти було написано мовою Perl):

     . virt-cat
     . virt-df
     . virt-inspector
     . virt-ls
     . virt-rescue

- У деяких інструментах із кодом мовою C передбачено автоматичну підтримку зашифрованих гостьових систем. Таку підтримку реалізовано у таких програмах: guestfish, guestmount, virt-cat, virt-inspector, virt-ls.

- Новий інструмент virt-filesystems (із кодом мовою C), який є замінником virt-list-filesystems та virt-list-partitions і може виконувати усі функції цих інструментів.

- У guestfish, guestmount та інших інструментах із кодом мовою C використовується уніфікований обробник параметрів командного рядка, отже, тепер передбачено підтримку ширшого спектра параметрів, зокрема «-a диск.img», «-d домен-libvirt», «-x», «-v». Застарілий засіб обробки параметрів збережено із міркувань сумісності у скриптах тощо.

- guestfish більше не залежить від Perl

- Нові сторінки підручника із прикладами програм: guestfs-examples(3) (C/C++), guestfs-ocaml(3), guestfs-python(3), guestfs-ruby(3).

- У режимі трасування тепер виводяться значення з функцій програмного інтерфейсу.

- virt-inspector тепер може створювати список програм, які встановлено у гостьових системах Windows, виводячи багато відомостей щодо цих програм.

- Додано підтримку інспектування таких операційних систем: Linux Mint, Mandriva, FreeBSD.

- Реалізовано параметр guestfish --rw (поки не працює) для перетворення потенційно небезпечного доступу на запис на явний.

- guestfish --listen --csh для сумісності із csh, tcsh (дякуємо Eric Blake).

- Першу основну версію, у якій впроваджено усі функції програмного інтерфейсу, тепер документовано у guestfs(3).

- guestfs_last_errno надає вам змогу отримувати номер помилки від фонової служби, належним чином перетворений до локальної операційної системи.

 - Тепер функції мають додаткові параметри.

- Реалізовано смужки поступу та сповіщення щодо поступу для команд вивантаження даних.

- Засіб збирання базової системи тепер працює акуратніше, не залишаючи тимчасових файлів у /tmp.

- У virt-rescue додано команди getfattr/setfattr.

- У файлі ROADMAP викладено дорожню карту та цілі майбутніх випусків.

  Безпека
- Новий розділ БЕЗПЕКА у документації з програмного інтерфейсу guestfs(3).

- virt-inspector більше не виконує жодної з команд гостьової системи.

- Код засобу інспектування тепер обережніший і уникає дуже великих файлів у гостьовій системі, які раніше призводили до відмови у обслуговуванні.

- Тепер трасуються виклики FUSE до guestmount, якщо використовується guestmount -x.

  Нові програмні інтерфейси
 - 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

  Внутрішня частина роботи програми
- Програми із початковим кодом мовою C тепер компонуються лише з бібліотеками, які у них використовуються.

- Бібліотеки PCRE, libmagic, hivex та libvirt тепер є повністю необов'язковими до збирання.

- Виправлено декілька витоків пам'яті та витоків дескрипторів файлів.

- Додано обгортку POD для уніфікації створення сторінок підручника та файлів HTML усіх програм.

- До початкового коду включено фіктивні образи гостьових систем Fedora, Debian, Ubuntu та Windows.

 - Прив’язки Ruby мають правило «make install».

 - <guestfs.h> тепер є єдиним файлом.

 - <guestfs.h> не потребує заголовків XDR.

- Для збирання більше не потрібна бібліотека xml-light OCaml (дякуємо Maxim Koltsov).

 - ./configure --disable-[...] для кожної з прив’язок до мови (завдяки
   Максимові Кольцову).

- Вилучено застарілу програму ocaml-viewer (користуйтеся замість неї програмою guestfs-browser).

- Новий тип тестів програмного інтерфейсу C «InitScratchFS» трохи пришвидшує виконання тестів.

- Список виключених із базової системи пакунків тепер зберігається у окремому файлі appliance/excludelist.in і може бути налаштований для кожного окремого дистрибутива.

  Виправлені вади
 - 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

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.6
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.4.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
- Використано новий спосіб створення і кешування базової системи. Це значно пришвидшує роботу libguestfs, доволі часто у 4-5 разів.

- Реалізовано підтримку інспектування гостьових системи (подібно до virt-inspector) за допомогою звичайного програмного інтерфейсу та прив'язок до мов програмування. Побіжним ефектом є значне пришвидшення роботи «guestfish -i».

- virt-inspector та основний програмний інтерфейс інспектування тепер може виявляти такі гостьові системи: Fedora, Debian, Ubuntu, Windows, Red Hat Enterprise Linux, CentOS, Scientific Linux, Gentoo, Pardus, Arch Linux, MeeGo.

- Реалізовано підтримку повного шифрування дисків за допомогою LUKS у гостьових системах.

 - Прив’язки до PHP.

- Реалізовано повідомлення щодо поступу (та смужки поступу у guestfish і virt-resize) для певних типів довготривалих дій.

- virt-df тепер працює значно ефективніше. Скористайтеся параметром «--one-per-guest», щоб відновити попередню поведінку із ізоляцією окремих гостьових систем.

- Реалізовано команди guestfish «copy-in» і «copy-out» для рекурсивного копіювання файлів та каталогів до гостьової системи та з неї.

- Реалізовано команду guestfish «hexedit» для виконання двійкового редагування на пристроях і у файлах.

- Змінено синтаксис guestfish -i з метою уможливлення визначення команд у командному рядку (із збереженням зворотної сумісності).

- Реалізовано параметр guestfish -d <домен> для додавання дисків з доменів libvirt.

- Для параметра guestfish -N передбачено підтримку декількох нових типів приготованих образів дисків:
         lvfs : диск у форматі логічного тому з файловою системою
           lv : диск із логічним томом
     bootroot : boot+root
   bootrootlv : boot і root на логічному томі

- Команди guestfish more та edit тепер працюють із довільними файлами.

- За допомогою параметра guestfish --echo-keys ви зможете бачити символи ключів і паролів, коли їх вводитимете.

- У guestmount тепер передбачено параметри -a / -d / -i, як у guestfish.

- Реалізовано використання virtio-serial для обміну даними із базовою системою. Це дало значні переваги у швидкодії.

 - Реалізовано параметр virt-edit -b для створення резервних копій редагованих файлів.

- Реалізовано параметр virt-edit -e для неінтерактивного редагування файлів.

- Реалізовано можливість перехоплення дампів ядра із базової системи (дякуємо Matthew Booth).

- virt-rescue тепер завершує роботу коректно (дякуємо Matthew Booth).

- virt-rescue тепер має параметр --network для вмикання доступу до мережі.

- Тепер virt-resize може працювати із гостьовими системами, які використовують формат таблиці розділів GPT.

- у virt-resize реалізовано ліпшу підтримку зменшення розмірів гостьових систем.

- у virt-resize передбачено підтримку гостьових систем у форматі qcow2.

- Можна скористатися $TMPDIR для перевизначення майже усіх тимчасових каталогів.

- Користувачі OCaml можуть скористатися альтернативним OO-стилем програмування, наприклад g#launch ()

- У програмному інтерфейсі передбачено підтримку викликів, які приймають необов'язкові параметри. Приклад: $g->add_drive_opts ("disk", readonly => 1);

- У виведених даних трасування тепер екрануються і скорочуються довгі рядки (дякуємо Matthew Booth).

- Тепер автосинхронізацію типово увімкнено. Це забезпечує вищу надійність при закритті дескриптора.

- За допомогою параметра virt-df --uuid ви можете здійснювати переходи у домені навіть після перенесення або перейменування.

 - Переклади сторінок підручника (man).

  Безпека
- CVE-2010-3851 libguestfs: пропущено специфікатор формату диска під час додавання диска https://www.redhat.com/archives/libguestfs/2010-October/msg00036.html Цю ваду повністю виправлено у цьому випуску, виправлення буде зворотно портовано на інші стабільні гілки після додаткового тестування.

- virt-inspector більше не покладається на ненадійний код гостьової системи для побудови списку програм у деяких гостьових системах.

  Нові програмні інтерфейси
  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

  Внутрішня частина роботи програми
- Використано size_t для змінних циклів. - Код бібліотеки поділено на декілька окремих файлів. - Код генератора поділено на декілька окремих файлів. - Реалізовано генерацію команд guestfish. - Уніфіковано обробку параметрів guestfish і guestmount. - Зміни у протоколі:
    розмір повідомлення щодо помилки збільшено до 64 кБ
    реалізовано надсилання errno до бібліотеки - Додано «make bindist» для створення бінарного дистрибутива. - Поліпшено поведінку під керуванням valgrind. - Ширше тестування параметрів командного рядка guestfish та інтеграції libvirt. - Код інспектування мовою Perl більше не використовується у жодному з інструментів.

  Виправлені вади
 - 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 Оновлення перекладу іспанською
 - 633096 virt-resize calculates block device size incorrectly, doesn't work with qcow2 target
 - 629593 Додано переклад голландською
 - 627556 Оновлено переклад libguestfs іспанською
 - 626843 Оновлення перекладу іспанською
 - 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 Оновлення перекладу libguestfs польською

НОТАТКИ ЩОДО ВИПУСКУ LIBGUESTFS 1.4
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.2.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.

  Нові можливості
- надає вам змогу вибрати приготований образ диска. Приклад: guestfish -N fs:ext4

- Додано підтримку запису у модулі guestmount (FUSE).

- virt-resize тепер може змінювати вміст розділів і логічних томів у гостьовій системі. Також поліпшено підтримку зменшення розмірів гостьових систем.

- Додано скрипт доповнення команд за Tab у bash для guestfish.

- Додано підтримку ZFS до virt-rescue.

- Новий інструмент «virt-make-fs» для створення файлових систем із даними.

- Уможливлено суфікси для будь-яких числових параметрів guestfish. Приклад: «1M».

- Реалізовано команду guestfish «man», яка відкриває сторінку підручника.

- У guestfish реалізовано синтаксис «heredoc» для вивантаження файлів:
     upload -<<_end_ /foo
     content
     _end_

- Деякі команди guestfish тепер виводять дані у вісімковому або шістнадцятковому форматі, якщо це потрібно (RHBZ#583242).

- Уможливлено префікс-дефіс у командному рядку guestfish. Така ось команда ігноруватиме усі помилки від другої команди (RHBZ#578407):
     guestfish -- команда1 : -команда2 : команда3

- Команда guestfish -h / help тепер повертає повідомлення про помилку, якщо відповідної команди не існує (RHBZ#597145).

- Реалізовано нову команду «supported» у guestfish, призначену для виведення списку необов'язкових груп команд, підтримку яких передбачено у фоновій службі або налаштуваннях.

- Уможливлено роботу virt-inspector і guestfish -i з файлами, назви яких містять пробіли (RHBZ#507810).

- Змінено протокол для використання адрес link-local для уникнення конфлікту з будь-якими адресами, які можуть використовуватися у основній системі (RHBZ#588763).

- libguestfs тепер встановлює правильні часові позначки та часовий пояс при змінах у файловій системі.

- Реалізовано упорядковування доменів за абеткою у virt-df.

- Уможливлено роботу команди mkfs-b для FAT і NTFS шляхом прив'язки параметра розміру блоку до розміру кластера (RHBZ#599464).

- Додано номер версій до модулів Perl (RHBZ#521674).

- Локалізація тепер працює для усіх інструментів libguestfs (RHBZ#559963).

- У інструментах тепер передбачено підтримку віртуальних машин «файлова система на образі» (RHBZ#590167).

- У virt-list-partitions реалізовано параметр «-t» для показу загального розміру дисків.

- До базової системи supermin включено додаткові лінзи Augeas (Matthew Booth).

 - Додано зворотні виклики error та close.

 - Додано явний метод close до програмного інтерфейсу Perl.

 - Декілька виправлень для забезпечення сумісності з RHEL 5.

 - Декілька виправлень для забезпечення сумісності з Debian/Ubuntu.

 - Декілька модифікацій з покращеннями у документації.

  Безпека
- Усунено потенційну відмову в обслуговуванні у virt-inspector та virt-v2v, якщо спеціальним чином створений образ диска містить символьний пристрій на місці одного з файлів налаштувань, які бібліотека читає у /etc (RHBZ#582484).

  Нові програмні інтерфейси
- aug-clear - чищення шляху Augeas - available-all-groups - повертає список усіх необов'язкових груп - base64-in - вивантаження закодованих у base64 даних до файла - base64-out - отримання файла і кодування у base64 - checksum-device - обчислення контрольних сум для даних на пристрої - checksums-out - обчислення контрольних сум для декількох файлів у каталозі - debug-upload - вивантаження файла до базової системи - fallocate64 - попереднє розміщення файла у гостьовій файловій системі - fill-pattern - заповнення файла повторами взірців байтів - get-umask - отримання поточної umask - lvresize-free - розширення логічного тому для заповнення вільного місця - ntfsresize - зміна розміру файлової системи NTFS - ntfsresize-size - зміна розмірів файлової системи NTFS (із розміром) - part-del - вилучення розділу - part-get-bootable - отримання прапорця завантажуваності розділу - part-get-mbr-id - отримання байта типу MBR розділу - part-set-mbr-id - встановлення байта типу MBR розділу - pvresize-size - зміна розмірів фізичного тому (з розміром) - pwrite - запис частини файла - resize2fs-size - зміна розмірів файлової системи ext2/3/4 (з розміром) - txz-in - розпаковування стисненого архіву tar до каталогу (RHBZ#580556) - txz-out - пакування каталогу до стисненого архіву tar (RHBZ#580556) - vfs-label - отримання мітки файлової системи - vfs-uuid - отримання UUID файлової системи - vgscan - повторне сканування фізичних томів LVM, груп томів та логічних томів - write - створення файла - zero-device - записування усього пристрою нулями

  Внутрішня частина роботи програми
- Розширено можливості генератора для підтримки тестування додаткових можливостей. - Строгіші перевірки вхідних параметрів для багатьох викликів (RHBZ#501893 RHBZ#501894) - Розширено протокол для підтримки надсилання довільних 8-бітових буферів даних. - До випусків додано файл «BUGS». Там наведено резюме вад у базі даних системи стеження за вадами Red Hat. - До випусків додано файл «RELEASE-NOTES», який містить нотатки щодо випуску. - Уніфіковано збирання базової системи supermin до одного місця, у febootstrap 2.7. - Виправлено код протоколу для обробки випадку, коли обидва боки зв'язку одночасно надсилають повідомлення про скасовування.

  Виправлені вади
 - 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

НОТАТКИ ЩОДО ВИПУСКУ ПОПЕРЕДНІХ ВЕРСІЙ LIBGUESTFS
До 2010 року у libguestfs не було офіційних нотаток щодо випуску або формалізованої системи нумерації версій. Втім, нижче наведено посилання на важливі у історичному плані версії.

10 листопада 2009 року (1.0.78)
    https://www.redhat.com/archives/libguestfs/2009-November/msg00095.html

13 вересня 2009 року (1.0.67)
    https://www.redhat.com/archives/libguestfs/2009-August/msg00281.html

23 липня 2009 року (1.0.64)
    https://www.redhat.com/archives/libguestfs/2009-July/msg00059.html

14 липня 2009 року (1.0.59)
    https://www.redhat.com/archives/libguestfs/2009-July/msg00023.html

1 квітня 2009 року (початкове оголошення)
    http://rwmj.wordpress.com/2009/04/01/libguestfs-access-and-modify-virtual-machine-disk-images/

ТАКОЖ ПЕРЕГЛЯНЬТЕ
guestfs-examples(1), guestfs-faq(1), guestfs-performance(1), guestfs-recipes(1), guestfs-testing(1), guestfs(3), guestfish(1), http://libguestfs.org/

АВТОР
Richard W.M. Jones

АВТОРСЬКІ ПРАВА
Copyright (C) 2009-2019 Red Hat Inc.

LICENSE

BUGS
To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

When reporting a bug, please supply:

•   The version of libguestfs.

•   Where you got libguestfs (eg. which Linux distro, compiled from source, etc)

•   Describe the bug accurately and give a way to reproduce it.

•   Run libguestfs-test-tool(1) and paste the complete, unedited output into the bug report.