DOKK / manpages / debian 10 / libguestfs0 / guestfs-release-notes.1.uk
guestfs-release-notes(1) Virtualization Support guestfs-release-notes(1)

НАЗВА

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

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.

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

[RHEL 7.6 LP] openstack output leaks passwords
virt-inspector fails with "error: int_of_string" on a Linux image when /etc/fstab contains a partionless device
v2v - support for -insecure option to support OSP SSL connection for VM migrations
[RFE] virt-p2v UI should give the option to shutdown after conversion is finished
virt-v2v cannot convert opensuse15 guest
Fix rhev-apt command that virt-v2v runs in Windows guests on first boot
Update v2v docs to describe support for SHA 2 certs required for converting Windows 7 and 2008 R2 guests
Minor log issue of virt-v2v
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.
"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
part_to_dev "/dev/sdp1" returns "/dev/sd" instead of "/dev/sdp"
inspection fails when swap partition in /etc/fstab has incorrect UUID compared to actual swap partition
On machines where /dev/kvm exists but KVM doesn't work, libguestfs will not fall back to TCG
virt-inspector can't inspect LUKS-encrypted RHEL7 guest image
Improve error "No module named ovirtsdk4" in v2v rhv-upload conversion
Adding QXL device in OVF causes Cirrus Logic device to be added to guest
RFE: virt-v2v should preserve <genid>
Transfer fails if local host is in maintenance mode
Transfer fails if local host belongs to another DC
v2v to RHV transfer fails with: error: [empty name]: cannot read '//*/disksection' with value: null
virt-v2v convert rhel5.3 failure when executing rpm -ql kernel-2.6.18-128.el5 command
p2v: error: XML error: CPU vendor specified without CPU model
Hide rhv-upload option in virt-p2v client
Don't use relative socket paths for NBD
RFE: Support for -o rhv-upload via Unix domain socket
ovirt-imageio-daemon times out during migration
virt-v2v rhel7.6 build can't convert guest to null with qemu-kvm rhel7.5.z build
Virt-v2v rhel7.6 build can't convert guest with qemu-kvm rhel7.5.z build
virt-builder: ubuntu-18.04 template has stray HTTP proxy configured for apt
virt-builder: error: host cpu (x86_64) and guest arch (unknown) are not compatible
virt-v2v -i ova gives checksum error when missing files are mentioned in .mf
guestfsd: error: /Windows/Drivers/VirtIO: Read-only file system
The mount-vfs failed to mount the logical volume
RHV tools not properly installed in migrated Windows VM's causing boot failure
virt-v2v does not honor --network with -o rhv-upload
[RFE] Upload images directly to oVirt (virt-v2v -o rhv-upload)
[RFE] Add libosinfo short-id to virt-inspector output
virt-inspector --help differs from manpage
RFE: recognize the Kali Linux distribution
Resume=/dev/sdaX can't be updated to resume=/dev/vdaX in rhel7 guest's grub file after v2v conversion
Change categories of "Guest Operating system management by VIX API" in v2v man page
Various -it vddk -io vddk* options should be documented, removed or fixed
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).

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

