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.
Нові програмні інтерфейси
Інші зміни у програмному інтерфейсі
"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.
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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".
Нові програмні інтерфейси
Інші зміни у програмному інтерфейсі
Програмні інтерфейси, реалізовані у фоновій службі, тепер можна писати на 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).
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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 перед передаванням її до командного рядка ядра базової системи.
Нові програмні інтерфейси
Інші зміни у програмному інтерфейсі
Цей програмний інтерфейс тепер може повертати такі нові значення: "riscv32", "riscv64", "riscv128", "s390", "s390x".
libmagic, бібліотечна частина програми "file", тепер потрібна для збирання (раніше вона була необов'язковою).
Реалізовано підтримку GCC 7.
Тепер програми OCaml та прив'язки до Java використовують «мовчазні правила». Щоб переглянути рядок команди, яка виконується, додайте "V=1" до рядка команди make (Pino Toscano).
Повільне тестування ("make check-slow") тепер покриває: скрипти firstboot у гостьових системах Linux; перетворення v2v набору справжніх гостьових систем Linux; параметри virt-customize --hostname та --timezone; параметр --root-password; те, що послідовна консоль працює у гостьових системах virt-builder.
Великі автоматично створені файли з кодом мовою C, наприклад список команд у fish/cmds.c (та багато інших), поділено на менші файли для пришвидшення паралельного збирання.
"make maintainer-check-extra-dist" тепер перевіряє, чи усі створені файли було включено до архіву tar.
Тести тепер не припускають, що "." перебуває у @INC Perl, оскільки її скоро збираються вилучити (Pino Toscano).
Реалізовано підтримку основних систем Debian з UsrMerge (Pino Toscano).
Файли заголовків та структури C тепер можуть містити вбудовану документацію з використання спеціальних коментарів "/** ... */".
Підстановки "@VAR@" у "./run" тепер повністю екрануються лапками. Це потрібно для того, щоб (наприклад) команда "./configure PYTHON=/якийсь/шлях" працювала належним чином, якщо у "/якийсь/шлях" містяться символи, які слід екранувати (Hilko Bengen).
Реалізовано підтримку gperf ≥ 3.1.
Старі збірки Kraxel-я для edk2 тепер не можна використовувати для забезпечення підтримки UEFI. Код UEFI тепер повністю програмний, тому слід використовувати версії з комплекту вашого дистрибутива Linux.
Virt-p2v тепер можна зібрати на Linux RHEL 5 (випущено у 2007 році) з Gtk 2.10.
Тепер модулі generator та mllib "Common_utils" використовуються спільно з одного файла початкового коду.
Значну частку загального коду було пересунуто до каталогу common у початковому коді. Тепер вона збирається лише одного разу. Мінібібліотеки, які містяться у цьому каталозі: common/edit, common/errnostring, common/miniexpect, common/options, common/parallel, common/progress, common/protocol, common/utils, common/visit, common/windows.
Каталог, у якому зберігається основний код бібліотеки пересунуто, src → lib.
Усі тести, які було написано мовою командної оболонки, тепер використовують спільний файл із допоміжними функціями (tests/test-functions.sh). Написано ще декілька нових допоміжних функцій, зокрема для пропускання певних перевірок. Крім того, ці скрипти тестування тепер можуть використовувати autoconf-подібні змінні шляхів, зокрема $abs_top_srcdir.
Шляхи UEFI тепер зберігаються у generator (generator/uefi.ml).
Спосіб, у який засіб створення обробляє дії і номери процедур, було суттєво змінено. Див. generator/actions_*.ml і generator/proc_nr.ml.
Тепер модуль gnulib "getprogname" використовується всюди, де потрібна назва програми чи виведення назви програми (Pino Toscano).
perl/Guestfs.c не придатний до перекладу (Nikos Skalkotos).
Шаблони virt-builder пересунуто з builder/website до builder/templates. Тепер є одна уніфікована програма, яка може зібрати будь-який шаблон.
Усі засоби роботи з реєстром Windows, які використовуються virt-customize і virt-v2v, було пересунуто до спільного модуля із назвою "Registry" у mllib.
Усі прив'язки POSIX було пересунуто до нового модуля з назвою "Unix_utils" у mllib.
У засобі інспектування, virt-customize та virt-v2v у декількох місцях усунено повторне визначення "%systemroot%", "CurrentControlSet" та шляхів до роїв "HKLM\SYSTEM" і "HKLM\SOFTWARE" у Windows. Усі ці дані визначаються один раз (під час інспектування) і передаються іншим інструментам за допомогою різноманітних програмних інтерфейсів "guestfs_inspect_get_windows_*".
"/dev/pts" тепер доступний у базовій системі, отже будь-які інструменти, які потребують для роботи pty, тепер працюватимуть (Pino Toscano).
Виправлено більшу частину попереджень OCaml.
Тепер існує єдина загальна функція для створення тимчасових файлів ("guestfs_int_make_temp_path") (Matteo Cafasso).
Реалізовано перевірку змінної середовища $TERM перед передаванням її до командного рядка ядра базової системи.
У базовій системі більше не створюються непотрібні пристрої USB та memballoon (Laine Stump).
На aarch64 для базової системи тепер використовується virtio-pci. Це дещо швидше за virtio-mmio.
Було мінімізовано використання srandom(3) і random(3). Зокрема, тимчасові назви файлів більше не створюються на основі даних, які повертає random(3), замість цього використовується /dev/urandom.
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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 та створення криптографічних ключів.
Нові програмні інтерфейси
Зауважте, що ці зміни потребують встановлення додаткової залежності, The Sleuth Kit. (Matteo Cafasso)
Інші зміни у програмному інтерфейсі
"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).
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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).
Це не вразливість у libguestfs, але оскільки ми завжди надаємо порт virtio-serial для кожної гостьової системи (оскільки так здійснюється обмін даними між гостьовою і основною системами), можливе проникнення з базової системи до процесу qemu основної системи. Це може стосуватися таких випадків:
Якщо ви використовуєте sVirt для обмеження qemu, це може запобігти деяким нападам.
Раніше, якщо надходила команда щодо вставляння ключа SSH до гостьової системи, virt-customize (а отже, virt-builder) створювала каталог .ssh і файл .ssh/authorized_keys із надто широким доступом, що надавало стороннім користувачам доступ до читання цих даних. Тепер цей каталог і файл створюються з правами доступу 0700 і 0600, відповідно, що збігається із правилами, які використовує програма ssh-copy-id(1).
Нові програмні інтерфейси
libguestfs: trace: foo
на таке:
libguestfs: trace: ID: foo
що спрощує стеження за трасуванням у багатопотокових програма або там, де програма використовує декілька дескрипторів (особливо virt-v2v).
Інші зміни у програмному інтерфейсі
Це також додає "full", який відповідає повному розміщенню, але використовує posix_fallocate(3) для забезпечення ефективності.
Вилучено параметр "./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 фізичної машини джерела до каталогу діагностичних даних сервера перетворення, що діагностику у випадку нестачі драйверів, мікропрограми тощо.
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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 тепер мають такі нові параметри:
Поліпшення у підтримці 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-бітову версію або версію зі зворотним порядком байтів.
Щоб дізнатися більше, ознайомтеся із внеском https://github.com/libguestfs/libguestfs/commit/6c6ce85f94c36803fe2db35a98db436bff0c14b0
До libguestfs було внесено зміни щодо обмеження споживання ресурсів за об'ємом і часом, які стосуються "qemu-img info" і усувають вказану проблему. Якщо зловмисник спробує передати один зі спеціально створених образів диска libguestfs, "qemu-img" завершить роботу в аварійному режимі і поверне керування libguestfs, надавши дані щодо аварії як повідомлення про помилку.
Нові програмні інтерфейси
Інші зміни у програмному інтерфейсі
"guestfs_disk_create" тепер може використовувати файли VMDK як файли резервної пам'яті.
"guestfs_btrfs_subvolume_snapshot" приймає додаткові необов'язкові параметри (усі додано Hu Tao):
"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 безпосередньо для фонової служби під час тестування.
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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.
Оскільки XML libvirt надходить із надійного джерела (фонової служби libvirt), ми вважаємо, що цією вразливістю неможливо було скористатися.
Вразливість виправлено у libguestfs ≥ 1.27.9, виправлення було зворотно портовано до стабільних версій ≥ 1.26.2, ≥ 1.24.9, ≥ 1.22.10 та ≥ 1.20.13. (Подяки: Dan Berrange, Pino Toscano).
Нові програмні інтерфейси
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 тощо.
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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.
Причиною було розіменування нульового вказівника, яке спричиняло відмову в обслуговуванні. Ми вважаємо, що ширше використання цієї вразливості неможливе.
Див. внесок d70ceb4cbea165c960710576efac5a5716055486 із виправленням. Це виправлено включено до стабільних гілок libguestfs ≥ 1.26.0, ≥ 1.24.6 та ≥ 1.22.8, а також до RHEL ≥ 7.0. Старіші версії libguestfs не є вразливими.
Тепер перевіряється коректність параметрів GUID, коли їх передають до викликів програмного інтерфейсу. Раніше можна було передати довільний рядок. (Pino Toscano)
Нові програмні інтерфейси
export LIBGUESTFS_BACKEND=direct export LIBGUESTFS_BACKEND_SETTINGS=force_tcg
Для збирання libguestfs 1.26 потрібні такі додаткові пакунки:
Переписано засіб видобування повідомлень 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". Нетиповий формат більше не використовується.
Змінено процедуру запуску базової системи:
Зауважте, що вам слід налаштувати ваше ядро так, щоб у ньому було "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".
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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.
Була можливою відмова у обслуговування під час інспектування певних гостьових систем. Виправлення зворотно портовано на гілки 1.20 і 1.22.
Виправлено незахищену обробку тимчасових каталогів для віддалених 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 потрібні такі пакунки:
Вказаними нижче пакунками можна скористатися для розширення можливостей, але вони не є обов'язковими:
Нові правила "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) з основної системи.
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.20.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.
API
Віддалений доступ до таких дисків:
Завантажувачі 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 під час тестування.
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.18.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.
libvirt і sVirt (контейнер SELinux)
Ви можете, якщо хочете, скористатися libvirt для запуску і керування базовою системою за допомогою:
Для захисту базової системи 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":
"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.
Поділ коду бібліотеки на більшу кількість файлів:
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).
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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 польською
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (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
До 2010 року у libguestfs не було офіційних нотаток щодо випуску або формалізованої системи нумерації версій. Втім, нижче наведено посилання на важливі у історичному плані версії.
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:
2019-02-07 | libguestfs-1.40.2 |