Example URI of "Convert from ESXi hypervisor over SSH to local libvirt" is incorrect in v2v man page
Помилки сегментації virt-customize після оновлення до 1.37.35-3
У прив'язках до Perl libguestfs можуть траплятися незначні витоки пам'яті, якщо станеться помилка
У прив'язках libguestfs до Lua використовується strerror(), що не є безпечним щодо потоків виконання
man page makes no mention of using '--' when trying to change exit on error behavior
virt-df показує нулі для файлових систем із розміром блоку =512
v2v should improve the result when convert a rhel7.4 guest with no available kernels found in the bootloader
virt-v2v fails with "unsupported configuration: shared access for disk 'sdb' requires use of supported storage format"
Mere presence of QEMU file locking options breaks NBD (Block protocol 'nbd' doesn't support the option 'locking')
./configure --disable-ocaml breaks building common/mlpcre which breaks building daemon
[RFE]Should update some vddk info in v2v man page
virt-v2v: warning: ova disk has an unknown VMware controller type (20)
virt-v2v '-i ova' is not parsing the MAC address from the source OVF
virt-builder fails to parse repo file if it has blank space after the repository identifier
Failed to convert the rhel5 guest with kmod-xenpv installed from xen server by virt-v2v
qemu-kvm fails to open qcow2 files in read-only mode with qemu-kvm 1.5.3
Error info shows wrong sometimes when ssh to conversion server using non-root user with sudo on p2v client
/dev/shm does not exist in the appliance environment
guestfish cannot list commands from interactive mode
Unbound constructor Hivex.OPEN_UNSAFE
bump debian images to use single-partition layout
virt-resize failed to expand swap partition for RHEL5.11 guest image with "parsing UUID failed"
Running file API on a special chardev may hang forever
inspect-os report error: could not parse integer in version number: V7Update2
[RFE]Add warning in process of v2v converting guest which has pci passthrough device
virt-v2v fails on opensuse 13.2 guest with error: statns: statns_stub: path must start with a / character
Скрипти firstboot неправильно встановлюються у Fedora 26
Libguestfs should pass copyonread flag through to the libvirt XML
1.36.x build failure: gtkdocize fails using newer autotools due to missing GTK_DOC_CHECK in configure.ac
guestfs_shutdown повисає, якщо основний процес встановлює обробники сигналів
guestfs_add_domain_argv fails with readonly option when vdi/vhd disk is attached to libvirt domain
RFE: Virt-v2v не здатна перетворювати гостьові системи із зашифрованими розділами
Потрібна документація до формату адреси параметрів -a інструментів
RFE: Support multicore decompression for OVA files using pigz and pxz
Гостьова система Win 2016 описується як Win 10 після імпортування до RHEVM
RFE: ability to convert VMware virtual machines via vmx
Будь ласка, викиньте або оновіть залежність від GnuPG (1.4.x)
[RFE] Install Windows virtio-rng drivers on VMs imported
virt-inspector can't get icon info from altlinux-centaurus
policycoreutils setfiles >= 2.6 does .. nothing
Windows 8 UEFI from VMware to KVM fails to boot after conversion
There is error info about "No such file or directory" when convert a guest from ova file by v2v
virt-dib should generate sha256 checksum instead of sha512
RFE: OVMF should be detected on conversion server to prevent failed conversion
Should rename network name of rhv in virt-v2v man page
virt-sysprep should remove DHCP_HOSTNAME
QEMU image file locking (libguestfs)
[Debian] Missing db_dump abort inspection
Помилка сегментації при читанні пошкодженого шляху за допомогою прив'язок до Python 3
RFE: virt-p2v має підтримувати мнемонічні операції
There is virt-v2v warning about <listen type='none'> during converting a guest which has listen type='none' in XML
qemu-system-s390x: -device isa-serial,chardev=charserial0,id=serial0: 'isa-serial' is not a valid device model name
selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success"
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
RFE: virt-sysprep does not utilize libguestfs encryption support
[RFE]virt-v2v failed to convert VMware ESX VM with snapshot
Modify a file in virt-rescue with vi on some linux terminal such as yakuake, can lead to abnormal display in virt-rescue shell
Remove "If reporting bugs, run virt-v2v with debugging enabled .." message when running virt-p2v
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.

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

Усі тести, які було написано мовою командної оболонки, тепер використовують спільний файл із допоміжними функціями (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.

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

описка на сторінці підручника virt-tail
virt-v2v: вичерпання пам'яті базовою системою під час виконання команди setfiles
/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'
*** Немає правила для створення ../perl/lib/Sys/Guestfs.c, потрібне для libguestfs.pot
не вдається зібрати 1.34.3 з gperf 3.1
guestfs_canonical_device_name incorrectly returns /dev/sd0 for MD devices (/dev/md0)
guestfs_list_filesystems не розпізнає розділи ddf
[Debian] у базовій системі не встановлено ldmtool
qemu-kvm cannot boot RHEL 7 kernel with TCG, hangs at "Probing EDD (edd=off to disable)..."
RFE: virt-resize має підтримувати адресу як диск виведення
Importing VMs from VMware is failing with error "Inspection field 'i_arch' was 'unknown'"
RFE: дещо збільшити покриття virt-sysprep
Додати прапорець --vdsm-compat=1.1 для VDSM
описка на сторінці підручника
не читаються реєстраційні дані з доменів libvirt
дані щодо --machine-readable на сторінці підручника virt-v2v слід оновити
RFE: virt-p2v має підтримувати мнемонічні операції
There is virt-v2v warning about <listen type='none'> during converting a guest which has listen type='none' in XML
на сторінці підручника virt-p2v слід оновити дані щодо діалогу
virt-v2v: -i ova: заборонено доступ, якщо використовується libvirt і запуск відбувається від імені root
Can't install qxl driver for display device in win7 guest after converting to glance by virt-v2v
There is HTTP 404 error info when convert guest to glance by virt-v2v
selinux relabel fails on RHEL 6.2 guests with "libguestfs error: selinux_relabel: : Success"
Стан процесу у гостьовій системі windows після перетворення з kvm на rhev за допомогою virt-v2v не є нормальним
Засіб збирання не встановлює належним чином назву вузла для Debian 8 (Jessie)
Поліпшення сумісності імпортування OVA
virt-manager coredump when vm with gluster image exists
Cannot import VMs from Xen and VMware when using RHEL7.3 host.
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
OVMF file which is built for rhel7.3 can't be used for virt-v2v uefi conversion
Converting rhel7 host installed on RAID:warning: fstrim: fstrim: /sysroot/: the discard operation is not supported
RFE: libvirt backend: support handling disks stored as volume name in a pool
Назва гостьової системи є помилковою, якщо перетворення гостьової системи з образу диска виконується virt-v2v
RFE: virt-sysprep does not utilize libguestfs encryption support
virt-v2v conversions from vCenter do not consistently obey the proxy environment variables
warning: fstrim: fstrim: /sysroot/: FITRIM ioctl failed: Operation not supported (ignored) when convert win2003 guest from xen server
RFE: Only install RHEV-APT if virt-v2v -o rhev/-o vdsm option is used
virt-v2v failed to convert RHEL 6.7 UEFI guest: no grub1/grub-legacy or grub2 configuration file was found
[RFE] virt-v2v should support convert a guest to a dir-pool with using pool's uuid
libvirt reports json "backing file" is missing
Скрипти firstboot (virt-builder, virt-sysprep) не працюють у гостьових системах Debian 6 і 7
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).

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

virt-sparsify --in-place failed with UEFI system
run_command runs exit handlers when execve fails (e.g. due to missing executable)
virt-dib failed to create image using DIB_YUM_REPO_CONF
Fail to inspect Windows ISO file
Some info will show when convert guest to libvirt by virt-v2v with parameter --quiet
overlay of disk images does not specify the format of the backing file
Virt-manager can't show OS icons of win7/win8/ubuntu guest.
Improve error info "remote server timeout unexpectedly waiting for password prompt" when connect to a bogus server at p2v client
virt-p2v should update error prompt when 'Test connection' with a non-existing user in conversion server
virt-sysprep --install always failed to install the packages specified
virt-customize --truncate-recursive should give an error message when specifying a no-existing path
[RFE]Should give a better description about 'curl error 22' when failed using ssh identity http url at p2v client
Failed SSH to conversion server by ssh identity http url at p2v client
[RFE] uninstall packages inside the VM
Ifconfig command is not supported on p2v client
Convert a guest from RHEL by virt-v2v but its origin info shows RHEV at rhevm
Should remind a warning about disk image has a partition when using virt-p2v-make-disk
virt-get-kernel prompts an 'invalid value' error when using --format auto
virt-p2v spinner should be hidden when it stops spinning
Testing connection timeout when input regular user of conversion server with checked "use sudo......"button
[RFE] Suggestion give user a reminder for "Cancel conversion" button
Multiple network ports will not be aligned at p2v client
Update UEFI whitelist for official fedora packages
virt-customize --ssh-inject не застосовує належних прав доступу до файлів
extra quotes around UUID confuses findfs in RHEL (but not in Fedora)
Inspection does not parse /etc/redhat-release containing "Derived from Red Hat Enterprise Linux 7.1 (Source)"
RFE: Allow p2v kernel options without p2v.server to set defaults
virt-v2v should prevent using multiple '-b' and '-n' option appears on the command line
libguestfs: error: could not parse integer in version number: 7"
[1.33.16] Compilation Error: Unbound value List.sort_uniq in v2v.ml line 988, characters 10-24:
`virt-builder --update` fails with: "dnf -y --best upgrade: command exited with an error"
v2v cmd cannot exit and "block I/O error in device 'appliance': No space left on device (28)" is printed when specified "-v -x"
virt-rescue fails, but missing error message
RFE: virt-p2v log window should process colour escapes and backspaces
virt-v2v -o libvirt doesn't preserve or use correct <graphics type="vnc|spice">
error: internal error: Invalid floppy device name: hdb
Wrong warning info "use standard VGA" shows when converting windows > 7 by virt-v2v
OS name of win8.1 x64 guest shows incorrect in rhevm3.6 general info
virt-v2v does not copy additional disks to Glance
Failure when disk contains an LV with activationskip=y
virt-v2v doesn't remove VirtualBox additions correctly because of file quoting
There should be a reminder to avoid user to edit a guest image by multiple tools at the same time in guestfish man page
guestfish can not ll a symbolic link dir or edit a file in it
guestfish should be able to handle LVM thin layouts
ppc64le: virt-customize --install fail to detect the guest arch
Test that trimming in virt-v2v doesn't regress
Virt-v2v gives an error on a blank disk: part_get_parttype: unknown signature, of the output: BYT;
virt-p2v in non-GUI mode doesn't show any conversion progress or status
P2V invalid password prints unexpected end of file waiting for command prompt.
On Ubuntu, virt-builder --install and --update cannot use the network
virt-v2v: warning: unknown guest operating system: windows windows 6.3 when converting win8,win8.1,win2012,win2012R2,win10 to rhev
Support inspecting docker images without /etc/fstab
libguestfs cannot inspect recent Fedora / RHEL >= 7 when /usr is a separate partition
P2V: invalid conversion server prints unexpected end of file waiting for password prompt.
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
ARM 32 bit on Ubuntu: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
NetworkManager avc unlink denied for resolv.conf after using --selinux-relabel
RFE: virt-sysprep має враховувати роботу SELinux
RFE: virt-p2v: display more information about storage devices
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 фізичної машини джерела до каталогу діагностичних даних сервера перетворення, що діагностику у випадку нестачі драйверів, мікропрограми тощо.

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

set-label повертає помилкове повідомлення про помилку, якщо встановлено мітку файлової системи ext3/ext4
Add a Fedora 23 32-bit base image for virt-builder
virt-builder записує тимчасові файли до /tmp
virt-resize не копіює логічні розділи
virt-inspector повертає версію 6.3 для образів win10 (має повертати 10.0)
virt-inspector --xpath segfault on attribute get
libguestfs can run commands with stdin not open (or worse still, connected to arbitrary guest-chosen random devices)
Про параметр стискання для qcow2
guestfish should be able to handle LVM thin layouts
DNF python programming error when run from virt-builder
inspection returns arch="unknown" for Windows guest if file command is not installed
Document permissions needed for non-admin users to use virt-v2v
RFE: virt-sparsify: make '--in-place' sparsification safe to abort (gracefully or ungracefully)
Virt-p2v client shouldn't present the vdsm option because it's not usable
virt-v2v fails to convert Windows raw image: error "device name is not a partition"
virt-builder: error: [file] is not a regular file in the guest
Simplestreams test fails: virt-builder: error: the value for the key 'size' is not an integer
guestfish copy-in command behaves oddly/unexpectedly with wildcards
python: Cannot compile pip module if installed libguestfs != pip guestfs version
Better diagnostic message when virbr0 doesn't exist
No warning shows when convert a win7 guest with AVG AntiVirus installed
virt-builder --ssh-inject doesn't set proper permissions on created files
RFE: V2V to check and warn user to disable group policy and anti virus on Windows guests
Wrong graphics protocal and video type set for guest after convert to rhev 3.6 by virt-v2v
extra slashes in vcenter URL confuses virt-v2v
[RHEV][V2V] virt-v2v ignores NIC if interface source/@network or source/@bridge is an empty string
virt-builder created Fedora 22 32bit disk image cannot be updated
virt-p2v no GUI mode:error opening control connection to $ip:22:unexpected …rompt
Option -oa preallocated -of qcow2 of virt-v2v didn't work efficiently
v2v: у шляхах пробіли слід екранувати, ось так: %20
Закрити усі вхідні порти на образі ISO virt-p2v
man virt-customize показував короткий опис двічі
mount-loop failed to setup loop device: No such file or directory
BUG: unable to handle kernel NULL pointer dereference at <addr> in function __blkg_lookup
virt-v2v should ignore bogus kernel entries in grub config
Unrelated info in fstab makes virt-v2v fail with unclear error info
virt-p2v: Using "Back" button causes output list to be repopulated multiple times
Wrong video driver is installed for rhel5.11 guest after conversion to libvirt
RFE: virt-builder creates qcow v3 images, add build option for qcow v2
File /etc/sysconfig/kernel isn't updated when convert XenPV guest with regular kernel installed
"lstatnslist" and "lstatlist" don't give an error if the API is used wrongly
koji spin-livecd cannot build a working live CD
mount-loop command fails: mount failed: Unknown error -1
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
libvirt fails to shut down domain: could not destroy libvirt domain: Requested operation is not valid: domain is not running
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 тепер мають такі нові параметри:

надає змогу читати довгі списки команд з файла, а не з командного рядка (Pino Toscano)
копіює файли до гостьової системи (Maros Zatko)
рекурсивно копіює файли з основної системи до гостьової (Pino Toscano)
пересуває файли у гостьовій системі (Maros Zatko)
вставляє ключі SSH до гостьової системи (Pino Toscano)
реєструє і скасовує реєстрацію гостьової системи у subscription-manager (Pino Toscano)
актуалізує часову позначку файла у гостьовій системі (Pino Toscano)
обрізає файли (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-бітову версію або версію зі зворотним порядком байтів.

Безпека

Libguestfs раніше запускала програму strings(1) для недовірених файлів. Strings могла обробляти заголовки BFD у незахищений спосіб, що могло призвести до виконання довільного коду. Тепер libguestfs запускає strings з прапорцем для забезпечення того, щоб заголовки BFD не оброблятимуться. Обробка заголовків могла призвести до втручання у роботу базової системи libguestfs, але оскільки libguestfs додатково обмежує базову систему через віртуалізацію, SELinux та інші методики, це навряд чи могло призвести до розширення прав доступу в основній системі.
Було виправлено одну вразливість, пов'язану із 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 безпосередньо для фонової служби під час тестування.

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

virt-v2v error reporting when grub.conf cannot be parsed by Augeas
v2v:Duplicate disk target set when convert guest with cdrom attached
Virtio drivers are not installed for windows 2008 guests by virt-v2v
virt-v2v Support for Fedora virtio-win drivers
Virt-v2v gives an error on a blank disk: part_get_parttype: unknown signature, of the output: BYT;
virt-p2v in kernel command line mode should power off the machine after conversion
virt-p2v no GUI mode appends \n to the final command line parameter
virt-sysprep at cleanup deletes /var/spool/at/.SEQ which results in failing at
"Doing conversion……" still shows after cancel the conversion from virt-p2v client
Memory leak in virNetSocketNewConnectUNIX
virt-v2v: warning: unknown guest operating system: windows windows 6.3 when converting win8,win8.1,win2012,win2012R2 to rhev
virt tools should print the same format of version string
RFE: virt-builder --touch
virt-builder --selinux-relabel flag fails on cross-architecture builds
RFE: virt-inspector xpath query should output a neat format of the query element
virt-builder firstboot-command fails: File name too long
virt-inspector gives incorrect arch (ppc64) for ppc64le guest
RFE: virt-customize --move and --copy
index-parser can't parse systemd mount files properly
virt-builder --upload option doesn't work to a FAT partition
virt-builder -x option on its own does not enable tracing
`virt-builder` should create $HOME/.cache directory if it already doesn't exist
Virt-builder fingerprint is required even when no check desired
virt-resize should preserve GPT partition UUIDs, else EFI guests become unbootable
Performance regression in virt-builder when uncompressing image
virt-v2v should support gzip format ova as input
virt-sparsify should ignore read-only LVs
"mknod-b", "mknod-c", and "mkfifo" do not strip non-permissions bits from "mode"
virt-v2v ignores sound device when convert xen guest to local kvm
Друкарська помилка у «help ping-daemon»
"parse-environment" and "parse-environment-list" fail to parse "LIBGUESTFS_TRACE = 0"
"is-blockdev"/"is-blockdev-opts" fail to detect "/dev/sda"
RFE: Allow v2v conversion of Oracle Linux 5.8 VMware VM
New virt-v2v failure: CURL: Error opening file: NSS: client certificate not found (nickname not specified): Invalid argument
Graphics password disappear after conversion of virt-v2v
The listen address for vnc is changed after conversion by virt-v2v
Засіб інспектування вважає розділ EFI окремою операційною системою
virt-v2v conversion of RHEL 3 guest fails with: All of your loopback devices are in use
Conversion of RHEL 4 guest fails: rpm -ql 1:kernel-utils-2.4-23.el4: virt-v2v: error: libguestfs error: command_lines:
virt-v2v picks debug kernels over non-debug kernels when versions are equal
virt-sparsify: libguestfs error: qemu-img info: 'virtual-size' is not representable as a 64 bit integer
virt-resize --expand fails on ubuntu-14.04.img image (regression)
warning: fstrim: fstrim: /sysroot/: FITRIM ioctl failed: Operation not supported (ignored) when convert win2003 guest from xen server
p2v: No Network Connection dialog
virt-p2v fails with error:"nbd.c:nbd_receive_negotiate():L501: read failed"
Remove "If reporting bugs, run virt-v2v with debugging enabled .." message when running virt-p2v
"Conversion was successful" pop out even virt-p2v fails
virt-v2v: warning: ova hard disk has no parent controller when convert from a ova file
virt-resize should give out the detail warning info to let customers know what's going wrong
File "/boot/grub2/device.map" showing is not right after converting a rhel7 guest from esx server
mount-loop command fails: mount failed: Unknown error -1
Disable "cancel conversion" button after virt-p2v conversion finished
Provide Reboot/Shutdown button after virt-p2v
Booting in qemu found no volume groups and failed checking the filesystems
The description of 'help append' is not accurately, it add the kernel options to libguestfs appliance not the guest kernel
Друкарські помилки у сторінках man
Inspect-get-icon failed on RHEL7 guest
xfs should also give a warning out to let customer know the limitation
Failed to import guest with "rtl8139" nic to openstack server after converted by v2v
virt-sysprep firstboot script is not deleted if it reboot a RHEL 7 guest
esx win2008 32 bit guest fail to load after conversion because the firmware isn't ACPI compatible
libvirt backend does not set RBD password
Use password file instead of process interaction
virt-p2v-make-disk should add firmwares
libguestfs FTBFS on f21 ppc64le
virt-inspector support adding a remote disk, but in its man page -a URI / --add URI is missing
Virt-v2v will fail when using relative path for -i ova
Redundancy whitespace at the end of directory name when use <TAB> to complete the directory name in guestfish with a xfs filesystem in guest
virt-v2v will hang when converting esx guest before disk copy phase
virt-v2v / qemu-img fails on ova image
virt-ls should remove '/' in the output when specify the directory name as /etc/
Should also add a field for directory files when run virt-ls with --csv option
virt-v2v conversions from VMware vCenter server run slowly
virt-v2v fail to convert guest with disk type volume
Input/output error during conversion of esx guest.
[RFE] virt-builder should support copying in a directory/list of files
[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'
virt-sparsify fails if a btrfs filesystem contains readonly snapshots
RFE: allow passing in a pre-opened libvirt connection from python
Security context on image file gets reset
[RFE] virt-v2v should check whether guest with same name exist on target first then transfer the disk
RFE: virt-p2v: display more information about network devices such as topology, bonding, etc.
p2v client should have largest number restrictions for CPU and Memory settings
hivex cannot read registry hives from ReactOS
virt-inspector cannot detect ReactOS
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.

Безпека

У попередніх версіях 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).

Вада у 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 тощо.

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

порожнє (але встановлене) LIBGUESTFS_BACKEND виводить libguestfs: помилка: некоректний модуль:
Пакунок libguestfs-bash-completion містить файл file /usr/share/bash-completion/completions/virt-log, але у цьому файлі немає функції _virt_log()
друкарська помилка у сторінці man virt-edit
virt-v2v conversions from VMware vCenter server run slowly
virt-v2v: warning: display <graphics type='sdl'> was ignored when converting rhel5 guest with sdl graphics
'copy-file-to-file /src /dest' create file /dest even if command 'copy-file-to-file /src /dest' failed
Can not find "RECURSIVE LONG LISTING" in 'man virt-diff'
virt-v2v does not fstrim data disks and non-mounted filesystems
Exporting 2+ disk guest to RHEV, only one disk shows after import
virt-filesystems: incorrect LVM vg name when listing Fedora 21 Alpha Atomic image filesystems
Не вистачає параметра --no-selinux-relabel
RFE: Allow qemu-bridge-helper to be used to implement guestfs_set_network
virt-v2v prints warning: /files/etc/fstab/8/spec references unknown device "cdrom"
regression setting root password with virt-builder/virt-customize
virt-v2v -v -x during windows guest conversion will hang at hivex: hivex_open: used block id ……
Improve the error info when converting windows guest with unclean file system
virt-v2v fails to convert win7 guest
RFE: stat calls do not return nanosecond timestamps
futimens() is a no-op via guestmount
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
virt-customize option '--password-crypto' do not work
Warning shows when converting guests to rhev:chown: changing ownership of ‘/tmp/v2v.u48xag/*.ovf’: Invalid argument
warning shows when converting rhel7 guest:virt-v2v:could not update grub2 console: aug_get: no matching node (ignored)
virt-v2v fails with error: cannot open Packages index using db5
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'
virt-sysprep option '--mount-options' don't work well
Illegal command 'part-get-name /dev/sda1 1' cause libguestfs appliance crashed
virt-v2v prints warning:WARNING:/files/boot/grub/device.map references unknown device "xvda"
virt-v2v: error: disk sda has no defined format shows when converting xen hvm guest
[RFE] virt-v2 should support convert a domain with using domain's UUID instead of domain name
[RFE] virt-v2 should support convert a guest to a dir-pool with using pool's uuid
virt-sysprep option '--user-accounts' don't work well
virt-v2v fails to convert xen pv guests.
virt-v2v fails to convert esx guests
qemu-img shows error message for backing file twice
No error messages output if append '--format qcow2' after '-a guest.img', guest.img is a raw format image file
virt-builder option '--format' don't work well
RFE: Export to RHEV data domain
No error shows when multiple conflicting options used with virt-v2v
Improve the error info when converting xen guest with no passwordless SSH access configured
Improve the error info when converting guest with no space left
No error shows when converting running guest with virt-v2v
virt-v2v will fail when converting guests with initramfs-*kdump.img under /boot
xen guest will be kernel panic after converted by virt-v2v
Annoying message about permissions of /dev/kvm
libguestfs 'direct' backend should close file descriptors before exec-ing qemu to avoid leaking !O_CLOEXEC fds
virt-sparsify overwrites block devices if used as output files
Empty fstab breaks libguestfs inspection
Guestfs.Error("vgchange_uuid_all: Volume group has active logical volumes")
virt-win-reg manual page is corrupted
root gets an error accessing to a non-root dir on a snapshot guestmount VMDK img
These APIs also need to add to `guestfish -h` command list
Список пакунків mageia є помилковим
libguestfs 1.27.13 does not build due to libxml library order
RFE: non-polling mechanism to detect guestmount --no-fork readiness
scrub-file can't handle link file
Друкарські помилки у сторінках man
RFE: virt-builder aliases
virt-builder "proxy=off" setting doesn't turn off the proxy for downloads
virt-sparsify man failes to mention what happens to snapshots within a qcow2 image (they are discarded)
virt-builder: If several repos contain the same os-version images, then they are duplicated in -l output
tar-in-opts execute failed that cause libguestfs appliance crashed
virt-resize: libguestfs error: part_set_name: parted: /dev/sdb: Error during translation: Invalid or incomplete multibyte or wide character
virt-builder cannot write to a block device
Ruby tests fail with latest Ruby
virt-sparsify --in-place cannot sparsify as much as it should
virt-df cannot report used disk space of windows guest when updated to 6.5
virt-builder error: "syntax error at line 3: syntax error"
virt-sparsify overwrites block devices if used as output files
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 потрібні такі додаткові пакунки:

Для збирання цієї версії libguestfs потрібен supermin версії 5.
Virt-builder тепер використовує справжній засіб обробки для свого файла метаданих, отже ці інструменти тепер є обов'язковими.
Тепер це обов'язкова частина для збирання там, де раніше (теоретично) вона була необов'язковою.

Внутрішня частина роботи програми

Переписано засіб видобування повідомлень 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".

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

java bindings inspect_list_applications2 throws java.lang.ArrayIndexOutOfBoundsException:
[RFE] enable subscription manager clean or unregister operation to sysprep
virt-resize does not preserve GPT partition names
mount-local should give a clearer error if root is not mounted
virt-sparsify overwrites block devices if used as output files
libguestfs: error: invalid backend: appliance
guestfs_pvs prints "unknown device" if a physical volume is missing
Recommended default clock/timer settings
ruby-libguestfs throws "expecting 0 or 1 arguments" on Guestfs::Guestfs.new
Cannot inspect cirros 0.3.1 disk image fully
LIBVIRT_DEFAULT_URI=qemu:///system breaks libguestfs
virt-builder network (eg. --install) doesn't work if resolv.conf sets nameserver 127.0.0.1
When SSSD is installed, libvirt configuration requires authentication, but not clear to user
virt-make-fs fails making fat/vfat whole disk: Device partition expected, not making filesystem on entire device '/dev/sda' (use -I to override)
virt-sysprep to delete more logfiles
RFE: libguestfs inspection does not recognize Free4NAS live CD
RFE: virt-sysprep/virt-builder повинні мати можливість блокувати обліковий запис користувача
libguestfs fails examining libvirt guest with ceph drives: rbd: image name must begin with a '/'
virt-builder не працює, якщо не існує $HOME/.cache
libguestfs: не слід використовувати файл jar із зазначенням версії
Усі дії libguestfs із LVM завершуються невдало у Debian/Ubuntu
Need update helpout of part-set-gpt-type
virt-sysprep does not correctly set the hostname on Debian/Ubuntu
guestfish виводить у повідомленнях про помилки «\n» буквально
guestmount: "touch" command fails: touch: setting times of `timestamp': Invalid argument
[RFE] function to get partition name
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.

Безпека

https://bugzilla.redhat.com/show_bug.cgi?id=968306

Була можливою відмова у обслуговування під час інспектування певних гостьових систем. Виправлення зворотно портовано на гілки 1.20 і 1.22.

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 потрібні такі пакунки:

Вказаними нижче пакунками можна скористатися для розширення можливостей, але вони не є обов'язковими:

Для читання файлів журналів з гостьових систем, де використовуються журнали.
Для модуля обробки UML.
Для virt-builder.
Для прив’язок до мови 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) з основної системи.

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

libguestfs-tools.conf потрібна сторінка man
Помилки valgrind у btrfs_subvolume_list
mke2fs can't return the correct filesystem type when blockscount is less than 2048 for ext3
Update "rsync-out" helpout for using wildcard
Argument 'excludes' of tar-out does not work
virt-format uses wrong partition type for vfat filesystems
'sh' command before mount causes daemon to segfault
guestfish does not work when you mix --remote and --add options
guestfish remote prints "libguestfs: error: waitpid (qemu): No child processes"
list-filesystems command fails if there are no block devices
cache=none/O_DIRECT workaround doesn't work for images with backing files
cap-get-file will return error if the file has not be set capabilities
RFE: Implement set-uuid command
RFE: Implement set-label for xfs
Can't set acl value for a specified user with 'acl-set-file'
libguestfs double free when kernel link fails during launch
Make xfs filesystem failed with specified blocksize, gives "unknown option -b" error
"hivex-commit" should fail with a relative path
disk-format "qemu-img info: JSON parse error" when target file does not exist
mke2fs-J should give a meaningful error when specified type is anything except 'ext{2,3,4}'
Specifying virtio interface ('iface' parameter) breaks the direct backend - libguestfs hangs
"virt-resize --expand" and "virt-resize --resize" outputs error message for Win2008 32bit OS
inspection: Augeas expressions are broken with augeas >= 0.10
virt-resize --expand fails on Ubuntu Cloud Image
Regression: Fedora inspection broken by change from guestfs_exists to guestfs_is_file
txz-out command produces a bzip2-compressed file (should be xz-compressed)
upload to a directory occasionally hangs instead of failing
virt-sysprep should support URL-type arguments
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 під час тестування.

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

Segfault in inspect-fs.c in mountable code
tar-out and base64-out quoting error
libguestfs: error: btrfsvol:/dev/sda2/root: root device not found: only call this function with a root device previously returned by guestfs_inspect_os
Не вдається виконати інспектування, якщо не встановлено libosinfo
file on zero-sized file now produces "empty " instead of "empty"
qemu: could not open disk image /tmp/.../snapshot1: Permission denied
"error: external command failed, see earlier error messages" message needs to change
libguestfs should use --output json (if supported) to safely parse the output of qemu-img command
feature request: guestmount --with-cleanup-pipefd
oom-killer kills guestfsd when tar-in a lot of data
FileIn commands cause segfault if appliance dies during the file copy in
Misc leaks in virNetClientProgramCall in libvirt 1.0.2
Security context on image file gets reset
libguestfs-test-tool --qemu segfaults
Unexpected non-tail recursion in recv_from_daemon results in stack overflow in very long-running API calls that send progress messages
virt-tar fails on non-existent directory names "error in chunked encoding at /home/rjones/d/libguestfs/tools/virt-tar line 272."
virt-cat fails on directory names "/dev/stdout: error in chunked encoding"
btrfs causes subsequent ntfs-3g filesystem to fail
"No such file or directory" when execute "hivex-commit"
btrfs_subvolume_list broken due to change in subvolume list output
guestmount: rename() incorrectly follows symbolic links
guestmount: link() incorrectly returns ENOENT, when it should be EXDEV
checksums-out fail to compute the checksums of all regular files in directory
libguestfs FTBFS on Fedora 19 because of new ruby
virt-sysprep: Setting hostname, domain name and pretty name on Fedora 18 correctly
pvcreate fails if partition contains a swap signature
zero_free_space: open: /sysroot//ujqqq135.rd3: Cannot allocate memory
libguestfs with libvirt attach-method fails with odd error if default hypervisor is Xen
Adding a zero-length virtio-scsi disk causes: qemu-kvm: hw/scsi-bus.c:1568: scsi_req_complete: Assertion `req->status == -1' failed.
libguestfs cannot open disk images which are symlinks to files that contain ':' (colon) character
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).

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

Інструменти libguestfs показують повідомлення про незрозумілі помилки, якщо TMPDIR не є абсолютним шляхом
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."
libguestfs: перехід на /etc/hostname, /etc/vconsole.conf, /etc/locale.conf
virt-df із двома параметрами -a options показує некоректну назву образу диска
libguestfs-test-tool pauses when you use --help option
mke2fs API does not apply block device naming translation to journaldevice optarg
SELinux policy ought to allow qemu to write to unconfined_u:object_r:user_tmp_t:s0
RFE: inspect-list-applications does not return the architecture of RPM packages
inspect-list-applications does not list all installed RPM packages with same name and different versions
guestfish printed paths are not canonicalized
Progress bar output should go to tty(?) stderr(?)
virt-sysprep reports Guestfs.Error("read_lines: fopen: /etc/sysconfig/network: No such file or directory") on some Fedora guests
libguestfs fail to list devices added by add-drive-ro-with-if twice
virt-inspector fail to work with some windows guests
virt-sparsify should use a more robust method to detect the input format
libvirt doesn't label console, serial sockets
virt-rescue у Fedora 18 повністю непрацездатний
libguestfs inspection limits registries to 100 MiB
virt-sparsify --compress не працює, якщо дані виводяться у необробленому форматі (raw)
RFE: allow extra arguments (like --exclude) to tar-out
tar-out should allow (or force) --numeric-owner
guestfish "copy-out / localdir" command fails with "No such file or directory"
Long filenames on NTFS cause tar-out, copy-out etc to fail with error "Cannot open: File name too long"
RFE: Need help designing and implementing selinux policy for libguestfs/sVirt
virt-make-fs / tar-in має підтримувати vfat належним чином
guestfish touch problem - case_sensitive_path API expects the file to exist
Втрата даних під час запису до файлів дисків у форматі qcow2
lvresize, lvresize-free fail unnecessarily if you don't change the size of the LV: "New size (nn extents) matches existing size (nn extents)"
compress-device-out didn't support bzip2
guestfish unrecognized mount option gives confusing error message
Файли із китайськими ієрогліфами у назвах не можна створити у файловій системі vfat
virt-make-fs cannot create vfat filesystem containing filesystems with Chinese characters
virt-make-fs -t fat не працює, повідомляючи про незрозумілу помилку
Inspection fails when /etc/HOSTNAME is empty
libguestfs cannot get icon for Windows 8
Ubuntu install CDs from oneiric onwards are not recognized: "multi-boot operating systems are not supported"
libguestfs doesn't recognize Windows Dynamic disks in some configurations, eg. spanned
Not all febootstrap messages are redirected to log callbacks
libguestfs inspector code cannot handle /dev/disk/by-id/* paths
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.

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.
2019-02-07 libguestfs-1.40.2