Scroll to navigation

guestfs(3) Virtualization Support guestfs(3)

НАЗВА

guestfs — бібліотека для доступу та внесення змін до образів віртуальних машин

КОРОТКИЙ ОПИС

 #include <guestfs.h>
 
 guestfs_h *g = guestfs_create ();
 guestfs_add_drive (g, "guest.img");
 guestfs_launch (g);
 guestfs_mount (g, "/dev/sda1", "/");
 guestfs_touch (g, "/hello");
 guestfs_umount (g, "/");
 guestfs_shutdown (g);
 guestfs_close (g);
 cc prog.c -o prog -lguestfs
або:
 cc prog.c -o prog `pkg-config libguestfs --cflags --libs`

ОПИС

Libguestfs є бібліотекою для доступу до образів дисків та віртуальних машин і внесення зміни до них.

Цю сторінку підручника присвячено документації щодо програмного інтерфейсу мовою програмування C.

Якщо вам потрібна якась вступна інформація щодо libguestfs, зверніться до цього сайта: http://libguestfs.org/

У кожного інструмента віртуалізації є власна сторінка підручника (повний список наведено у розділі "ДИВ. ТАКОЖ" наприкінці цього файла).

Інші сторінки підручника, які присвячено libguestfs:

guestfs-faq(1)
Поширені питання (ЧаП).
guestfs-examples(3)
Приклади використання програмного інтерфейсу з C. Приклади іншими мовами програмування можна знайти у розділі "ВИКОРИСТАННЯ LIBGUESTFS ЗА ДОПОМОГОЮ ІНШИХ МОВ ПРОГРАМУВАННЯ" нижче.
guestfs-recipes(1)
Підказки і рецепти.
guestfs-performance(1)
Настанови та рішення, які пов’язано із швидкодією.
libguestfs-test-tool(1)
guestfs-testing(1)
Допомога у тестуванні libguestfs.
guestfs-building(1)
Настанови щодо збирання libguestfs з початкових кодів.
guestfs-hacking(1)
Надсилання коду до libguestfs.
guestfs-internals(1)
Опис принципів роботи libguestfs.
guestfs-security(1)
Дані щодо безпеки, зокрема список CVE, пов’язаних із libguestfs.

ОГЛЯД API

У цьому розділі наведено поверхневий огляд програмного інтерфейсу libguestfs. Ми також намагалися згрупувати виклики програмного інтерфейсу, де це не очевидно з матеріалів щодо окремих викликів у основному розділі цього підручника.

ОБРОБНИКИ

Перш ніж ви зможете скористатися викликами libguestfs, вам слід створити дескриптор. Далі, вам слід додати до дескриптора принаймні один образ диска, потім запустити дескриптор, далі виконати потрібні вам дії і, нарешті, закрити дескриптор. За угодою щодо синтаксису ми використовуємо одну літеру "g" для іменування змінної дескриптора, хоча, звичайно ж, ви можете вибрати будь-яку іншу назву.

Загальна структуру усіх програм, де використовується libguestfs, є подібною до такої:

 guestfs_h *g = guestfs_create ();
 
 /* Викликаємо guestfs_add_drive додаткові рази, якщо
  * образів дисків декілька.
  */
 guestfs_add_drive (g, "guest.img");
 
 /* Більшість викликів з обробки не працюватимуть, доки ви
  * не запустите дескриптор «g». Вам слід зробити це _після_ додавання
  * дисків і _до_ інших команд.
  */
 guestfs_launch (g);
 
 /* Або визначити розділи, логічні томи тощо, які є доступними: */
 char **partitions = guestfs_list_partitions (g);
 char **logvols = guestfs_lvs (g);
 
 /* Або наказати libguestfs знайти для вас файлові системи: */
 char **filesystems = guestfs_list_filesystems (g);
 
 /* Або скористатися інспекцією (див. розділ щодо інспекції нижче). */
 
 /* Щоб отримати доступ до файлової системи у образі, вам слід її змонтувати. */
 guestfs_mount (g, "/dev/sda1", "/");
 
 /* Тепер ви можете виконувати дії з файловою системою на
  * образі диска операційної системи.
  */
 guestfs_touch (g, "/hello");
 
 /* Синхронізуємо диск. Це дія, протилежна до guestfs_launch. */
 guestfs_shutdown (g);
 
 /* Закрити і звільнити дескриптор «g». */
 guestfs_close (g);

До наведеного вище коду не включено обробник помилок. У справжньому коді слід ретельно перевіряти повернуті значення на помилки. Загалом, усі функції, які повертають цілі числа, повертають "-1", якщо станеться помилка, а усі функції, які повертають вказівники, якщо станеться помилка, повертають "NULL". Див. розділ "ОБРОБКА ПОМИЛОК" нижче, щоб дізнатися про те, як обробляти помилки. Також ознайомтеся із документацією щодо кожного виклику функції, щоб дізнатися більше про те, як функції повідомляють про помилки.

У наведеному вище коді не виконується free(3) для рядків та масивів, які повертаються функціями. Зверніться до документації з відповідної функції, щоб дізнатися більше про те, як звільнити повернуте значення.

Повноцінні робочі приклади можна знайти у підручнику guestfs-examples(3).

ОБРАЗИ ДИСКІВ

Назва файла образу ("guest.img" у наведеному вище прикладі) може бути назвою образу диска з віртуальної машини, створеної за допомогою dd(1) копії фізичного диска, справжнього блокового пристрою або просто назвою порожнього файла, заповненого нулями, який можна створити за допомогою posix_fallocate(3). Libguestfs надає вам змогу виконувати корисні операції із усіма такими образами.

Викликом, яким вам слід користуватися у сучасному коді для додавання дисків, є "guestfs_add_drive_opts". Щоб додати образ диска з можливістю запису і вказати його формат (raw), скористайтеся таким кодом:

 guestfs_add_drive_opts (g, filename,
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
                         -1);

Ви можете додати диск у режимі лише читання:

 guestfs_add_drive_opts (g, filename,
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
                         GUESTFS_ADD_DRIVE_OPTS_READONLY, 1,
                         -1);

або скористатися викликом старішої функції "guestfs_add_drive_ro". Якщо ви використовуєте прапорець лише читання, libguestfs не зможе вносити зміни до файла. (Див. також "ФОРМАТИ ОБРАЗІВ ДИСКІВ" нижче).

Будьте дуже обережні із дисками, які використовуються, наприклад, віртуальною машиною. Додавання таких дисків у режимі читання-запису майже напевне призведе до пошкодження вмісту, але додавання у режимі лише читання є безпечним.

Слід обов'язково додати принаймні один образ диска. Якщо потрібно, можна додати декілька образів. Якщо додається декілька образів дисків, вони, зазвичай, мають бути «пов'язані», тобто походити із однієї гостьової системи. У програмному інтерфейсі на образи дисків, зазвичай, посилаються у форматі /dev/sda (для першого доданого диска), /dev/sdb (для другого доданого диска) тощо.

Після виклику "guestfs_launch" додавати нові образи вже не можна. Ви можете викликати "guestfs_list_devices", щоб отримати список назв пристроїв у порядку, за яким їх було додано. Див. також "ІМЕНУВАННЯ БЛОКОВИХ ПРИСТРОЇВ" нижче.

Правила з'єднання дисків у «гарячому» режимі (у libguestfs ≥ 1.20) є дещо іншими. Див. "З'ЄДНАННЯ У «ГАРЯЧОМУ» РЕЖИМІ" нижче.

МОНТУВАННЯ

Перш ніж ви зможете читати або записувати файли, створювати каталоги та виконувати інші дії на образі диска, який містить файлові системи, вам слід змонтувати ці файлові системи за допомогою "guestfs_mount" або "guestfs_mount_ro". Якщо ви вже знаєте, що на образі диска (наприклад) міститься один розділ із файловою системою, ви можете змонтувати її безпосередньо:

 guestfs_mount (g, "/dev/sda1", "/");

де /dev/sda1 означає буквально «перший розділ (1) першого образу диска, який було додано (/dev/sda)».
Якщо на диску містяться логічні томи LVM2 Linux, ви можете посилатися на них (наприклад, /dev/VG/LV). Зауважте, що вказані пристрої є віртуальними пристроями libguestfs, які не мають нічого спільного із пристроями основної системи.

Якщо у вас є образ диска, і ви не знаєте, що саме на ньому міститься, вам доведеться спочатку все це з'ясувати. Libguestfs теж може це робити: скористайтеся "guestfs_list_partitions" або "guestfs_lvs" для отримання списку можливих розділів і логічних томів, а потім або спробуйте змонтувати кожен з них, щоб визначити, які з них придатні до монтування, або у якийсь інший спосіб вивчіть їх за допомогою "guestfs_vfs_type" або "guestfs_file". Щоб просто отримати список файлових систем, скористайтеся "guestfs_list_filesystems".

Крім того, у libguestfs передбачено набір програмних інтерфейсів для інспектування невідомих образів дисків (див. "ІНСПЕКТУВАННЯ" нижче). Ви також можете скористатися високорівневими програмами, побудованими на основі libguestfs, зокрема virt-inspector(1).

Щоб змонтувати файлову систему у режимі лише читання, скористайтеся "guestfs_mount_ro". Передбачено декілька інших варіантів викликів "guestfs_mount_*".

ДОСТУП ТА ВНЕСЕННЯ ЗМІН ДО ФАЙЛОВИХ СИСТЕМ

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

Вказуйте адреси і назви файлів повністю, починаючи з "/", разом з точкою монтування.

Наприклад, якщо вами змонтовано файлову систему до "/", і ви бажаєте виконати читання файла з назвою "etc/passwd", ви можете скористатися таким кодом:

 char *data = guestfs_cat (g, "/etc/passwd");

Ця функція повертає дані "data" як новорозміщений буфер, що містить усі дані з файла (із певними умовами; див. також "ОТРИМАННЯ" нижче) або "NULL", якщо сталася помилка.

Ще один приклад: для створення каталогу верхнього рівня із назвою "var" на цій файловій системі можна скористатися такою командою:

 guestfs_mkdir (g, "/var");

Щоб створити символічне посилання, ви можете скористатися таким кодом:

 guestfs_ln_s (g, "/etc/init.d/portmap",
               "/etc/rc3.d/S30portmap");

Libguestfs відкидатиме спроби скористатися відносними шляхами. Крім того, не передбачено поняття поточного робочого каталогу.

Libguestfs може повертати помилки у багатьох випадках: наприклад, якщо файлова система не придатна до запису або якщо потрібного вам файла або каталогу не існує. Якщо ви користуєтеся програмним інтерфейсом C (документовано тут), вам слід перевіряти умову наявності помилки після кожного виклику. (У інших прив'язках до мов програмування ці помилки перетворюються на виключення.)

Запис до файлів визначається окремою для кожного дескриптора umask, як встановлюється викликом "guestfs_umask" і має типове значення 022. Див. "UMASK".

Починаючи з версії libguestfs 1.18, можна монтувати файлову систему libguestfs до локального каталогу із деякими обмеженнями. Див. "ЛОКАЛЬНЕ МОНТУВАННЯ" нижче.

ПОДІЛ НА РОЗДІЛИ

У libguestfs передбачено виклики програмного інтерфейсу для читання, створення та внесення змін до таблиць розділів на образах дисків.

У типовому випадку, коли вам потрібно створити єдиний розділ на увесь диск, вам слід скористатися викликом "guestfs_part_disk":

 const char *parttype = "mbr";
 if (disk_is_larger_than_2TB)
   parttype = "gpt";
 guestfs_part_disk (g, "/dev/sda", parttype);

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

LVM2

Libguestfs надає доступ до великої частини програмного інтерфейсу LVM2, зокрема "guestfs_lvcreate" і "guestfs_vgremove". Але цей доступ не матиме великого сенсу, якщо ви не ознайомитеся докладно із поняттями фізичних томів, груп томів та логічних томів.

Автор цього підручника наполегливо рекомендує ознайомитися із настановами щодо LVM HOWTO, які наведено у інтернеті: http://tldp.org/HOWTO/LVM-HOWTO/.

ОТРИМАННЯ ДАНИХ

Для отримання невеличких текстових файлів скористайтеся "guestfs_cat". Цей виклик не може обробляти файли, які містять символи ASCII NUL ("\0"). Втім, програмний інтерфейс цього виклику є дуже простим у використанні.

"guestfs_read_file" можна скористатися для читання файлів, які містять довільні 8-бітові дані, оскільки цей виклик повертає пару (вказівник, розмір).

"guestfs_download" можна скористатися для отримання будь-якого файла без обмежень на вміст або розмір.

Для отримання одразу декількох файлів скористайтеся "guestfs_tar_out" і "guestfs_tgz_out".

ВИВАНТАЖЕННЯ

Для запису невеличкого файла із фіксованим вмістом скористайтеся "guestfs_write". Для створення файла, який заповнено нулями, скористайтеся "guestfs_truncate_size" (розріджений файл) або "guestfs_fallocate64" (файл, для якого розподілено усі блоки на диску). Передбачено багато інших функцій для створення тестових файлів, наприклад "guestfs_fill" і "guestfs_fill_pattern".

Для вивантаження окремого файла скористайтеся "guestfs_upload". У цього виклику немає обмежень на вміст і розмір файла.

Для вивантаження одразу декількох файлів скористайтеся "guestfs_tar_in" і "guestfs_tgz_in".

Втім, найшвидшим способом вивантаження великої кількості довільних файлів є перетворення їх на squashfs або ISO компакт-диска (див. mksquashfs(8) і mkisofs(8)) і долучення до системи за допомогою "guestfs_add_drive_ro". Якщо ви додасте диск у передбачуваний спосіб (наприклад, додасте його після усіх інших дисків), назву пристрою можна буде отримати з "guestfs_list_devices", а диск можна буде безпосередньо змонтувати за допомогою "guestfs_mount_ro". Зауважте, що для образів squashfs іноді порушується сумісність із ядрами системи, у них не передбачено підтримки міток та UUID. Якщо ви хочете попередньо зібрати образ або хочете змонтувати його із міткою або UUID, вам слід скористатися форматом образу ISO.

КОПІЮВАННЯ

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

файл у файл
Скористайтеся "guestfs_cp" для копіювання окремого файла або "guestfs_cp_a" для рекурсивного копіювання каталогів.

Для копіювання частини файла (з визначенням відступу та розміру даних) скористайтеся "guestfs_copy_file_to_file".

файл на пристрій
пристрій до файла
пристрій на пристрій
Скористайтеся "guestfs_copy_file_to_device", "guestfs_copy_device_to_file" або "guestfs_copy_device_to_device".

Приклад: дублювання вмісту логічного тому:

 guestfs_copy_device_to_device (g,
         "/dev/VG/Original", "/dev/VG/Copy",
         /* -1 позначає завершення списку необов'язкових параметрів */
         -1);
    

Призначення (/dev/VG/Copy) має бути не меншого розміру за джерело (/dev/VG/Original). Для копіювання обсягу даних, який є меншим за увесь пристрій джерела, скористайтеся додатковим параметром "size":

 guestfs_copy_device_to_device (g,
         "/dev/VG/Original", "/dev/VG/Copy",
         GUESTFS_COPY_DEVICE_TO_DEVICE_SIZE, 10000,
         -1);
    
файл на вузлі на файл або пристрій
Скористайтеся "guestfs_upload". Див. "ВИВАНТАЖЕННЯ" вище.
файл або пристрій у файл на вузлі
Скористайтеся "guestfs_download". Див. "ОТРИМАННЯ" вище.

ВИВАНТАЖЕННЯ І ОТРИМАННЯ ДАНИХ З КАНАЛІВ ТА ДЕСКРИПТОРІВ ФАЙЛІВ

Виклики, подібні до "guestfs_upload", "guestfs_download", "guestfs_tar_in", "guestfs_tar_out" тощо, як може здатися, приймають як аргументи лише назви файлів, тому, як може здатися, ви можете вивантажувати дані лише до файлів і отримувати дані лише з файлів. Втім, у багатьох Un*x-подібних основних системах можна використовувати спеціальні файли пристроїв /dev/stdin, /dev/stdout, /dev/stderr і /dev/fd/N для читання і записування даних з stdin, stdout, stderr та файла з довільним дескриптором N.

Наприклад, virt-cat(1) можна змусити записувати виведені дані до stdout у такий спосіб:

 guestfs_download (g, filename, "/dev/stdout");

а виведений архів tar можна записати до файла із вказаним дескриптором "fd" ось так:

 char devfd[64];
 snprintf (devfd, sizeof devfd, "/dev/fd/%d", fd);
 guestfs_tar_out (g, "/", devfd);

СПИСКИ ФАЙЛІВ

"guestfs_ll" призначено лише для створення зручних для читання даних (в основному, якщо використано еквівалент "ll" у guestfish(1)).

"guestfs_ls" — швидкий спосіб отримати список файлів у каталозі від програм у форматі простого списку рядків.

"guestfs_readdir" — програмний спосіб отримання списку файлів у каталозі разом із додатковою інформацією щодо кожного з файлів. Це дуже схоже на використання виклику readdir(3) у локальних файлових системах.

"guestfs_find" і "guestfs_find0" можна скористатися для рекурсивної побудови списку файлів.

ВИКОНАННЯ КОМАНД

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

Існує багато обмежень щодо цього:

  • Версія ядра системи відрізнятиметься від тієї, на яку може покладатися код програми.
  • Якщо програмі потрібно буде обмінятися даними із фоновими службами, найімовірніше, ці фонові служби не працюватимуть.
  • Програму буде запущено з обмеженим обсягом доступної пам'яті.
  • Мережа буде недоступною, якщо ви її не увімкнете (див. "guestfs_set_network").
  • Передбачено підтримку лише гостьових систем Linux (не Windows, BSD тощо).
  • Обмеження щодо архітектури (наприклад, не працює для гостьової системи PPC на основній системі X86).
  • У гостьових системах із SELinux може виникнути потреба у повторному створенні міток після створення файлів. Див. розділ "SELINUX" нижче.
  • Безпека: запускати програми із гостьових систем із невідомим походженням, гостьових систем, які може бути створено зловмисниками, небезпечно. Програми з таких систем можуть намагатися скористатися вразливостями у вашій програмі, надсилаючи їй спеціально сформовані дані. Також ці програми можуть намагатися скористатися вразливостями у ядрі Linux або qemu, які надаються базовою системою libguestfs. Програми можуть скористатися доступом до мережі, який надається базовою системою libguestfs для виходу за межі звичайних мережевих розділів та брандмауерів. Програми можуть намагатися розширити права доступу або змінити контекст SELinux вашої програми для виконання задумів зловмисників.

    Безпечною альтернативою є використання libguestfs для встановлення скрипту «firstboot» (скрипту, який запускається, коли гостьова система завантажується у звичайному режимі) таким чином, що цей скрипт запускав потрібні вам команди, у звичайному контексті запущеної гостьової системи, зі звичайним захистом мережі тощо. Щоб дізнатися більше про проблеми, пов'язані із захистом, ознайомтеся зі сторінкою підручника щодо guestfs-security(1).

Двома основними програмними інтерфейсами для запуску програм є "guestfs_command" і "guestfs_sh" (передбачено також певні варіанти цих інтерфейсів).

Відмінність двох інтерфейсів полягає у тому, що "guestfs_sh" виконує команди за допомогою командної оболонки, отже, працюють усі символи-замінники, переспрямовування тощо.

ФАЙЛИ НАЛАШТУВАННЯ

Для читання і запису файлів налаштувань у файлових системах гостьових операційних систем Linux ми наполегливо рекомендуємо скористатися Augeas. Наприклад, Augeas знає, як читати і записувати, скажімо, файл паролів Linux shadow або файл налаштувань X.org, отже, вам не доведеться писати для цього додатковий код.

Основні виклики Augeas виконуються за допомогою програмних інтерфейсів "guestfs_aug_*". Тут ми не наводимо документації щодо самої Augeas, оскільки існує чудова документація, викладена на сайті http://augeas.net/.

Якщо ви не хочете користуватися Augeas (ну який же ви неслухняний!), спробуйте викликати "guestfs_read_lines" для отримання файла у форматі списку рядків, які ви ітеративно зможете обробити у коді програми.

ФАЙЛИ ЖУРНАЛУ SYSTEMD

Для читання журналу systemd з гостьової системи Linux скористайтеся програмними інтерфейсами "guestfs_journal_*", починаючи з "guestfs_journal_open".

Із документацією щодо журналу можна ознайомитися за допомогою таких сторінок підручника: sd-journal(3), sd_journal_open(3).

SELINUX

Ми передбачили підтримку гостьових систем із SELinux. Втім, неможливо завантажити правила SELinux гостьової системи до ядра базової системи. Тому стратегія роботи з гостьовими системами із SELinux є повторне встановлення у них міток після внесення змін.

У libguestfs ≥ 1.34 передбачено новий програмний інтерфейс, "guestfs_setfiles", яким можна скористатися для виконання цього завдання. Щоб належним чином скористатися цим програмним інтерфейсом, вам слід обробити налаштування SELinux гостьової системи. Див. модульe virt-customize(1) customize/SELinux_relabel.ml, щоб дізнатися більше про це.

Простішою, але повільнішою альтернативою є виконання touch /.autorelabel у гостьовій системі, що означатиме, що гостьовій системі доведеться повторно встановити усі мітки під час наступного завантаження.

У libguestfs ≤ 1.32 було передбачено програмні інтерфейси "guestfs_set_selinux", "guestfs_get_selinux", "guestfs_setcon" and "guestfs_getcon". Ці програмні інтерфейси не працювали як слід, вони вважаються застарілими. Не використовуйте їх у новому коді.

UMASK

На деякі виклики впливає маска режиму створення поточного файла («umask»). Це, зокрема, виклики, які створюють файли або каталоги, наприклад "guestfs_touch", "guestfs_mknod" і "guestfs_mkdir". Маска впливає або на типовий режим створення файла, або змінює режим доступу, який ви встановлюєте.

Типовим значенням umask є 022. Отже, файли створюватимуться із правами доступу, які подібні до 0644, а каталоги — 0755.

Існує два способи уникнути впливу umask. Можна або встановити для umask значення 0 (викликати "guestfs_umask (g, 0)" одразу після запуску), або викликати "guestfs_chmod" після створення кожного файла або каталогу.

Докладніший опис umask можна знайти на сторінці підручника щодо umask(2).

МІТКИ І UUID

У багатьох файлових системах, на пристроях або логічних томах передбачено підтримку міток (коротких рядків, подібних до «BOOT», які можуть повторюватися) і/або UUID (унікальних на загальному рівні ідентифікаторів).

Для файлових систем користуйтеся "guestfs_vfs_label" або "guestfs_vfs_uuid" для читання мітки або UUID. У деяких файлових системах можна викликати "guestfs_set_label" або "guestfs_set_uuid" для зміни мітки або UUID.

Ви можете знайти файлову систему за міткою або UUID за допомогою виклику "guestfs_findfs_label" або "guestfs_findfs_uuid".

Для LVM2 (де передбачено підтримку лише UUID) передбачено широкий спектр інструментів програмного інтерфейсу для отримання UUID, отримання UUID об'єктів контейнерів і зміни UUID. Див. "guestfs_lvuuid", "guestfs_vguuid", "guestfs_pvuuid", "guestfs_vglvuuids", "guestfs_vgpvuuids", "guestfs_vgchange_uuid", "guestfs_vgchange_uuid_all", "guestfs_pvchange_uuid", "guestfs_pvchange_uuid_all".

Зауважте, що при клонуванні файлової системи, пристрою або усієї гостьової операційної системи варто встановити нові випадково створені UUID для копії.

ЗАШИФРОВАНІ ДИСКИ

Libguestfs allows you to access Linux guests which have been encrypted using whole disk encryption that conforms to the Linux Unified Key Setup (LUKS) standard. This includes nearly all whole disk encryption systems used by modern Linux guests. Windows BitLocker is also supported.

Use "guestfs_vfs_type" to identify encrypted block devices. For LUKS it returns the string "crypto_LUKS". For Windows BitLocker it returns "BitLocker".

Then open these devices by calling "guestfs_cryptsetup_open". Obviously you will require the passphrase!

Opening an encrypted device creates a new device mapper device called /dev/mapper/mapname (where "mapname" is the string you supply to "guestfs_cryptsetup_open"). Reads and writes to this mapper device are decrypted from and encrypted to the underlying block device respectively.

Групи томів LVM на пристрої можна зробити видимими викликом "guestfs_vgscan", за яким слід викликати "guestfs_vg_activate_all". Після цього логічні томи можна змонтувати у звичний спосіб.

Use the reverse process to close an encrypted device. Unmount any logical volumes on it, deactivate the volume groups by calling "guestfs_vg_activate (g, 0, ["/dev/VG"])". Then close the mapper device by calling "guestfs_cryptsetup_close" on the /dev/mapper/mapname device (not the underlying encrypted block device).

ЛОКАЛЬНЕ МОНТУВАННЯ

Починаючи з версії libguestfs 1.18, можна монтувати файлову систему libguestfs до локального каталогу і отримувати доступ до неї за допомогою звичайних викликів і програм POSIX.

Доступність цього може бути обмежено декількома факторами: у системі має бути встановлено FUSE (Filesystem in USErspace), а заголовкові файли libfuse мають бути доступними під час збирання libguestfs. FUSE може потребувати завантаження модуля ядра. Крім того, можливо, потрібно додати поточного користувача до спеціальної групи "fuse". Докладніші відомості можна знайти у документації до вашого дистрибутива та на http://fuse.sf.net.

Виклик монтування файлової системи libguestfs до локального каталогу є послідовним викликом "guestfs_mount_local" з наступним "guestfs_mount_local_run". Другий з цих викликів не повертає керування, аж доки ви не демонтуєте файлову систему. Причиною цього є те, що виклик входить до основного циклу обробки FUSE і обробляє запити ядра, перетворюючи їх на виклики libguestfs. Альтернативний підхід міг би полягати у створенні фонового потоку обробки для виконання цього завдання, але у libguestfs pthreads не є обов'язковою залежністю. Крім того, наш підхід є гнучкішим: наприклад, користувач може створити ще один потік обробки для "guestfs_mount_local_run".

"guestfs_mount_local" потребує певного часу на налаштовування точки монтування. Точка монтування лишатиметься недоступною, доки цей виклик не поверне керування. До цього моменту спроби доступу до файлової системи блокуватиметься, аж доки не буде здійснено вхід до основного циклу обробки (тобто передано керування до "guestfs_mount_local_run"). Отже, якщо вам потрібно запустити процес для доступу до файлової системи, додайте розгалуження між "guestfs_mount_local" і "guestfs_mount_local_run".

СУМІСНІСТЬ ЛОКАЛЬНОГО МОНТУВАННЯ

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

Якщо libguestfs було зібрано без підтримки "guestfs_mount_local", виклик цієї функції призводитиме до помилки із errno, встановленим у значення "ENOTSUP" (див. "guestfs_last_errno").

ШВИДКОДІЯ ПРИ ЛОКАЛЬНОМУ МОНТУВАННІ

Обгортка libguestfs навколо FUSE має доволі низький рівень швидкодії. Якщо вам потрібен найшвидший доступ, не використовуйте її. Замість неї користуйтеся звичайними викликами libguestfs, пов'язаними з обробкою файлових систем: вивантаженням і отриманням даних тощо.

З'ЄДНАННЯ У «ГАРЯЧОМУ» РЕЖИМІ

У libguestfs ≥ 1.20 ви можете додавати і вилучати диски після виклику "guestfs_launch". Втім, є декілька обмежень, опис яких наведено нижче. Таку можливість будемо називати з'єднанням у «гарячому» режимі.

Підтримку з'єднання у «гарячому» режимі передбачено лише у деяких модулях обробки даних (у поточній версії таку підтримку передбачено лише у модулі libvirt). Крім того, потрібні версії libvirt ≥ 0.10.3 та qemu ≥ 1.2.

Для додавання диска у «гарячому» режимі просто скористайтеся викликом "guestfs_add_drive_opts" після "guestfs_launch". Має бути обов'язково вказано параметр "label", щоб новий доданий диск мав передбачувану назву. Приклад:

 if (guestfs_launch (g) == -1)
   error ("launch failed");
 
 if (guestfs_add_drive_opts (g, filename,
                             GUESTFS_ADD_DRIVE_OPTS_LABEL, "newdisk",
                             -1) == -1)
   error ("hot-add of disk failed");
 
 if (guestfs_part_disk ("/dev/disk/guestfs/newdisk", "mbr") == -1)
   error ("partitioning of hot-added disk failed");

Для вилучення диска у «гарячому» режимі скористайтеся викликом "guestfs_remove_drive". Цей виклик можна використовувати до або після "guestfs_launch". Вилучати диски у такий спосіб можна, лише якщо їх раніше було додано із міткою.

У модулях обробки, де передбачено підтримку з'єднання у «гарячому» режимі не обов'язково додавати один або більше дисків до виклику launch. Якщо передбачено підтримку з'єднання у «гарячому» режимі, ви можете взагалі не додавати жодних дисків.

ВІДДАЛЕНЕ СХОВИЩЕ ДАНИХ

CEPH

Libguestfs може отримувати доступ до дисків Ceph (librbd/RBD).

Для цього встановіть необов'язкові параметри "protocol" і "server" у виклику "guestfs_add_drive_opts", ось так:

 char **servers = { "ceph1.example.org:3000", /* ... */, NULL };
 guestfs_add_drive_opts (g, "pool/image",
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
                         GUESTFS_ADD_DRIVE_OPTS_PROTOCOL, "rbd",
                         GUESTFS_ADD_DRIVE_OPTS_SERVER, servers,
                         GUESTFS_ADD_DRIVE_OPTS_USERNAME, "rbduser",
                         GUESTFS_ADD_DRIVE_OPTS_SECRET, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
                         -1);

"servers" (параметр "server") — список з одного або декількох серверів Ceph. Документацію щодо рядка server наведено у описі "guestfs_add_drive_opts". Параметри "username" та "secret" є необов'язковими. Якщо їх не вказано, розпізнавання не виконуватиметься.

FTP, HTTP ТА TFTP

Libguestfs може отримувати доступ до віддалених дисків за допомогою протоколів FTP, FTPS, HTTP, HTTPS та TFTP.

Для цього встановіть необов'язкові параметри "protocol" і "server" у виклику "guestfs_add_drive_opts", ось так:

 char **servers = { "www.example.org", NULL };
 guestfs_add_drive_opts (g, "/disk.img",
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
                         GUESTFS_ADD_DRIVE_OPTS_PROTOCOL, "http",
                         GUESTFS_ADD_DRIVE_OPTS_SERVER, servers,
                         -1);

Значенням параметра "protocol" може бути один з таких рядків: "ftp", "ftps", "http", "https" або "tftp".

"servers" (параметр "server") — список, який має складатися з одного запису. Цей єдиний запис є рядком, який визначає вебсервер або сервер FTP чи TFTP. Документацію щодо рядка server наведено у описі "guestfs_add_drive_opts".

GLUSTER

Libguestfs може отримувати доступ до дисків Gluster.

Для цього встановіть необов'язкові параметри "protocol" і "server" у виклику "guestfs_add_drive_opts", ось так:

 char **servers = { "gluster.example.org:24007", NULL };
 guestfs_add_drive_opts (g, "volname/image",
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
                         GUESTFS_ADD_DRIVE_OPTS_PROTOCOL, "gluster",
                         GUESTFS_ADD_DRIVE_OPTS_SERVER, servers,
                         -1);

"servers" (параметр "server") — список, який має складатися з одного запису. Цей єдиний запис є рядком, який визначає сервер Gluster. Документацію щодо рядка server наведено у описі "guestfs_add_drive_opts".

Зауважте, що, зазвичай, gluster потребує запуску клієнтського процесу (тобто libguestfs) від імені користувача root і повідомляє про незрозумілі помилки, якщо процес запущено від звичайного користувача (наприклад, «No data available» або «Дані недоступні»).

ISCSI

Libguestfs може отримувати віддалений доступ до дисків iSCSI.

Для цього встановіть необов'язкові параметри "protocol" і "server" у виклику ось так:

 char **server = { "iscsi.example.org:3000", NULL };
 guestfs_add_drive_opts (g, "target-iqn-name/lun",
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
                         GUESTFS_ADD_DRIVE_OPTS_PROTOCOL, "iscsi",
                         GUESTFS_ADD_DRIVE_OPTS_SERVER, server,
                         -1);

"servers" (параметр "server") — список, який має складатися з одного запису. Цей єдиний запис є рядком, який визначає сервер iSCSI. Документацію щодо рядка server наведено у описі "guestfs_add_drive_opts".

NETWORK BLOCK DEVICE

Libguestfs може отримувати віддалений доступ до дисків Network Block Device (NBD).

Для цього встановіть необов'язкові параметри "protocol" і "server" у виклику "guestfs_add_drive_opts", ось так:

 char **server = { "nbd.example.org:3000", NULL };
 guestfs_add_drive_opts (g, "" /* export name - see below */,
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
                         GUESTFS_ADD_DRIVE_OPTS_PROTOCOL, "nbd",
                         GUESTFS_ADD_DRIVE_OPTS_SERVER, server,
                         -1);

Нотатки:

  • "сервер" фактично є списком серверів. Для доступу до NBD вам слід завжди вказувати список як єдиний елемент. (Для інших віддалених протоколів можна не вказувати сервер або вказувати декілька серверів, тому цей параметр і є списком.)
  • Документацію щодо рядка "сервер" можна знайти у розділі "guestfs_add_drive_opts". Що встановити з'єднання із локальним екземпляром qemu-nbd за допомогою сокета домену UNIX, скористайтеся записом "unix:/шлях/до/сокета".
  • Значенням параметра "filename" має бути назва експортування NBD. Скористайтеся порожнім рядком, якщо слід використовувати типове експортування. У багатьох реалізаціях серверів NBD, зокрема qemu-nbd, не передбачено підтримки назв експортування.
  • Якщо ви використовуєте як сервер qemu-nbd, вам слід завжди передавати параметр "-t". Причина полягає у тому, що libguestfs може відкривати одразу декілька з'єднань із сервером.
  • При користуванні модулем обробки libvirt обов'язково слід точно вказати параметр "format" "guestfs_add_drive_opts", якщо ви використовуєте придатні до запису диски NBD.
  • У модулі обробки libvirt є вада, яка заважає з'єднанням із сокетом домену UNIX працювати: https://bugzilla.redhat.com/show_bug.cgi?id=922888
  • У модулі безпосередньої обробки не передбачено підтримки з'єднань лише для читання даних через ваду у qemu: https://bugs.launchpad.net/qemu/+bug/1155677

SHEEPDOG

Libguestfs може отримувати доступ до дисків Sheepdog.

Для цього встановіть необов'язкові параметри "protocol" і "server" у виклику "guestfs_add_drive_opts", ось так:

 char **servers = { /* optional servers ... */ NULL };
 guestfs_add_drive_opts (g, "volume",
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
                         GUESTFS_ADD_DRIVE_OPTS_PROTOCOL, "sheepdog",
                         GUESTFS_ADD_DRIVE_OPTS_SERVER, servers,
                         -1);

Необов'язковий список "servers" має складатися із нуля або якоїсь кількості адрес серверів ("назва_вузла:порт"). Формат рядків server описано у документації з "guestfs_add_drive_opts".

SSH

Libguestfs може отримувати доступ до дисків за допомогою з'єднань Secure Shell (SSH).

Для цього встановіть необов'язкові параметри "protocol", "server" та (необов'язково) "username" у виклику "guestfs_add_drive_opts", ось так:

 char **server = { "remote.example.com", NULL };
 guestfs_add_drive_opts (g, "/path/to/disk.img",
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
                         GUESTFS_ADD_DRIVE_OPTS_PROTOCOL, "ssh",
                         GUESTFS_ADD_DRIVE_OPTS_SERVER, server,
                         GUESTFS_ADD_DRIVE_OPTS_USERNAME, "remoteuser",
                         -1);

Формат рядка сервера документовано у розділі щодо "guestfs_add_drive_opts".

ПЕРЕВІРКА

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

Додайте усі диски, що належать до невідомої віртуальної машини і викличте "guestfs_launch" у звичний спосіб.

Далі, викличте "guestfs_inspect_os". Ця функція використовує інші виклики libguestfs та певну евристику і повертає список знайдених операційних систем. Якщо список виявиться порожнім, значить операційних систем не знайдено. Окремий запис списку визначатиме кореневу файлову систему операційної системи. Для гостьових операційних систем із варіантами завантаження може бути повернуто декілька кореневих записів, кожен з яких відповідає окремій операційній системі. (Віртуальні машини із варіантами завантаження є дуже рідкісними у світі віртуалізації, але оскільки такий сценарій можливий, нам довелося реалізувати його у libguestfs.)

Для кожної кореневої файлової системи ви можете скористатися різноманітними функціями "guestfs_inspect_get_*" для отримання додаткових відомостей щодо операційної системи. Наприклад, викличте "guestfs_inspect_get_type", щоб отримати рядок "windows" або "linux" для Windows та заснованих на Linux операційних системах, відповідно.

Un*x-подібні та засновані на Linux операційні системи зазвичай складаються з декількох файлових систем, які монтуються під час завантаження (наприклад, окремого розділу для завантаження, який змонтовано до /boot). Правила інспектування уможливлюють визначення, як саме файлові системи пов'язано із точками монтування. Викличте "guestfs_inspect_get_mountpoints", щоб отримати дані щодо цієї прив'язки. У відповідь може бути повернуто хеш-таблицю, подібну до такої:

 /boot => /dev/sda1
 /     => /dev/vg_guest/lv_root
 /usr  => /dev/vg_guest/lv_usr

Далі, можна викликати "guestfs_mount" для відповідного монтування файлових систем.

Файлові системи слід монтувати у належному порядку (наприклад, / має бути змонтовано перед /usr). Для визначення порядку можна упорядкувати хеш-записи за довжиною так, щоб першими у списку були найкоротші.

Засіб інспектування у поточній версії може працювати лише з декількома поширеними операційними системами. Будемо раді вашим латкам, які реалізуватимуть підтримку інших операційних систем, які ще не може бути визначено програмно.

Шифровані диски слід відкривати до інспектування. Докладніше про це можна дізнатися з розділу "ЗАШИФРОВАНІ ДИСКИ". Функція "guestfs_inspect_os" просто ігноруватиме усі знайдені зашифровані пристрої.

Зауваження щодо реалізації: виклик "guestfs_inspect_os" виконує інспектування та кешує результати у дескрипторі гостьової системи. Наступні виклики "guestfs_inspect_get_*" повертатимуть кешовані відомості, але не виконуватимуть повторного читання дисків. Якщо ви зміните вміст дисків гостьової системи, ви можете змусити програму повторно виконати інспектування, викликавши "guestfs_inspect_os" ще раз. ("guestfs_inspect_list_applications2" працює дещо інакше, якщо порівнювати з іншими викликами, і виконує читання дисків. Див. документацію з цієї функції, щоб дізнатися більше).

ВИВЧЕННЯ ДИСКІВ ДЛЯ ВСТАНОВЛЕННЯ

Libguestfs (з версії 1.9.4) може виявляти деякі диски для встановлення, компакт-диски для встановлення, компакт-диски із портативними системами тощо.

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

ДОДАТКОВІ ЗАУВАЖЕННЯ ЩОДО ГОСТЬОВИХ СИСТЕМ WINDOWS

Libguestfs може монтувати розділи NTFS. Це завдання виконується за допомогою драйвера http://www.ntfs-3g.org/.

ЛІТЕРИ ДИСКІВ ТА ШЛЯХИ

У DOS та Windows для позначення дисків усе ще використовуються літери, а назви у файлових системах самою Windows обробляються як незалежні від регістру символів, тому можлива ситуація, коли файл налаштувань Windows посилається на каталог із назвою подібною до "c:\windows\system32". Коли ж файлову систему змонтовано у libguestfs, той самий каталог може мати назву /WINDOWS/System32.

Визначити прив'язку дисків до літер можна за допомогою засобу інспектування (див. "ІНСПЕКТУВАННЯ" та "guestfs_inspect_get_drive_mappings")

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

Щоб усунути проблему із неврахуванням регістру літер у шляхах, скористайтеся викликом "guestfs_case_sensitive_path".

ДОВГІ НАЗВИ ФАЙЛІВ У NTFS

У NTFS назви файлів обмежено довжиною у 255 символів. «Символ» означає 2-байтову позицію у таблиці UTF-16, яка містить більшість типових символів Unicode.

У більшості файлових систем Linux передбачено підтримку назв файлів довжиною до 255 байтів. Це означає, що ви можете отримати повідомлення про помилку:

 File name too long

коли копіюватимете файл з NTFS на файлову систему Linux, якщо назва, коли її буде перекодовано у UTF-8, перевищить за довжиною 255 байтів.

Найчастіше таке трапляється, коли використовуються довші за ~127 символів назви із символами, які не належать до ASCII, (наприклад, назви кирилицею або грецькою) або використовуються довші за ~85 символів назви азійськими мовами із ієрогліфічним записом.

Обійти проблему можна, намагаючись не зберігати файли із такими довгими назвами у файлових системах Linux. Оскільки у форматі tar(1) передбачено можливість зберігання назв файлів без будь-яких обмежень, такі файли можна зберігати у архівах tar.

ДОСТУП ДО РЕГІСТРУ WINDOWS

У libguestfs також передбачено допоміжні можливості із декодування файлів реєстрів Windows, «hive», на основі окремої бібліотеки мовою C, яка називається hivex(3).

До версії libguestfs 1.19.35 вам потрібно було отримати файл рою (hive), обробити його локально за допомогою hivex і вивантажити його назад. Починаючи з вказаної версії, нами було включено основні програмні інтерфейси hivex безпосередньо до програмного інтерфейсу libguestfs (див. "guestfs_hivex_open"). Це означає, що якщо ви відкрили гостьову систему Windows, ви можете читати і записувати реєстр безпосередньо.

Див. також virt-win-reg(1).

СИМВОЛІЧНІ ПОСИЛАННЯ У ФАЙЛОВИХ СИСТЕМАХ NTFS-3G

Ntfs-3g намагається переписати «точки з'єднання» та «символічні посилання» NTFS для створення чогось схожого на символічне посилання Linux. Спосіб, у який виконується переписування, описано тут:

http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/

Основною проблемою є те, що ntfs-3g просто немає достатньо відомостей для того, щоб виконати роботу правильно. Посилання NTFS можуть містити літери дисків і посилання на GUID зовнішніх пристроїв, які не може бути оброблено у ntfs-3g. У цьому випадку, майже завжди, функції, які викликають libguestfs, мають ігнорувати дії ntfs-3g (тобто не використовувати "guestfs_readlink" на томах NTFS).

Замість цього, якщо у файловій системі ntfs-3g трапиться символічне посилання, слід скористатися "guestfs_lgetxattr" для читання розширеного атрибута "system.ntfs_reparse_data" і прочитати дані повторної обробки з нього (формат документовано у багатьох місцях в інтернеті).

РОЗШИРЕНІ АТРИБУТИ НА ФАЙЛОВИХ СИСТЕМАХ NTFS-3G

Існують інші корисні атрибути, які можна читати з файлових систем ntfs-3g (за допомогою "guestfs_getxattr"). Див.:

http://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/

ПРИСИПЛЯННЯ WINDOWS ТА ШВИДКИЙ ЗАПУСК WINDOWS 8

Гостьові системи Windows, які було приспано (замість повного вимикання) не можна монтувати. Це обмеження ntfs-3g. Ви побачите ось таке повідомлення про помилку:

 The disk contains an unclean file system (0, 0).
 Metadata kept in Windows cache, refused to mount.
 Failed to mount '/dev/sda2': Operation not permitted
 The NTFS partition is in an unsafe state. Please resume
 and shutdown Windows fully (no hibernation or fast
 restarting), or mount the volume read-only with the
 'ro' mount option.

У Windows 8 кнопка вимикання не вимикає гостьову систему. Замість цього, ця кнопка присипляє гостьову систему. Ця можливість відома як «швидкий запуск».

Ось пропоновані шляхи обійти проблему:

  • Монтування у режимі лише читання (наприклад, "guestfs_mount_ro").
  • У Windows 8 вимкніть швидкий запуск. Відповідним пунктом є такий: Панель керування → Живлення → Виберіть дію для кнопки живлення → Змінити параметри, які зараз недоступні → Увімкнути швидкий запуск.
  • У Windows 7 та попередніх версіях вимкніть гостьову систему належним чином замість присипляння системи.

ПОМИЛКИ RESIZE2FS

Для зміни розмірів файлових систем ext2/3/4 використовуються виклики "guestfs_resize2fs", "guestfs_resize2fs_size" і "guestfs_resize2fs_M".

Базова програма (resize2fs(8)) потребує, щоб файлова система не мала прапорця змін і була нещодавно перевірена fsck, перш ніж ви зможете змінити її розмір. Крім того, якщо дія зі зміни розміру завершується помилкою з якоїсь причини, вам слід викликати fsck для файлової системи, щоб виправити її.

У libguestfs "lt" 1.17.14 вам, зазвичай, потрібно було викликати "guestfs_e2fsck_f" до зміни розміру. Втім, у "ge" 1.17.14 e2fsck(8) викликається автоматично до зміни розміру, отже потреби у явному виклику вже немає.

Робота програми resize2fs(8) все ще може завершитися помилкою. У цьому випадку програма виводить повідомлення про помилку, подібне до такого:

 Будь ласка, запустіть «e2fsck -fy <пристрій>», щоб виправити файлову систему
 після переривання дії зі зміни розмірів.

Ви можете зробити це, викликавши "guestfs_e2fsck" з параметром "forceall". Втім, у контексті образів дисків, зазвичай, краще уникати таких ситуацій, наприклад, поверненням до попереднього знімка або копіюванням і зміною розміру і поверненням до початкового стану, якщо станеться помилка.

ВИКОРИСТАННЯ LIBGUESTFS ЗА ДОПОМОГОЮ ІНШИХ МОВ ПРОГРАМУВАННЯ

Хоча у нас немає намірів забороняти вам використовувати програмний інтерфейс C, тут ми будемо нагадувати, що той самий програмний інтерфейс також доступний іншими мовами програмування.

Загалом, програмний інтерфейс усіма підтримуваними мовами є ідентичним. Це означає, що виклик мовою C "guestfs_add_drive_ro(g,file)" ідентичний до "$g->add_drive_ro($file)" у Perl, "g.add_drive_ro(file)" у Python, і "g#add_drive_ro file" в OCaml. Іншими словами, існує прямий, передбачуваний ізоморфізм між усіма мовами.

Повідомлення про помилки буде автоматично перетворено на виключення, якщо підтримку таких передбачено у відповідній мові програмування.

Ми не намагаємося виконати «об'єктне орієнтування» частин програмного інтерфейсу у об'єктно орієнтованих мовах програмування, хоча ми будемо раді, якщо учасники розробки, якщо це потрібно, зможуть написати високорівневі програмні інтерфейси до вказаних вище програмних інтерфейсів, які ми надаємо, їхніми улюбленими мовами програмування.

Ви можете скористатися файлом заголовків guestfs.h з програм C++. Програмний інтерфейс C++ є ідентичним до програмного інтерфейсу C. Класи і виключення C++ не використовуються.
Прив'язки до C# є досить експериментальними. Будь ласка, ознайомтеся із попередженнями на початку файла csharp/Libguestfs.cs.
Див. guestfs-erlang(3).
Доступні експериментальні прив'язки GObject (з підтримкою інтроспекції GObject).

Див. guestfs-gobject(3)

Див. guestfs-golang(3)
Ця прив’язка до мови працює, але є неповною:
  • Функції із необов'язковими аргументами не включено до прив'язок. Реалізація необов'язкових параметрів у Haskell, здається, є доволі складною справою.
  • Події не обмежено.
  • Не передбачено прив'язок для функцій із такими повернутими типами:
  • Будь-яка функція повертає структуру.
  • Будь-яка функція повертає список структур.
  • Декілька функцій, які повертають буфери фіксованої довжини (зокрема ті, які оголошено як "RBufferOut" у генераторі).
  • Незначна кількість прихованих функцій, які повертають сталі рядки (зокрема функцій, оголошених як "RConstOptString" у генераторі).
Повна документація міститься у Javadoc, який поширюється разом із libguestfs. Приклади наведено на сторінці guestfs-java(3).
Див. guestfs-lua(3).
Див. guestfs-ocaml(3).
Див. guestfs-perl(3) та Sys::Guestfs(3).
Документацію наведено у файлі "README-PHP", який постачається разом із початковим кодом libguestfs або у пакунку php-libguestfs для вашого дистрибутива.

Прив'язки до PHP працюють належним чином лише у 64-бітових операційних системах.

Див. guestfs-python(3).
Див. guestfs-ruby(3).

Щоб скористатися JRuby, використовуйте прив'язки до Java.

скрипти оболонки
Див. guestfish(1).

ПРОБЛЕМНІ МІСЦЯ LIBGUESTFS

http://en.wikipedia.org/wiki/Gotcha_(programming): «Можливість системи [...], яка працює у документований спосіб, але не є інтуїтивно зрозумілою і неначебто запрошує до помилок.»

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

Типовим режимом має бути «лише читання».
У guestfish(3) параметр --ro має бути типовим. Вам слід вказувати параметр --rw явним чином, якщо ви хочете внести зміни до образу.

Це має зменшити ризик потенційного пошкодження образів віртуальних машин.

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

Командним рядком guestfish важко користуватися.
Команда guestfish образ.диска не виконує тих дій, на які сподіваються користувачі (відкриття образу образ.диска для вивчення). Ця команда намагається виконати команду guestfish образ.диска, якої не існує, отже, виводиться повідомлення про помилку. У ранніх версіях guestfish це повідомлення було незрозумілим, але з того часу його було виправлено. Подібно до bash, варто було б використовувати команду "guestfish -c команда" для виконання команд.
Модифікатори вимірювання у мегабайтах guestfish не працюють як слід для усіх команд
У свіжих версіях guestfish ви можете скористатися записом "1M" на позначення 1 мегабайта (та подібних одиниць виміру пам'яті). Насправді, guestfish просто множить числову частину запису на частину модифікатора і передає результат програмному інтерфейсу C. Втім, це не працює для декількох програмних інтерфейсів, яким передаються не значення у байтах, а значення у якихось інших одиницях (наприклад, у мегабайтах).

Найпоширенішим прикладом є "guestfs_lvcreate". Ось така команда guestfish:

 lvcreate LV VG 100M
    

не виконує тих дій, на які слід було б сподіватися. Замість цього, оскільки "guestfs_lvcreate" вже передаються розміри у мегабайтах, виконується спроба створити логічний том у 100 терабайтів (100 мегабайтів * мегабайтів). Повідомлення про помилку, яке ви побачите у відповідь на цю команду, теж дещо незрозуміле.

Цю ваду можна було б виправити у генераторі спеціальним позначенням параметрів і поверненням значень у байтах чи інших одиницях.

Двозначність між пристроями і шляхами
У програмному інтерфейсі є певна неоднозначність між назвою пристрою (наприклад /dev/sdb2) і подібною до неї назвою шляху. Файл у каталозі /dev також можна викликати за допомогою "sdb2" (якщо розглядати якийсь образ віртуальної машини, відмінної від Unix).

У поточному програмному інтерфейсі ми, зазвичай, усуваємо цю неоднозначність використанням двох окремих викликів, наприклад "guestfs_checksum" і "guestfs_checksum_device". Деякі з викликів програмного інтерфейсу є неоднозначними і вирішують (неправильно) проблему, визначаючи, чи наданий шлях починається з /dev/.

Щоб уникнути неоднозначностей та потреби у дублюванні викликів, можна перетворити шляхи/пристрої на структуровані назви. Одним зі способів досягти цього є використання позначень у стилі ("hd(0,0)"), хоча мало кому подобається цей аспект роботи grub. Іншим способом, яким можна було б скористатися, є використання структурованого типу, еквівалентного до такого типу OCaml:

 type path = Path of string | Device of int | Partition of int * int
    

що надало б вам змогу передавати аргументи ось так:

 Path "/foo/bar"
 Device 1            (* /dev/sdb або, можливо, /dev/sda *)
 Partition (1, 2)    (* /dev/sdb2 (або /dev/sda2, або /dev/sdb3?) *)
 Path "/dev/sdb2"    (* не є пристроєм *)
    

Як бачите, у визначенні шляхів є проблема навіть у такому представленні. Також можете поміркувати над тим, як це може працювати у guestfish.

КЛЮЧІ І ПАРОЛІ

Деяким викликам libguestfs передаються параметри, які містять конфіденційні дані ключів у форматі звичайного рядка C.

У майбутньому ми сподіваємося змінити реалізацію у libguestfs так, щоб ключі оброблялися mlock(2) у фізичній пам'яті системи і тому ніколи не опинялися у файлі резервної пам'яті на диску. Втім, дотепер цього не зроблено через складність такої реалізації.

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

ОБРОБКА У ДЕКІЛЬКА ДЕСКРПИТОРІВ І ПОТОКІВ

Усі операції високого рівня у libguestfs синхронізуються. Якщо ви хочете використовувати libguestfs у асинхронний спосіб, вам слід створити потік обробки.

Потоки у libguestfs ≥ 1.38

У libguestfs ≥ 1.38 кожен дескриптор ("guestfs_h") містить блокування, яке встановлюється автоматично, коли ви викликаєте функцію libguestfs. Практичним наслідком цього є те, що ви можете викликати функції libguestfs для одного дескриптора з різних потоків обробки без потреби у блокуванні.

Крім того, починаючи з версії libguestfs ≥ 1.38, остання помилка у обробці дескриптора ("guestfs_last_error", "guestfs_last_errno") зберігається у локальному сховищі даних потоку, тому написання такого ось коду є безпечним:

 if (guestfs_add_drive_ro (g, drive) == -1)
   fprintf (stderr, "error was: %s\n", guestfs_last_error (g));

навіть коли інші потоки обробки можуть конкурувати за використання одного дескриптора "g".

Потоки у libguestfs < 1.38

У libguestfs < 1.38 вам слід використовувати дескриптор лише у одному потоці обробки. Або використовуйте дескриптор виключно з одного потоку, або впровадьте власний семафор так, щоб два потоки не могли видавати виклики для одного дескриптора одночасно. Навіть доволі невинні функції, подібні до "guestfs_get_trace" не можна безпечно викликати без семафора з декількох потоків обробки одночасно, якщо ви користуєтеся libguestfs < 1.38.

Скористайтеся "guestfs_set_identifier" для спрощення ідентифікації потоків у даних, виведених засобом трасування.

ШЛЯХ

Libguestfs потрібна базова система supermin, яку бібліотека шукає за внутрішнім шляхом.

Типово, пошук відбувається у каталозі "$libdir/guestfs" (наприклад /usr/local/lib/guestfs або /usr/lib64/guestfs).

Скористайтеся "guestfs_set_path" або встановіть значення змінної середовища "LIBGUESTFS_PATH", щоб змінити каталоги, у який вестиме пошук libguestfs. Значенням має бути список шляхів, відокремлених двокрапками. Пошук у поточному каталозі не виконуватиметься, якщо у записі шляхів не буде порожнього елемента або елемента ".". Наприклад, "LIBGUESTFS_PATH=:/usr/lib/guestfs" означає, що пошук виконуватиметься спочатку у поточному каталозі, а потім у каталозі /usr/lib/guestfs.

ОБГОРТКИ QEMU

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

Існує одне важливе правило, про яке слід пам'ятати: вам слід виконати "exec qemu" як останню команду у скрипті оболонки (отже, qemu заміняє командну оболонку і стає безпосереднім дочірнім процесом програми, яка використовує libguestfs). Якщо ви цього не зробите, процес qemu не буде належним чином очищено.

Ось приклад обгортки, де використано зібрану власну копію qemu:

 #!/bin/sh -
 qemudir=/home/rjones/d/qemu
 exec $qemudir/x86_64-softmmu/qemu-system-x86_64 -L $qemudir/pc-bios "$@"

Збережіть цей скрипт як /tmp/qemu.wrapper (або під якоюсь іншою назвою), "chmod +x", а далі скористайтеся ним для встановлення значення змінної середовища LIBGUESTFS_HV. Приклад:

 LIBGUESTFS_HV=/tmp/qemu.wrapper guestfish

Зауважте, що libguestfs також викликає qemu із параметрами -help і -version з метою визначення переліку можливостей програми.

Обгортками також можна скористатися для редагування параметрів, які передаються qemu. У наведеному нижче прикладі параметр "-machine ..." (параметр "-machine" і наступний за ним аргумент) вилучається з рядка команди і замінюється на "-machine pc,accel=tcg". Цикл while виконує ітерацію параметрами, аж доки не буде знайдено належний параметр для вилучення, розташовуючи решту параметрів у масиві "args".

 #!/bin/bash -
 
 i=0
 while [ $# -gt 0 ]; do
     case "$1" in
     -machine)
         shift 2;;
     *)
         args[i]="$1"
         (( i++ ))
         shift ;;
     esac
 done
 
 exec qemu-kvm -machine pc,accel=tcg "${args[@]}"

МОДУЛЬ

Модуль обробки (раніше ми його називали «метод долучення») керує тим, як libguestfs створює і/або з'єднується із фоновою службою модуля обробки, наприклад, запускаючи qemu безпосередньо або використовуючи libvirt для керування базовою системою, запускаючи User-Mode Linux або з'єднуючись із вже запущеною фоновою службою.

Встановити цей модуль можна викликом "guestfs_set_backend" або встановленням значення змінної середовища "LIBGUESTFS_BACKEND".

Можливі модуля описано нижче:

"direct"
"appliance"
Запустити qemu безпосередньо для запуску базової системи.

"direct" і "appliance" є синонімами.

Це звичайний метод і за звичних умов цей метод є типовим, але зверніть увагу на наведену нижче нотатку.

"libvirt"
"libvirt:null"
"libvirt:адреса"
Скористатися libvirt для запуску і керування базовою системою.

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

"libvirt:null" спричиняє вибір libguestfs використання "NULL" як адреси з'єднання, що призводить до того, що libvirt намагається вгадати наміри користувача. Ймовірно, вам не слід використовувати таку адресу.

"libvirt:адреса" спричиняє використання адреси адреса як адреси з'єднання libvirt (див. http://libvirt.org/uri.html). Типовим модулем libvirt із вказаною адресою буде "libvirt:qemu:///session"

У модулі обробки libvirt передбачено більше можливостей, зокрема можливість з'єднання у «гарячому» режимі (див. "З'ЄДНАННЯ У «ГАРЯЧОМУ» РЕЖИМІ") та sVirt.

"uml"
Запустити ядро User-Mode Linux. Розташування ядра встановлюється за допомогою $LIBGUESTFS_HV або за допомогою програмного інтерфейсу "guestfs_set_qemu" (зауважте, що qemu не задіяно, ми просто повторно використовуємо ту саму змінну середовища у дескрипторі для зручності).

User-Mode Linux може бути набагато швидшим, простішим і невибагливішим до ресурсів за повноцінну віртуальну машину, але у нього є певні недоліки. Див. "МОДУЛЬ USER-MODE LINUX" нижче.

"unix:шлях"
Встановити з’єднання з сокетом домену Unix шлях.

Цей метод надає вам змогу з'єднуватися із наявною фоновою службою або (за допомогою virtio-serial) із запущеною гостьовою системою. Щоб дізнатися більше, див. "ДОЛУЧЕННЯ ДО ЗАПУЩЕНИХ ФОНОВИХ СЛУЖБ".

"direct", зазвичай є типовим модулем обробки. Втім, починаючи з версії libguestfs ≥ 1.19.24, libguestfs можна зібрати із іншим типовим модулем за допомогою такого параметра скрипту налаштовування збирання:

 ./configure --with-default-backend=...

Щоб визначити, чи було libguestfs зібрано із іншим типовим модулем обробки, віддайте такі команди:

 unset LIBGUESTFS_BACKEND
 guestfish get-backend

ПАРАМЕТРИ МОДУЛІВ

Кожен модуль обробки можна налаштувати передаванням списку рядків. Ви можете або викликати "guestfs_set_backend_settings" зі списком рядків, або встановити для змінної середовища "LIBGUESTFS_BACKEND_SETTINGS" значення, яке є списком рядків, які відокремлено двокрапками (до створення дескриптора).

force_tcg

Використовується:

 export LIBGUESTFS_BACKEND_SETTINGS=force_tcg

примусово визначить для модулів обробки direct та libvirt використання TCG (програмної емуляції) замість KVM (апаратно прискореної віртуалізації).

gdb

У модулі direct передбачено підтримку:

 export LIBGUESTFS_BACKEND_SETTINGS=gdb

Якщо встановлено таке значення змінної середовища, qemu не розпочинатиме негайний запуск базової системи. Програма очікуватиме, доки ви з'єднаєтеся із нею за допомогою gdb:

 $ gdb
 (gdb) symbol-file /path/to/vmlinux
 (gdb) target remote tcp::1234
 (gdb) cont

Далі, ви можете виконувати діагностику ядра базової системи, чим можна скористатися для дослідження проблем із завантаженням (особливо таких проблем, за яких не виводиться діагностичних повідомлень — підказка: шукайте у "log_buf" ядра).

У Fedora встановіть "kernel-debuginfo" для файла "vmlinux" (який містить символи). Переконайтеся, що символи точно відповідають використаному ядру.

ДОЛУЧЕННЯ ДО ЗАПУЩЕНИХ ФОНОВИХ СЛУЖБ

Зауваження (1): це дуже експериментальна можливість, яка може призводити до пошкодження даних. Будьте обережні.

Нотатка (2): у цьому розділі наведено відомості щодо долучення до запущеної фонової служби з низькорівневою перспективою. Для більшості користувачів просте використання засобів віртуалізації, зокрема guestfish(1), з параметром --live має «просто працювати».

Використання guestfs_set_backend

За допомогою виклику "guestfs_set_backend" ви можете змінити спосіб з'єднання бібліотеки з фоновою службою "guestfsd" у "guestfs_launch" (ознайомтеся із розділом "АРХІТЕКТУРА" in guestfs-internals(1), щоб дізнатися більше про основи).

Звичайним модулем обробки є "direct", де створюється мала базова система, яка містить фонову службу, з якою згодом з'єднується бібліотека. "libvirt" або "libvirt:адреса" є альтернативами, які використовують libvirt для запуску базової системи.

Встановлення для модуля обробки значення "unix:шлях" (де шлях — це шлях до сокета домену Unix) призводить до того, що "guestfs_launch" з'єднується із наявною фоновою службою за допомогою сокета домену Unix.

Звичним використанням цього є встановлення з'єднання з запущеною віртуальною машиною, які містить фонову службу "guestfsd", і надсилання команд, щоб можна було читати і записувати файли у запущеній віртуальній машині.

За допомогою guestfs_add_domain з прапорцем live

"guestfs_add_domain" надає певну допомогу у отриманні відповідного модуля обробки. Якщо ви передаєте параметр "live" цій функції, тоді (якщо віртуальну машину запущено) вона вивчить XML libvirt, шукаючи канал virtio-serial для з'єднання:

 <domain>
   ...
   <devices>
     ...
     <channel type='unix'>
       <source mode='bind' path='/path/to/socket'/>
       <target type='virtio' name='org.libguestfs.channel.0'/>
     </channel>
     ...
   </devices>
 </domain>

"guestfs_add_domain" видобуває /шлях/до/сокета і встановлює для модуля обробки шлях "unix:/шлях/до/сокета".

У деяких із засобів libguestfs (зокрема guestfish) передбачено підтримку параметра --live, який передається до "guestfs_add_domain", таким чином надаючи вам змогу з'єднуватися і змінювати запущені віртуальні машини.

Віртуальну машину слід попередньо налаштувати так, щоб у ній був канал virtio-serial і у ній було запущено guestfsd.

МОДУЛЬ USER-MODE LINUX

Встановлення вказаних нижче змінних середовища (або використання відповідних програмних інтерфейсів) вибирає модуль обробки User-Mode Linux:

 export LIBGUESTFS_BACKEND=uml
 export LIBGUESTFS_HV=/шлях/до/vmlinux

"vmlinux" (іншою назвою може бути "linux") — виконуваний файл Linux, зібраний для запуску як процес у просторі користувача. Зауважте, що ми повторно використали змінну qemu у дескрипторі для зручності; qemu вона не стосується.

Використання User-Mode Linux може пришвидшити роботу і зменшити вибагливість до ресурсів системи, порівняно із запуском повноцінної віртуальної машини для модуля обробки (особливо, якщо ви вже запустили libguestfs у віртуальній машині або у екземплярі системи в обчислювальній «хмарі»), але цей спосіб також має певні недоліки, якщо порівнювати його зі звичайним модулем обробки на основі qemu або KVM.

ЗБИРАННЯ USER-MODE LINUX З ПОЧАТКОВИХ КОДІВ

У вашому дистрибутиві Linux можуть бути готові пакунки UML. Якщо це так, можете пропустити цей розділ.

Інструкції запозичено з http://user-mode-linux.sourceforge.net/source.html

1. Отримати початкові коди Linux
Клонуйте сховище коду git Linux або отримайте архів tar із початковим кодом Linux.
2. Налаштувати збирання ядра
Зауваження: до усіх команд «make» слід додавати "ARCH=um".

 make menuconfig ARCH=um
    

Переконайтеся, що усі потрібні вам драйвери файлових систем вкомпільовано до ядра.

У поточній версії потрібні значні додаткові зусилля, щоб змусити працювати модулі. Рекомендуємо вам вимкнути підтримку модулів у налаштуваннях ядра. Вимикання підтримки призведе до того, що усі можливості буде зібрано у одному образі ядра.

3. Зібрати ядро
 make ARCH=um
    

Ви отримаєте файл із назвою "linux" або "vmlinux" у каталозі верхнього рівня. Цей файл і є ядром UML. Вам слід встановити значення "LIBGUESTFS_HV", яке вказуватиме на цей файл.

ВІДМІННОСТІ USER-MODE LINUX ВІД KVM

У UML передбачено підтримку лише образів у форматі raw
Працюватимуть лише прості образи у форматі raw. Не можна користуватися ні qcow2, ні файлами резервних копій.
У UML не передбачено підтримки будь-яких віддалених дисків
Не можна користуватися NBD тощо.
Зокрема, підтримка UML у libguestfs залежить від підтримки UML у основній гілці розробки ядра. Якщо UML буде вилучено із основного коду ядра Linux, ймовірно, нам доведеться вилучити його підтримку і з libguestfs.

ГАРАНТІЯ ЩОДО ABI

Ми гарантуємо незмінність ABI (двійкового інтерфейсу) libguestfs для загальних (public) високорівневих дій, як це описано у цьому розділі. Хоча ми вважаємо деякі з дій застарілими, наприклад, якщо їх замінено новішими викликами, ми зберігаємо ці дії у двійковому інтерфейсі. Це надає змогу розробникам програм бути певними у незмінності програмного інтерфейсу libguestfs.

ІМЕНУВАННЯ БЛОКОВИХ ПРИСТРОЇВ

Libguestfs визначає /dev/sd* як стандартну схему іменування для пристроїв, які передаються викликам програмного інтерфейсу. Отже, /dev/sda означає «перший пристрій, який додано за допомогою "guestfs_add_drive_opts"», а /dev/sdb3 означає «третій розділ на другому пристрої».

На внутрішньому рівні іноді виконується трансляція назв пристроїв, але ця трансляція лишається невидимою з рівня програмного інтерфейсу.

МІТКИ ДИСКІВ

Починаючи з libguestfs ≥ 1.20, ви можете надати диску мітку під час додавання за допомогою необов'язкового параметра "label" функції "guestfs_add_drive_opts". (Зауважте, що мітки дисків є самостійними об'єктами і можуть відрізнятися від міток файлової системи.)

Підтримку встановлення міток дисків передбачено не в усіх версіях libguestfs. Якщо підтримку передбачено, то мітку обмежено 20 символами ASCII "[a-zA-Z]".

Після додавання мітки до диска ви можете використовувати як його адресу або /dev/sd*, або /dev/disk/guestfs/мітка. Вказувати на розділи диска можна за допомогою адреси /dev/disk/guestfs/мітканомер_розділу.

Команди виведення списку пристроїв ("guestfs_list_devices") та розділів ("guestfs_list_partitions") повертають назви блокових пристроїв. Втім, ви можете скористатися "guestfs_list_disk_labels" для прив'язування міток дисків до назв блокових пристроїв і розділів.

НУЛЬОВІ ДИСКИ

При додавання диска за допомогою, наприклад, "guestfs_add_drive", ви можете встановити для назви файла значення "/dev/null". Цей рядок у libguestfs обробляється особливо, спричиняючи додавання «нуль-диска».

Нуль-диск має такі властивості:

  • Нуль-диск буде показано як звичайний пристрій, наприклад, у викликах "guestfs_list_devices".
  • Ви можете додавати пристрій "/dev/null" декілька разів.
  • Вам не слід намагатися отримати доступ до нуль-диска у будь-який спосіб. Наприклад, не варто намагатися прочитати з нього дані або змонтувати його.

Передбачено три основних призначення нульових дисків:

1.
Тестування швидкодії libguestfs (див. guestfs-performance(1)).
2.
Вбудований комплекс для перевірки.
3.
Якщо ви хочете скористатися програмними інтерфейсами libguestfs, які не посилаються на диски, оскільки libguestfs вимагає додавання принаймні одного диска, вам слід додати нуль-диск.

Наприклад, щоб перевірити, чи доступна певна можливість, скористайтеся кодом, подібним до такого:

 guestfs_h *g;
 char **groups = [ "btrfs", NULL ];
 
 g = guestfs_create ();
 guestfs_add_drive (g, "/dev/null");
 guestfs_launch (g);
 if (guestfs_available (g, groups) == 0) {
   // group(s) are available
 } else {
   // group(s) are not available
 }
 guestfs_close (g);
    

ФОРМАТИ ОБРАЗІВ ДИСКІВ

Віртуальні диски зберігаються у декількох форматах. Нижче наведено список найпоширеніших форматів.

Зауважте, що за роботу із форматами дисків сама libguestfs не відповідає: усю роботу виконує qemu(1). Якщо не передбачено підтримки якогось формату або у підтримці формату буде виявлено вади, виправляти це слід у qemu.

ТИПОВІ ФОРМАТИ ОБРАЗІВ ВІРТУАЛЬНИХ ДИСКІВ

Простий формат (raw) — це просто дамп послідовних байтів віртуального диска. У ньому немає заголовка, контейнера, стискання, він не є результатом будь-якої обробки цього набору байтів.

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

Дані у простому форматі (raw) не стискаються, отже займають на диску рівно стільки місця, скільки займає початковий образ диска, навіть якщо на ньому зовсім немає даних. У різновиді цього формату (принаймні у Linux/Unix) усунено потребу у зберіганні діапазонів нульових байтів шляхом використання так званих розріджених файлів. Цей варіант формату іноді називають «простим розрідженим» (raw sparse). Багато інструментів, зокрема virt-sparsify(1), можуть перетворювати прості образи дисків у розріджені.

Qcow2 — природний формат образів дисків, який використовується у qemu. На внутрішньому рівні використовується дворівнева структура каталогів, отже, у файлі зберігаються лише блоки, які містять дані. Також передбачено багато інших можливостей, зокрема стискання даних, знімки та резервне копіювання файлів.

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

VMDK — природний формат образів дисків VMware. Існує багато варіацій. У сучасних версіях qemu (а отже, і у libguestfs) передбачено підтримку більшості варіацій, але вам слід мати на увазі те, що у застарілих версіях qemu у цьому аспекті є серйозні вади, які можуть призводити до пошкодження даних.

Зауважте, що ESX VMware надає файли із назвою guest-flat.vmdk. Це не файли у форматі VMDK. Це дані у простому форматі (raw), які просто записано до файла із суфіксом назви ".vmdk".

VDI — є природним форматом образів дисків VirtualBox. У qemu (а отже і у libguestfs) передбачено загалом непогану підтримку даних у цьому форматі.
VPC (застарілий) та VHD (сучасний) — формати образів дисків, які розроблено Microsoft (а перед тим, Connectix) для Virtual PC та Hyper-V.
Застарілі формати
Наведені далі формати є застарілими. Вам не слід ними користуватися: qcow (або qcow1), cow, bochs.

ВИЗНАЧЕННЯ ФОРМАТУ ОБРАЗУ ДИСКА

По-перше, зверніть увагу на прогалину у захисті, пов'язану із автоматичним визначенням формату образу диска. Вона може стосуватися вашого процесу використання. Див. розділ "CVE-2010-3851" нижче.

У libguestfs передбачено програмний інтерфейс для отримання даних щодо формату образу диска ("guestfs_disk_format"), і найбезпечніше користуватися саме ним.

Не захоплюйтесь спробами обробки тексту або виведених для зручного читання даних "qemu-img", оскільки ці дані не можна обробити надійним і безпечним чином. Не використовуйте команду "file", оскільки виведені нею дані є різними для різних версій бібліотеки.

КЕРУВАННЯ З’ЄДНАННЯМ

guestfs_h *

"guestfs_h" є непрозорим типом, який представляє дескриптор з'єднання. Створіть дескриптор викликом "guestfs_create" або "guestfs_create_flags". Викличте "guestfs_close", щоб звільнити дескриптор і усі використані ним ресурси.

Щоб дізнатися більше про обробку у декілька дескрипторів і у декілька потоків, ознайомтеся із розділом "ОБРОБКА У ДЕКІЛЬКА ДЕСКРПИТОРІВ І ПОТОКІВ" вище.

guestfs_create

 guestfs_h *guestfs_create (void);

Створити дескриптор з’єднання.

Якщо виконано успішно, повертає непорожній вказівник на дескриптор. Якщо станеться помилка, повертає NULL.

Після створення дескриптор слід «налаштувати». Для цього слід викликати "guestfs_add_drive_opts" (або одну з інших еквівалентних функцій) для дескриптора принаймні один раз.

Після налаштовування дескриптора вам слід викликати "guestfs_launch".

Ви також можете налаштувати обробку помилок для дескриптора. Див. розділ "ОБРОБКА ПОМИЛОК" нижче.

guestfs_create_flags

 guestfs_h *guestfs_create_flags (unsigned flags [, ...]);

Створює дескриптор з'єднання, надаючи додаткові прапорці та аргументи для керування створенням дескриптора.

Якщо виконано успішно, повертає непорожній вказівник на дескриптор. Якщо станеться помилка, повертає NULL.

"guestfs_create" еквівалентна виклику guestfs_create_flags(0).

Наведені нижче прапорці може бути поєднано за допомогою логічного АБО (у поточній версії додаткові аргументи не використовуються).

"GUESTFS_CREATE_NO_ENVIRONMENT"
Не обробляти змінні середовища (зокрема "LIBGUESTFS_DEBUG").

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

Типовою поведінкою (якщо цей прапорець не встановлено явно) є неявний виклик "guestfs_parse_environment".

"GUESTFS_CREATE_NO_CLOSE_ON_EXIT"
Не намагатися закрити дескриптор у обробнику atexit(3), якщо програма завершує роботу без закриття дескриптора явним чином.

Типовою поведінкою (якщо цей прапорець не встановлено явно) є встановлення також обробника atexit.

ВИКОРИСТАННЯ "GUESTFS_CREATE_NO_ENVIRONMENT"

Ви можете скористатися "GUESTFS_CREATE_NO_ENVIRONMENT" і явним викликом "guestfs_parse_environment" ось так:

 guestfs_h *g;
 int r;
 
 g = guestfs_create_flags (GUESTFS_CREATE_NO_ENVIRONMENT);
 if (!g) {
   perror ("guestfs_create_flags");
   exit (EXIT_FAILURE);
 }
 r = guestfs_parse_environment (g);
 if (r == -1)
   exit (EXIT_FAILURE);

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

У наведеного вище коду є ще одна перевага: усі помилки під час обробки середовища передаються обробнику помилок, тоді як "guestfs_create" виводить повідомлення про помилки до stderr і ігнорує помилки.

guestfs_close

 void guestfs_close (guestfs_h *g);

Закриває дескриптор з'єднання і звільняє усі використані ресурси. Якщо для дескриптора було встановлено зворотний виклик закриття, його буде виконано.

Правильний спосіб закриття дескриптора ось такий:

 if (guestfs_shutdown (g) == -1) {
   /* тут обробляємо помилки запису */
 }
 guestfs_close (g);

Потреба у "guestfs_shutdown" виникає, лише якщо виконуються усі з наведених нижче умов:

1.
у режимі читання-запису було додано один або декілька дисків і
2.
було викликано guestfs_launch, і
3.
вами було внесено якісь зміни, і
4.
ви можете обробляти помилки запису (наприклад, завершенням виконання із кодом помилки або звітуванням про помилку користувачеві).

ОБРОБКА ПОМИЛОК

Функції програмного інтерфейсу можуть повертати помилки. Наприклад, майже усі функції, які повертають "int", повертатимуть "-1" для позначення помилки.

Для помилок надається додаткова інформація: рядок повідомлення про помилку і, необов'язково, номер помилки (errno), якщо помилку було пов'язано із загальносистемним викликом.

Ви можете отримати додаткову інформацію щодо останньої помилки для дескриптора за допомогою виклику "guestfs_last_error", "guestfs_last_errno" і/або встановлення обробника помилок за допомогою "guestfs_set_error_handler".

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

 if (guestfs_launch (g) == -1)
   exit (EXIT_FAILURE);

оскільки типовий обробник помилок забезпечить виведення повідомлення про помилку до "stderr" до завершення роботи програми.

Для інших програм, майже напевно, слід встановити альтернативний обробник помилок або обробляти помилки всередині, як у наведеному нижче прикладі. У прив'язках до мов програмування, відмінних від C, усюди встановлюються NULL-обробники помилок, а помилки перетворюються на виключення за допомогою коду, подібного до такого:

 const char *msg;
 int errnum;
 
 /* Це вимикає типову поведінку при виведенні помилок
    до stderr. */
 guestfs_set_error_handler (g, NULL, NULL);
 
 if (guestfs_launch (g) == -1) {
   /* Вивчаємо повідомлення про помилку і виводимо його, надсилаємо його
      тощо. */
   msg = guestfs_last_error (g);
   errnum = guestfs_last_errno (g);
 
   fprintf (stderr, "%s", msg);
   if (errnum != 0)
     fprintf (stderr, ": %s", strerror (errnum));
   fprintf (stderr, "\n");
 
   /* ... */
 }

"guestfs_create" повертає "NULL", якщо дескриптор неможливо створити, а оскільки, якщо таке трапиться, дескриптора не буде, неможливо буде отримати додаткові відомості щодо помилки. Починаючи з libguestfs ≥ 1.20, ви можете скористатися "guestfs_create_flags" для належної обробки помилок під час створення дескрипторів, хоча у переважній частині програм можна продовжувати користуватися "guestfs_create" і не перейматися особливо цим випадком.

Помилки, пов'язані із нестачею пам'яті, обробляються інакше. Типовою дією є виклик abort(3). Якщо такий виклик є небажаним, ви можете встановити обробник за допомогою функції "guestfs_set_out_of_memory_handler".

guestfs_last_error

 const char *guestfs_last_error (guestfs_h *g);

Повертає повідомлення про останню помилку, яка трапилася для "g". Якщо з часу створення дескриптора помилок не траплялося, повертає "NULL".

Зауважте, що у повернутому рядку не буде символу нового рядка наприкінці. Більшість повідомлень про помилки є однорядковими. Деякі поділено на декілька рядків, вони містять символи "\n" усередині рядка, але не наприкінці.

Повернутий рядок лишається актуальним, аж доки не станеться наступна помилка для того самого дескриптора або не буде викликано "guestfs_close". Якщо цей рядок потрібен вам на довший термін, скопіюйте його.

guestfs_last_errno

 int guestfs_last_errno (guestfs_h *g);

Повертає номер останньої помилки (errno), яка сталася для "g".

Якщо виконано успішно, буде повернуто ненульове ціле число errno.

У багатьох випадках повертається спеціальне значення errno "ENOTSUP", якщо ви намагаєтеся викликати функцію або скористатися можливістю, підтримки якої не передбачено.

Якщо номер помилки недоступний, функція повертає 0. Виклик може повертати 0 у трьох випадках:

1.
Для дескриптора не було зафіксовано жодних помилок.
2.
Сталася помилка, але отримання errno не має сенсу. Таке трапляється у випадках, коли повідомлення про помилку надійшло не від загальносистемного виклику, отже причина помилки була якоюсь іншою.
3.
Сталася помилка у загальносистемному виклику, але з якоїсь причини errno не було перехоплено і повернуто. Це, зазвичай, пов'язано із вадою у libguestfs.

Libguestfs намагається перетворити errno із внутрішнього для базової системи у відповідне значення errno для функції виклику (це завдання не є простим: у базовій системі може бути запущено зовсім іншу операційну систему з бібліотеки, а номери помилок у Un*x не стандартизовано). Якщо перетворення є неможливим, повідомлення про помилку перетворюється до "EINVAL". На практиці такі випадки є дуже рідкісними.

guestfs_set_error_handler

 typedef void (*guestfs_error_handler_cb) (guestfs_h *g,
                                           void *opaque,
                                           const char *msg);
 void guestfs_set_error_handler (guestfs_h *g,
                                 guestfs_error_handler_cb cb,
                                 void *opaque);

Якщо станеться помилка, буде викликано зворотний виклик "cb". Параметрами, які передаються зворотному виклику, є непрозорий вказівник на дані і рядок повідомлення про помилку.

"errno" зворотному виклику не передається. Щоб отримати це значення у зворотному виклику, вам слід викликати "guestfs_last_errno".

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

Типовий обробник виводить повідомлення до "stderr".

Якщо ви встановите для "cb" значення "NULL", обробник не викликатиметься.

guestfs_get_error_handler

 guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g,
                                                     void **opaque_rtn);

Повертає зворотний виклик поточного обробника помилок.

guestfs_push_error_handler

 void guestfs_push_error_handler (guestfs_h *g,
                                  guestfs_error_handler_cb cb,
                                  void *opaque);

Ця функція виконує ті самі дії, що і "guestfs_set_error_handler", але застарілий обробник помилок додається до стеку у самому дескрипторі. Ви можете відновити попередній обробник помилок за допомогою виклику "guestfs_pop_error_handler".

Скористайтеся таким кодом, щоб тимчасово вимкнути помилки навколо функції:

 guestfs_push_error_handler (g, NULL, NULL);
 guestfs_mkdir (g, "/foo"); /* Нам все одно, якщо спроба буде невдалою. */
 guestfs_pop_error_handler (g);

guestfs_pop_error_handler

 void guestfs_pop_error_handler (guestfs_h *g);

Відновити попередній обробник помилок (див. "guestfs_push_error_handler").

Якщо ви виштовхуватимете обробники зі стосу достатню кількість разів, буде відновлено типовий обробник помилок.

guestfs_set_out_of_memory_handler

 typedef void (*guestfs_abort_cb) (void);
 void guestfs_set_out_of_memory_handler (guestfs_h *g,
                                         guestfs_abort_cb);

Зворотний виклик "cb" буде викликано, якщо станеться нестача пам'яті. Зауважте, що цей зворотний виклик не повинен повертати керування.

Типовим є виклик abort(3).

Не можна встановлювати для "cb" значення "NULL". Ви не можете ігнорувати випадки, коли не вистачає пам'яті.

guestfs_get_out_of_memory_handler

 guestfs_abort_fn guestfs_get_out_of_memory_handler (guestfs_h *g);

Повертає поточний обробник випадків нестачі пам'яті.

ВИКЛИКИ API

guestfs_acl_delete_def_file

 int
 guestfs_acl_delete_def_file (guestfs_h *g,
                              const char *dir);

Ця функція вилучає типовий список керування доступом POSIX (ACL), який пов'язано із каталогом "dir".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "acl". Див. також "guestfs_feature_available".

(Додано у 1.19.63)

guestfs_acl_get_file

 char *
 guestfs_acl_get_file (guestfs_h *g,
                       const char *path,
                       const char *acltype);

Ця функція повертає список керування доступом POSIX (ACL), пов'язаний із "path". ACL буде повернуто у «довгій тестовій формі» (див. acl(5)).

Можливі значення параметра "acltype":

"access"
Повертає звичайний (на доступ) ACL для будь-якого файла, каталогу або іншого об'єкта файлової системи.
"default"
Повертає типовий ACL. Зазвичай, це має сенс лише, якщо "шлях" — це каталог.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "acl". Див. також "guestfs_feature_available".

(Додано у 1.19.63)

guestfs_acl_set_file

 int
 guestfs_acl_set_file (guestfs_h *g,
                       const char *path,
                       const char *acltype,
                       const char *acl);

Ця функція встановлює список керування доступом POSIX (ACL), пов'язаний із шляхом "path".

Можливі значення параметра "acltype":

"access"
Встановлює звичайний (на доступ) ACL для будь-якого файла, каталогу або іншого об'єкта файлової системи.
"default"
Встановлює типовий ACL. Зазвичай, це має сенс лише, якщо "шлях" — це каталог.

Значенням параметра "acl" є новий ACL у «довгій текстовий формі» або «скороченій текстовій формі» (див. acl(5)). Новий ACL повністю заміняє будь-який попередній ACL файла. ACL має містити повні права доступу Unix (наприклад, "u::rwx,g::rx,o::rx").

Якщо ви вказуєте окремих користувачів або групи, слід вказувати і поле маски (наприклад, "m::rwx"), за яким слід вказувати поля "u:ідентифікатор:..." і/або "g:ідентифікатор:...". Отже, повний рядок ACL може виглядати ось так:

 u::rwx,g::rwx,o::rwx,m::rwx,u:500:rwx,g:500:rwx
 \      Права Unix        / \маска/ \      ACL        /

Вам слід використовувати числові значення UID і GID. Щоб пов'язати імена користувачів та назви груп із правильними значенням ідентифікаторів у контексті гостьової системи, скористайтеся функціями Augeas (див. "guestfs_aug_init").

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "acl". Див. також "guestfs_feature_available".

(Додано у 1.19.63)

guestfs_add_cdrom

 int
 guestfs_add_cdrom (guestfs_h *g,
                    const char *filename);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_add_drive_ro".

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

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

Образ додається як придатний лише для читання диск, отже ця функція еквівалентна до "guestfs_add_drive_ro".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_add_domain

 int
 guestfs_add_domain (guestfs_h *g,
                     const char *dom,
                     ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_ADD_DOMAIN_LIBVIRTURI, const char *libvirturi,
 GUESTFS_ADD_DOMAIN_READONLY, int readonly,
 GUESTFS_ADD_DOMAIN_IFACE, const char *iface,
 GUESTFS_ADD_DOMAIN_LIVE, int live,
 GUESTFS_ADD_DOMAIN_ALLOWUUID, int allowuuid,
 GUESTFS_ADD_DOMAIN_READONLYDISK, const char *readonlydisk,
 GUESTFS_ADD_DOMAIN_CACHEMODE, const char *cachemode,
 GUESTFS_ADD_DOMAIN_DISCARD, const char *discard,
 GUESTFS_ADD_DOMAIN_COPYONREAD, int copyonread,

Ця функція додає диски, долучені до вказаного за назвою домену libvirt "dom". Вона працює шляхом з'єднання із libvirt,
надсилання запиту щодо домену і XML домену до libvirt, обробки отриманих даних для дисків і виклику "guestfs_add_drive_opts" для кожного з дисків.

Буде повернуто значення кількості доданих дисків. Ця операція є атомарною: якщо буде повернуто помилку, жодного диска не додано.

Ця функція виконує деякі мінімальні перевірки, щоб переконатися, що домен libvirt не запущено (якщо "readonly" не дорівнює true). У майбутніх версіях ми спробуємо реалізувати блокування libvirt для кожного диска.

Disks must be accessible locally. This often means that adding disks from a remote libvirt connection (see https://libvirt.org/remote.html) will fail unless those disks are accessible via the same device path locally too.

The optional "libvirturi" parameter sets the libvirt URI (see https://libvirt.org/uri.html). If this is not set then we connect to the default libvirt URI (or one set through an environment variable, see the libvirt documentation for full details).

Необов'язковий прапорець "live" керує тим, чи буде цей виклик намагатися з'єднатися із запущеним процесом "guestfsd" віртуальної машини, якщо буде виявлено відповідний елемент <channel> у визначення XML libvirt. Типовою поведінкою (якщо прапорець не встановлено) є поведінка, за якої спроби робитися не буде. Див. "ДОЛУЧЕННЯ ДО ЗАПУЩЕНИХ ФОНОВИХ СЛУЖБ", щоб дізнатися більше.

Якщо прапорець "allowuuid" має значення true (типовим значенням є false), тоді може бути передано UUID замість назви домену. Рядок "dom" обробляється спочатку як UUID і виконується пошук. Якщо нічого не вдасться знайти, "dom" обробляється як назва, як завжди.

Необов'язковий параметр "readonlydisk" керує тим, що ми робимо із дисками, які позначено як <readonly/> у XML libvirt. Можливі значення:

Якщо "readonly" має значення false:

Увесь виклик буде перервано із повідомленням про помилку, якщо буде виявлено хоча б один диск із прапорцем <readonly/>.

Якщо "readonly" має значення true:

Диски із прапорцем <readonly/> додано лише для читання.

Якщо "readonly" має значення false:

Диски із прапорцем <readonly/> додано лише для читання. Інші диски додано для читання і запису.

Якщо "readonly" має значення true:

Диски із прапорцем <readonly/> додано лише для читання.

Якщо "readonly" має значення false:

Диски із прапорцем <readonly/> додано для читання і запису.

Якщо "readonly" має значення true:

Диски із прапорцем <readonly/> додано лише для читання.

Якщо "readonly" має значення true або false:

Диски з прапорцем <readonly/> буде пропущено.

If present, the value of "logical_block_size" attribute of <blockio/> tag in libvirt XML will be passed as "blocksize" parameter to "guestfs_add_drive_opts".

Інші необов'язкові параметри передаються безпосередньо до "guestfs_add_drive_opts".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.7.4)

guestfs_add_domain_va

 int
 guestfs_add_domain_va (guestfs_h *g,
                        const char *dom,
                        va_list args);

Це «варіант з va_list» "guestfs_add_domain".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_add_domain_argv

 int
 guestfs_add_domain_argv (guestfs_h *g,
                          const char *dom,
                          const struct guestfs_add_domain_argv *optargs);

Це «варіант з argv» "guestfs_add_domain".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_add_drive

 int
 guestfs_add_drive (guestfs_h *g,
                    const char *filename);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_add_drive_opts" без додаткових аргументів.

(Додано у 0.3)

guestfs_add_drive_opts

 int
 guestfs_add_drive_opts (guestfs_h *g,
                         const char *filename,
                         ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_ADD_DRIVE_OPTS_READONLY, int readonly,
 GUESTFS_ADD_DRIVE_OPTS_FORMAT, const char *format,
 GUESTFS_ADD_DRIVE_OPTS_IFACE, const char *iface,
 GUESTFS_ADD_DRIVE_OPTS_NAME, const char *name,
 GUESTFS_ADD_DRIVE_OPTS_LABEL, const char *label,
 GUESTFS_ADD_DRIVE_OPTS_PROTOCOL, const char *protocol,
 GUESTFS_ADD_DRIVE_OPTS_SERVER, char *const *server,
 GUESTFS_ADD_DRIVE_OPTS_USERNAME, const char *username,
 GUESTFS_ADD_DRIVE_OPTS_SECRET, const char *secret,
 GUESTFS_ADD_DRIVE_OPTS_CACHEMODE, const char *cachemode,
 GUESTFS_ADD_DRIVE_OPTS_DISCARD, const char *discard,
 GUESTFS_ADD_DRIVE_OPTS_COPYONREAD, int copyonread,
 GUESTFS_ADD_DRIVE_OPTS_BLOCKSIZE, int blocksize,

Ця функція додає образ диска, який має назву filename, до дескриптора. filename може бути звичайним файлом основної системи або пристроєм основної системи.

Якщо цю функцію викликають до "guestfs_launch" (типовий випадок), тоді, коли ви вперше викликаєте цю функцію, диск з'являється у програмному інтерфейсі як /dev/sda, другого разу — /dev/sdb, тощо.

У libguestfs ≥ 1.20 ви можете викликати цю функцію і після запуску (з певними обмеженнями). Це називається «з'єднання у «гарячому» режимі». При такому з'єднанні вам слід вказати мітку ("label"), щоб новий диск отримав передбачувану назву. Докладніший опис наведено у розділі "З'ЄДНАННЯ У «ГАРЯЧОМУ» РЕЖИМІ".

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

Цей виклик перевіряє, чи існує filename.

filename може бути спеціальним рядком "/dev/null". Див. "НУЛЬОВІ ДИСКИ".

Необов'язковими аргументами є:

"readonly"
Якщо має значення true, образ вважатиметься придатним лише для читання. Запис буде дозволено, але дані зберігатимуться у тимчасовому знімку-накладці, який наприкінці сеансу роботи буде відкинуто. Зміни до диска, який ви додаєте, внесено не буде.
"format"
Примусово встановлює формат образу. Якщо ви не вкажете його (або скористаєтеся "guestfs_add_drive" чи "guestfs_add_drive_ro"), формат визначатиметься автоматично. Серед можливих форматів "raw" і "qcow2".

Автоматичне визначення формату є потенційною вадою захисту, якщо ви маєте справу з образами у форматі raw із ненадійних джерел. Див. CVE-2010-3851 і RHBZ#642934. Вказування формату явним чином закриває цю дірку у захисті.

"iface"
Цей рідкісний параметр надає вам змогу емулювати поведінку застарілого виклику "guestfs_add_drive_with_if" (q.v.)
"name"
Назва, яку диск має у початковій гостьовій системі, наприклад, /dev/sdb. Використовується як підказка для процесу інспектування гостьової системи, якщо така назва наявна.
"label"
Надати диску мітку. Мітка має бути унікальним коротким рядком, у якому використано лише символи ASCII "[a-zA-Z]". Окрім звичайної назви у програмному інтерфейсі (наприклад /dev/sda), диск також можна буде називати /dev/disk/guestfs/мітка.

Див. "МІТКИ ДИСКІВ".

"protocol"
Необов'язковим аргументом протоколу можна скористатися для вибору альтернативного протоколу джерела.

Див. також "REMOTE STORAGE".

"protocol = "file""
filename вважатиметься локальним файлом або пристроєм. Це типова поведінка програми, якщо не вказано додатковий параметр протоколу.
"protocol = "ftp"|"ftps"|"http"|"https"|"tftp""
З'єднатися із віддаленим сервером FTP, HTTP або TFTP. Також має бути надано параметр "server", див. нижче.

Див. також "FTP, HTTP AND TFTP"

"protocol = "gluster""
З'єднатися із сервером GlusterFS. Також має бути надано параметр "server", див. нижче.

Див. також "GLUSTER".

"protocol = "iscsi""
З'єднатися із сервером iSCSI. Також має бути надано параметр "server", див. нижче. Має бути надано параметр "username", див. нижче. Має бути надано параметр "secret", див. нижче.

Див. також "ISCSI".

"protocol = "nbd""
З'єднатися із сервером Network Block Device. Також має бути надано параметр "server", див. нижче.

Див. також "NETWORK BLOCK DEVICE".

"protocol = "rbd""
З'єднатися із сервером Ceph (librbd/RBD). Також має бути надано параметр "server", див. нижче. Має бути надано параметр "username", див. нижче. Має бути надано параметр "secret", див. нижче.

Див. також "CEPH".

"protocol = "sheepdog""
З'єднатися із сервером Sheepdog. Також може бути надано параметр "server", див. нижче.

Див. також "SHEEPDOG".

"protocol = "ssh""
Встановити з’єднання з сервером Secure Shell (ssh).

Має бути надано параметр "server". Може бути надано параметр "username", див. нижче.

Див. також "SSH".

"server"
Для протоколів, які потребують доступу до віддаленого сервера, це список серверів.

 Протокол       Кількість потрібних серверів
 --------       --------------------------
 file           Список має бути порожнім або не слід користуватися параметром взагалі
 ftp|ftps|http|https|tftp  Точно один
 gluster        Точно один
 iscsi          Точно один
 nbd            Точно один
 rbd            Нуль або більше
 sheepdog       Нуль або більше
 ssh            Точно один
    

Кожен елемент у списку є рядком, який вказує на сервер. Рядок має бути записано у одному з таких форматів:

 назва_вузла
 назва_вузла:порт
 tcp:назва_вузла
 tcp:назва_вузла:порт
 unix:/шлях/до/сокета
    

Якщо номер порту не вказано, буде використано стандартний для протоколу номер (див. /etc/services).

"username"
Для протоколів "ftp", "ftps", "http", "https", "iscsi", "rbd", "ssh" та "tftp" визначає ім’я користувача віддаленої системи.

Якщо не вказано, для "ssh" буде використано ім'я локального користувача, а для ceph спроба пройти розпізнавання не виконуватиметься. Втім, зауважте, що іноді це може призводити до неочікуваних результатів, наприклад, якщо використовується модуль обробки libvirt, і модуль обробки libvirt налаштовано на запуск базової системи qemu від імені спеціального користувача, зокрема "qemu.qemu". Якщо сумніваєтеся, вкажіть потрібне вам ім'я користувача віддаленої системи.

"secret"
Лише для протоколу "rbd" це визначає «ключ», яким слід скористатися для з'єднання із віддаленим пристроєм. Дані має бути вказано у кодуванні base64.

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

"cachemode"
Вкажіть, має libguestfs зважати на дії з синхронізації (безпечно, але повільно) чи ні (небезпечно, але швидко). Можливими значеннями цього рядка можуть бути:
"cachemode = "writeback""
Типове значення.

Дії із запису у програмному інтерфейсі не повертають керування, аж доки не буде завершено виклик write(2) у основній системі [втім, слід зауважити, що це не означає, що щось буде записано на диск].

Дії із синхронізації у програмному інтерфейсі, зокрема неявні синхронізації, спричинені журналюванням файлової системи, не повертатимуть керування, аж доки не буде завершено виклик fdatasync(2) у основній системі, що означатиме, що дані було надіслано на диск.

"cachemode = "unsafe""
У цьому режимі надійність не гарантовано. Libguestfs може кешувати дані і ігнорувати запити щодо синхронізації. Пасує лише тестовим та тимчасовим дискам.
"discard"
Увімкнути або вимкнути підтримку відкидання (або обрізання чи скасовування прив'язки) для цього диска. Якщо увімкнено, дії, подібні до "guestfs_fstrim" зможуть відкидати / утоншувати / пробивати дірки у підлеглому файлі або пристрої основної системи.

Можливі варіанти параметрів відкидання:

"discard = "disable""
Вимкнути підтримку відкидання. Типова поведінка.
"discard = "enable""
Увімкнути підтримку відкидання. Завершується помилкою, якщо відкидання неможливе.
"discard = "besteffort""
Увімкнути, якщо можна, підтримку відкидання, але не завершувати роботу із повідомленням щодо помилки, якщо такої підтримки не передбачено.

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

"copyonread"
Булевий параметр "copyonread" вмикає підтримку копіювання під час читання. Це стосується лише форматів дисків, які мають резервні файли, і спричиняє до того, що дані читання зберігатимуться у накладному шарі, що пришвидшуватиме повторні читання тих сами даних з диска.

Типовим є значення false.

"blocksize"
This parameter sets the sector size of the disk. Possible values are 512 (the default if the parameter is omitted) or 4096. Use 4096 when handling an "Advanced Format" disk that uses 4K sector size (https://en.wikipedia.org/wiki/Advanced_Format).

Only a subset of the backends support this parameter (currently only the libvirt and direct backends do).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_add_drive_opts_va

 int
 guestfs_add_drive_opts_va (guestfs_h *g,
                            const char *filename,
                            va_list args);

Це «варіант з va_list» "guestfs_add_drive_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_add_drive_opts_argv

 int
 guestfs_add_drive_opts_argv (guestfs_h *g,
                              const char *filename,
                              const struct guestfs_add_drive_opts_argv *optargs);

Це «варіант з argv» "guestfs_add_drive_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_add_drive_ro

 int
 guestfs_add_drive_ro (guestfs_h *g,
                       const char *filename);

Ця функція є еквівалентом виклику "guestfs_add_drive_opts" із додатковим параметром "GUESTFS_ADD_DRIVE_OPTS_READONLY", який встановлено у значення 1, отже диск додається лише для читання, а формат визначається автоматично.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.38)

guestfs_add_drive_ro_with_if

 int
 guestfs_add_drive_ro_with_if (guestfs_h *g,
                               const char *filename,
                               const char *iface);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_add_drive".

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

Те саме, що і "guestfs_add_drive_ro", але надає вам змогу вказати емуляцію інтерфейсу QEMU, яку буде використано під час роботи.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.84)

guestfs_add_drive_scratch

 int
 guestfs_add_drive_scratch (guestfs_h *g,
                            int64_t size,
                            ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_ADD_DRIVE_SCRATCH_NAME, const char *name,
 GUESTFS_ADD_DRIVE_SCRATCH_LABEL, const char *label,
 GUESTFS_ADD_DRIVE_SCRATCH_BLOCKSIZE, int blocksize,

Ця команда додає тимчасовий робочий диск до дескриптора. Параметр "size" визначає його віртуальний розмір (у байтах). Робочий диск є початково порожнім (усі спроби читання повертатимуть лише нулі, аж доки ви не почнете записувати на нього дані). Диск вилучається після закриття дескриптора.

The optional arguments "name", "label" and "blocksize" are passed through to "guestfs_add_drive_opts".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.23.10)

guestfs_add_drive_scratch_va

 int
 guestfs_add_drive_scratch_va (guestfs_h *g,
                               int64_t size,
                               va_list args);

Це «варіант з va_list» "guestfs_add_drive_scratch"

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_add_drive_scratch_argv

 int
 guestfs_add_drive_scratch_argv (guestfs_h *g,
                                 int64_t size,
                                 const struct guestfs_add_drive_scratch_argv *optargs);

Це «варіант з argv» "guestfs_add_drive_scratch".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_add_drive_with_if

 int
 guestfs_add_drive_with_if (guestfs_h *g,
                            const char *filename,
                            const char *iface);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_add_drive".

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

Те саме, що і "guestfs_add_drive", але надає вам змогу вказати емуляцію інтерфейсу QEMU, яку буде використано під час роботи.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.84)

guestfs_add_libvirt_dom

 int
 guestfs_add_libvirt_dom (guestfs_h *g,
                          void * /* really virDomainPtr */ dom,
                          ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_ADD_LIBVIRT_DOM_READONLY, int readonly,
 GUESTFS_ADD_LIBVIRT_DOM_IFACE, const char *iface,
 GUESTFS_ADD_LIBVIRT_DOM_LIVE, int live,
 GUESTFS_ADD_LIBVIRT_DOM_READONLYDISK, const char *readonlydisk,
 GUESTFS_ADD_LIBVIRT_DOM_CACHEMODE, const char *cachemode,
 GUESTFS_ADD_LIBVIRT_DOM_DISCARD, const char *discard,
 GUESTFS_ADD_LIBVIRT_DOM_COPYONREAD, int copyonread,

Ця функція додає диски, долучені до вказаного за назвою домену libvirt "dom". Вона працює шляхом з'єднання із libvirt,
надсилання запиту щодо домену і XML домену до libvirt, обробки отриманих даних для дисків і виклику "guestfs_add_drive_opts" для кожного з дисків.

У програмному інтерфейсі мовою C ми оголошуємо "void *dom", але насправді типом змінної є "virDomainPtr dom". Так зроблено, щоб нам не потрібна була <libvirt.h>.

Буде повернуто значення кількості доданих дисків. Ця операція є атомарною: якщо буде повернуто помилку, жодного диска не додано.

Ця функція виконує деякі мінімальні перевірки, щоб переконатися, що домен libvirt не запущено (якщо "readonly" не дорівнює true). У майбутніх версіях ми спробуємо реалізувати блокування libvirt для кожного диска.

Disks must be accessible locally. This often means that adding disks from a remote libvirt connection (see https://libvirt.org/remote.html) will fail unless those disks are accessible via the same device path locally too.

Необов'язковий прапорець "live" керує тим, чи буде цей виклик намагатися з'єднатися із запущеним процесом "guestfsd" віртуальної машини, якщо буде виявлено відповідний елемент <channel> у визначення XML libvirt. Типовою поведінкою (якщо прапорець не встановлено) є поведінка, за якої спроби робитися не буде. Див. "ДОЛУЧЕННЯ ДО ЗАПУЩЕНИХ ФОНОВИХ СЛУЖБ", щоб дізнатися більше.

Необов'язковий параметр "readonlydisk" керує тим, що ми робимо із дисками, які позначено як <readonly/> у XML libvirt. Можливі значення описано у довідці щодо "guestfs_add_domain".

If present, the value of "logical_block_size" attribute of <blockio/> tag in libvirt XML will be passed as "blocksize" parameter to "guestfs_add_drive_opts".

Інші необов'язкові параметри передаються безпосередньо до "guestfs_add_drive_opts".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.29.14)

guestfs_add_libvirt_dom_va

 int
 guestfs_add_libvirt_dom_va (guestfs_h *g,
                             void * /* really virDomainPtr */ dom,
                             va_list args);

Це «варіант з va_list» "guestfs_add_libvirt_dom".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_add_libvirt_dom_argv

 int
 guestfs_add_libvirt_dom_argv (guestfs_h *g,
                               void * /* really virDomainPtr */ dom,
                               const struct guestfs_add_libvirt_dom_argv *optargs);

Це «варіант з argv» "guestfs_add_libvirt_dom".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_aug_clear

 int
 guestfs_aug_clear (guestfs_h *g,
                    const char *augpath);

Встановлює значення, пов'язане "path" у "NULL". Те саме, що і команда augtool(1) "clear".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.4)

guestfs_aug_close

 int
 guestfs_aug_close (guestfs_h *g);

Закрити поточний дескриптор Augeas і вивільнити усі ресурси, які ним використовуються. Після виклику слід викликати "guestfs_aug_init" ще раз, перш ніж ви зможете скористатися будь-якими іншими функціями Augeas.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.7)

guestfs_aug_defnode

 struct guestfs_int_bool *
 guestfs_aug_defnode (guestfs_h *g,
                      const char *name,
                      const char *expr,
                      const char *val);

Визначає змінну "назва", чиїм значенням є результат обчислення виразу "вираз".

If "expr" evaluates to an empty nodeset, a node is created, equivalent to calling "guestfs_aug_set" "expr", "val". "name" will be the nodeset containing that single node.

Якщо виконано успішно, повертає пару значень — кількість вузлів у наборі вузлів та булевий прапорець, якщо було створено вузол.

Ця функція повертає "struct guestfs_int_bool *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_int_bool".

(Додано у 0.7)

guestfs_aug_defvar

 int
 guestfs_aug_defvar (guestfs_h *g,
                     const char *name,
                     const char *expr);

Визначає змінну Augeas "назва", чиїм значенням є результат обчислення виразу "вираз". Якщо значенням "вираз" є NULL, "назва" є невизначеною.

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

У разі помилки цією функцією буде повернуто -1.

(Додано у 0.7)

guestfs_aug_get

 char *
 guestfs_aug_get (guestfs_h *g,
                  const char *augpath);

Виконати пошук значення, пов'язаного із шляхом "шлях". Якщо "шлях" визначає точно один вузол, буде повернуто "значення".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 0.7)

guestfs_aug_init

 int
 guestfs_aug_init (guestfs_h *g,
                   const char *root,
                   int flags);

Створити дескриптор Augeas для редагування файлів налаштувань. Якщо із цим сеансом guestfs вже було пов'язано дескриптор Augeas, його буде закрито.

Вам слід викликати цю команду до використання будь-яких інших команд "guestfs_aug_*".

"корінь" — коренева тека файлової системи. Значенням "корінь" не повинен бути NULL. Замість значення NULL слід використовувати /.

Прапорці є тими самими, що і прапорці, визначені у <augeas.h>, застосування логічного АБО до таких цілих значень:

"AUG_SAVE_BACKUP" = 1
Зберігати початковий файл із додаванням до назви суфікса ".augsave".
"AUG_SAVE_NEWFILE" = 2
Зберігати зміни до файла із суфіксом назви ".augnew" і не перезаписувати початковий файл. Має вищий пріоритет за "AUG_SAVE_BACKUP".
"AUG_TYPE_CHECK" = 4
Лінзи перевірки типів.

Цей параметр буде корисним, лише якщо ви виконуєте діагностику лінз Augeas. Використання цього параметра може потребувати додаткової пам'яті для базової системи libguestfs. Ймовірно, вам варто встановити відповідне значення для змінної середовища "LIBGUESTFS_MEMSIZE" або викликати "guestfs_set_memsize".

"AUG_NO_STDINC" = 8
Не використовувати стандартний шлях для завантаження модулів.
"AUG_SAVE_NOOP" = 16
Вимкнути дію зі збереження, просто записати, що могло б бути змінено.
"AUG_NO_LOAD" = 32
Не завантажувати ієрархію у "guestfs_aug_init".

Щоб закрити дескриптор, ви можете викликати "guestfs_aug_close".

Щоб дізнатися більше про Augeas, зверніться до http://augeas.net/.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.7)

guestfs_aug_insert

 int
 guestfs_aug_insert (guestfs_h *g,
                     const char *augpath,
                     const char *label,
                     int before);

Створити мітку-близнюка "мітка" для шляху "шлях", вставивши її до ієрархії перед або після записом шляху "шлях" (залежно від додаткового булевого прапорця "до").

"шлях" має збігатися із точно одним наявним вузлом у ієрархії, а "мітка" має бути міткою, тобто не містити /, "*", або завершуватися індексом у дужках, "[N]".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.7)

guestfs_aug_label

 char *
 guestfs_aug_label (guestfs_h *g,
                    const char *augpath);

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

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.23.14)

guestfs_aug_load

 int
 guestfs_aug_load (guestfs_h *g);

Завантажити файли до ієрархії.

Див. документацію Augeas щодо "aug_load", якщо хочете докладнішого опису.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.7)

guestfs_aug_ls

 char **
 guestfs_aug_ls (guestfs_h *g,
                 const char *augpath);

Скорочена форма запису для побудови списку "guestfs_aug_match" "шлях/*" і упорядковування вузлів-результатів за абеткою.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 0.8)

guestfs_aug_match

 char **
 guestfs_aug_match (guestfs_h *g,
                    const char *augpath);

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

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 0.7)

guestfs_aug_mv

 int
 guestfs_aug_mv (guestfs_h *g,
                 const char *src,
                 const char *dest);

Пересуває вузол "джерело" до "призначення". "джерело" має відповідати точно одному вузлу. "призначення" буде перезаписано, якщо воно вже існує.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.7)

guestfs_aug_rm

 int
 guestfs_aug_rm (guestfs_h *g,
                 const char *augpath);

Вилучити "шлях" і усі його підлеглі об'єкти.

Якщо виконано успішно, повертає кількість вилучених записів.

У разі помилки цією функцією буде повернуто -1.

(Додано у 0.7)

guestfs_aug_save

 int
 guestfs_aug_save (guestfs_h *g);

Записує зміни з черги на диск.

Прапорці, які передаються "guestfs_aug_init" впливають на те, як саме буде збережено файли.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.7)

guestfs_aug_set

 int
 guestfs_aug_set (guestfs_h *g,
                  const char *augpath,
                  const char *val);

Set the value associated with "augpath" to "val".

У програмному інтерфейсі Augeas можна спорожняти вузол наданням йому значення NULL. Через недогляд у програмному інтерфейсі libguestfs ви не зможете цього робити за допомогою цього виклику. Замість цього, доведеться викликати "guestfs_aug_clear".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.7)

guestfs_aug_setm

 int
 guestfs_aug_setm (guestfs_h *g,
                   const char *base,
                   const char *sub,
                   const char *val);

Змінити декілька вузлів Augeas однією командою. "основа" — вираз, що відповідає декільком вузлам. "підлеглий" — вираз шляху відносно шляху "основа". Буде знайдено усі вузли, які відповідають запису "основа", а потім для кожного вузла значення "підлеглий" буде змінено на "значення". Значенням "підлеглий" може бути "NULL", щоб призведе до внесення змін до вузлів "основа".

Повертає кількість модифікованих вузлів.

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.23.14)

guestfs_aug_transform

 int
 guestfs_aug_transform (guestfs_h *g,
                        const char *lens,
                        const char *file,
                        ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_AUG_TRANSFORM_REMOVE, int remove,

Додати перетворення Augeas до вказаної лінзи "лінза" так, щоб вона могла обробляти "файл".

Якщо значенням прапорця "вилучення" є true (типово його значенням є "false"), перетворення буде вилучено.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.35.2)

guestfs_aug_transform_va

 int
 guestfs_aug_transform_va (guestfs_h *g,
                           const char *lens,
                           const char *file,
                           va_list args);

Це «варіант з va_list» "guestfs_aug_transform"

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_aug_transform_argv

 int
 guestfs_aug_transform_argv (guestfs_h *g,
                             const char *lens,
                             const char *file,
                             const struct guestfs_aug_transform_argv *optargs);

Це «варіант з argv» "guestfs_aug_transform".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_available

 int
 guestfs_available (guestfs_h *g,
                    char *const *groups);

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

Список груп libguestfs та функцій, яким відповідають ці групи, наведено у розділі "ДОСТУПНІСТЬ". Ви також можете отримати цей список у робочому режимі викликом "guestfs_available_all_groups".

Аргумент "групи" є списком назв груп. Приклад: "["inotify", "augeas"]" має перевірити доступність функцій inotify Linux та функцій Augeas (редагування файла налаштувань).

Ця команда не повертає повідомлення про помилку, якщо доступними є усі вказані групи.

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

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

Нотатки:

  • "guestfs_feature_available" є тим самим, що і цей виклик, але із дещо простішим у користуванні програмним інтерфейсом: цей виклик повертає булеве true/false замість надсилання повідомлення про помилку.
  • Вам слід викликати "guestfs_launch" до виклику цієї функції.

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

  • Якщо група функцій доступна, це не обов'язково означає, що функції працюватимуть. Вам все одно слід перевірити, чи не виникають помилки під час викликів окремих програмних інтерфейсів, навіть якщо вони доступні.
  • Зазвичай, збирання базової системи libguestfs із якомога ширшими функціональними можливостями є завданням пакувальників дистрибутивів. libguestfs із основної гілки коду, якщо програми зібрано із початкового коду із усіма залежностями, підтримуватиме роботу із усіма можливостями.
  • Цей виклик було додано у версії 1.0.80. У попередніх версіях libguestfs усе, що ви могли зробити, це спробувати виконати команду, щоб визначити, чи реалізовано її у фоновій службі. Див. також "guestfs_version".

Див. також "guestfs_filesystem_available".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.80)

guestfs_available_all_groups

 char **
 guestfs_available_all_groups (guestfs_h *g);

Ця команда повертає список усіх додаткових груп, про які знає ця фонова служба. Зауважте, що буде повернуто список підтримуваних і непідтримуваних груп. Щоб визначити групи, підтримку яких передбачено у фоновій службі, вам слід викликати "guestfs_available" / "guestfs_feature_available" для кожного запису із повернутого списку.

Див. також "guestfs_available", "guestfs_feature_available" і "AVAILABILITY".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.3.15)

guestfs_base64_in

 int
 guestfs_base64_in (guestfs_h *g,
                    const char *base64file,
                    const char *filename);

Ця команда вивантажує закодовані у base64 дані з файла "файл_base64" до файла назва_файла.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.5)

guestfs_base64_out

 int
 guestfs_base64_out (guestfs_h *g,
                     const char *filename,
                     const char *base64file);

Ця команда отримує вміст файла назва_файла і записує його до локального файла "файл_base64" у кодуванні base64.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.5)

guestfs_blkdiscard

 int
 guestfs_blkdiscard (guestfs_h *g,
                     const char *device);

Ця команда відкидає усі блоки на блоковому пристрої "пристрій", вивільняючи місце і передаючи його основній системі.

Ця операція потребує підтримки у libguestfs, файловій системі основної системи, qemu та ядрі основної системи. Якщо цієї підтримки немає, операція призведе до помилки або навіть виконуватиметься, але без усіляких наслідків. Вам слід встановити атрибут "discard" на підлеглому диску (див. "guestfs_add_drive_opts").

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "blkdiscard". Див. також "guestfs_feature_available".

(Додано у 1.25.44)

guestfs_blkdiscardzeroes

 int
 guestfs_blkdiscardzeroes (guestfs_h *g,
                           const char *device);

Цей виклик повертає true, якщо блоки на пристрої "пристрій", які було відкинуто викликом "guestfs_blkdiscard", повернуто як блоки у нуль байтів під час наступного читання.

Якщо повертає false, може так статися, що відкинуті блоки читаються як застарілі або випадкові дані.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "blkdiscardzeroes". Див. також "guestfs_feature_available".

(Додано у 1.25.44)

guestfs_blkid

 char **
 guestfs_blkid (guestfs_h *g,
                const char *device);

Ця команда повертає атрибути блокового пристрою "пристрій". У виведеному хеші зазвичай є вказані нижче поля. Також у ньому можуть бути інші поля.

"UUID"
Код UUID цього пристрою.
"МІТКА"
Мітка пристрою.
"ВЕРСІЯ"
Версія програми blkid.
"ТИП"
Тип файлової системи або RAID для цього пристрою.
"ВИКОРИСТАННЯ"
Призначення цього пристрою, наприклад "filesystem" або "raid".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Масив рядків завжди матиме довжину "2n+1", значення "n" ключів і значень йтимуть одне за одним послідовно, завершуючись кінцевим записом NULL. Після використання слід звільнити рядки і масив.

(Додано у 1.15.9)

guestfs_blockdev_flushbufs

 int
 guestfs_blockdev_flushbufs (guestfs_h *g,
                             const char *device);

Ця команда наказує ядру спорожнити внутрішні буфери, які пов'язано із пристроєм "пристрій".

Використовується програма blockdev(8).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.9.3)

guestfs_blockdev_getbsz

 int
 guestfs_blockdev_getbsz (guestfs_h *g,
                          const char *device);

Повертає розмір блоку для пристрою.

Зауваження: цей розмір відрізняється від розміру у блоках і розміру блоку файлової системи. Крім того, цей параметр насправді ніде не використовується. Вам, ймовірно, не знадобляться ці дані. Файлові системі мають власні правила щодо вибору розміру блоку.

Використовується програма blockdev(8).

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.9.3)

guestfs_blockdev_getro

 int
 guestfs_blockdev_getro (guestfs_h *g,
                         const char *device);

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

Використовується програма blockdev(8).

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.9.3)

guestfs_blockdev_getsize64

 int64_t
 guestfs_blockdev_getsize64 (guestfs_h *g,
                             const char *device);

Повертає розмір пристрою у байтах.

Див. також "guestfs_blockdev_getsz".

Використовується програма blockdev(8).

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.9.3)

guestfs_blockdev_getss

 int
 guestfs_blockdev_getss (guestfs_h *g,
                         const char *device);

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

(Зауважте, що це не розмір у секторах. Щоб отримати розмір у секторах, скористайтеся "guestfs_blockdev_getsz").

Використовується програма blockdev(8).

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.9.3)

guestfs_blockdev_getsz

 int64_t
 guestfs_blockdev_getsz (guestfs_h *g,
                         const char *device);

Цей повертає розмір пристрою у одиницях 512-байтових секторах (навіть якщо розмір сектора не дорівнює 512 байтів ...дивно).

Див. також "guestfs_blockdev_getss", щоб дізнатися справжній розмір сектора пристрою, і "guestfs_blockdev_getsize64" для отримання кориснішого розміру у байтах.

Використовується програма blockdev(8).

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.9.3)

guestfs_blockdev_rereadpt

 int
 guestfs_blockdev_rereadpt (guestfs_h *g,
                            const char *device);

Повторно прочитати таблицю розділів з пристрою "пристрій".

Використовується програма blockdev(8).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.9.3)

guestfs_blockdev_setbsz

 int
 guestfs_blockdev_setbsz (guestfs_h *g,
                          const char *device,
                          int blocksize);

Ця функція вважається застарілою. Замінника не передбачено. Зверніться до документації із програмного інтерфейсу у підручнику з guestfs(3), щоб дізнатися більше.

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

Цей виклик не виконує ніяких дій і ніколи цього не робив через ваду у blockdev. Не використовуйте його.

Якщо вам потрібно встановити розмір блоку файлової системи, скористайтеся параметром "blocksize" "guestfs_mkfs".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.9.3)

guestfs_blockdev_setra

 int
 guestfs_blockdev_setra (guestfs_h *g,
                         const char *device,
                         int sectors);

Встановити випереджальне читання (у 512-байтових секторах) для пристрою.

Використовується програма blockdev(8).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.29.10)

guestfs_blockdev_setro

 int
 guestfs_blockdev_setro (guestfs_h *g,
                         const char *device);

Переводити блоковий пристрій з назвою "пристрій" у режим лише читання.

Використовується програма blockdev(8).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.9.3)

guestfs_blockdev_setrw

 int
 guestfs_blockdev_setrw (guestfs_h *g,
                         const char *device);

Встановлює для блокового пристрою із назвою "пристрій" режим читання-запису.

Використовується програма blockdev(8).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.9.3)

guestfs_btrfs_balance_cancel

 int
 guestfs_btrfs_balance_cancel (guestfs_h *g,
                               const char *path);

Скасувати поточний баланс на файловій системі btrfs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.22)

guestfs_btrfs_balance_pause

 int
 guestfs_btrfs_balance_pause (guestfs_h *g,
                              const char *path);

Призупинити запущений баланс у файловій системі btrfs

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.22)

guestfs_btrfs_balance_resume

 int
 guestfs_btrfs_balance_resume (guestfs_h *g,
                               const char *path);

Поновити призупинений баланс на файловій системі btrfs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.22)

guestfs_btrfs_balance_status

 struct guestfs_btrfsbalance *
 guestfs_btrfs_balance_status (guestfs_h *g,
                               const char *path);

Показати стан використовуваного або призупиненого балансу на файловій системі btrfs.

Ця функція повертає "struct guestfs_btrfsbalance *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_btrfsbalance".

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.26)

guestfs_btrfs_device_add

 int
 guestfs_btrfs_device_add (guestfs_h *g,
                           char *const *devices,
                           const char *fs);

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

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.35)

guestfs_btrfs_device_delete

 int
 guestfs_btrfs_device_delete (guestfs_h *g,
                              char *const *devices,
                              const char *fs);

Вилучити "пристрої" з файлової системи btrfs, змонтованої до точки "файлова система". Якщо запис "пристрої" є порожнім списком, не виконувати ніяких дій.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.35)

guestfs_btrfs_filesystem_balance

 int
 guestfs_btrfs_filesystem_balance (guestfs_h *g,
                                   const char *fs);

Збалансувати фрагменти файлової системи btrfs, змонтованої до точки "файлова_система", між підлеглими пристроями.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.35)

guestfs_btrfs_filesystem_defragment

 int
 guestfs_btrfs_filesystem_defragment (guestfs_h *g,
                                      const char *path,
                                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_BTRFS_FILESYSTEM_DEFRAGMENT_FLUSH, int flush,
 GUESTFS_BTRFS_FILESYSTEM_DEFRAGMENT_COMPRESS, const char *compress,

Виконати дефрагментацію файла або каталогу на файловій системі btrfs. Для параметра «стискання» передбачено два значення: zlib або lzo.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.22)

guestfs_btrfs_filesystem_defragment_va

 int
 guestfs_btrfs_filesystem_defragment_va (guestfs_h *g,
                                         const char *path,
                                         va_list args);

Це «варіант з va_list» "guestfs_btrfs_filesystem_defragment".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_filesystem_defragment_argv

 int
 guestfs_btrfs_filesystem_defragment_argv (guestfs_h *g,
                                           const char *path,
                                           const struct guestfs_btrfs_filesystem_defragment_argv *optargs);

Це «варіант з argv» "guestfs_btrfs_filesystem_defragment".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_filesystem_resize

 int
 guestfs_btrfs_filesystem_resize (guestfs_h *g,
                                  const char *mountpoint,
                                  ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_BTRFS_FILESYSTEM_RESIZE_SIZE, int64_t size,

Ця команда змінює розмір файлової системи btrfs.

Зауважте, що на відміну від інших викликів команд зміни розмірів, файлову систему має бути змонтовано, а параметром команди є точка монтування, а не пристрій (це вимога самої btrfs).

Додатковими параметрами є:

"розмір"
Новий розмір (у байтах) файлової системи. Якщо не вказано, файлову систему буде розширено до максимального розміру.

Див. також btrfs(8).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.11.17)

guestfs_btrfs_filesystem_resize_va

 int
 guestfs_btrfs_filesystem_resize_va (guestfs_h *g,
                                     const char *mountpoint,
                                     va_list args);

Це «варіант з va_list» "guestfs_btrfs_filesystem_resize".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_filesystem_resize_argv

 int
 guestfs_btrfs_filesystem_resize_argv (guestfs_h *g,
                                       const char *mountpoint,
                                       const struct guestfs_btrfs_filesystem_resize_argv *optargs);

Це «варіант з argv» "guestfs_btrfs_filesystem_resize".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_filesystem_show

 char **
 guestfs_btrfs_filesystem_show (guestfs_h *g,
                                const char *device);

Вивести усі пристрої, на які поширюються файлові системи з пристрою "пристрій".

Якщо у системі наявні не усі пристрої для файлових систем, ця функція завершується повідомленням про помилку, а для "errno" встановлюється значення "ENODEV".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.33.29)

guestfs_btrfs_filesystem_sync

 int
 guestfs_btrfs_filesystem_sync (guestfs_h *g,
                                const char *fs);

Примусово синхронізувати файлову систему btrfs, яку змонтовано до точки "файлова_система".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.35)

guestfs_btrfs_fsck

 int
 guestfs_btrfs_fsck (guestfs_h *g,
                     const char *device,
                     ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_BTRFS_FSCK_SUPERBLOCK, int64_t superblock,
 GUESTFS_BTRFS_FSCK_REPAIR, int repair,

Використовується для перевірки файлової системи btrfs, "пристрій" — файл пристрою, у якому зберігається файлова система.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.43)

guestfs_btrfs_fsck_va

 int
 guestfs_btrfs_fsck_va (guestfs_h *g,
                        const char *device,
                        va_list args);

Це «варіант з va_list» "guestfs_btrfs_fsck".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_fsck_argv

 int
 guestfs_btrfs_fsck_argv (guestfs_h *g,
                          const char *device,
                          const struct guestfs_btrfs_fsck_argv *optargs);

Це «варіант з argv» "guestfs_btrfs_fsck".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_image

 int
 guestfs_btrfs_image (guestfs_h *g,
                      char *const *source,
                      const char *image,
                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_BTRFS_IMAGE_COMPRESSLEVEL, int compresslevel,

Використовується для створення образу файлової системи btrfs. Усі дані буде перезаписано нулями, але метадані і подібні дані буде збережено.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.32)

guestfs_btrfs_image_va

 int
 guestfs_btrfs_image_va (guestfs_h *g,
                         char *const *source,
                         const char *image,
                         va_list args);

Це «варіант з va_list» "guestfs_btrfs_image"

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_image_argv

 int
 guestfs_btrfs_image_argv (guestfs_h *g,
                           char *const *source,
                           const char *image,
                           const struct guestfs_btrfs_image_argv *optargs);

Це «варіант з argv» "guestfs_btrfs_image".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_qgroup_assign

 int
 guestfs_btrfs_qgroup_assign (guestfs_h *g,
                              const char *src,
                              const char *dst,
                              const char *path);

Додає q-групу "джерело" до батьківської q-групи "призначення". Ця команда може групувати декілька q-груп до батьківської q-групи для спільного використання загальних обмежень.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_qgroup_create

 int
 guestfs_btrfs_qgroup_create (guestfs_h *g,
                              const char *qgroupid,
                              const char *subvolume);

Створити групу квот (q-групу) для підтому "підтом".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_qgroup_destroy

 int
 guestfs_btrfs_qgroup_destroy (guestfs_h *g,
                               const char *qgroupid,
                               const char *subvolume);

Знищити групу квот.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_qgroup_limit

 int
 guestfs_btrfs_qgroup_limit (guestfs_h *g,
                             const char *subvolume,
                             int64_t size);

Обмежити розмір підтому із шляхом "підтом".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_qgroup_remove

 int
 guestfs_btrfs_qgroup_remove (guestfs_h *g,
                              const char *src,
                              const char *dst,
                              const char *path);

Вилучити q-групу "джерело" з батьківської q-групи "призначення".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_qgroup_show

 struct guestfs_btrfsqgroup_list *
 guestfs_btrfs_qgroup_show (guestfs_h *g,
                            const char *path);

Вивести усі групи квот підтомів у файловій системі btrfs разом із даними щодо їхнього використання.

Ця функція повертає "struct guestfs_btrfsqgroup_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_btrfsqgroup_list".

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_quota_enable

 int
 guestfs_btrfs_quota_enable (guestfs_h *g,
                             const char *fs,
                             int enable);

Увімкнути або вимкнути підтримку квот підтомів для файлової системи, яка містить "шлях".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_quota_rescan

 int
 guestfs_btrfs_quota_rescan (guestfs_h *g,
                             const char *fs);

Викинути усі числові дані qgroup і виконати повторне сканування з поточними налаштуваннями.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_replace

 int
 guestfs_btrfs_replace (guestfs_h *g,
                        const char *srcdev,
                        const char *targetdev,
                        const char *mntpoint);

Замінити пристрій файлової системи btrfs. На «живій» файловій системі здублювати на пристрій призначення дані, які на поточний момент зберігаються на пристрої джерела. Після завершення операції пристрій джерела буде витерто і вилучено з файлової системи.

 C<пристрій_призначення> повинен мати той самий або більший розмір за
C<пристрій_джерела>. Пристрої, які на поточний момент змонтовано, не можна
використовувати як C<пристрій_призначення>.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.48)

guestfs_btrfs_rescue_chunk_recover

 int
 guestfs_btrfs_rescue_chunk_recover (guestfs_h *g,
                                     const char *device);

Відновити дерево фрагментів файлової системи btrfs шляхом послідовного сканування пристроїв.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.22)

guestfs_btrfs_rescue_super_recover

 int
 guestfs_btrfs_rescue_super_recover (guestfs_h *g,
                                     const char *device);

Відновити пошкоджені суперблоки із якісних копій.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.22)

guestfs_btrfs_scrub_cancel

 int
 guestfs_btrfs_scrub_cancel (guestfs_h *g,
                             const char *path);

Скасувати витирання, що виконується у файловій системі btrfs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.22)

guestfs_btrfs_scrub_resume

 int
 guestfs_btrfs_scrub_resume (guestfs_h *g,
                             const char *path);

Відновити раніше скасований або перерваний зріз на файловій системі btrfs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.22)

guestfs_btrfs_scrub_start

 int
 guestfs_btrfs_scrub_start (guestfs_h *g,
                            const char *path);

Читає усі дані і метадані на файловій системі і використовує контрольні суми та копії-дублікати зі сховища даних RAID для ідентифікації та відновлення усіх пошкоджених даних.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.22)

guestfs_btrfs_scrub_status

 struct guestfs_btrfsscrub *
 guestfs_btrfs_scrub_status (guestfs_h *g,
                             const char *path);

Показати дані щодо стану витирання, яке виконується або завершено на файловій системі btrfs.

Ця функція повертає "struct guestfs_btrfsscrub *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_btrfsscrub".

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.26)

guestfs_btrfs_set_seeding

 int
 guestfs_btrfs_set_seeding (guestfs_h *g,
                            const char *device,
                            int seeding);

Увімкнути або вимкнути можливість розсіювання для пристрою, на якому міститься файлова система btrfs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.43)

guestfs_btrfs_subvolume_create

 int
 guestfs_btrfs_subvolume_create (guestfs_h *g,
                                 const char *dest);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_btrfs_subvolume_create_opts" без додаткових аргументів.

(Додано у 1.17.35)

guestfs_btrfs_subvolume_create_opts

 int
 guestfs_btrfs_subvolume_create_opts (guestfs_h *g,
                                      const char *dest,
                                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_BTRFS_SUBVOLUME_CREATE_OPTS_QGROUPID, const char *qgroupid,

Створити підтом btrfs. Значенням аргументу "призначення" є каталог призначення і назва підтому у формі /шлях/до/призначення/назва. Додатковий параметр "ідентифікатор q-групи" відповідає q-групі, до якої слід додати створений підтом.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.35)

guestfs_btrfs_subvolume_create_opts_va

 int
 guestfs_btrfs_subvolume_create_opts_va (guestfs_h *g,
                                         const char *dest,
                                         va_list args);

Це «варіант з va_list» "guestfs_btrfs_subvolume_create_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_subvolume_create_opts_argv

 int
 guestfs_btrfs_subvolume_create_opts_argv (guestfs_h *g,
                                           const char *dest,
                                           const struct guestfs_btrfs_subvolume_create_opts_argv *optargs);

Це «варіант з argv» "guestfs_btrfs_subvolume_create_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_subvolume_delete

 int
 guestfs_btrfs_subvolume_delete (guestfs_h *g,
                                 const char *subvolume);

Вилучити вказаний за назвою підтом або знімок btrfs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.35)

guestfs_btrfs_subvolume_get_default

 int64_t
 guestfs_btrfs_subvolume_get_default (guestfs_h *g,
                                      const char *fs);

Отримати типовий підтом або знімок файлової системи, змонтований до точки "точка монтування".

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_subvolume_list

 struct guestfs_btrfssubvolume_list *
 guestfs_btrfs_subvolume_list (guestfs_h *g,
                               const char *fs);

Виводить список знімків btrfs і підтоми файлової системи btrfs, яку змонтовано до точки "файлова_система".

Ця функція повертає "struct guestfs_btrfssubvolume_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_btrfssubvolume_list".

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.35)

guestfs_btrfs_subvolume_set_default

 int
 guestfs_btrfs_subvolume_set_default (guestfs_h *g,
                                      int64_t id,
                                      const char *fs);

Встановити підтом файлової системи btrfs "файлова_система", який буде типово змонтовано. Див. "guestfs_btrfs_subvolume_list", щоб отримати список підтомів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.35)

guestfs_btrfs_subvolume_show

 char **
 guestfs_btrfs_subvolume_show (guestfs_h *g,
                               const char *subvolume);

Повернути докладні дані щодо підтому.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Масив рядків завжди матиме довжину "2n+1", значення "n" ключів і значень йтимуть одне за одним послідовно, завершуючись кінцевим записом NULL. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.17)

guestfs_btrfs_subvolume_snapshot

 int
 guestfs_btrfs_subvolume_snapshot (guestfs_h *g,
                                   const char *source,
                                   const char *dest);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_btrfs_subvolume_snapshot_opts" без додаткових аргументів.

(Додано у 1.17.35)

guestfs_btrfs_subvolume_snapshot_opts

 int
 guestfs_btrfs_subvolume_snapshot_opts (guestfs_h *g,
                                        const char *source,
                                        const char *dest,
                                        ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_BTRFS_SUBVOLUME_SNAPSHOT_OPTS_RO, int ro,
 GUESTFS_BTRFS_SUBVOLUME_SNAPSHOT_OPTS_QGROUPID, const char *qgroupid,

Створити знімок підтому btrfs. Значенням аргументу "призначення" є каталог призначення і назва знімка у формі /шлях/до/призначення/назва. Типово, новостворений знімок придатний до запису. Якщо значенням додаткового параметра "ro" є true, буде створено знімок придатний лише до читання. Додатковий параметр "ідентифікатор q-групи" відповідає q-групі, до якої слід додати створений знімок.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.35)

guestfs_btrfs_subvolume_snapshot_opts_va

 int
 guestfs_btrfs_subvolume_snapshot_opts_va (guestfs_h *g,
                                           const char *source,
                                           const char *dest,
                                           va_list args);

Це «варіант з va_list» "guestfs_btrfs_subvolume_snapshot_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfs_subvolume_snapshot_opts_argv

 int
 guestfs_btrfs_subvolume_snapshot_opts_argv (guestfs_h *g,
                                             const char *source,
                                             const char *dest,
                                             const struct guestfs_btrfs_subvolume_snapshot_opts_argv *optargs);

Це «варіант з argv» "guestfs_btrfs_subvolume_snapshot_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_btrfstune_enable_extended_inode_refs

 int
 guestfs_btrfstune_enable_extended_inode_refs (guestfs_h *g,
                                               const char *device);

Вмикає розширені посилання на inode.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.29)

guestfs_btrfstune_enable_skinny_metadata_extent_refs

 int
 guestfs_btrfstune_enable_skinny_metadata_extent_refs (guestfs_h *g,
                                                       const char *device);

Вмикає розширені посилання на спрощені метадані.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.29)

guestfs_btrfstune_seeding

 int
 guestfs_btrfstune_seeding (guestfs_h *g,
                            const char *device,
                            int seeding);

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

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.29.29)

guestfs_c_pointer

 int64_t
 guestfs_c_pointer (guestfs_h *g);

In non-C language bindings, this allows you to retrieve the underlying C pointer to the handle (ie. "guestfs_h *"). The purpose of this is to allow other libraries to interwork with libguestfs.

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.29.17)

guestfs_canonical_device_name

 char *
 guestfs_canonical_device_name (guestfs_h *g,
                                const char *device);

Ця допоміжна функція корисна для показу назв пристроїв користувачеві. Вона приймає декілька неформатованих назв пристроїв і повертає їх у відповідному форматі:

/dev/hdX
/dev/vdX
Дані повертаються у форматі /dev/sdX. Зауважте, що це працює для назв пристроїв і розділів. Це, у наближеному вигляді, обернення алгоритму, описаного у розділі "ІМЕНУВАННЯ БЛОКОВИХ ПРИСТРОЇВ".
/dev/mapper/VG-LV
/dev/dm-N
Перетворені до форми /dev/VG/LV за допомогою "guestfs_lvm_canonical_lv_name".

Інші рядки повертаються незмінними.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.19.7)

guestfs_cap_get_file

 char *
 guestfs_cap_get_file (guestfs_h *g,
                       const char *path);

Ця функція повертає можливості Linux, пов'язані із шляхом "шлях". Набір можливостей повертається у текстовій формі (див. cap_to_text(3)).

Якщо з файлом не пов'язано можливостей, буде повернуто порожній рядок.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "linuxcaps". Див. також "guestfs_feature_available".

(Додано у 1.19.63)

guestfs_cap_set_file

 int
 guestfs_cap_set_file (guestfs_h *g,
                       const char *path,
                       const char *cap);

Ця функція встановлює можливості Linux, пов'язані із шляхом "шлях". Набір можливостей "можливості" має бути передано у текстовій формі (див. cap_from_text(3)).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxcaps". Див. також "guestfs_feature_available".

(Додано у 1.19.63)

guestfs_case_sensitive_path

 char *
 guestfs_case_sensitive_path (guestfs_h *g,
                              const char *path);

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

Команда працює із особливістю драйвера файлових систем ntfs-3g Linux (та, ймовірно, інших драйверів), яка полягає у тому, що, хоча у підлеглій файловій системі регістр символів не враховується, драйвер експортує файлову систему до Linux як таку, де регістр символів враховується.

Одним із наслідків цього є те, що спеціалізовані каталоги, зокрема C:\windows, можуть показуватися як /WINDOWS або /windows (або інші записи), залежно від точних характеристик їхнього створення. У самій Windows це не спричиняє ніяких проблем.

Bug or feature? You decide: https://www.tuxera.com/community/ntfs-3g-faq/#posixfilenames1

"guestfs_case_sensitive_path" намагається визначити справжній регістр символів кожного запису у шляху. Команда повертає визначений шлях, якщо існує відповідний повний шлях або його батьківський каталог. Якщо існує батьківський каталог, але повний шлях не існує, буде визначено регістр для батьківського каталогу, а решту запису буде додано без змін. Наприклад, якщо існує файл "/Windows/System32/netkvm.sys":

"guestfs_case_sensitive_path" ("/windows/system32/netkvm.sys")
"Windows/System32/netkvm.sys"
"guestfs_case_sensitive_path" ("/windows/system32/NoSuchFile")
"Windows/System32/NoSuchFile"
"guestfs_case_sensitive_path" ("/windows/system33/netkvm.sys")
ERROR

Зауваження: через описану вище поведінку "guestfs_case_sensitive_path" не можна використовувати для перевірки наявності файла.

Зауваження: ця функція не обробляє назви дисків, зворотні похилі риски тощо.

Див. також "guestfs_realpath".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.75)

guestfs_cat

 char *
 guestfs_cat (guestfs_h *g,
              const char *path);

Повертає вміст файла із назвою "шлях".

Оскільки у C ця функція повертає "char *", не існує способу відрізнити символ "\0" у вмісті файла і кінець рядка. Для обробки двійкових файлів скористайтеся функцією "guestfs_read_file" або "guestfs_download".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 0.4)

guestfs_checksum

 char *
 guestfs_checksum (guestfs_h *g,
                   const char *csumtype,
                   const char *path);

Цей виклик обчислює контрольну суму MD5, SHAx або CRC для файла із назвою "шлях".

Тип контрольної суми задається параметром "тип_контрольної_суми". Можливі значення цього параметра:

"crc"
Обчислити суму циклічної перевірки надлишковості (CRC) за стандартом POSIX для команди "cksum".
"md5"
Compute the MD5 hash (using the md5sum(1) program).
"sha1"
Compute the SHA1 hash (using the sha1sum(1) program).
"sha224"
Compute the SHA224 hash (using the sha224sum(1) program).
"sha256"
Compute the SHA256 hash (using the sha256sum(1) program).
"sha384"
Compute the SHA384 hash (using the sha384sum(1) program).
"sha512"
Compute the SHA512 hash (using the sha512sum(1) program).

Контрольна сума повертається у форматі рядка, придатного до друку (ASCII)

Щоб отримати контрольну суму пристрою, скористайтеся "guestfs_checksum_device".

Щоб отримати контрольні суми декількох файлів одразу, скористайтеся "guestfs_checksums_out".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.2)

guestfs_checksum_device

 char *
 guestfs_checksum_device (guestfs_h *g,
                          const char *csumtype,
                          const char *device);

Цей виклик обчислює контрольну суму MD5, SHAx або CRC для вмісту пристрою із назвою "пристрій". Типи підтримуваних контрольних сум описано у документації до команди "guestfs_checksum".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.3.2)

guestfs_checksums_out

 int
 guestfs_checksums_out (guestfs_h *g,
                        const char *csumtype,
                        const char *directory,
                        const char *sumsfile);

Ця команда обчислює контрольні суми звичайних файлів у каталозі каталог і видає список контрольних сум до локального файла результатів "файл_сум".

Командою можна скористатися для перевірки цілісності віртуальної машини. Втім, щоб забезпечити надійний захист, вам слід звернути увагу на виведені командою обчислення контрольних сум дані (використовується програма з GNU coreutils). Зокрема, якщо назва файла складається із символів, які непридатні до друку, coreutils використовує спеціалізований синтаксис із символом зворотної похилої риски. Щоб дізнатися більше, ознайомтеся із файлом info GNU coreutils.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.7)

guestfs_chmod

 int
 guestfs_chmod (guestfs_h *g,
                int mode,
                const char *path);

Змінити режим (права доступу) для шляху "шлях" на "режим". Передбачено підтримку лише числових записів режимів.

Зауваження: при використанні цієї команди з guestfish, "режим", типово, має бути вказано у десятковій формі, якщо не буде додано префікса 0 для вісімкової форми запису, тобто слід вказувати 0700 замість 700.

На встановлений режим доступу впливає umask.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_chown

 int
 guestfs_chown (guestfs_h *g,
                int owner,
                int group,
                const char *path);

Змінити власника файла на "власник" і групу на "група".

Передбачено підтримку лише числових uid і gid. Якщо ви хочете скористатися текстовими назвами, вам доведеться знайти і обробити файл паролів власноруч (підтримка Augeas робить це завдання відносно простим).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_clear_backend_setting

 int
 guestfs_clear_backend_setting (guestfs_h *g,
                                const char *name);

Якщо рядок параметрів модуля дорівнює "name" або починається з "name=", цей рядок вилучається з параметрів модуля.

Цей виклик повертає кількість рядків, які було вилучено (може бути значення 0, 1 або більше за 1).

Див. "МОДУЛЬ", "ПАРАМЕТРИ МОДУЛЯ".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.27.2)

guestfs_command

 char *
 guestfs_command (guestfs_h *g,
                  char *const *arguments);

Цей виклик запускає команду з гостьової файлової системи. Файлову систему має бути змонтовано, вона має містити сумісну операційну систему (тобто якусь систему Linux із такою або сумісною архітектурою процесора).

Єдиним параметром є список аргументів у стилі argv. Першим елементом цього списку є назва програми, яку слід запустити. Наступні елементи є параметрами цієї програми. Список має бути непорожнім (тобто містити принаймні назву програми). Зауважте, що команда працює безпосередньо і не викликає командної оболонки (див. "guestfs_sh").

Повернутим значенням є усі дані, виведені командою до stdout.

Якщо команда повертає ненульовий стан виходу, тоді ця функція повертає повідомлення про помилку. Рядок повідомлення про помилку міститиме вміст stderr від команди.

Змінна середовища $PATH міститиме принаймні /usr/bin і /bin. Якщо вам потрібна програм з іншої теки, вам слід вказати шлях до неї повністю у першому параметрі.

Бібліотеки спільного використання та файли даних, потрібні для запуску програми, мають бути доступними у файлових системах, які змонтовано до належних точок монтування. Забезпечити відповідність монтування усіх файлових систем має функція або програма, з якої викликається команда.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.9.1)

guestfs_command_lines

 char **
 guestfs_command_lines (guestfs_h *g,
                        char *const *arguments);

Те саме, що і "guestfs_command", але результат буде поділено на список рядків.

Див. також "guestfs_sh_lines"

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.9.1)

guestfs_compress_device_out

 int
 guestfs_compress_device_out (guestfs_h *g,
                              const char *ctype,
                              const char *device,
                              const char *zdevice,
                              ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_COMPRESS_DEVICE_OUT_LEVEL, int level,

Ця команда стискає вміст пристрою "пристрій" і записує його до локального файла "z-пристрій".

Параметр "тип_стискання" і необов'язковий параметр "рівень" мають те саме значення, що і у команді "guestfs_compress_out".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.13.15)

guestfs_compress_device_out_va

 int
 guestfs_compress_device_out_va (guestfs_h *g,
                                 const char *ctype,
                                 const char *device,
                                 const char *zdevice,
                                 va_list args);

Це «варіант з va_list» "guestfs_compress_device_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_compress_device_out_argv

 int
 guestfs_compress_device_out_argv (guestfs_h *g,
                                   const char *ctype,
                                   const char *device,
                                   const char *zdevice,
                                   const struct guestfs_compress_device_out_argv *optargs);

Це «варіант з argv» "guestfs_compress_device_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_compress_out

 int
 guestfs_compress_out (guestfs_h *g,
                       const char *ctype,
                       const char *file,
                       const char *zfile,
                       ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_COMPRESS_OUT_LEVEL, int level,

Ця команда стискає вміст файла "файл" і записує його до локального файла "z-файл".

Вибір програми для стискання керується параметром "тип_стискання". Поточні варіанти значень: "compress", "gzip", "bzip2", "xz" або "lzop". У деяких збірках libguestfs передбачено підтримку не усіх типів стискання. Якщо підтримки типу стискання не передбачено, буде виведено повідомлення про помилку, яке міститиме рядок «not supported».

Необов'язковий параметр "рівень" керує рівнем стискання. Значення і типові параметри залежать від використаної програми для стискання.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.13.15)

guestfs_compress_out_va

 int
 guestfs_compress_out_va (guestfs_h *g,
                          const char *ctype,
                          const char *file,
                          const char *zfile,
                          va_list args);

Це «варіант з va_list» "guestfs_compress_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_compress_out_argv

 int
 guestfs_compress_out_argv (guestfs_h *g,
                            const char *ctype,
                            const char *file,
                            const char *zfile,
                            const struct guestfs_compress_out_argv *optargs);

Це «варіант з argv» "guestfs_compress_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_config

 int
 guestfs_config (guestfs_h *g,
                 const char *hvparam,
                 const char *hvvalue);

Цією командою можна скористатися для додавання довільних параметрів гіпервізору у формі -параметр значення. Насправді, параметр не є зовсім довільним — ми не даємо вам встановлювати певні параметри, які суперечать параметрам, які ви використовуєте.

Першим символом рядка "параметр-г-в" має бути "-" (дефіс).

"hvvalue" може дорівнювати NULL.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_copy_attributes

 int
 guestfs_copy_attributes (guestfs_h *g,
                          const char *src,
                          const char *dest,
                          ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_COPY_ATTRIBUTES_ALL, int all,
 GUESTFS_COPY_ATTRIBUTES_MODE, int mode,
 GUESTFS_COPY_ATTRIBUTES_XATTRIBUTES, int xattributes,
 GUESTFS_COPY_ATTRIBUTES_OWNERSHIP, int ownership,

Копіювати атрибути шляху (який може вказувати на файл або каталог) до іншого шляху.

By default no attribute is copied, so make sure to specify any (or "all" to copy everything).

Додаткові аргументи вказують, які атрибути має бути скопійовано:

"mode"
Копіювати частину режиму файла з запису "джерело" до запису "призначення". Скопіювати можна лише права доступу UNIX і липкі біти, setuid або setgid.
"xattributes"
Копіювати розширені атрибути Linux (xattrs) з запису "джерело" до запису "призначення". Цей прапорець не виконує ніяких дій, якщо можливість linuxxattrs недоступна (див. "guestfs_feature_available").
"ownership"
Копіювати uid власника і gid групи з запису "джерело" до запису "призначення".
"all"
Копіювати усі атрибути із запису "джерело" до запису "призначення". Вмикання цього прапорця вмикає усі інші прапорці, якщо їх ще не було вказано.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.25.21)

guestfs_copy_attributes_va

 int
 guestfs_copy_attributes_va (guestfs_h *g,
                             const char *src,
                             const char *dest,
                             va_list args);

Це «варіант з va_list» "guestfs_copy_attributes".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_attributes_argv

 int
 guestfs_copy_attributes_argv (guestfs_h *g,
                               const char *src,
                               const char *dest,
                               const struct guestfs_copy_attributes_argv *optargs);

Це «варіант з argv» "guestfs_copy_attributes".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_device_to_device

 int
 guestfs_copy_device_to_device (guestfs_h *g,
                                const char *src,
                                const char *dest,
                                ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_COPY_DEVICE_TO_DEVICE_SRCOFFSET, int64_t srcoffset,
 GUESTFS_COPY_DEVICE_TO_DEVICE_DESTOFFSET, int64_t destoffset,
 GUESTFS_COPY_DEVICE_TO_DEVICE_SIZE, int64_t size,
 GUESTFS_COPY_DEVICE_TO_DEVICE_SPARSE, int sparse,
 GUESTFS_COPY_DEVICE_TO_DEVICE_APPEND, int append,

Чотири виклики — "guestfs_copy_device_to_device", "guestfs_copy_device_to_file", "guestfs_copy_file_to_device" та "guestfs_copy_file_to_file" — надають вам змогу копіювати дані джерела (пристрою або файла) до призначення (пристрою або файла).

Можливе створення часткових копій, оскільки ви можете додатково вказати зміщення у джерелі, зміщення у призначенні і розмір копії. Усі ці значення слід вказувати у байтах. Якщо значення не вказано, обидва зміщення вважатимуться нульовими, а розмір копії вважатиметься якомога більшим, аж доки під час копіювання не буде досягнуто кінця джерела.

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

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

Якщо призначенням є файл і не встановлено прапорець "append", файл призначення буде обрізано. Якщо встановлено прапорець "append", копію буде дописано до початкового файла призначення. У поточній версії прапорець "append" не можна встановлювати для пристроїв.

Якщо значенням прапорця "sparse" є true, виклик уникатиме запису блоку, які містять лише нулі, що має допомогти у певних ситуаціях, коли резервний диск є обмеженим у ресурсах. Зауважте, що якщо призначення ще не занулено, використання цього параметра призведе до некоректних результатів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.13.25)

guestfs_copy_device_to_device_va

 int
 guestfs_copy_device_to_device_va (guestfs_h *g,
                                   const char *src,
                                   const char *dest,
                                   va_list args);

Це «варіант з va_list» "guestfs_copy_device_to_device".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_device_to_device_argv

 int
 guestfs_copy_device_to_device_argv (guestfs_h *g,
                                     const char *src,
                                     const char *dest,
                                     const struct guestfs_copy_device_to_device_argv *optargs);

Це «варіант з argv» "guestfs_copy_device_to_device".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_device_to_file

 int
 guestfs_copy_device_to_file (guestfs_h *g,
                              const char *src,
                              const char *dest,
                              ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_COPY_DEVICE_TO_FILE_SRCOFFSET, int64_t srcoffset,
 GUESTFS_COPY_DEVICE_TO_FILE_DESTOFFSET, int64_t destoffset,
 GUESTFS_COPY_DEVICE_TO_FILE_SIZE, int64_t size,
 GUESTFS_COPY_DEVICE_TO_FILE_SPARSE, int sparse,
 GUESTFS_COPY_DEVICE_TO_FILE_APPEND, int append,

Див. "guestfs_copy_device_to_device", щоб ознайомитися із загальним описом цього виклику.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.13.25)

guestfs_copy_device_to_file_va

 int
 guestfs_copy_device_to_file_va (guestfs_h *g,
                                 const char *src,
                                 const char *dest,
                                 va_list args);

Це «варіант з va_list» "guestfs_copy_device_to_file".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_device_to_file_argv

 int
 guestfs_copy_device_to_file_argv (guestfs_h *g,
                                   const char *src,
                                   const char *dest,
                                   const struct guestfs_copy_device_to_file_argv *optargs);

Це «варіант з argv» "guestfs_copy_device_to_file".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_file_to_device

 int
 guestfs_copy_file_to_device (guestfs_h *g,
                              const char *src,
                              const char *dest,
                              ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_COPY_FILE_TO_DEVICE_SRCOFFSET, int64_t srcoffset,
 GUESTFS_COPY_FILE_TO_DEVICE_DESTOFFSET, int64_t destoffset,
 GUESTFS_COPY_FILE_TO_DEVICE_SIZE, int64_t size,
 GUESTFS_COPY_FILE_TO_DEVICE_SPARSE, int sparse,
 GUESTFS_COPY_FILE_TO_DEVICE_APPEND, int append,

Див. "guestfs_copy_device_to_device", щоб ознайомитися із загальним описом цього виклику.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.13.25)

guestfs_copy_file_to_device_va

 int
 guestfs_copy_file_to_device_va (guestfs_h *g,
                                 const char *src,
                                 const char *dest,
                                 va_list args);

Це «варіант з va_list» "guestfs_copy_file_to_device".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_file_to_device_argv

 int
 guestfs_copy_file_to_device_argv (guestfs_h *g,
                                   const char *src,
                                   const char *dest,
                                   const struct guestfs_copy_file_to_device_argv *optargs);

Це «варіант з argv» "guestfs_copy_file_to_device".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_file_to_file

 int
 guestfs_copy_file_to_file (guestfs_h *g,
                            const char *src,
                            const char *dest,
                            ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_COPY_FILE_TO_FILE_SRCOFFSET, int64_t srcoffset,
 GUESTFS_COPY_FILE_TO_FILE_DESTOFFSET, int64_t destoffset,
 GUESTFS_COPY_FILE_TO_FILE_SIZE, int64_t size,
 GUESTFS_COPY_FILE_TO_FILE_SPARSE, int sparse,
 GUESTFS_COPY_FILE_TO_FILE_APPEND, int append,

Див. "guestfs_copy_device_to_device", щоб ознайомитися із загальним описом цього виклику.

Це не функція для копіювання файлів. Цю функцію призначено для копіювання блоків у наявних файлах. Загальними функціями для копіювання та пересування файлів є функції "guestfs_cp", "guestfs_cp-a" та "guestfs_mv".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.13.25)

guestfs_copy_file_to_file_va

 int
 guestfs_copy_file_to_file_va (guestfs_h *g,
                               const char *src,
                               const char *dest,
                               va_list args);

Це «варіант з va_list» "guestfs_copy_file_to_file".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_file_to_file_argv

 int
 guestfs_copy_file_to_file_argv (guestfs_h *g,
                                 const char *src,
                                 const char *dest,
                                 const struct guestfs_copy_file_to_file_argv *optargs);

Це «варіант з argv» "guestfs_copy_file_to_file".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_copy_in

 int
 guestfs_copy_in (guestfs_h *g,
                  const char *localpath,
                  const char *remotedir);

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

Не можна використовувати символи-замінники.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.29.24)

guestfs_copy_out

 int
 guestfs_copy_out (guestfs_h *g,
                   const char *remotepath,
                   const char *localdir);

"guestfs_copy_out" копіює віддалені файли або каталоги рекурсивно з образу диска, розташовуючи їх на диску основної системи у каталозі із назвою /локальний_каталог (цей каталог має існувати). Ця метакоманда guestfish перетворюється у послідовність "download", "tar-out" та інших команд, якщо це потрібно.

Щоб отримати поточний каталог, скористайтеся ".", ось так:

 C<guestfs_copy_out> /home .

Не можна використовувати символи-замінники.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.29.24)

guestfs_copy_size

 int
 guestfs_copy_size (guestfs_h *g,
                    const char *src,
                    const char *dest,
                    int64_t size);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_copy_device_to_device".

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

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

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

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.0.87)

guestfs_cp

 int
 guestfs_cp (guestfs_h *g,
             const char *src,
             const char *dest);

Копіює файл з "джерело" до "призначення", де "призначення" — або назва файла призначення або назва каталогу призначення.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.18)

guestfs_cp_a

 int
 guestfs_cp_a (guestfs_h *g,
               const char *src,
               const char *dest);

Копіює файл або каталог з "джерела" до "призначення" рекурсивно з використанням команди "cp -a".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.18)

guestfs_cp_r

 int
 guestfs_cp_r (guestfs_h *g,
               const char *src,
               const char *dest);

Копіює файл або каталог з "джерела" до "призначення" рекурсивно з використанням команди "cp -rP".

Більшості користувачів слід використовувати "guestfs_cp_a" замість цієї команди. Ця команда корисна, якщо вам не хочеться зберігати права доступу, оскільки у файловій системі призначення їх не передбачено (в основному при записів до файлових систем FAT DOS).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.21.38)

guestfs_cpio_out

 int
 guestfs_cpio_out (guestfs_h *g,
                   const char *directory,
                   const char *cpiofile,
                   ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_CPIO_OUT_FORMAT, const char *format,

Ця команда пакує вміст каталогу каталог отримує його до локального файла "файл cpio".

Передбачено додатковий параметр "format", яким можна скористатися для вибору формату. У поточній версії передбачено підтримку лише таких форматів:

"newc"
Новий портативний формат (SVR4). Цей формат вважається сумісним із cpio-подібним форматом, який використовується ядром Linux для initramfs.

Цей формат є типовим.

"crc"
Новий портативний формат (SVR4) із контрольною сумою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.27.9)

guestfs_cpio_out_va

 int
 guestfs_cpio_out_va (guestfs_h *g,
                      const char *directory,
                      const char *cpiofile,
                      va_list args);

Це «варіант з va_list» "guestfs_cpio_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_cpio_out_argv

 int
 guestfs_cpio_out_argv (guestfs_h *g,
                        const char *directory,
                        const char *cpiofile,
                        const struct guestfs_cpio_out_argv *optargs);

Це «варіант з argv» "guestfs_cpio_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_cryptsetup_close

 int
 guestfs_cryptsetup_close (guestfs_h *g,
                           const char *device);

This closes an encrypted device that was created earlier by "guestfs_cryptsetup_open". The "device" parameter must be the name of the mapping device (ie. /dev/mapper/mapname) and not the name of the underlying block device.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Added in 1.43.2)

guestfs_cryptsetup_open

 int
 guestfs_cryptsetup_open (guestfs_h *g,
                          const char *device,
                          const char *key,
                          const char *mapname,
                          ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_CRYPTSETUP_OPEN_READONLY, int readonly,
 GUESTFS_CRYPTSETUP_OPEN_CRYPTTYPE, const char *crypttype,

This command opens a block device which has been encrypted according to the Linux Unified Key Setup (LUKS) standard, Windows BitLocker, or some other types.

"пристрій" — шифрований блоковий пристрій або розділ.

The caller must supply one of the keys associated with the encrypted block device, in the "key" parameter.

Ця команда створює блоковий пристрій із назвою /dev/mapper/назва_прив'язки. Читання та запис на цій блоковий пристрій відбувається із розшифровуванням та шифруванням на підлеглому пристрої "пристрій".

"mapname" cannot be "control" because that name is reserved by device-mapper.

If the optional "crypttype" parameter is not present then libguestfs tries to guess the correct type (for example LUKS or BitLocker). However you can override this by specifying one of the following types:

"luks"
A Linux LUKS device.
"bitlk"
A Windows BitLocker device.

The optional "readonly" flag, if set to true, creates a read-only mapping.

Якщо на цьому блоковому пристрої містяться групи томів LVM, видимими їх можна зробити за допомогою виклику guestfs_lvm_scan зі значенням параметра "activate" рівним "true".

Скористайтеся командою "guestfs_list_dm_devices", щоб отримати список усіх пристроїв засобу прив'язування пристроїв.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Ця функція отримує параметр ключа або пароля, тобто дані, які можуть бути конфіденційними. Щоб дізнатися більше про це, ознайомтеся із розділом "КЛЮЧІ І ПАРОЛІ".

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Added in 1.43.2)

guestfs_cryptsetup_open_va

 int
 guestfs_cryptsetup_open_va (guestfs_h *g,
                             const char *device,
                             const char *key,
                             const char *mapname,
                             va_list args);

This is the "va_list variant" of "guestfs_cryptsetup_open".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_cryptsetup_open_argv

 int
 guestfs_cryptsetup_open_argv (guestfs_h *g,
                               const char *device,
                               const char *key,
                               const char *mapname,
                               const struct guestfs_cryptsetup_open_argv *optargs);

This is the "argv variant" of "guestfs_cryptsetup_open".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_dd

 int
 guestfs_dd (guestfs_h *g,
             const char *src,
             const char *dest);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_copy_device_to_device".

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

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

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

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.80)

guestfs_device_index

 int
 guestfs_device_index (guestfs_h *g,
                       const char *device);

Ця функція приймає назву пристрою (наприклад, «/dev/sdb») і повертає індекс пристрою у списку пристроїв.

Нумерація індексів починається з 0. Іменований пристрій має існувати, наприклад, як рядок, повернутий з "guestfs_list_devices".

Див. також "guestfs_list_devices", "guestfs_part_to_dev".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.19.7)

guestfs_df

 char *
 guestfs_df (guestfs_h *g);

This command runs the df(1) command to report disk space used.

Ця команда здебільшого корисна для інтерактивних сеансів. Її не призначено для випадків, коли ви намагаєтеся обробити виведений командою рядок. Скористайтеся командою "guestfs_statvfs", якщо віддаєте команди з інших програм.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.54)

guestfs_df_h

 char *
 guestfs_df_h (guestfs_h *g);

Ця команда запускає програму "df -h" для отримання даних щодо використаного місця на диску у зручному для читання форматі.

Ця команда здебільшого корисна для інтерактивних сеансів. Її не призначено для випадків, коли ви намагаєтеся обробити виведений командою рядок. Скористайтеся командою "guestfs_statvfs", якщо віддаєте команди з інших програм.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.54)

guestfs_disk_create

 int
 guestfs_disk_create (guestfs_h *g,
                      const char *filename,
                      const char *format,
                      int64_t size,
                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_DISK_CREATE_BACKINGFILE, const char *backingfile,
 GUESTFS_DISK_CREATE_BACKINGFORMAT, const char *backingformat,
 GUESTFS_DISK_CREATE_PREALLOCATION, const char *preallocation,
 GUESTFS_DISK_CREATE_COMPAT, const char *compat,
 GUESTFS_DISK_CREATE_CLUSTERSIZE, int clustersize,

Створити порожній образ диска із назвою назва_файла (файл основної системи) із форматом "формат" (зазвичай, "raw" або "qcow2"). Розмір визначається параметром "розмір" у байтах.

Якщо команда використовується із необов'язковим параметром "backingfile", знімок створюється на основі файла резервної копії. У цьому випадку "розмір" має бути передано як "-1". Розмір знімка є таким самим, як і розмір файла резервної копії, який визначається автоматично. Вам також варто передати "backingformat" для опису формату "backingfile".

Якщо назва_файла відповідає блоковому пристрою, пристрій буде форматовано. Параметр "розмір" ігнорується, оскільки блокові пристрої мають незмінний встановлений розмір.

Іншими необов’язковими параметрами є:

"preallocation"
Якщо форматом є "raw", цей параметр може мати значення "off" (або "sparse") або "full" для створення розрідженого або повністю розподіленого файла, відповідно. Типовим є значення "off".

Якщо форматом є "qcow2", цей параметр може мати значення "off" (або "sparse"), "metadata" або "full". Попереднє отримання місця під метадані є швидшим, коли виконується багато записів, але використовує більше місця. Типовим є значення "off".

"compat"
Лише "qcow2": передайте рядок 1.1, щоб скористатися розширеним форматом qcow2, підтримку якого передбачено у qemu ≥ 1.1.
"clustersize"
Лише "qcow2": змінити розмір кластера qcow2. Типовим є 65536 (байтів). Встановлювати можна будь-яке значення, яке є степенем двійки від 512 до 2097152.

Зауважте, що цей виклик не додає новий диск до дескриптора. Вам доведеться викликати "guestfs_add_drive_opts" окремо.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.25.31)

guestfs_disk_create_va

 int
 guestfs_disk_create_va (guestfs_h *g,
                         const char *filename,
                         const char *format,
                         int64_t size,
                         va_list args);

Це «варіант з va_list» "guestfs_disk_create".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_disk_create_argv

 int
 guestfs_disk_create_argv (guestfs_h *g,
                           const char *filename,
                           const char *format,
                           int64_t size,
                           const struct guestfs_disk_create_argv *optargs);

Це «варіант з argv» "guestfs_disk_create".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_disk_format

 char *
 guestfs_disk_format (guestfs_h *g,
                      const char *filename);

Визначити і повернути формат образу диска із назвою назва_файла. Значенням назва_файла може бути також пристрій основної системи. Якщо формат образу диска визначити не вдасться, буде повернуто рядок "unknown".

Зауважте, що визначення формату диска може бути небезпечною дією за певних обставин. Див. "CVE-2010-3851".

Див. також: "ФОРМАТИ ОБРАЗІВ ДИСКІВ"

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.19.38)

guestfs_disk_has_backing_file

 int
 guestfs_disk_has_backing_file (guestfs_h *g,
                                const char *filename);

Визначає і повідомляє, чи є у образу диска назва_файла файл резервної копії.

Зауважте, що визначення можливостей диска може, за певних обставин, зашкодити захисту системи. Див. "CVE-2010-3851".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.19.39)

guestfs_disk_virtual_size

 int64_t
 guestfs_disk_virtual_size (guestfs_h *g,
                            const char *filename);

Визначає і повідомляє віртуальний розмір у байтах образу диска із назвою назва_файла.

Зауважте, що визначення можливостей диска може, за певних обставин, зашкодити захисту системи. Див. "CVE-2010-3851".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.19.39)

guestfs_dmesg

 char *
 guestfs_dmesg (guestfs_h *g);

This returns the kernel messages (dmesg(1) output) from the guest kernel. This is sometimes useful for extended debugging of problems.

Іншим способом отримання тих самих даних є вмикання докладних повідомлень за допомогою "guestfs_set_verbose" або встановленням змінної середовища "LIBGUESTFS_DEBUG=1" перед запуском програми.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.18)

guestfs_download

 int
 guestfs_download (guestfs_h *g,
                   const char *remotefilename,
                   const char *filename);

Отримати файл назва_віддаленого_файла і зберегти його як назва_файла на локальній машині.

Значенням параметра назва_файла також може бути іменований канал обробки даних.

Див. також "guestfs_upload", "guestfs_cat".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.0.2)

guestfs_download_blocks

 int
 guestfs_download_blocks (guestfs_h *g,
                          const char *device,
                          int64_t start,
                          int64_t stop,
                          const char *filename,
                          ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_DOWNLOAD_BLOCKS_UNALLOCATED, int unallocated,

Отримати модулі даних з адреси початок до адреси кінець з розділу диска (наприклад /dev/sda1) і зберегти їх до файла назва_файла у локальній машині.

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

Розмір модуля даних залежить від реалізації файлової системи. На файлових системах NTFS модулі даних називаються кластерами, а у ExtX вони називаються фрагментами.

Якщо для необов'язкового прапорця "unallocated" встановлено значення true (типовим значенням є false), буде видобуто лише нерозміщені блоки. Це корисно для виявлення прихованих даних або отримання вилучених файлів, модулі даних яких ще не перезаписано.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

Працездатність цієї функції залежить від можливості "sleuthkit". Див. також "guestfs_feature_available".

(Додано у 1.33.45)

guestfs_download_blocks_va

 int
 guestfs_download_blocks_va (guestfs_h *g,
                             const char *device,
                             int64_t start,
                             int64_t stop,
                             const char *filename,
                             va_list args);

Це «варіант з va_list» "guestfs_download_blocks".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_download_blocks_argv

 int
 guestfs_download_blocks_argv (guestfs_h *g,
                               const char *device,
                               int64_t start,
                               int64_t stop,
                               const char *filename,
                               const struct guestfs_download_blocks_argv *optargs);

Це «варіант з argv» "guestfs_download_blocks".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_download_inode

 int
 guestfs_download_inode (guestfs_h *g,
                         const char *device,
                         int64_t inode,
                         const char *filename);

Отримати файл, заданий за допомогою inode, з розділу диска (наприклад /dev/sda1) і зберегти його із назвою назва_файла у локальній системі.

Для виконання цієї команди диск не обов'язково має бути змонтовано.

Команда здатна отримувати вилучені файли та файли недоступні системі.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

Працездатність цієї функції залежить від можливості "sleuthkit". Див. також "guestfs_feature_available".

(Додано у 1.33.14)

guestfs_download_offset

 int
 guestfs_download_offset (guestfs_h *g,
                          const char *remotefilename,
                          const char *filename,
                          int64_t offset,
                          int64_t size);

Отримати файл назва_віддаленого_файла і зберегти його як назва_файла на локальній машині.

Читання відбувається з файла назва_віддаленого_файла, розмір визначається параметром "розмір", читання розпочинається з позиції "відступ" (вказана область має перебувати у межах файла або пристрою).

Зауважте, що немає обмеження на обсяг даних, які може бути отримано за допомогою цього виклику, на відміну від команди "guestfs_pread", і цей виклик завжди читає дані до кінця, якщо не станеться помилки.

Див. також "guestfs_download", "guestfs_pread".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.5.17)

guestfs_drop_caches

 int
 guestfs_drop_caches (guestfs_h *g,
                      int whattodrop);

This instructs the guest kernel to drop its page cache, and/or dentries and inode caches. The parameter "whattodrop" tells the kernel what precisely to drop, see https://linux-mm.org/Drop_Caches

Встановлення для "що_скидати" значення 3 призведе до скидання усього.

Це автоматично викликає sync(2) перед операцією, отже вивільняє максимальний обсяг пам'яті гостьової системи.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.18)

guestfs_du

 int64_t
 guestfs_du (guestfs_h *g,
             const char *path);

Ця команда викликає команду "du -s" для оцінки використання місця на диску для шляху "шлях".

"шлях" може бути адресою файла або каталогу. Якщо "шлях" є каталогом, оцінка включатиме дані для самого каталогу та усіх його підкаталогів (рекурсивно).

Результатом є оцінка розміру у кілобайтах (тобто у одиницях, які відповідають 1024 байтам).

У разі помилки цією функцією буде повернуто -1.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.0.54)

guestfs_e2fsck

 int
 guestfs_e2fsck (guestfs_h *g,
                 const char *device,
                 ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_E2FSCK_CORRECT, int correct,
 GUESTFS_E2FSCK_FORCEALL, int forceall,

Ця команда виконує перевірку файлової системи ext2/ext3 на пристрої "пристрій". Вона може приймати такі необов'язкові аргументи:

"correct"
Автоматично виправляти файлову систему. Використання цього параметра призведе до того, що e2fsck автоматично виправлятиме усі проблеми файлової системи, які може бути безпечно виправлено без втручання людини.

Цей параметр не можна використовувати одночасно із параметром "forceall".

"forceall"
Припускати відповідь «так» на усі питання; уможливлює неінтерактивне використання e2fsck.

Цей параметр не можна використовувати одночасно із параметром "correct".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.15.17)

guestfs_e2fsck_va

 int
 guestfs_e2fsck_va (guestfs_h *g,
                    const char *device,
                    va_list args);

Це «варіант з va_list» "guestfs_e2fsck".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_e2fsck_argv

 int
 guestfs_e2fsck_argv (guestfs_h *g,
                      const char *device,
                      const struct guestfs_e2fsck_argv *optargs);

Це «варіант з argv» "guestfs_e2fsck".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_e2fsck_f

 int
 guestfs_e2fsck_f (guestfs_h *g,
                   const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_e2fsck".

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

Ця команда виконує команду "e2fsck -p -f пристрій", тобто запускає засіб перевірки файлової системи ext2/ext3 для пристрою "пристрій" у неінтерактивному режимі (-p), навіть якщо файлову систему позначено як безпомилкову (-f).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.29)

guestfs_echo_daemon

 char *
 guestfs_echo_daemon (guestfs_h *g,
                      char *const *words);

Ця команда з'єднує список слів "слова", у якому окремі слова розділено пробілами, і повертає рядок-результат.

Ви можете скористатися цією командою для перевірки з'єднання із фоновою службою.

Див. також "guestfs_ping_daemon".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.69)

guestfs_egrep

 char **
 guestfs_egrep (guestfs_h *g,
                const char *regex,
                const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

This calls the external egrep(1) program and returns the matching lines.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_egrepi

 char **
 guestfs_egrepi (guestfs_h *g,
                 const char *regex,
                 const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

Викликає зовнішню програму "egrep -i" і повертає рядки-відповідники.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_equal

 int
 guestfs_equal (guestfs_h *g,
                const char *file1,
                const char *file2);

Порівнює два файли, файл1 і файл2 і повертає true, якщо їхній вміст повністю ідентичний; якщо це не так, повертає false.

Для порівнювання використовується зовнішня програма cmp(1).

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.0.18)

guestfs_exists

 int
 guestfs_exists (guestfs_h *g,
                 const char *path);

Ця команда повертає "true" тоді і лише тоді, коли існує файл, каталог (або будь-який інший об'єкт файлової системи) із вказаною назвою "шлях".

Див. також "guestfs_is_file", "guestfs_is_dir", "guestfs_stat".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_extlinux

 int
 guestfs_extlinux (guestfs_h *g,
                   const char *directory);

Встановлює завантажувач SYSLINUX на пристрій, змонтований до каталогу directory. На відміну від команди "guestfs_syslinux", якій потрібна файлова система FAT, ця команда може бути використана для файлових систем ext2/3/4 та btrfs.

Параметр каталог може бути точкою монтування або каталогом у точці монтування.

Крім того, вам слід позначити розділ як «активний» ("guestfs_part_set_bootable"), і на першому секторі усього диска має бути встановлено MBR (наприклад, за допомогою "guestfs_pwrite_device"). До складу пакунка SYSLINUX включено деякі з відповідних MBR. Щоб дізнатися більше, див. сторінку підручника extlinux(1).

Додатково налаштувати SYSLINUX можна за допомогою файла із назвою extlinux.conf у каталозі файлової системи каталог. Докладніше про це та вміст файла можна дізнатися зі сторінки підручника extlinux(1).

Див. також "guestfs_syslinux".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "extlinux". Див. також "guestfs_feature_available".

(Додано у 1.21.27)

guestfs_f2fs_expand

 int
 guestfs_f2fs_expand (guestfs_h *g,
                      const char *device);

Розгортає файлову систему f2fs, щоб її розмір збігався із розміром базового пристрою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "f2fs". Див. також "guestfs_feature_available".

(Додано у 1.39.3)

guestfs_fallocate

 int
 guestfs_fallocate (guestfs_h *g,
                    const char *path,
                    int len);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_fallocate64".

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

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

Не слід плутати цю команду із специфічною для guestfish командою "alloc", яка отримує місце для файла у основній системі і долучає його як пристрій.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_fallocate64

 int
 guestfs_fallocate64 (guestfs_h *g,
                      const char *path,
                      int64_t len);

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

Зауважте, що ця команда отримує блоки на диску для файла. Щоб створити розріджений файл, скористайтеся "guestfs_truncate_size".

Застаріла команда "guestfs_fallocate" виконує те саме завдання, але через недогляд функція надає змогу використовувати лише 30-бітові довжини, що обмежує максимальний можливий розмір створених за допомогою цієї команди файлів 1 ГБ.

Не слід плутати цю команду із специфічними для guestfish командами "alloc" та "sparse", які створюють файл у основній системі і долучають його як пристрій.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.17)

guestfs_feature_available

 int
 guestfs_feature_available (guestfs_h *g,
                            char *const *groups);

Те саме, що і "guestfs_available", але повертає простий результат у булевій формі true або false замість виклику виключення, якщо можливості не буде виявлено. Із іншими аспектами документації можна ознайомитися у розділі "guestfs_available".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.21.26)

guestfs_fgrep

 char **
 guestfs_fgrep (guestfs_h *g,
                const char *pattern,
                const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

This calls the external fgrep(1) program and returns the matching lines.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_fgrepi

 char **
 guestfs_fgrepi (guestfs_h *g,
                 const char *pattern,
                 const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

Викликає зовнішню програму "fgrep -i" і повертає рядки-відповідники.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_file

 char *
 guestfs_file (guestfs_h *g,
               const char *path);

Для визначення типу або вмісту файла використовується стандартна програма file(1).

Цей виклик також прозоро обробляє різні типи стиснутих файлів.

Команда, яку буде виконано, — це "file -zb шлях". Зокрема, слід зауважити, що до виведених даних не буде додано назву файла (параметр -b).

Виведені дані залежать від того, що виведе підлегла команда file(1), їх може бути змінено у майбутньому у спосіб, який залишається поза нашим контролем. Іншими словами, ABI щодо виведених даних не гарантовано.

Див. також: file(1), "guestfs_vfs_type", "guestfs_lstat", "guestfs_is_file", "guestfs_is_blockdev" (тощо), "guestfs_is_zero".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.9.1)

guestfs_file_architecture

 char *
 guestfs_file_architecture (guestfs_h *g,
                            const char *filename);

Визначає архітектуру виконуваного файла назва_файла і повертає її значення, якщо воно визначене у програмі.

Архітектурами, визначеними у поточній версії є:

"aarch64"
64-бітовий ARM.
"arm"
32-бітовий ARM.
"i386"
Цей рядок буде повернуто для всіх виконуваних файлів для 32-бітових процесорів i386, i486, i586, i686, незалежно від точного значення версії процесора, визначеного для виконуваного файла.
"ia64"
Intel Itanium.
"ppc"
32-бітовий Power PC.
"ppc64"
64-бітовий Power PC (зворотний порядок байтів).
"ppc64le"
64-бітовий Power PC (прямий порядок байтів).
"riscv32"
"riscv64"
"riscv128"
32-, 64- і 128- бітові різновиди RISC-V.
"s390"
31-бітовий IBM S/390.
"s390x"
64-бітовий IBM S/390.
"sparc"
32-бітовий SPARC.
"sparc64"
64-бітовий SPARC V9 або новіша версія.
"x86_64"
64-бітовий x86-64.

У майбутніх версіях Libguestfs може повертати і інші рядки назв архітектур.

Функція працює принаймні для таких типів файлів:

  • багатьох типів виконуваних файлів Un*x та Linux
  • багатьох типів бібліотек спільного використання Un*x та Linux
  • виконуваних файлів Windows Win32 та Win64
  • DLL Windows Win32 і Win64

    виконувані файли та DLL Win32 повертають "i386".

    виконувані файли та DLL Win64 повертають "x86_64".

  • модулів ядра Linux
  • образів нового стилю initrd Linux
  • деяких ядер vmlinuz Linux для архітектур, відмінних від x86

Що не можна зробити у поточній версії:

  • статичні бібліотеки (libfoo.a)
  • initrd Linux у старому стилі, зі стиснутою файловою системою ext2 (RHEL 3)
  • ядра vmlinuz Linux x86

    Образи vmlinuz архітектури x86 (формат bzImage) складаються із суміші 16-бітового, 32-бітового і стисненого коду. Їх дуже важко розпаковувати. Якщо ви хочете визначити архітектуру ядра, скористайтеся архітектурою пов'язаного initrd або модулів ядра.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.3)

guestfs_filesize

 int64_t
 guestfs_filesize (guestfs_h *g,
                   const char *file);

Ця команда повертає розмір файла файл у байтах.

Щоб отримати інші статистичні дані щодо файла, скористайтеся "guestfs_stat", "guestfs_lstat", "guestfs_is_dir", "guestfs_is_file" тощо. Щоб отримати розміри блокових пристроїв, скористайтеся "guestfs_blockdev_getsize64".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.0.82)

guestfs_filesystem_available

 int
 guestfs_filesystem_available (guestfs_h *g,
                               const char *filesystem);

Перевірити, чи передбачено у libguestfs підтримку вказаної за назвою файлової системи. Аргумент "файлова_система" є назвою файлової системи, наприклад, "ext3".

Перед використанням цієї команди вам слід викликати "guestfs_launch".

Головним чином корисне для перевірки того, що підтримки не передбачено. Те, що команда повертає true, ще не означає, що певну файлову систему може бути створено чи змонтовано, оскільки помилки можуть траплятися через інші причини, зокрема невідповідність версії файлової системи, несумісність можливостей або недоступність належного засобу mkfs.<файлова_система>.

Див. також "guestfs_available", "guestfs_feature_available", "AVAILABILITY".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.19.5)

guestfs_filesystem_walk

 struct guestfs_tsk_dirent_list *
 guestfs_filesystem_walk (guestfs_h *g,
                          const char *device);

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

Для виконання цієї команди монтування розділу диска не є обов'язковим.

Буде повернуто усі записи у файловій системі. Ця функція може виводити список вилучених або недоступних файлів. Записи не упорядковуються.

Структура "tsk_dirent" містить вказані нижче поля.

"tsk_inode"
Номер вузла у файловій системі. Може дорівнювати 0, якщо вузол було вилучено.
"tsk_type"
Базові дані щодо типу файлів. Докладний список значень наведено нижче.
"tsk_size"
Розмір файла у байтах. Може мати значення "-1", якщо вузол файла було вилучено.
"tsk_name"
Шлях до файла відносно його каталогу.
"tsk_flags"
Бітове поле, яке містить додаткові дані щодо запису. Є результатом застосування логічного АБО до таких значень:
0x0001
Якщо встановлено значення 1, файл розміщено у файловій системі, і файл є видимим. Якщо ні, файл було вилучено. За певних обставин функцією "download_inode" можна скористатися для відновлення вилучених файлів.
0x0002
У деяких файлових системах, зокрема NTFS та Ext2 і новіших, назву файла відокремлено від структури метаданих. Цей біт встановлюється у значення 1, якщо назва файла перебуває у нерозміщеному стані, а структура даних — у розміщеному. Це, загалом кажучи, неявно вказує на те, що метадані було повторно використано для нового файла. Тому дані щодо типу файла, розміру файла, часових позначок, кількості посилань та призначення символічного посилання можуть не відповідати даним початкового вилученого запису.
0x0004
Цей біт встановлюється у значення 1, якщо файл було стиснуто з використанням вбудованої підтримки стискання у файловій системі (NTFS). Програмний інтерфейс не може визначити застосований рівень стискання.
"tsk_atime_sec"
"tsk_atime_nsec"
"tsk_mtime_sec"
"tsk_mtime_nsec"
"tsk_ctime_sec"
"tsk_ctime_nsec"
"tsk_crtime_sec"
"tsk_crtime_nsec"
Час доступу, внесення змін, останньої зміни стану та часу створення, відповідно, у форматі Unix, визначений у секундах і наносекундах.
"tsk_nlink"
Кількість назв файлів, які вказують на цей запис.
"tsk_link"
Якщо записом є символічне посилання, у цьому полі міститиметься шлях до файла призначення.

Поле "tsk_type" міститиме один із таких символів:

'b'
Блоковий особливий
'c'
Символьний особливий
'd'
Каталог
'f'
FIFO (іменований канал)
'l'
Символічне посилання
'r'
Звичайний файл
's'
Сокет
'h'
Тіньовий inode (Solaris)
'w'
Витерти inode (BSD)
'u'
Невідомий тип файла

Ця функція повертає "struct guestfs_tsk_dirent_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_tsk_dirent_list".

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

Працездатність цієї функції залежить від можливості "libtsk". Див. також "guestfs_feature_available".

(Додано у 1.33.39)

guestfs_fill

 int
 guestfs_fill (guestfs_h *g,
               int c,
               int len,
               const char *path);

Ця команда створює новий файл із назвою "шлях". Спочатку файл буде заповнено вісімковими значеннями до довжини "кількість". Вісімкове значення задається параметром "c", де "c" має бути числом у діапазоні "[0..255]".

Для заповнення файла нульовими байтами (розріджено) набагато ефективнішим є використання "guestfs_truncate_size". Для створення файла, заповненого повторюваними вказаними послідовностями байтів, скористайтеся командою "guestfs_fill_pattern".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.0.79)

guestfs_fill_dir

 int
 guestfs_fill_dir (guestfs_h *g,
                   const char *dir,
                   int nr);

Ця корисна для тестування файлових систем функція створює "число" порожніх файлів у каталозі "каталог" із назвами від 00000000 до "число-1" (тобто кожна назва файла складається з 8 цифр, які доповнено нулями).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.32)

guestfs_fill_pattern

 int
 guestfs_fill_pattern (guestfs_h *g,
                       const char *pattern,
                       int len,
                       const char *path);

Ця функція подібна до "guestfs_fill", але створює файл довжини "len", заповнений повторюваними наборами байтів "pattern". Якщо потрібно, взірець буде обрізано так, щоб довжина файла складала точно "len" байтів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.3.12)

guestfs_find

 char **
 guestfs_find (guestfs_h *g,
               const char *directory);

Ця команда виводить список усіх файлів і каталогів, рекурсивно, починаючи з каталогу каталог. В основному, еквівалентна команді оболонки "find каталог -print", але виведені дані буде дещо оброблено. Опис обробки наведено нижче.

Ця команда повертає список рядків без будь-якого префікса. Отже, якщо структура каталогів є такою:

 /tmp/a
 /tmp/b
 /tmp/c/d

повернутий "guestfs_find" /tmp список складатиметься з 4 елементів:

 a
 b
 c
 c/d

Якщо каталог не є каталогом, ця команда повертає помилку.

Список результатів буде впорядковано.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.0.27)

guestfs_find0

 int
 guestfs_find0 (guestfs_h *g,
                const char *directory,
                const char *files);

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

Ця команда працює так само, як"guestfs_find", за такими виключеннями:

  • Список результат записується до зовнішнього файла.
  • Записи (назви файлів) у результаті буде відокремлено символами "\0". Див. параметр find(1) -print0.
  • Список результатів не буде впорядковано.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.74)

guestfs_find_inode

 struct guestfs_tsk_dirent_list *
 guestfs_find_inode (guestfs_h *g,
                     const char *device,
                     int64_t inode);

Шукає усі записи, пов'язані із заданим inode.

Для кожного запису буде повернуто структуру "tsk_dirent". Див. "filesystem_walk", щоб дізнатися більше про структури "tsk_dirent".

Ця функція повертає "struct guestfs_tsk_dirent_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_tsk_dirent_list".

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

Працездатність цієї функції залежить від можливості "libtsk". Див. також "guestfs_feature_available".

(Додано у 1.35.6)

guestfs_findfs_label

 char *
 guestfs_findfs_label (guestfs_h *g,
                       const char *label);

Ця команда виконує пошук у файлових системах і повертає ту з них, яка має вказану мітку. Якщо таких систем не буде знайдено, буде повернуто повідомлення про помилку.

Щоб визначити мітку файлової системи, скористайтеся "guestfs_vfs_label".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.3)

guestfs_findfs_uuid

 char *
 guestfs_findfs_uuid (guestfs_h *g,
                      const char *uuid);

Ця команда виконує пошук у файлових системах і повертає ту з них, яка має вказаний UUID. Якщо таких систем не буде знайдено, буде повернуто повідомлення про помилку.

Щоб визначити UUID файлової системи, скористайтеся "guestfs_vfs_uuid".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.3)

guestfs_fsck

 int
 guestfs_fsck (guestfs_h *g,
               const char *fstype,
               const char *device);

Виконує перевірку файлової системи (fsck) на пристрої "пристрій", де дані зберігаються у файловій системі типу "тип_файлової_системи".

Повернуте ціле число є станом. Зі списком кодів стану "fsck" можна ознайомитися у документації до fsck(8).

Нотатки:

  • Якщо кодів стану декілька, виводиться їхня сума.
  • Ненульовий повернутий код може означати «успіх», наприклад, якщо помилки у файловій системі було виправлено.
  • Підтримки перевірки або відновлення томів NTFS не передбачено (у linux-ntfs).

Ця команда повністю еквівалентна запуску "fsck -a -t тип_файлової_системи пристрій".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.0.16)

guestfs_fstrim

 int
 guestfs_fstrim (guestfs_h *g,
                 const char *mountpoint,
                 ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_FSTRIM_OFFSET, int64_t offset,
 GUESTFS_FSTRIM_LENGTH, int64_t length,
 GUESTFS_FSTRIM_MINIMUMFREEEXTENT, int64_t minimumfreeextent,

Обрізати вільне місце на файловій системі, змонтованій до точки монтування "точка_монтування". Файлову систему має бути змонтовано для читання і запису.

Вміст файлової системи змінено не буде, але усе вільне місце на ній буде «обрізано», тобто, якщо розглядати пристрій основної системи, повернуто до пристрою, що зробить образ диска розрідженішим і уможливить повторне використання невикористаного простору у файлах qcow2 тощо.

Ця операція потребує підтримки у libguestfs, змонтованій файловій системі, файловій системі основної системи, qemu та ядрі основної системи. Якщо цієї підтримки немає, операція призведе до помилки або навіть виконуватиметься.

Якщо у драйвері віртуальної файлової системи ядра не передбачено обрізання, цей виклик завершиться повідомленням про помилку із номером помилки "ENOTSUP". У поточній версії таке трапляється під час спроб обрізання файлових систем FAT.

Див. також "guestfs_zero_free_space". Це дещо інша операція, яка занулює вільне місце у файловій системі. Ви можете викликати "guestfs_fstrim" замість команди або після команди "guestfs_zero_free_space".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "fstrim". Див. також "guestfs_feature_available".

(Додано у 1.19.6)

guestfs_fstrim_va

 int
 guestfs_fstrim_va (guestfs_h *g,
                    const char *mountpoint,
                    va_list args);

Це «варіант з va_list» "guestfs_fstrim".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_fstrim_argv

 int
 guestfs_fstrim_argv (guestfs_h *g,
                      const char *mountpoint,
                      const struct guestfs_fstrim_argv *optargs);

Це «варіант з argv» "guestfs_fstrim".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_get_append

 const char *
 guestfs_get_append (guestfs_h *g);

Повертає додаткові параметри ядра, які було додано до командного рядка ядра базової системи libguestfs.

Якщо повернуто "NULL", до командного рядка не додавалося параметрів.

Ця функція повертає рядок, який може бути порожнім (NULL). Способу повернення повідомлення про помилку цією функцією не передбачено. Рядок належить дескриптору гостьової системи, його не слід звільняти.

(Додано у 1.0.26)

guestfs_get_attach_method

 char *
 guestfs_get_attach_method (guestfs_h *g);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_get_backend".

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

Повертає назву поточного модуля.

Див. "guestfs_set_backend" і "МОДУЛЬ".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.9.8)

guestfs_get_autosync

 int
 guestfs_get_autosync (guestfs_h *g);

Отримати значення прапорця автоматичної синхронізації.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_get_backend

 char *
 guestfs_get_backend (guestfs_h *g);

Повертає назву поточного модуля.

Ця властивість дескриптора раніше називалася «метод долучення».

Див. "guestfs_set_backend" і "МОДУЛЬ".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.21.26)

guestfs_get_backend_setting

 char *
 guestfs_get_backend_setting (guestfs_h *g,
                              const char *name);

Знайти рядок параметрів модуля обробки, який або дорівнює "назва", або починається із запису "назва=". Якщо знайдено рядок "назва", буде повернуто рядок "1". Якщо знайдено рядок "назва=", буде повернуто частину рядка після знаку рівності (може бути повернуто порожній рядок).

Якщо відповідного параметра не знайдено, ця функція повертає повідомлення про помилку. У такому випадку для номера помилки (див. "guestfs_last_errno") буде встановлено значення "ESRCH".

Див. "МОДУЛЬ", "ПАРАМЕТРИ МОДУЛЯ".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.27.2)

guestfs_get_backend_settings

 char **
 guestfs_get_backend_settings (guestfs_h *g);

Повертає поточні параметри модуля.

Цей виклик повертає рядки параметрів усіх модулів. Якщо вам потрібен лише якийсь окремий параметр модуля, скористайтеся "guestfs_get_backend_setting".

Див. "МОДУЛЬ", "ПАРАМЕТРИ МОДУЛЯ".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.25.24)

guestfs_get_cachedir

 char *
 guestfs_get_cachedir (guestfs_h *g);

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

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.19.58)

guestfs_get_direct

 int
 guestfs_get_direct (guestfs_h *g);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_internal_get_console_socket".

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

Повертає значення прапорця безпосередньої роботи із базовою системою.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.0.72)

guestfs_get_e2attrs

 char *
 guestfs_get_e2attrs (guestfs_h *g,
                      const char *file);

Ця команда повертає атрибути файла, пов'язані із назвою файл.

Атрибути є пов'язаним зі кожним записом inode набором бітів, який впливає на поведінку файла. Атрибути повертаються як рядок літер (описано нижче). Рядок може бути порожнім, що означає, що ніяких атрибутів для файла не встановлено.

Ці атрибути є, лише якщо файл зберігається у файловій системі ext2/3/4. Використання цієї команди для інших типів файлових систем призведе до помилки.

У поточній версії передбачено такі повернуті символи (атрибути файла):

'A'
Під час доступу до файла його atime не змінюється.
'a'
До файла можна лише дописувати дані.
'c'
Файл стиснено на диску.
'D'
(Лише для каталогів.) Зміни до цього каталогу синхронно записуються на диск.
'd'
Файл не є кандидатом на резервне копіювання (див. dump(8)).
'E'
Файл стиснуто з помилками.
'e'
Файл використовує розширення.
'h'
Файл зберігає свої блоки у одиницях розміру блоків файлової системи замість секторів.
'I'
(Лише каталоги.) У каталозі використовуються хешовані дерева ієрархії.
'i'
Цей файл є незмінним. До нього не можна вносити зміни, його не можна вилучати або перейменовувати. На цей файл не можна створювати посилання.
'j'
Файл входить до журналу даних.
's'
Після вилучення файла усі його блоки буде перезаписано нулями.
'S'
Зміни до цього файла синхронно записуються на диск.
'T'
(Лише каталоги.) Це підказка засобу розміщення у блоках щодо того, що підкаталоги, які містяться у цьому каталозі слід розподілити між блоками. Якщо немає, засіб розподілу за блоками спробує згрупувати підкаталоги.
't'
Для файлів вимикає об'єднання «хвостів». (Не використовується у основних реалізаціях ext2.)
'u'
Коли файл вилучається, його блоки буде збережено, уможливлюючи відновлення вилученого файла.
'X'
Можна отримувати доступ до необробленого вмісту стисненого файла.
'Z'
Для стисненого файла встановлено прапорець незавершеної зміни.

У майбутніх версіях може бути додано інші атрибути файлів. Тип встановлюваних атрибутів залежить від типу файла. Докладний опис можна знайти на сторінці підручника щодо chattr(1).

Див. також "guestfs_set_e2attrs".

Don't confuse these attributes with extended attributes (see "guestfs_getxattr").

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.17.31)

guestfs_get_e2generation

 int64_t
 guestfs_get_e2generation (guestfs_h *g,
                           const char *file);

Повертає генерацію файла ext2 для файла. Генерація (яку зазвичай називають «версією») є числом, пов'язаним із inode. Найпоширенішою областю використання є сервери NFS.

Генерація є характерною особливістю файлової системи ext2/3/4. Використання цієї команди для інших типів файлових систем призведе до помилки.

Див. "guestfs_set_e2generation".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.17.31)

guestfs_get_e2label

 char *
 guestfs_get_e2label (guestfs_h *g,
                      const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_vfs_label".

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

Ця команда повертає мітку файлової системи ext2/3/4 для файлової системи на пристрої "пристрій".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.15)

guestfs_get_e2uuid

 char *
 guestfs_get_e2uuid (guestfs_h *g,
                     const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_vfs_uuid".

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

Ця команда повертає UUID файлової системи ext2/3/4 для файлової системи на пристрої "пристрій".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.15)

guestfs_get_hv

 char *
 guestfs_get_hv (guestfs_h *g);

Повертає назву виконуваного файла поточного гіпервізору.

Це значення ніколи не дорівнює NULL. Якщо його ще не встановлено, команда поверне типову назву виконуваного файла qemu.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.23.17)

guestfs_get_identifier

 const char *
 guestfs_get_identifier (guestfs_h *g);

Отримати ідентифікатор дескриптора. Див. "guestfs_set_identifier".

Ця функція повертає рядок або NULL, якщо сталася помилка. Рядок належить дескриптору гостьової системи, його не слід звільняти.

(Додано у 1.31.14)

guestfs_get_libvirt_requested_credential_challenge

 char *
 guestfs_get_libvirt_requested_credential_challenge (guestfs_h *g,
                                                     int index);

Виконати перевірку (за даними libvirt) реєстраційних даних із номером "індекс". Якщо у libvirt не буде знайдено відповідника для перевірки, команда поверне порожній рядок, "".

Документацію і приклад коду наведено у розділі "РОЗПІЗНАВАННЯ ЗА ДОПОМОГОЮ LIBVIRT".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.19.52)

guestfs_get_libvirt_requested_credential_defresult

 char *
 guestfs_get_libvirt_requested_credential_defresult (guestfs_h *g,
                                                     int index);

Отримати типовий результат (за даними libvirt) реєстраційних даних із номером "індекс". Якщо у libvirt не буде знайдено відповідника для типового результату, команда поверне порожній рядок, "".

Документацію і приклад коду наведено у розділі "РОЗПІЗНАВАННЯ ЗА ДОПОМОГОЮ LIBVIRT".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.19.52)

guestfs_get_libvirt_requested_credential_prompt

 char *
 guestfs_get_libvirt_requested_credential_prompt (guestfs_h *g,
                                                  int index);

Отримати запит (за даними libvirt) реєстраційних даних із номером "індекс". Якщо у libvirt не буде знайдено відповідника для запиту, команда поверне порожній рядок, "".

Документацію і приклад коду наведено у розділі "РОЗПІЗНАВАННЯ ЗА ДОПОМОГОЮ LIBVIRT".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.19.52)

guestfs_get_libvirt_requested_credentials

 char **
 guestfs_get_libvirt_requested_credentials (guestfs_h *g);

Цю команду слід викликати під час зворотного виклику подій для подій типу "GUESTFS_EVENT_LIBVIRT_AUTH".

Повертає список реєстраційних даних, запит на які надсилає libvirt. Можливі значення є підмножиною рядків, які надаються, коли ви викликаєте "guestfs_set_libvirt_supported_credentials".

Документацію і приклад коду наведено у розділі "РОЗПІЗНАВАННЯ ЗА ДОПОМОГОЮ LIBVIRT".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.19.52)

guestfs_get_memsize

 int
 guestfs_get_memsize (guestfs_h *g);

Отримує розмір у мегабайтах отриманої для гіпервізору пам'яті.

Якщо для цього дескриптора не було викликано "guestfs_set_memsize" і якщо не було встановлено "LIBGUESTFS_MEMSIZE", якщо команда повертає типове вкомпільоване значення розміру пам'яті (memsize).

Докладніший опис архітектури libguestfs наведено у підручнику з guestfs(3).

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.0.55)

guestfs_get_network

 int
 guestfs_get_network (guestfs_h *g);

Повертає значення прапорця вмикання мережі.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.5.4)

guestfs_get_path

 const char *
 guestfs_get_path (guestfs_h *g);

Повертає поточний шлях пошуку.

Це значення ніколи не дорівнює NULL. Якщо його ще не встановлено, команда поверне типовий вміст змінної середовища PATH.

Ця функція повертає рядок або NULL, якщо сталася помилка. Рядок належить дескриптору гостьової системи, його не слід звільняти.

(Додано у 0.3)

guestfs_get_pgroup

 int
 guestfs_get_pgroup (guestfs_h *g);

Повертає прапорець групи процесів.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.11.18)

guestfs_get_pid

 int
 guestfs_get_pid (guestfs_h *g);

Повертає ідентифікатор гіпервізору. Якщо жодного гіпервізору не запущено, команда поверне повідомлення про помилку.

Це внутрішній виклик, який використовується для діагностики і тестування.

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.0.56)

guestfs_get_program

 const char *
 guestfs_get_program (guestfs_h *g);

Отримати назву програми. Див. "guestfs_set_program".

Ця функція повертає рядок або NULL, якщо сталася помилка. Рядок належить дескриптору гостьової системи, його не слід звільняти.

(Додано у 1.21.29)

guestfs_get_qemu

 const char *
 guestfs_get_qemu (guestfs_h *g);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_get_hv".

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

Повертає назву поточного виконуваного файла гіпервізору (типово, qemu).

Це значення ніколи не дорівнює NULL. Якщо його ще не встановлено, команда поверне типову назву виконуваного файла qemu.

Ця функція повертає рядок або NULL, якщо сталася помилка. Рядок належить дескриптору гостьової системи, його не слід звільняти.

(Додано у 1.0.6)

guestfs_get_recovery_proc

 int
 guestfs_get_recovery_proc (guestfs_h *g);

Повертає прапорець вмикання відновлення процесу.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.0.77)

guestfs_get_selinux

 int
 guestfs_get_selinux (guestfs_h *g);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_selinux_relabel".

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

Повертає поточне значення прапорця selinux, який передається базовій системі під час її завантаження. Див. "guestfs_set_selinux".

Докладніший опис архітектури libguestfs наведено у підручнику з guestfs(3).

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.0.67)

guestfs_get_smp

 int
 guestfs_get_smp (guestfs_h *g);

Повертає кількість віртуальних процесорів, які пов'язано із базовою системою.

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.13.15)

guestfs_get_sockdir

 char *
 guestfs_get_sockdir (guestfs_h *g);

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

This is different from "guestfs_get_tmpdir", as we need shorter paths for sockets (due to the limited buffers of filenames for UNIX sockets), and "guestfs_get_tmpdir" may be too long for them.

Типове значення керується змінною середовища "XDG_RUNTIME_DIR": якщо встановлено "XDG_RUNTIME_DIR", її значення буде типовим. Якщо ж значення змінної не встановлено, типовим значенням буде /tmp.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.33.8)

guestfs_get_state

 int
 guestfs_get_state (guestfs_h *g);

Повертає поточний стан як непрозоре ціле число. Корисно лише для виведення діагностичних повідомлень та повідомлень про внутрішні помилки.

Докладніший опис станів наведено у підручнику з guestfs(3).

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.0.2)

guestfs_get_tmpdir

 char *
 guestfs_get_tmpdir (guestfs_h *g);

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

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.19.58)

guestfs_get_trace

 int
 guestfs_get_trace (guestfs_h *g);

Повертає прапорець трасування команди.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.0.69)

guestfs_get_umask

 int
 guestfs_get_umask (guestfs_h *g);

Повертає поточне значення umask. Типовим значенням umask є 022, якщо інше значення не було встановлено за допомогою виклику "guestfs_umask".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.3.4)

guestfs_get_verbose

 int
 guestfs_get_verbose (guestfs_h *g);

Повертає значення прапорця докладності повідомлень.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_getcon

 char *
 guestfs_getcon (guestfs_h *g);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_selinux_relabel".

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

Ця команда отримує контекст безпеки SELinux фонової служби.

Див. документацію з SELINUX у guestfs(3) та c<guestfs_setcon>

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "selinux". Див. також "guestfs_feature_available".

(Додано у 1.0.67)

guestfs_getxattr

 char *
 guestfs_getxattr (guestfs_h *g,
                   const char *path,
                   const char *name,
                   size_t *size_r);

Отримати окремий розширений атрибут з файла "path" за назвою "name". У цьому виклику виконується перехід за символічними посиланнями. Якщо ви хочете визначити розширений атрибут для самого символічного посилання, скористайтеся "guestfs_lgetxattr".

Зазвичай, краще отримати усі розширені атрибути файла одним викликом "guestfs_getxattrs". Втім, у реалізації деяких файлових систем у Linux є вади, які заважають отримання повного списку атрибутів. Для таких файлових систем (найпоширенішою з яких є ntfs-3g) вам доведеться визначити назви потрібних вам розширених атрибутів і викликати цю функцію.

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

Див. також "guestfs_getxattrs", "guestfs_lgetxattr", attr(5).

Ця функція повертає рядок або NULL, якщо станеться помилка. Розмір повернутого буфера буд записано до *size_r. Після використання функція, яка викликає цю функцію, має звільнити повернутий буфер.

Працездатність цієї функції залежить від можливості "linuxxattrs". Див. також "guestfs_feature_available".

(Додано у 1.7.24)

guestfs_getxattrs

 struct guestfs_xattr_list *
 guestfs_getxattrs (guestfs_h *g,
                    const char *path);

Ця команда виводить список розширених атрибутів файла або каталогу "шлях".

На рівні системи, ця команда є поєднанням викликів listxattr(2) і getxattr(2).

Див. також "guestfs_lgetxattrs", attr(5).

Ця функція повертає "struct guestfs_xattr_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_xattr_list".

Працездатність цієї функції залежить від можливості "linuxxattrs". Див. також "guestfs_feature_available".

(Додано у 1.0.59)

guestfs_glob_expand

 char **
 guestfs_glob_expand (guestfs_h *g,
                      const char *pattern);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_glob_expand_opts" без додаткових аргументів.

(Додано у 1.0.50)

guestfs_glob_expand_opts

 char **
 guestfs_glob_expand_opts (guestfs_h *g,
                           const char *pattern,
                           ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_GLOB_EXPAND_OPTS_DIRECTORYSLASH, int directoryslash,

Ця команда виконує пошук усіх назв шляхів, які збігаються із шаблоном "шаблон", відповідно до правил розгортання замінників, які використовуються командною оболонкою.

Якщо шляхів знайдено не буде, команда поверне порожній список (не помилку).

Це обгортка навколо функції C glob(3) із прапорцями "GLOB_MARK|GLOB_BRACE". Див. відповідну сторінку підручника, щоб дізнатися більше.

Аргумент "directoryslash" визначає, чи слід використовувати прапорець "GLOB_MARK" для glob(3). Типовим його значенням є true (використовувати). Його можна явним чином вимкнути, щоб команда не повертала завершальних символів похилої риски у назвах каталогів.

Зауважте, що схожої команди для розгортання назв пристроїв (наприклад /dev/sd*) не існує. З цією метою слід використовувати "guestfs_list_devices", "guestfs_list_partitions" тощо.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.0.50)

guestfs_glob_expand_opts_va

 char **
 guestfs_glob_expand_opts_va (guestfs_h *g,
                              const char *pattern,
                              va_list args);

Це «варіант з va_list» "guestfs_glob_expand_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_glob_expand_opts_argv

 char **
 guestfs_glob_expand_opts_argv (guestfs_h *g,
                                const char *pattern,
                                const struct guestfs_glob_expand_opts_argv *optargs);

Це «варіант з argv» "guestfs_glob_expand_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_grep

 char **
 guestfs_grep (guestfs_h *g,
               const char *regex,
               const char *path);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_grep_opts" без додаткових аргументів.

(Додано у 1.0.66)

guestfs_grep_opts

 char **
 guestfs_grep_opts (guestfs_h *g,
                    const char *regex,
                    const char *path,
                    ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_GREP_OPTS_EXTENDED, int extended,
 GUESTFS_GREP_OPTS_FIXED, int fixed,
 GUESTFS_GREP_OPTS_INSENSITIVE, int insensitive,
 GUESTFS_GREP_OPTS_COMPRESSED, int compressed,

This calls the external grep(1) program and returns the matching lines.

Необов'язковими прапорцями є такі:

"extended"
Використовувати розширені формальні вирази. Те саме, що використання прапорця -E.
"fixed"
Фіксована відповідність (не використовувати формальні вирази). Те саме, що використання прапорця -F.
"insensitive"
Не враховувати під час пошуку регістр символів. Те саме, що використання прапорця -i.
"compressed"
Use zgrep(1) instead of grep(1). This allows the input to be compress- or gzip-compressed.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_grep_opts_va

 char **
 guestfs_grep_opts_va (guestfs_h *g,
                       const char *regex,
                       const char *path,
                       va_list args);

Це «варіант з va_list» "guestfs_grep_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_grep_opts_argv

 char **
 guestfs_grep_opts_argv (guestfs_h *g,
                         const char *regex,
                         const char *path,
                         const struct guestfs_grep_opts_argv *optargs);

Це «варіант з argv» "guestfs_grep_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_grepi

 char **
 guestfs_grepi (guestfs_h *g,
                const char *regex,
                const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

Ця функція викликає зовнішню програму "grep -i" і повертає відповідні рядки.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_grub_install

 int
 guestfs_grub_install (guestfs_h *g,
                       const char *root,
                       const char *device);

Ця команда встановлює GRUB 1 (Grand Unified Bootloader) на "пристрій" із кореневим каталогом "корінь".

Нотатки:

  • У програмному інтерфейсі поточної версії немає способів встановити завантажувач grub2, який використовується у більшості сучасних гостьових систем Linux. Команду grub2 можна запустити з самої гостьової системи, втім, у такого способу запуску є певні проблеми, описані у розділі "ЗАПУСК КОМАНД".
  • This uses grub-install(8) from the host. Unfortunately grub is not always compatible with itself, so this only works in rather narrow circumstances. Careful testing with each guest version is advisable.
  • Якщо grub-install повідомляє про помилку «No suitable drive was found in the generated device map.», ймовірно, вам слід спочатку створити файл /boot/grub/device.map, який міститиме прив'язки назв пристроїв grub до назв пристроїв Linux. Зазвичай, достатньо створити файл з таким вмістом:

     (hd0) /dev/vda
        

    замінивши /dev/vda на назву пристрою для встановлення.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "grub". Див. також "guestfs_feature_available".

(Додано у 1.0.17)

guestfs_head

 char **
 guestfs_head (guestfs_h *g,
               const char *path);

Ця команда повертає перші 10 рядків файла як список рядків.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.54)

guestfs_head_n

 char **
 guestfs_head_n (guestfs_h *g,
                 int nrlines,
                 const char *path);

Якщо параметр "к-ть_рядків" є додатним числом, повертає перші "к-ть_рядків" рядків з файла "шлях".

Якщо значенням параметра "к-ть_рядків" є від'ємне число, команда повертає усі рядки з файла "шлях", окрім останніх "к-ть_рядків" рядків.

Якщо значенням параметра "к-ть_рядків" є нуль, команда повертає порожній список.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.54)

guestfs_hexdump

 char *
 guestfs_hexdump (guestfs_h *g,
                  const char *path);

Ця команда виконує "hexdump -C" для вказаного файла "шлях". Результатом виконання є зручний для читання канонічний шістнадцятковий дамп файла.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.22)

guestfs_hivex_close

 int
 guestfs_hivex_close (guestfs_h *g);

Закрити поточний елемент керування hivex.

Обгортка до команди hivex(3) із тією ж самою назвою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_commit

 int
 guestfs_hivex_commit (guestfs_h *g,
                       const char *filename);

Вносить (записує) зміни до рою.

Якщо значенням необов'язкового параметра назва_файла є null, зміни буде записано до того самого рою, який було відкрито. Якщо значенням не є null, зміни буде записано до вказаного альтернативного файла, а початковий рій залишиться незмінним.

Обгортка до команди hivex(3) із тією ж самою назвою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_node_add_child

 int64_t
 guestfs_hivex_node_add_child (guestfs_h *g,
                               int64_t parent,
                               const char *name);

Додати дочірній вузол до із назвою "назва" до батьківського запису "батьківський_запис".

Обгортка до команди hivex(3) із тією ж самою назвою.

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_node_children

 struct guestfs_hivex_node_list *
 guestfs_hivex_node_children (guestfs_h *g,
                              int64_t nodeh);

Повертає список вузлів, які є підключами вузла "вузол".

Обгортка до команди hivex(3) із тією ж самою назвою.

Ця функція повертає "struct guestfs_hivex_node_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_hivex_node_list".

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_node_delete_child

 int
 guestfs_hivex_node_delete_child (guestfs_h *g,
                                  int64_t nodeh);

Вилучаєe "вузол", якщо потрібно, рекурсивно.

Обгортка до команди hivex(3) із тією ж самою назвою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_node_get_child

 int64_t
 guestfs_hivex_node_get_child (guestfs_h *g,
                               int64_t nodeh,
                               const char *name);

Повертає дочірній вузол із назвою "назва" для вузла "вузол", якщо такий існує. Може повернути 0, що означатиме, що вузла із вказаною назвою не існує.

Обгортка до команди hivex(3) із тією ж самою назвою.

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_node_get_value

 int64_t
 guestfs_hivex_node_get_value (guestfs_h *g,
                               int64_t nodeh,
                               const char *key);

Повертає значення, пов'язане із вузлом "вузол", яке має назву "ключ", якщо таке існує. Може повернути 0, що означатиме, що ключа із вказаною назвою не існує.

Обгортка до команди hivex(3) із тією ж самою назвою.

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_node_name

 char *
 guestfs_hivex_node_name (guestfs_h *g,
                          int64_t nodeh);

Повернути назву "nodeh".

Обгортка до команди hivex(3) із тією ж самою назвою.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_node_parent

 int64_t
 guestfs_hivex_node_parent (guestfs_h *g,
                            int64_t nodeh);

Повернути батьківський вузол "nodeh".

Обгортка до команди hivex(3) із тією ж самою назвою.

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_node_set_value

 int
 guestfs_hivex_node_set_value (guestfs_h *g,
                               int64_t nodeh,
                               const char *key,
                               int64_t t,
                               const char *val,
                               size_t val_size);

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

Обгортка до команди hivex(3) із тією ж самою назвою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_node_values

 struct guestfs_hivex_value_list *
 guestfs_hivex_node_values (guestfs_h *g,
                            int64_t nodeh);

Повертає масив кортежів (ключ, тип даних, дані), пов'язаний із "nodeh".

Обгортка до команди hivex(3) із тією ж самою назвою.

Ця функція повертає "struct guestfs_hivex_value_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_hivex_value_list".

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_open

 int
 guestfs_hivex_open (guestfs_h *g,
                     const char *filename,
                     ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_HIVEX_OPEN_VERBOSE, int verbose,
 GUESTFS_HIVEX_OPEN_DEBUG, int debug,
 GUESTFS_HIVEX_OPEN_WRITE, int write,
 GUESTFS_HIVEX_OPEN_UNSAFE, int unsafe,

Відкриває файл рою реєстру Windows із назвою назва_файла. Якщо вже існував дескриптор hivex, пов'язаний із цим сеансом guestfs, його буде закрито.

Обгортка до команди hivex(3) із тією ж самою назвою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_open_va

 int
 guestfs_hivex_open_va (guestfs_h *g,
                        const char *filename,
                        va_list args);

Це «варіант з va_list» "guestfs_hivex_open".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_hivex_open_argv

 int
 guestfs_hivex_open_argv (guestfs_h *g,
                          const char *filename,
                          const struct guestfs_hivex_open_argv *optargs);

Це «варіант з argv» "guestfs_hivex_open".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_hivex_root

 int64_t
 guestfs_hivex_root (guestfs_h *g);

Повернути кореневий вузол гілки.

Обгортка до команди hivex(3) із тією ж самою назвою.

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_value_key

 char *
 guestfs_hivex_value_key (guestfs_h *g,
                          int64_t valueh);

Повертає ключ (назву) поля для кортежу (ключ, тип даних, дані).

Обгортка до команди hivex(3) із тією ж самою назвою.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_value_string

 char *
 guestfs_hivex_value_string (guestfs_h *g,
                             int64_t valueh);

Ця команда викликає "guestfs_hivex_value_value" (яка повертає поле даних на основі кортежу значень hivex). Далі, припускається, що вмістом поля є рядок UTF-16LE, який перетворюється на рядок UTF-8 (або, якщо це неможливо, команда повертає повідомлення про помилку).

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

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.37.22)

guestfs_hivex_value_type

 int64_t
 guestfs_hivex_value_type (guestfs_h *g,
                           int64_t valueh);

Повертає значення поля типу даних для кортежу (ключ, тип даних, дані).

Обгортка до команди hivex(3) із тією ж самою назвою.

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_value_utf8

 char *
 guestfs_hivex_value_utf8 (guestfs_h *g,
                           int64_t valueh);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_hivex_value_string".

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

Ця команда викликає "guestfs_hivex_value_value" (яка повертає поле даних на основі кортежу значень hivex). Далі, припускається, що вмістом поля є рядок UTF-16LE, який перетворюється на рядок UTF-8 (або, якщо це неможливо, команда повертає повідомлення про помилку).

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

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_hivex_value_value

 char *
 guestfs_hivex_value_value (guestfs_h *g,
                            int64_t valueh,
                            size_t *size_r);

Повертає значення поля даних для кортежу (ключ, тип даних, дані).

Обгортка до команди hivex(3) із тією ж самою назвою.

Див. також "guestfs_hivex_value_utf8".

Ця функція повертає рядок або NULL, якщо станеться помилка. Розмір повернутого буфера буд записано до *size_r. Після використання функція, яка викликає цю функцію, має звільнити повернутий буфер.

Працездатність цієї функції залежить від можливості "hivex". Див. також "guestfs_feature_available".

(Додано у 1.19.35)

guestfs_initrd_cat

 char *
 guestfs_initrd_cat (guestfs_h *g,
                     const char *initrdpath,
                     const char *filename,
                     size_t *size_r);

Ця команда розпаковує файл назва_файла з файла initrd із назвою шлях_initrd. Назву файла слід вказувати без початкового символу /.

Наприклад, у guestfish ви можете скористатися такою командою для вивчення скрипту завантаження (зазвичай, він має назву /init), який міститься у initrd Linux або образі initramfs:

 initrd-cat /boot/initrd-<версія>.img init

Див. також "guestfs_initrd_list".

Ця функція повертає рядок або NULL, якщо станеться помилка. Розмір повернутого буфера буд записано до *size_r. Після використання функція, яка викликає цю функцію, має звільнити повернутий буфер.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.84)

guestfs_initrd_list

 char **
 guestfs_initrd_list (guestfs_h *g,
                      const char *path);

Ця команда виводить список файлів, які містяться у initrd.

Записи у списку буде виведено без початкового символу /. Список буде упорядковано за появою файлів (не обов'язково за абеткою). Назви каталогів буде показано у списку як окремі записи.

У старих ядрах Linux (2.4 і старіших) як initrd використовується стиснена файлова система ext2. У нашій команді передбачено підтримку лише новішого формату initramfs (стиснених файлів cpio).

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.0.54)

guestfs_inotify_add_watch

 int64_t
 guestfs_inotify_add_watch (guestfs_h *g,
                            const char *path,
                            int mask);

Спостерігати для запису "шлях" за появою подій зі списку "маска".

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

Зауваження для викликів з-поза C та з-поза Linux: події inotify визначено у ABI ядра Linux. Список наведено у /usr/include/sys/inotify.h.

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "inotify". Див. також "guestfs_feature_available".

(Додано у 1.0.66)

guestfs_inotify_close

 int
 guestfs_inotify_close (guestfs_h *g);

Ця команда закриває дескриптор inotify, який раніше було відкрито inotify_init. Команда вилучає усі спостереження, викидає усі події з черги і скасовує надання пам'яті для усіх ресурсів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "inotify". Див. також "guestfs_feature_available".

(Додано у 1.0.66)

guestfs_inotify_files

 char **
 guestfs_inotify_files (guestfs_h *g);

Ця функція є корисною обгорткою навколо "guestfs_inotify_read", яка просто повертає список назв шляхів об'єктів, які було оброблено touch. Список назв шляхів буде упорядковано, дублікати записів буде вилучено.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "inotify". Див. також "guestfs_feature_available".

(Додано у 1.0.66)

guestfs_inotify_init

 int
 guestfs_inotify_init (guestfs_h *g,
                       int maxevents);

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

Значенням параметра "maxevents" є максимальна кількість подій, які може бути додано до черги між викликами "guestfs_inotify_read" або "guestfs_inotify_files". Якщо буде передано значення 0, буде використано типове значення для ядра (або раніше встановлене значення). Для Linux 2.6.29 типовим значенням є 16384 подій. Якщо обмеження буде перевищено, ядро просто відкидатиме події, але записуватиме повідомлення щодо факту відкидання, встановлюючи прапорець "IN_Q_OVERFLOW" у списку повернутої структури (див. "guestfs_inotify_read").

Перш ніж буде створено якесь повідомлення про подію, вам слід додати певні спостереження до внутрішнього списку спостережень. Див. "guestfs_inotify_add_watch" та "guestfs_inotify_rm_watch".

Записи подій з черги мають періодично читатися викликом "guestfs_inotify_read" (або "guestfs_inotify_files", який є корисною обгорткою навколо "guestfs_inotify_read"). Якщо записи подій не читатимуться достатньо часто, внутрішню чергу записів може бути переповнено.

Після використання дескриптор слід закрити викликом "guestfs_inotify_close". У процесі закриття буде автоматично вилучено усі спостереження.

Огляд інтерфейсу inotify, який відкриває ядро Linux, можна знайти на сторінці підручника inotify(7). Саме цей інтерфейс, грубо кажучи, ми і відкриваємо за допомогою libguestfs. Зауважте, що для кожного екземпляра libguestfs відкривається один загальний дескриптор inotify.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "inotify". Див. також "guestfs_feature_available".

(Додано у 1.0.66)

guestfs_inotify_read

 struct guestfs_inotify_event_list *
 guestfs_inotify_read (guestfs_h *g);

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

Якщо подій не траплялося, повертає порожній список.

Зауваження: щоб переконатися, що усі записи подій було прочитано, вам слід повторно викликати цю функцію, аж доки не буде повернуто порожній список. Причиною є те, що виклик читає записи подій до досягнення максимального розміру черги повідомлень appliance-to-host і лишає решту подій у черзі.

Ця функція повертає "struct guestfs_inotify_event_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_inotify_event_list".

Працездатність цієї функції залежить від можливості "inotify". Див. також "guestfs_feature_available".

(Додано у 1.0.66)

guestfs_inotify_rm_watch

 int
 guestfs_inotify_rm_watch (guestfs_h *g,
                           int wd);

Вилучити раніше визначене спостереження inotify. Див. "guestfs_inotify_add_watch".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "inotify". Див. також "guestfs_feature_available".

(Додано у 1.0.66)

guestfs_inspect_get_arch

 char *
 guestfs_inspect_get_arch (guestfs_h *g,
                           const char *root);

Повертає архітектуру інспектованої операційної системи. Список можливих повернутих значень можна знайти у описі "guestfs_file_architecture".

Якщо архітектуру визначити не вдасться, буде повернуто рядок "unknown".

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.3)

guestfs_inspect_get_distro

 char *
 guestfs_inspect_get_distro (guestfs_h *g,
                             const char *root);

Ця команда повертає дистрибутив інспектованої операційної системи.

У поточній версії визначено такі дистрибутиви:

"alpinelinux"
Alpine Linux.
"altlinux"
ALT Linux.
"archlinux"
Arch Linux.
"buildroot"
Дистрибутив, що походить від buildroot, але не той, який ми можемо окремо визначити.
"centos"
CentOS.
"cirros"
Cirros.
"coreos"
CoreOS.
"debian"
Debian.
"fedora"
Fedora.
"freebsd"
FreeBSD.
"freedos"
FreeDOS.
"frugalware"
Frugalware.
"gentoo"
Gentoo.
"kalilinux"
Kali Linux.
"linuxmint"
Linux Mint.
"mageia"
Mageia.
"mandriva"
Mandriva.
"meego"
MeeGo.
"msdos"
Microsoft DOS.
"neokylin"
NeoKylin.
"netbsd"
NetBSD.
"openbsd"
OpenBSD.
"openmandriva"
OpenMandriva Lx.
"opensuse"
OpenSUSE.
"oraclelinux"
Oracle Linux.
"pardus"
Pardus.
"pldlinux"
PLD Linux.
"redhat-based"
Дистрибутив, що походить від Red Hat.
"rhel"
Red Hat Enterprise Linux.
"scientificlinux"
Scientific Linux.
"slackware"
Slackware.
"sles"
SuSE Linux Enterprise Server або Desktop.
"suse-based"
Дистрибутив, заснований на openSuSE.
"ttylinux"
ttylinux.
"ubuntu"
Ubuntu.
"unknown"
Дистрибутив, тип якого не вдалося визначити.
"voidlinux"
Void Linux.
"windows"
У Windows немає дистрибутивів. Цей рядок буде повернуто, якщо операційна система належить до сімейства Windows.

У майбутніх версіях libguestfs цією командою можуть повертатися інші рядки. Функція, звідки викликається команда, має готуватися до обробки будь-якого рядка.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.3)

guestfs_inspect_get_drive_mappings

 char **
 guestfs_inspect_get_drive_mappings (guestfs_h *g,
                                     const char *root);

Цей виклик корисний для Windows, де використовується примітивна система призначення літер дисків (зокрема C:\) до розділів. Цей програмний інтерфейс інспектування вивчає реєстр Windows, щоб визначити спосіб прив'язування дисків і розділів до літер, і повертає хеш-таблицю, як у наведеному нижче прикладі:

 C      =>     /dev/vda2
 E      =>     /dev/vdb1
 F      =>     /dev/vdc1

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

У майбутньому ми можемо реалізувати підтримку інших операційних систем, де також використовуються літери для дисків, але ключі для таких систем можуть не бути незалежними від регістру символів і можуть перевищувати за довжиною 1 символ. Наприклад, у OS-9 диски називалися "h0", "h1" тощо.

Для гостьових систем Windows у поточній версії повертається лише прив'язка жорстких дисків. Портативні диски (зокрема DVD-ROM) ігноруються.

У гостьових системах, де не використовується прив'язка дисків, або прив'язку дисків не можна визначити, ця команда повертає таблицю порожніх хешів.

З докладнішими даними можна ознайомитися у розділі "INSPECTION". Див. також <guestfs_inspect_get_mountpoints>, <guestfs_inspect_get_filesystems>.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Масив рядків завжди матиме довжину "2n+1", значення "n" ключів і значень йтимуть одне за одним послідовно, завершуючись кінцевим записом NULL. Після використання слід звільнити рядки і масив.

(Додано у 1.9.17)

guestfs_inspect_get_filesystems

 char **
 guestfs_inspect_get_filesystems (guestfs_h *g,
                                  const char *root);

Ця команда повертає список усіх файлових систем, які, як ми вважаємо, пов'язано із вказаною операційною системою. Це, зокрема, коренева файлова система, інші звичайні файлові системи та незмонтовані пристрої, зокрема диски резервної пам'яті.

У випадку віртуальної машини із варіантами завантаження операційних систем файлова система може бути спільною для одразу декількох операційних систем.

З докладнішими даними можна ознайомитися у розділі "INSPECTION". Див. також <guestfs_inspect_get_mountpoints>.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.5.3)

guestfs_inspect_get_format

 char *
 guestfs_inspect_get_format (guestfs_h *g,
                             const char *root);

Ця функція вважається застарілою. Замінника не передбачено. Зверніться до документації із програмного інтерфейсу у підручнику з guestfs(3), щоб дізнатися більше.

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

До libguestfs 1.38 було передбачено певну ненадійну підтримку виявлення образів компакт-дисків для встановлення. Цей програмний інтерфейс мав повертати таке:

"installed"
Це встановлена операційна система.
"installer"
Інспектований образ диска не є встановленою операційною системою, а лише придатним до завантаження диском, компакт-диском із портативною операційною системою або чимось подібним.
"unknown"
Формат цього образу диска є невідомим.

У libguestfs ≥ 1.38 ця команда повертала лише "installed". Скористайтеся безпосередньо libosinfo для визначення системи на компакт-диску зі встановлювачем.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.9.4)

guestfs_inspect_get_hostname

 char *
 guestfs_inspect_get_hostname (guestfs_h *g,
                               const char *root);

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

Якщо назву вузла не вдасться визначити, буде повернуто рядок "unknown".

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.7.9)

guestfs_inspect_get_icon

 char *
 guestfs_inspect_get_icon (guestfs_h *g,
                           const char *root,
                           size_t *size_r,
                           ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_INSPECT_GET_ICON_FAVICON, int favicon,
 GUESTFS_INSPECT_GET_ICON_HIGHQUALITY, int highquality,

Ця функція повертає піктограму, яка відповідає інспектованій операційній системі. Піктограма повертається як буфер, який містить зображення PNG (перекодується до PNG, якщо потрібно).

Якщо отримання піктограми неможливе, ця функція повертає буфер нульової довжини (не-NULL). Функції, які викликають цю команду, мають перевіряти цей випадок.

Libguestfs починає із пошуку файла із назвою /etc/favicon.png або C:\etc\favicon.png і, якщо дані зберігаються у належному форматі, буде повернуто вміст цього файла. Ви можете вимкнути такі піктограми передаванням для необов'язкового параметра "favicon" значення false (типовим значенням є true).

Якщо пошук favicon завершиться невдачею, буде виконано пошук відповідної піктограми у інших місцях гостьової системи.

Якщо для необов'язкового параметра "highquality" встановлено значення true, команда повертатиме лише високоякісні піктограми, тобто піктограми із високою роздільною здатністю і каналом прозорості. Типово, (зі значенням false) буде повернуто будь-яку знайдено піктограму, навіть якщо її якість буде низькою.

Нотатки:

  • На відміну від більшості інших викликів програмного інтерфейсу, перш ніж ви викличете цю команду, диски гостьової системи має бути змонтовано, оскільки під час виклику доведеться читати дані з файлової системи гостьової операційної системи.
  • Безпека: Дані піктограми походять із ненадійної гостьової системи, ними слід користуватися обережно. Відомі випадки додавання шкідливого коду до файлів PNG. Переконайтеся, що ви користуєтеся libpng (або іншими відповідними бібліотеками) останньої версії, перш ніж намагатися обробити або показати піктограму.
  • Розмір повернутого зображення PNG може бути довільним. Зображення може бути неквадратним. Libguestfs намагається повернути найбільшу доступну піктограму найвищої якості. Програма сама має масштабувати її до бажаного розміру.
  • Extracting icons from Windows guests requires the external wrestool(1) program from the "icoutils" package, and several programs (bmptopnm(1), pnmtopng(1), pamcut(1)) from the "netpbm" package. These must be installed separately.
  • Піктограми операційної системи захищено авторськими правами. Перш ніж використовувати захищені авторським правом дані у власних програмах, проконсультуйтеся щодо законодавчих аспектів такого використання.

Ця функція повертає рядок або NULL, якщо станеться помилка. Розмір повернутого буфера буд записано до *size_r. Після використання функція, яка викликає цю функцію, має звільнити повернутий буфер.

(Додано у 1.11.12)

guestfs_inspect_get_icon_va

 char *
 guestfs_inspect_get_icon_va (guestfs_h *g,
                              const char *root,
                              size_t *size_r,
                              va_list args);

Це «варіант з va_list» "guestfs_inspect_get_icon".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_inspect_get_icon_argv

 char *
 guestfs_inspect_get_icon_argv (guestfs_h *g,
                                const char *root,
                                size_t *size_r,
                                const struct guestfs_inspect_get_icon_argv *optargs);

Це «варіант з argv» "guestfs_inspect_get_icon".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_inspect_get_major_version

 int
 guestfs_inspect_get_major_version (guestfs_h *g,
                                    const char *root);

Ця команда повертає номер основної версії інспектованої операційної системи.

У Windows використовується послідовна схема нумерування версій, яку не відображено у назвах ринкових продуктів операційної системи. Зокрема, операційна система, яку ми знаємо за назвою «Windows 7», насправді має номер 6.1 (тобто основна версія = 6, додаткова версія = 1). Ви можете визначити справжні номери версій випусків Windows за статтями Вікіпедії або MSDN.

Якщо версію не вдасться визначити, буде повернуто 0.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.5.3)

guestfs_inspect_get_minor_version

 int
 guestfs_inspect_get_minor_version (guestfs_h *g,
                                    const char *root);

Ця команда повертає номер додаткової версії інспектованої операційної системи.

Якщо версію не вдасться визначити, буде повернуто 0.

З докладнішими даними можна ознайомитися у розділі "INSPECTION". Див. також <guestfs_inspect_get_major_version>.

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.5.3)

guestfs_inspect_get_mountpoints

 char **
 guestfs_inspect_get_mountpoints (guestfs_h *g,
                                  const char *root);

Ця команда повертає хеш даних щодо місця, у якому, як ми гадаємо, має бути змонтовано файлові системи, пов'язані із операційною системою. Слід зауважити, що ці дані, у найкращому випадку, визначено на основі здогадок, заснованих на вивченні файлів налаштувань, зокрема /etc/fstab. Зокрема, використання цієї команди може призвести до отримання записів файлових систем, яких не існує або які непридатні до монтування. У коді, який викликатиме команду, слід правильно обробити випадки, коли під час спроби монтування отриманих файлових систем ставатимуться помилки.

У кожного з елементів повернутої хеш-таблиці буде ключ, який відповідатиме шляху до точки монтування (наприклад, /boot), і значення, яке відповідатиме файловій системі, яку має бути змонтовано до цієї точки монтування (наприклад, /dev/sda1).

Непридатні до монтування пристрої, зокрема пристрої резервної пам'яті на диску, не включатимуться до повернутого списку.

Для операційних систем, подібних до Windows, де для позначення дисків усе ще використовуються літери, ця команда поверне запис першого диска «змонтованого до» /. Щоб дізнатися більше про прив'язку літер дисків до розділів, див. "guestfs_inspect_get_drive_mappings".

З докладнішими даними можна ознайомитися у розділі "INSPECTION". Див. також <guestfs_inspect_get_filesystems>.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Масив рядків завжди матиме довжину "2n+1", значення "n" ключів і значень йтимуть одне за одним послідовно, завершуючись кінцевим записом NULL. Після використання слід звільнити рядки і масив.

(Додано у 1.5.3)

guestfs_inspect_get_osinfo

 char *
 guestfs_inspect_get_osinfo (guestfs_h *g,
                             const char *root);

Ця функція повертає можливий скорочений ідентифікатор libosinfo, що відповідає гостьовій системі.

Зауваження: повернутий ідентифікатор є лише припущенням libguestfs і не гарантує, що такий ідентифікатор справді існує у osinfo-db.

Якщо ідентифікатор не вдасться визначити, буде повернуто рядок "unknown".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.39.1)

guestfs_inspect_get_package_format

 char *
 guestfs_inspect_get_package_format (guestfs_h *g,
                                     const char *root);

Ця функція і "guestfs_inspect_get_package_management" повертають формат пакунків та засіб для керування пакунками, який використовується у інспектованій операційній системі. Наприклад, для Fedora ці функції мають повернути "rpm" (формат пакунків) та "yum" або "dnf" (засіб для керування пакунками).

Ця команда поверне рядок "unknown", якщо не вдасться визначити формат пакунків або якщо у операційній системі не використовується система пакунків (наприклад, у Windows).

Можливі варіанти рядків: "rpm", "deb", "ebuild", "pisi", "pacman", "pkgsrc", "apk", "xbps". У майбутніх версіях libguestfs може бути реалізовано повернення інших рядків.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.7.5)

guestfs_inspect_get_package_management

 char *
 guestfs_inspect_get_package_management (guestfs_h *g,
                                         const char *root);

"guestfs_inspect_get_package_format" і ця функція повертають формат пакунків та засіб для керування пакунками, який використовується у інспектованій операційній системі. Наприклад, для Fedora ці функції мають повернути "rpm" (формат пакунків) та "yum" або "dnf" (засіб для керування пакунками).

Ця команда поверне рядок "unknown", якщо не вдасться визначити засіб для керування пакунками або якщо у операційній системі не використовується система пакунків (наприклад, у Windows).

Можливі варіанти повернутих рядків: "yum", "dnf", "up2date", "apt" (для усіх похідних Debian), "portage", "pisi", "pacman", "urpmi", "zypper", "apk", "xbps". У майбутніх версіях libguestfs може бути реалізовано повернення інших рядків.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.7.5)

guestfs_inspect_get_product_name

 char *
 guestfs_inspect_get_product_name (guestfs_h *g,
                                   const char *root);

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

Якщо назву продукту визначити не вдалося, буде повернуто рядок "unknown".

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.3)

guestfs_inspect_get_product_variant

 char *
 guestfs_inspect_get_product_variant (guestfs_h *g,
                                      const char *root);

Ця команда повертає варіант продукту інспектованої операційної системи.

Для гостьових операційних систем Windows ця команда повертає вміст ключа реєстру "HKLM\Software\Microsoft\Windows NT\CurrentVersion" "InstallationType", який типово є рядком, зокрема "Client" або "Server" (можливі й інші варіанти). Цим рядком можна скористатися для розрізнення домашніх і промислових версій Windows для випусків із однаковим номером версії (наприклад, Windows 7 і Windows 2008 Server обидві мають номер версії 6.1, але перша має значення варіанта "Client", а друга — "Server").

Для промислових версій гостьових систем Linux у майбутньому ми маємо намір реалізувати код, який повертатиме варіанти продукту, зокрема "Desktop", "Server" тощо. Але у поточній версії цей код ще не реалізовано.

Якщо варіант продукту визначити не вдалося, буде повернуто рядок "unknown".

З докладнішими даними можна ознайомитися у розділі "INSPECTION". Див. також <guestfs_inspect_get_product_name>, <guestfs_inspect_get_major_version>.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.9.13)

guestfs_inspect_get_roots

 char **
 guestfs_inspect_get_roots (guestfs_h *g);

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

Команда повертає порожній список, якщо не буде знайдено кореневих пристроїв або якщо не було викликано "guestfs_inspect_os".

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.7.3)

guestfs_inspect_get_type

 char *
 guestfs_inspect_get_type (guestfs_h *g,
                           const char *root);

Ця команда повертає тип інспектованої операційної системи. У поточній версії визначено такі типи:

"linux"
Будь-яка заснована на Linux операційна система.
"windows"
Будь-яка операційна система Microsoft Windows.
"freebsd"
FreeBSD.
"netbsd"
NetBSD.
"openbsd"
OpenBSD.
"hurd"
GNU/Hurd.
"dos"
MS-DOS, FreeDOS та інші.
"minix"
MINIX.
"unknown"
Не вдалося визначити тип операційної системи.

У майбутніх версіях libguestfs цією командою можуть повертатися інші рядки. Функція, звідки викликається команда, має готуватися до обробки будь-якого рядка.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.3)

guestfs_inspect_get_windows_current_control_set

 char *
 guestfs_inspect_get_windows_current_control_set (guestfs_h *g,
                                                  const char *root);

Ця команда повертає Windows CurrentControlSet інспектованої гостьової системи. CurrentControlSet є назвою ключа реєстру, наприклад "ControlSet001".

У цій команді припускається, що гостьовою системою є Windows і що її реєстр можна вивчити засобами інспектування. Якщо ці припущення не справджуються, команда поверне повідомлення про помилку.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.9.17)

guestfs_inspect_get_windows_software_hive

 char *
 guestfs_inspect_get_windows_software_hive (guestfs_h *g,
                                            const char *root);

Ця команда повертає шлях до рою (двійкового файла реєстру Windows), який відповідає HKLM\SOFTWARE.

У цій команді припускається, що гостьовою системою є Windows і що у гостьовій системі є файл рою програмного забезпечення із відповідною назвою. Якщо ці припущення не справджуються, команда поверне повідомлення про помилку. Ця команд не виконує перевірки того, що знайдений рій є коректним роєм реєстру Windows.

Ви можете скористатися командою "guestfs_hivex_open" для читання або запису рою.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.35.26)

guestfs_inspect_get_windows_system_hive

 char *
 guestfs_inspect_get_windows_system_hive (guestfs_h *g,
                                          const char *root);

Ця команда повертає шлях до рою (двійкового файла реєстру Windows), який відповідає HKLM\SYSTEM.

У цій команді припускається, що гостьовою системою є Windows і що у гостьовій системі є файл рою системи із відповідною назвою. Якщо ці припущення не справджуються, команда поверне повідомлення про помилку. Ця команда не виконує перевірки того, що знайдений рій є коректним роєм реєстру Windows.

Ви можете скористатися командою "guestfs_hivex_open" для читання або запису рою.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.35.26)

guestfs_inspect_get_windows_systemroot

 char *
 guestfs_inspect_get_windows_systemroot (guestfs_h *g,
                                         const char *root);

Ця команда повертає системний кореневий каталог інспектованої гостьової системи Windows. Системним кореневим каталогом є шлях, зокрема /WINDOWS.

У цій команді припускається, що гостьовою системою є Windows і що її системний кореневий каталог можна визначити засобами інспектування. Якщо ці припущення не справджуються, команда поверне повідомлення про помилку.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.25)

guestfs_inspect_is_live

 int
 guestfs_inspect_is_live (guestfs_h *g,
                          const char *root);

Ця функція вважається застарілою. Замінника не передбачено. Зверніться до документації із програмного інтерфейсу у підручнику з guestfs(3), щоб дізнатися більше.

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

Ця команда є застарілою і завжди повертає "false".

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.9.4)

guestfs_inspect_is_multipart

 int
 guestfs_inspect_is_multipart (guestfs_h *g,
                               const char *root);

Ця функція вважається застарілою. Замінника не передбачено. Зверніться до документації із програмного інтерфейсу у підручнику з guestfs(3), щоб дізнатися більше.

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

Ця команда є застарілою і завжди повертає "false".

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.9.4)

guestfs_inspect_is_netinst

 int
 guestfs_inspect_is_netinst (guestfs_h *g,
                             const char *root);

Ця функція вважається застарілою. Замінника не передбачено. Зверніться до документації із програмного інтерфейсу у підручнику з guestfs(3), щоб дізнатися більше.

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

Ця команда є застарілою і завжди повертає "false".

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.9.4)

guestfs_inspect_list_applications

 struct guestfs_application_list *
 guestfs_inspect_list_applications (guestfs_h *g,
                                    const char *root);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_inspect_list_applications2".

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

Повертає список програм, встановлених у операційній системі.

Зауваження: ця команда працює інакше за інші частини програмного інтерфейсу інспектування. Вам слід викликати "guestfs_inspect_os", потім "guestfs_inspect_get_mountpoints", потім змонтувати диски, потім викликати цю команду. Побудова списку програм є значно складнішою операцією, яка потребує доступу до усієї файлової системи. Також зауважте, що на відміну від інших команд "guestfs_inspect_get_*", які лише повертають дані, кешовані у дескрипторі libguestfs, ця команда справді читає частини змонтованої файлової системи під час виконання.

Ця команда повертає порожній список, якщо засобу інспектування не вдасться визначити список програм.

Структура application містить такі поля:

"app_name"
The name of the application. For Linux guests, this is the package name.
"app_display_name"
Показана назва програми, іноді локалізована відповідно до мови встановлення гостьової операційної системи.

Якщо дані недоступні, команда поверне порожній рядок "". Там, де потрібно щось показати, можна скористатися замість цієї команди командою "app_name".

"app_epoch"
Для засобів керування пакунками, у яких використовуються епохи, це поле містить дані щодо епохи пакунка (ціле число). Якщо дані недоступні, буде повернуто значення 0.
"app_version"
Рядок версії програми або пакунка. Якщо такого рядка не передбачено, буде повернуто порожній рядок "".
"app_release"
Рядок випуску програми або пакунка у системах пакування, де передбачено підтримку відповідних даних. Якщо такого рядка не передбачено, буде повернуто порожній рядок "".
"app_install_path"
Шлях встановлення програми (у операційних системах, зокрема Windows, де використовуються шляхи встановлення). Цей шлях записується у форматі, який використовується гостьовою операційною системою, а не у форматі шляху libguestfs.

Якщо не передбачено, буде повернуто порожній рядок "".

"app_trans_path"
Шлях для встановлення, перетворений у шлях libguestfs. Якщо такого шляху не передбачено, буде повернуто порожній рядок "".
"app_publisher"
Назва розповсюджувача програми у системах пакування, де передбачено підтримку відповідних даних. Якщо такої назви не передбачено, буде повернуто порожній рядок "".
"app_url"
Адреса (сайта) програми. Якщо такої адреси не передбачено, буде повернуто порожній рядок "".
"app_source_package"
Для систем пакування, де передбачено таку підтримку, назва пакунка із початковим кодом. Якщо такої назви не передбачено, буде повернуто порожній рядок "".
"app_summary"
Короткий (зазвичай, у один рядок) опис програми або пакунка. Якщо такого опису не передбачено, буде повернуто порожній рядок "".
"app_description"
Докладніший опис програми або пакунка. Якщо опис недоступний, замість нього буде повернуто порожній рядок "".

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає "struct guestfs_application_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_application_list".

(Додано у 1.7.8)

guestfs_inspect_list_applications2

 struct guestfs_application2_list *
 guestfs_inspect_list_applications2 (guestfs_h *g,
                                     const char *root);

Повертає список програм, встановлених у операційній системі.

Зауваження: ця команда працює інакше за інші частини програмного інтерфейсу інспектування. Вам слід викликати "guestfs_inspect_os", потім "guestfs_inspect_get_mountpoints", потім змонтувати диски, потім викликати цю команду. Побудова списку програм є значно складнішою операцією, яка потребує доступу до усієї файлової системи. Також зауважте, що на відміну від інших команд "guestfs_inspect_get_*", які лише повертають дані, кешовані у дескрипторі libguestfs, ця команда справді читає частини змонтованої файлової системи під час виконання.

Ця команда повертає порожній список, якщо засобу інспектування не вдасться визначити список програм.

Структура application містить такі поля:

"app2_name"
The name of the application. For Linux guests, this is the package name.
"app2_display_name"
Показана назва програми, іноді локалізована відповідно до мови встановлення гостьової операційної системи.

Якщо дані недоступні, команда поверне порожній рядок "". Там, де потрібно щось показати, можна скористатися замість цієї команди командою "app2_name".

"app2_epoch"
Для засобів керування пакунками, у яких використовуються епохи, це поле містить дані щодо епохи пакунка (ціле число). Якщо дані недоступні, буде повернуто значення 0.
"app2_version"
Рядок версії програми або пакунка. Якщо такого рядка не передбачено, буде повернуто порожній рядок "".
"app2_release"
Рядок випуску програми або пакунка у системах пакування, де передбачено підтримку відповідних даних. Якщо такого рядка не передбачено, буде повернуто порожній рядок "".
"app2_arch"
Рядок архітектури програми або пакунка у системах пакування, де передбачено підтримку відповідних даних. Якщо такого рядка не передбачено, буде повернуто порожній рядок "".
"app2_install_path"
Шлях встановлення програми (у операційних системах, зокрема Windows, де використовуються шляхи встановлення). Цей шлях записується у форматі, який використовується гостьовою операційною системою, а не у форматі шляху libguestfs.

Якщо не передбачено, буде повернуто порожній рядок "".

"app2_trans_path"
Шлях для встановлення, перетворений у шлях libguestfs. Якщо такого шляху не передбачено, буде повернуто порожній рядок "".
"app2_publisher"
Назва розповсюджувача програми у системах пакування, де передбачено підтримку відповідних даних. Якщо такої назви не передбачено, буде повернуто порожній рядок "".
"app2_url"
Адреса (сайта) програми. Якщо такої адреси не передбачено, буде повернуто порожній рядок "".
"app2_source_package"
Для систем пакування, де передбачено таку підтримку, назва пакунка із початковим кодом. Якщо такої назви не передбачено, буде повернуто порожній рядок "".
"app2_summary"
Короткий (зазвичай, у один рядок) опис програми або пакунка. Якщо такого опису не передбачено, буде повернуто порожній рядок "".
"app2_description"
Докладніший опис програми або пакунка. Якщо опис недоступний, замість нього буде повернуто порожній рядок "".

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Ця функція повертає "struct guestfs_application2_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_application2_list".

(Додано у 1.19.56)

guestfs_inspect_os

 char **
 guestfs_inspect_os (guestfs_h *g);

Ця функція використовує інші функції libguestfs та певну евристику для інспектування дисків (зазвичай, диски належать до віртуальної машини) під час пошуку операційних систем.

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

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

Ви можете передати повернуті рядки кореневих каталогів іншим функціями "guestfs_inspect_get_*", щоб отримати подальші відомості щодо усіх операційних систем, зокрема назву і версію.

Ця функція використовує інші можливості libguestfs, зокрема "guestfs_mount_ro" і "guestfs_umount_all", щоб монтувати і демонтовувати файлові системи і переглядати їхній вміст. Її слід викликати до того, як буде змонтовано диски. Ця функція також може використовувати Augeas, отже усі наявні дескриптори Augeas буде закрито.

Ця функція не може розшифровувати зашифровані диски. Якщо диск зашифровано, про його розшифровування має подбати (надати відповідні ключі) функція виклику.

З докладнішими даними можна ознайомитися у розділі "INSPECTION".

Див. також "guestfs_list_filesystems".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.5.3)

guestfs_is_blockdev

 int
 guestfs_is_blockdev (guestfs_h *g,
                      const char *path);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_is_blockdev_opts" без додаткових аргументів.

(Додано у 1.5.10)

guestfs_is_blockdev_opts

 int
 guestfs_is_blockdev_opts (guestfs_h *g,
                           const char *path,
                           ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_IS_BLOCKDEV_OPTS_FOLLOWSYMLINKS, int followsymlinks,

Повертає "true" і лише тоді, якщо існує блоковий пристрій із вказаною назвою "шлях".

Якщо додатковий прапорець "followsymlinks" має значення true, функція поверне true, якщо існує символічне посилання (або ланцюжок символічних посилань), який завершується блоковим пристроєм.

Ця команда лише шукає файли у файловій системі гостьової системи. У цій команді як параметр "шлях" не можна використовувати розділи і блокові пристрої libguestfs (наприклад /dev/sda).

Див. також "guestfs_stat".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.5.10)

guestfs_is_blockdev_opts_va

 int
 guestfs_is_blockdev_opts_va (guestfs_h *g,
                              const char *path,
                              va_list args);

Це «варіант з va_list» "guestfs_is_blockdev_opts"

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_blockdev_opts_argv

 int
 guestfs_is_blockdev_opts_argv (guestfs_h *g,
                                const char *path,
                                const struct guestfs_is_blockdev_opts_argv *optargs);

Це «варіант з argv» "guestfs_is_blockdev_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_busy

 int
 guestfs_is_busy (guestfs_h *g);

Ця функція завжди повертає false. Ця функція вважається застарілою і не має новішого аналогу. Не використовуйте цю функцію.

Докладніший опис станів наведено у підручнику з guestfs(3).

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.0.2)

guestfs_is_chardev

 int
 guestfs_is_chardev (guestfs_h *g,
                     const char *path);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_is_chardev_opts" без додаткових аргументів.

(Додано у 1.5.10)

guestfs_is_chardev_opts

 int
 guestfs_is_chardev_opts (guestfs_h *g,
                          const char *path,
                          ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_IS_CHARDEV_OPTS_FOLLOWSYMLINKS, int followsymlinks,

Повертає "true" і лише тоді, якщо існує символьний пристрій із вказаною назвою "шлях".

Якщо додатковий прапорець "followsymlinks" має значення true, функція поверне true, якщо існує символічне посилання (або ланцюжок символічних посилань), який завершується символьним пристроєм.

Див. також "guestfs_stat".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.5.10)

guestfs_is_chardev_opts_va

 int
 guestfs_is_chardev_opts_va (guestfs_h *g,
                             const char *path,
                             va_list args);

Це «варіант з va_list» "guestfs_is_chardev_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_chardev_opts_argv

 int
 guestfs_is_chardev_opts_argv (guestfs_h *g,
                               const char *path,
                               const struct guestfs_is_chardev_opts_argv *optargs);

Це «варіант з argv» "guestfs_is_chardev_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_config

 int
 guestfs_is_config (guestfs_h *g);

Повертає true тоді і лише тоді, коли налаштовується цей дескриптор (у стані "CONFIG").

Докладніший опис станів наведено у підручнику з guestfs(3).

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.0.2)

guestfs_is_dir

 int
 guestfs_is_dir (guestfs_h *g,
                 const char *path);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_is_dir_opts" без додаткових аргументів.

(Додано у 0.8)

guestfs_is_dir_opts

 int
 guestfs_is_dir_opts (guestfs_h *g,
                      const char *path,
                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_IS_DIR_OPTS_FOLLOWSYMLINKS, int followsymlinks,

Повертає "true" і лише тоді, якщо існує каталог із вказаною назвою "шлях". Зауважте, що команда повертає false для усіх інших об'єктів, зокрема файлів.

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

Див. також "guestfs_stat".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_is_dir_opts_va

 int
 guestfs_is_dir_opts_va (guestfs_h *g,
                         const char *path,
                         va_list args);

Це «варіант з va_list» "guestfs_is_dir_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_dir_opts_argv

 int
 guestfs_is_dir_opts_argv (guestfs_h *g,
                           const char *path,
                           const struct guestfs_is_dir_opts_argv *optargs);

Це «варіант з argv» "guestfs_is_dir_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_fifo

 int
 guestfs_is_fifo (guestfs_h *g,
                  const char *path);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_is_fifo_opts" без додаткових аргументів.

(Додано у 1.5.10)

guestfs_is_fifo_opts

 int
 guestfs_is_fifo_opts (guestfs_h *g,
                       const char *path,
                       ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_IS_FIFO_OPTS_FOLLOWSYMLINKS, int followsymlinks,

Повертає "true" і лише тоді, якщо існує FIFO (іменований канал) із вказаною назвою "шлях".

Якщо додатковий прапорець "followsymlinks" має значення true, функція поверне true, якщо існує символічне посилання (або ланцюжок символічних посилань), який завершується FIFO.

Див. також "guestfs_stat".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.5.10)

guestfs_is_fifo_opts_va

 int
 guestfs_is_fifo_opts_va (guestfs_h *g,
                          const char *path,
                          va_list args);

Це «варіант з va_list» "guestfs_is_fifo_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_fifo_opts_argv

 int
 guestfs_is_fifo_opts_argv (guestfs_h *g,
                            const char *path,
                            const struct guestfs_is_fifo_opts_argv *optargs);

Це «варіант з argv» "guestfs_is_fifo_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_file

 int
 guestfs_is_file (guestfs_h *g,
                  const char *path);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_is_file_opts" без додаткових аргументів.

(Додано у 0.8)

guestfs_is_file_opts

 int
 guestfs_is_file_opts (guestfs_h *g,
                       const char *path,
                       ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, int followsymlinks,

Повертає "true" і лише тоді, якщо існує звичайний файл із вказаною назвою "шлях". Зауважте, що команда повертає false для усіх інших об'єктів, зокрема каталогів.

Якщо додатковий прапорець "followsymlinks" має значення true, функція поверне true, якщо існує символічне посилання (або ланцюжок символічних посилань), який завершується файлом.

Див. також "guestfs_stat".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_is_file_opts_va

 int
 guestfs_is_file_opts_va (guestfs_h *g,
                          const char *path,
                          va_list args);

Це «варіант з va_list» "guestfs_is_file_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_file_opts_argv

 int
 guestfs_is_file_opts_argv (guestfs_h *g,
                            const char *path,
                            const struct guestfs_is_file_opts_argv *optargs);

Це «варіант з argv» "guestfs_is_file_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_launching

 int
 guestfs_is_launching (guestfs_h *g);

Ця функція повертає true тоді і лише тоді, коли дескриптор запускає підпроцес (у стані "LAUNCHING").

Докладніший опис станів наведено у підручнику з guestfs(3).

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.0.2)

guestfs_is_lv

 int
 guestfs_is_lv (guestfs_h *g,
                const char *mountable);

Ця команда перевіряє, чи є "монтування" логічним томом, і повертає true тоді і лише тоді, коли це так.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.5.3)

guestfs_is_ready

 int
 guestfs_is_ready (guestfs_h *g);

Ця функція повертає true тоді і лише тоді, коли дескриптор готовий до отримання команд (у стані "READY").

Докладніший опис станів наведено у підручнику з guestfs(3).

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.0.2)

guestfs_is_socket

 int
 guestfs_is_socket (guestfs_h *g,
                    const char *path);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_is_socket_opts" без додаткових аргументів.

(Додано у 1.5.10)

guestfs_is_socket_opts

 int
 guestfs_is_socket_opts (guestfs_h *g,
                         const char *path,
                         ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_IS_SOCKET_OPTS_FOLLOWSYMLINKS, int followsymlinks,

Повертає "true" і лише тоді, якщо існує сокет домену UNIX із вказаною назвою "шлях".

Якщо додатковий прапорець "followsymlinks" має значення true, функція поверне true, якщо існує символічне посилання (або ланцюжок символічних посилань), який завершується сокетом.

Див. також "guestfs_stat".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.5.10)

guestfs_is_socket_opts_va

 int
 guestfs_is_socket_opts_va (guestfs_h *g,
                            const char *path,
                            va_list args);

Це «варіант з va_list» "guestfs_is_socket_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_is_socket_opts_argv

 int
 guestfs_is_socket_opts_argv (guestfs_h *g,
                              const char *path,
                              const struct guestfs_is_socket_opts_argv *optargs);

Це «варіант з argv» "guestfs_is_socket_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 int
 guestfs_is_symlink (guestfs_h *g,
                     const char *path);

Повертає "true" і лише тоді, якщо існує символічне посилання із вказаною назвою "шлях".

Див. також "guestfs_stat".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.5.10)

guestfs_is_whole_device

 int
 guestfs_is_whole_device (guestfs_h *g,
                          const char *device);

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

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.21.9)

guestfs_is_zero

 int
 guestfs_is_zero (guestfs_h *g,
                  const char *path);

Повертає true тоді і лише тоді, коли файл існує і є порожнім або містить лише нульові байти.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.11.8)

guestfs_is_zero_device

 int
 guestfs_is_zero_device (guestfs_h *g,
                         const char *device);

Повертає true тоді і лише тоді, коли пристрій існує і містить лише нульові байти.

Зауважте, що на пристроях великого об'єму виконання цієї програми може бути досить тривалим.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.11.8)

guestfs_isoinfo

 struct guestfs_isoinfo *
 guestfs_isoinfo (guestfs_h *g,
                  const char *isofile);

Це те саме, що і "guestfs_isoinfo_device", але працює для файла ISO, розташованого всередині якоїсь іншої змонтованої файлової системи. Зауважте, що у типовому випадку, коли ви додали файл ISO як пристрій libguestfs, вам не слід викликати цю команду. Замість цього, слід викликати "guestfs_isoinfo_device".

Ця функція повертає "struct guestfs_isoinfo *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_isoinfo".

(Додано у 1.17.19)

guestfs_isoinfo_device

 struct guestfs_isoinfo *
 guestfs_isoinfo_device (guestfs_h *g,
                         const char *device);

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

Зазвичай, ефективніше скористатися командою isoinfo(1) з параметром -d у основній системі для аналізу файлів ISO, а не використовувати засоби libguestfs.

For information on the primary volume descriptor fields, see https://wiki.osdev.org/ISO_9660#The_Primary_Volume_Descriptor

Ця функція повертає "struct guestfs_isoinfo *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_isoinfo".

(Додано у 1.17.19)

guestfs_journal_close

 int
 guestfs_journal_close (guestfs_h *g);

Завершити роботу обробника журналу.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "journal". Див. також "guestfs_feature_available".

(Додано у 1.23.11)

guestfs_journal_get

 struct guestfs_xattr_list *
 guestfs_journal_get (guestfs_h *g);

Читає поточний запис журналу. Команда повертає усі поля у журналі як набір пар значень "(назва_атрибута, значення_атрибута)". Значенням "назва_атрибута" є назва поля (рядок).

Значенням "значення_атрибута" є значення поля (двійковий набір даних, часто, але не завжди, рядок). Будь ласка, зауважте, що "значення_атрибута" є масивом байтів, а не рядком C, який завершується символом \0.

Дані може бути обрізано за пороговою довжиною (див. "guestfs_journal_set_data_threshold", "guestfs_journal_get_data_threshold").

Якщо ви не обмежуєте порогове значення даних (0), ця команда може прочитати запис журналу довільного розміру, тобто розмір не обмежуватиметься протоколом libguestfs.

Ця функція повертає "struct guestfs_xattr_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_xattr_list".

Працездатність цієї функції залежить від можливості "journal". Див. також "guestfs_feature_available".

(Додано у 1.23.11)

guestfs_journal_get_data_threshold

 int64_t
 guestfs_journal_get_data_threshold (guestfs_h *g);

Отримує поточне значення порогу даних для читання записів журналу. Це значення є підказкою журналу щодо того, що засіб журналювання може обрізати поля даних до цього розміру під час читання (зауважте також, що засіб журналювання може і не обрізати їх). Якщо команда повертає 0, порогове обмеження не встановлено.

Див. також "guestfs_journal_set_data_threshold"

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "journal". Див. також "guestfs_feature_available".

(Додано у 1.23.11)

guestfs_journal_get_realtime_usec

 int64_t
 guestfs_journal_get_realtime_usec (guestfs_h *g);

Отримує поточну часову позначку (за годинником системи) поточного запису журналу

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "journal". Див. також "guestfs_feature_available".

(Додано у 1.27.18)

guestfs_journal_next

 int
 guestfs_journal_next (guestfs_h *g);

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

Ця команда повертає булеве значення, яке повідомляє вам, чи існують ще записи журналу для читання. Значення "true" означає, що ви можете прочитати наступний запис (наприклад, за допомогою "guestfs_journal_get"), а значення "false" означає, що досягнуто кінця журналу.

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "journal". Див. також "guestfs_feature_available".

(Додано у 1.23.11)

guestfs_journal_open

 int
 guestfs_journal_open (guestfs_h *g,
                       const char *directory);

Відкриває журналу systemd, який зберігається у каталозі каталог. Усі раніше відкриті дескриптори журналу при цьому буде закрито.

Вміст журналу можна прочитати за допомогою "guestfs_journal_next" і "guestfs_journal_get".

Після завершення використання журналу вам слід закрити дескриптор викликом "guestfs_journal_close".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "journal". Див. також "guestfs_feature_available".

(Додано у 1.23.11)

guestfs_journal_set_data_threshold

 int
 guestfs_journal_set_data_threshold (guestfs_h *g,
                                     int64_t threshold);

Встановлює значення порогу даних для читання записів журналу. Це значення є підказкою журналу щодо того, що засіб журналювання може обрізати поля даних до цього розміру під час читання (зауважте також, що засіб журналювання може і не обрізати їх). Якщо ви встановите значення 0, порогове обмеження застосовано не буде.

Див. також "guestfs_journal_get_data_threshold".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "journal". Див. також "guestfs_feature_available".

(Додано у 1.23.11)

guestfs_journal_skip

 int64_t
 guestfs_journal_skip (guestfs_h *g,
                       int64_t skip);

Прокручування записів журналу вперед ("пропуск ≥ 0") або назад ("пропуск < 0").

Команда повертає кількість записів, на яку насправді вдалося просунутися (зауважте, що "rskip ≥ 0"). Якщо повернуте значення не дорівнює пропуску за модулем ("|пропуск|"), ви досягли кінця або початку журналу.

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "journal". Див. також "guestfs_feature_available".

(Додано у 1.23.11)

guestfs_kill_subprocess

 int
 guestfs_kill_subprocess (guestfs_h *g);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_shutdown".

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

Ця команда завершує роботу гіпервізору.

Не викликайте цю функцію. Замість неї слід використовувати "guestfs_shutdown".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_launch

 int
 guestfs_launch (guestfs_h *g);

Вам слід викликати цю команду після налаштовування дескриптора (наприклад, після додавання дисків), але перед виконанням із ним будь-яких інших дій.

Не викликайте "guestfs_launch" двічі для одного і того самого дескриптора. Хоча такий виклик і не призведе до помилки (з історичних причин), точну поведінку бібліотеки у цьому випадку не визначено. Дескриптори є доволі невибагливими до ресурсів об'єктами, тому варто створювати окремий новий дескриптор для кожного запуску.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 0.3)

guestfs_lchown

 int
 guestfs_lchown (guestfs_h *g,
                 int owner,
                 int group,
                 const char *path);

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

Передбачено підтримку лише числових uid і gid. Якщо ви хочете скористатися текстовими назвами, вам доведеться знайти і обробити файл паролів власноруч (підтримка Augeas робить це завдання відносно простим).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.77)

guestfs_ldmtool_create_all

 int
 guestfs_ldmtool_create_all (guestfs_h *g);

Ця функція сканує усі блокові пристрої, шукаючи динамічні томи дисків і розділи, а потім створює пристрої для усіх знайдених записів.

Викликати "guestfs_list_ldm_volumes" і "guestfs_list_ldm_partitions" для повернення списку усіх пристроїв.

Зауважте, що зазвичай вам не потрібно викликати цю команду явним чином, оскільки вона виконується автоматично під час виконання "guestfs_launch". Втім, може виникнути потреба у виклику цієї функції, якщо ви з'єднували диски у «гарячому» режимі або щойно створили динамічний диск Windows.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_ldmtool_diskgroup_disks

 char **
 guestfs_ldmtool_diskgroup_disks (guestfs_h *g,
                                  const char *diskgroup);

Повертає диски у групі динамічних дисків Windows. Значенням параметра "diskgroup" має бути GUID групи дисків, одним із елементів списку, який повертає "guestfs_ldmtool_scan".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_ldmtool_diskgroup_name

 char *
 guestfs_ldmtool_diskgroup_name (guestfs_h *g,
                                 const char *diskgroup);

Повертає назву групи динамічних дисків Windows. Значенням параметра "diskgroup" має бути GUID групи дисків, одним із елементів списку, який повертає "guestfs_ldmtool_scan".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_ldmtool_diskgroup_volumes

 char **
 guestfs_ldmtool_diskgroup_volumes (guestfs_h *g,
                                    const char *diskgroup);

Повертає томи у групі динамічних дисків Windows. Значенням параметра "diskgroup" має бути GUID групи дисків, одним із елементів списку, який повертає "guestfs_ldmtool_scan".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_ldmtool_remove_all

 int
 guestfs_ldmtool_remove_all (guestfs_h *g);

Загалом, ця функція є оберненою до "guestfs_ldmtool_create_all". Вона вилучає прив'язки пристроїв для усіх томів динамічних дисків Windows.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_ldmtool_scan

 char **
 guestfs_ldmtool_scan (guestfs_h *g);

Ця функція шукає динамічні диски Windows. Вона повертає список ідентифікаторів (GUID) для усіх груп дисків, які було знайдено. Ці ідентифікатори можна передавати іншим функціям "guestfs_ldmtool_*".

Ця функція сканує усі блокові пристрої. Щоб виконати сканування якоїсь підмножини блокових пристроїв, скористайтеся функцією "guestfs_ldmtool_scan_devices".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_ldmtool_scan_devices

 char **
 guestfs_ldmtool_scan_devices (guestfs_h *g,
                               char *const *devices);

Ця функція шукає динамічні диски Windows. Вона повертає список ідентифікаторів (GUID) для усіх груп дисків, які було знайдено. Ці ідентифікатори можна передавати іншим функціям "guestfs_ldmtool_*".

Параметр "пристрої" є списком блокових пристроїв, на яких слід виконати пошук. Якщо список є порожнім, буде виконано сканування усіх блокових пристроїв.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_ldmtool_volume_hint

 char *
 guestfs_ldmtool_volume_hint (guestfs_h *g,
                              const char *diskgroup,
                              const char *volume);

Повертає поле підказки для тому із назвою "том" у групі дисків із GUID "група_дисків". Таку підказку може бути не визначено. Якщо підказку не визначено, команда поверне порожній рядок. У полі підказки часто, але не завжди, міститься назва диска у Windows, наприклад "E:".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_ldmtool_volume_partitions

 char **
 guestfs_ldmtool_volume_partitions (guestfs_h *g,
                                    const char *diskgroup,
                                    const char *volume);

Повертає список розділів на томі із назвою "том" у групі дисків із GUID "група_дисків".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_ldmtool_volume_type

 char *
 guestfs_ldmtool_volume_type (guestfs_h *g,
                              const char *diskgroup,
                              const char *volume);

Повертає тип тому із назвою "том" у групі дисків із GUID "група_дисків".

Можливими типами томів, які повертає ця команда є такі: "simple", "spanned", "striped", "mirrored", "raid5". Також може бути повернуто інші типи.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_lgetxattr

 char *
 guestfs_lgetxattr (guestfs_h *g,
                    const char *path,
                    const char *name,
                    size_t *size_r);

Отримати окремий розширений атрибут з файла "шлях" за назвою "назва". Якщо "шлях" є символічним посиланням, ця команда поверне розширений атрибут з символічного посилання.

Зазвичай, краще отримати усі розширені атрибути файла одним викликом "guestfs_getxattrs". Втім, у реалізації деяких файлових систем у Linux є вади, які заважають отримання повного списку атрибутів. Для таких файлових систем (найпоширенішою з яких є ntfs-3g) вам доведеться визначити назви потрібних вам розширених атрибутів і викликати цю функцію.

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

Див. також "guestfs_lgetxattrs", "guestfs_getxattr", attr(5).

Ця функція повертає рядок або NULL, якщо станеться помилка. Розмір повернутого буфера буд записано до *size_r. Після використання функція, яка викликає цю функцію, має звільнити повернутий буфер.

Працездатність цієї функції залежить від можливості "linuxxattrs". Див. також "guestfs_feature_available".

(Додано у 1.7.24)

guestfs_lgetxattrs

 struct guestfs_xattr_list *
 guestfs_lgetxattrs (guestfs_h *g,
                     const char *path);

Те саме, що і "guestfs_getxattrs", але якщо "шлях" є символічним посиланням, повертає розширені атрибути самого символічного посилання.

Ця функція повертає "struct guestfs_xattr_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_xattr_list".

Працездатність цієї функції залежить від можливості "linuxxattrs". Див. також "guestfs_feature_available".

(Додано у 1.0.59)

guestfs_list_9p

 char **
 guestfs_list_9p (guestfs_h *g);

Виводить список усіх файлових систем 9p, з'єднаних із гостьовою системою. Повертає список теґів монтування.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.11.12)

guestfs_list_devices

 char **
 guestfs_list_devices (guestfs_h *g);

Вивести список усіх блокових пристроїв.

Буде повернуто повні назви блокових пристроїв, наприклад /dev/sda.

Див. також "guestfs_list_filesystems".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 0.4)

guestfs_list_disk_labels

 char **
 guestfs_list_disk_labels (guestfs_h *g);

Якщо ви додаєте диски з використанням необов'язкового параметра "label" команди "guestfs_add_drive_opts", ви можете скористатися цією командою для прив'язування міток до простих блокових пристроїв та назв розділів (наприклад /dev/sda та /dev/sda1).

Ця команда повертає таблицю хешів, у якій ключами є мітки дисків (без префіксів /dev/disk/guestfs), а значеннями є повні назви простих блокових пристроїв та розділів (наприклад /dev/sda і /dev/sda1).

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Масив рядків завжди матиме довжину "2n+1", значення "n" ключів і значень йтимуть одне за одним послідовно, завершуючись кінцевим записом NULL. Після використання слід звільнити рядки і масив.

(Додано у 1.19.49)

guestfs_list_dm_devices

 char **
 guestfs_list_dm_devices (guestfs_h *g);

Виводить список усіх пристроїв засобу прив'язування пристроїв.

У повернутому списку міститимуться пристрої /dev/mapper/*, наприклад, пристрої, створені попереднім викликом "guestfs_luks_open".

Пристрої засобу прив'язування пристроїв, які відповідають логічним томам не буде включено до повернутого списку. Якщо вам потрібен список логічних томів, скористайтеся командою "guestfs_lvs".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.11.15)

guestfs_list_filesystems

 char **
 guestfs_list_filesystems (guestfs_h *g);

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

Повернуте значення є хешем, де ключами є пристрої, на яких містяться файлові системи, а значеннями є типи файлових систем. Приклад:

 "/dev/sda1" => "ntfs"
 "/dev/sda2" => "ext2"
 "/dev/vg_guest/lv_root" => "ext4"
 "/dev/vg_guest/lv_swap" => "swap"

Ключем не обов'язково є блоковий пристрій. Ним також може бути не зовсім прозорий рядок «mountable», який можна передавати "guestfs_mount".

Значенням може бути особливий рядок «unknown», який означає, що вміст пристрою не вдалося визначити або пристрій є порожнім. Рядок «swap» означає розділ резервної пам'яті Linux.

У libguestfs ≤ 1.36 ця команда запускає інші команди libguestfs, серед яких можуть бути команди "guestfs_mount" і "guestfs_umount". Тому її слід віддавати поближче до launch і лише тоді, коли ще нічого не змонтовано. Це обмеження було усунено у libguestfs ≥ 1.38.

Не усі файлові системи із повернутого списку є придатними до монтування. Зокрема, у списку можуть бути розділи резервної пам'яті. Крім того, ця команда не перевіряє, чи є кожна зі знайдених файлових систем коректною і придатною до монтування. Деякі із систем можуть бути придатними до монтування, але потребувати спеціальних параметрів. Файлові системи можуть належати різним логічним операційними системами (для пошуку операційних систем скористайтеся командою "guestfs_inspect_os").

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Масив рядків завжди матиме довжину "2n+1", значення "n" ключів і значень йтимуть одне за одним послідовно, завершуючись кінцевим записом NULL. Після використання слід звільнити рядки і масив.

(Додано у 1.5.15)

guestfs_list_ldm_partitions

 char **
 guestfs_list_ldm_partitions (guestfs_h *g);

Ця функція повертає усі розділи динамічних дисків Windows, які було знайдено на час запуску. Повернутим значенням є список назв пристроїв.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_list_ldm_volumes

 char **
 guestfs_list_ldm_volumes (guestfs_h *g);

Ця функція повертає усі томи динамічних дисків Windows, які було знайдено на час запуску. Повернутим значенням є список назв пристроїв.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "ldm". Див. також "guestfs_feature_available".

(Додано у 1.20.0)

guestfs_list_md_devices

 char **
 guestfs_list_md_devices (guestfs_h *g);

Вивести список усіх пристроїв md у Linux.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.15.4)

guestfs_list_partitions

 char **
 guestfs_list_partitions (guestfs_h *g);

Вивести усі розділи, визначені як блокові пристрої.

Буде повернуто назви пристроїв розділів повністю, наприклад /dev/sda1

Не повертає логічних томів. Для логічних томів слід викликати "guestfs_lvs".

Див. також "guestfs_list_filesystems".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 0.4)

guestfs_ll

 char *
 guestfs_ll (guestfs_h *g,
             const char *directory);

List the files in directory (relative to the root directory, there is no cwd) in the format of "ls -la".

Ця команда здебільшого корисна для інтерактивних сеансів. Її не призначено для випадків, коли ви намагаєтеся обробити виведений командою рядок.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 0.4)

guestfs_llz

 char *
 guestfs_llz (guestfs_h *g,
              const char *directory);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_lgetxattrs".

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

List the files in directory in the format of "ls -laZ".

Ця команда здебільшого корисна для інтерактивних сеансів. Її не призначено для випадків, коли ви намагаєтеся обробити виведений командою рядок.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.17.6)

guestfs_ln

 int
 guestfs_ln (guestfs_h *g,
             const char *target,
             const char *linkname);

This command creates a hard link.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_ln_f

 int
 guestfs_ln_f (guestfs_h *g,
               const char *target,
               const char *linkname);

This command creates a hard link, removing the link "linkname" if it exists already.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_ln_s

 int
 guestfs_ln_s (guestfs_h *g,
               const char *target,
               const char *linkname);

Ця команда створює символічне посилання за допомогою команди "ln -s".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_ln_sf

 int
 guestfs_ln_sf (guestfs_h *g,
                const char *target,
                const char *linkname);

Ця команда створює символічне посилання за допомогою команди "ln -sf". Наявність параметра -f вилучає посилання ("назва_посилання"), якщо таке вже існує.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_lremovexattr

 int
 guestfs_lremovexattr (guestfs_h *g,
                       const char *xattr,
                       const char *path);

Те саме, що і "guestfs_removexattr", але якщо "path" є символічним посиланням, вилучає розширені атрибути самого символічного посилання.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxxattrs". Див. також "guestfs_feature_available".

(Додано у 1.0.59)

guestfs_ls

 char **
 guestfs_ls (guestfs_h *g,
             const char *directory);

List the files in directory (relative to the root directory, there is no cwd). The "." and ".." entries are not returned, but hidden files are shown.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 0.4)

guestfs_ls0

 int
 guestfs_ls0 (guestfs_h *g,
              const char *dir,
              const char *filenames);

Цю спеціалізовану команду використовують для отримання списку назв файлів у каталозі "каталог". Список назв файлів буде записано до локального файла назви_файлів (у основній системі).

У файлі результатів обробки назви файлів буде відокремлено символами "\0".

Серед записів результатів не буде "." і "..". Назви файлів не упорядковуватимуться.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.32)

guestfs_lsetxattr

 int
 guestfs_lsetxattr (guestfs_h *g,
                    const char *xattr,
                    const char *val,
                    int vallen,
                    const char *path);

Те саме, що і "guestfs_setxattr", але якщо "path" є символічним посиланням, встановлює розширений атрибут самого символічного посилання.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxxattrs". Див. також "guestfs_feature_available".

(Додано у 1.0.59)

guestfs_lstat

 struct guestfs_stat *
 guestfs_lstat (guestfs_h *g,
                const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_lstatns".

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

Повертає дані щодо файла за вказаним шляхом "шлях".

Те саме, що і "guestfs_stat", але якщо "path" є символічним посиланням, статистику буде зібрано для цього посилання, а не для запису, на який воно посилається.

Це те саме, що системний виклик lstat(2).

Ця функція повертає "struct guestfs_stat *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_stat".

(Додано у 1.9.2)

guestfs_lstatlist

 struct guestfs_stat_list *
 guestfs_lstatlist (guestfs_h *g,
                    const char *path,
                    char *const *names);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_lstatnslist".

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

Цей виклик надає змогу виконувати дію "guestfs_lstat" над декількома файлами, які зберігаються у каталозі "path". Значенням аргументу "names" є список файлів у цьому каталозі.

Команда повертає список структур статистичних даних із однозначною відповідністю до списку "назви". Якщо якоїсь із назв не існує або для якоїсь із назв не вдасться зібрати статистичні дані, для поля "st_ino" структури буде встановлено значення "-1".

Цю команду призначено для програм, яким потрібно ефективно будувати список вмісту каталогів без виконання багатьох обходів. Див. також "guestfs_lxattrlist", якщо потрібний подібний ефективний підхід для отримання розширених атрибутів.

Ця функція повертає "struct guestfs_stat_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_stat_list".

(Додано у 1.0.77)

guestfs_lstatns

 struct guestfs_statns *
 guestfs_lstatns (guestfs_h *g,
                  const char *path);

Повертає дані щодо файла за вказаним шляхом "шлях".

Те саме, що і "guestfs_statns", але якщо "path" є символічним посиланням, статистику буде зібрано для цього посилання, а не для запису, на який воно посилається.

Це те саме, що системний виклик lstat(2).

Ця функція повертає "struct guestfs_statns *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_statns".

(Додано у 1.27.53)

guestfs_lstatnslist

 struct guestfs_statns_list *
 guestfs_lstatnslist (guestfs_h *g,
                      const char *path,
                      char *const *names);

Цей виклик надає змогу виконувати дію "guestfs_lstatns" над декількома файлами, які зберігаються у каталозі "шлях". Значенням аргументу "назви" є список файлів у цьому каталозі.

Команда повертає список структур статистичних даних із однозначною відповідністю до списку "назви". Якщо якоїсь із назв не існує або для якоїсь із назв не вдасться зібрати статистичні дані, для поля "st_ino" структури буде встановлено значення "-1".

Цю команду призначено для програм, яким потрібно ефективно будувати список вмісту каталогів без виконання багатьох обходів. Див. також "guestfs_lxattrlist", якщо потрібний подібний ефективний підхід для отримання розширених атрибутів.

Ця функція повертає "struct guestfs_statns_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_statns_list".

(Додано у 1.27.53)

guestfs_luks_add_key

 int
 guestfs_luks_add_key (guestfs_h *g,
                       const char *device,
                       const char *key,
                       const char *newkey,
                       int keyslot);

Ця команда додає новий ключ на пристрій LUKS "пристрій". Ключем "ключ" є будь-який наявний ключ, його буде використано для доступу до пристрою. Значенням параметра "новий_ключ" є новий ключ, який слід додати. Значенням параметра "слот_ключів" є слот ключів, який має бути замінено.

Зауважте, що якщо у слоті "keyslot" вже міститься ключ, успішно виконати цю команду не вдасться. Вам доведеться спочатку скористатися командою "guestfs_luks_kill_slot" для вилучення наявного ключа.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Ця функція отримує параметр ключа або пароля, тобто дані, які можуть бути конфіденційними. Щоб дізнатися більше про це, ознайомтеся із розділом "КЛЮЧІ І ПАРОЛІ".

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Додано у 1.5.2)

guestfs_luks_close

 int
 guestfs_luks_close (guestfs_h *g,
                     const char *device);

This function is deprecated. In new code, use the "guestfs_cryptsetup_close" call instead.

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

Ця команда закриває пристрій LUKS, який раніше було створено за допомогою "guestfs_luks_open" або "guestfs_luks_open_ro". Значенням параметра "device" має бути назва пристрою прив'язки LUKS (тобто /dev/mapper/назва_прив'язки), а не назва підлеглого блокового пристрою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Додано у 1.5.1)

guestfs_luks_format

 int
 guestfs_luks_format (guestfs_h *g,
                      const char *device,
                      const char *key,
                      int keyslot);

This command erases existing data on "device" and formats the device as a LUKS encrypted device. "key" is the initial key, which is added to key slot "keyslot". (LUKS supports 8 key slots, numbered 0-7).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Ця функція отримує параметр ключа або пароля, тобто дані, які можуть бути конфіденційними. Щоб дізнатися більше про це, ознайомтеся із розділом "КЛЮЧІ І ПАРОЛІ".

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Додано у 1.5.2)

guestfs_luks_format_cipher

 int
 guestfs_luks_format_cipher (guestfs_h *g,
                             const char *device,
                             const char *key,
                             int keyslot,
                             const char *cipher);

Ця команда виконує ті самі дії, що і "guestfs_luks_format", але, крім того, надає вам змогу вказати використане "cipher".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Ця функція отримує параметр ключа або пароля, тобто дані, які можуть бути конфіденційними. Щоб дізнатися більше про це, ознайомтеся із розділом "КЛЮЧІ І ПАРОЛІ".

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Додано у 1.5.2)

guestfs_luks_kill_slot

 int
 guestfs_luks_kill_slot (guestfs_h *g,
                         const char *device,
                         const char *key,
                         int keyslot);

Ця команда вилучає ключ у слоті ключів "слот_ключів" із зашифрованого пристрою LUKS "пристрій". Значенням параметра "ключ" має бути один з інших ключів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Ця функція отримує параметр ключа або пароля, тобто дані, які можуть бути конфіденційними. Щоб дізнатися більше про це, ознайомтеся із розділом "КЛЮЧІ І ПАРОЛІ".

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Додано у 1.5.2)

guestfs_luks_open

 int
 guestfs_luks_open (guestfs_h *g,
                    const char *device,
                    const char *key,
                    const char *mapname);

This function is deprecated. In new code, use the "guestfs_cryptsetup_open" call instead.

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

Ця команда відкриває блоковий пристрій, який було зашифровано відповідно до стандарту Linux Unified Key Setup (LUKS).

"пристрій" — шифрований блоковий пристрій або розділ.

Засіб виклику має надати один з ключів, пов'язаних із блоковим пристроєм LUKS, у параметрі "ключ".

Ця команда створює блоковий пристрій із назвою /dev/mapper/назва_прив'язки. Читання та запис на цій блоковий пристрій відбувається із розшифровуванням та шифруванням на підлеглому пристрої "пристрій".

Якщо на цьому блоковому пристрої містяться групи томів LVM, видимими їх можна зробити за допомогою виклику guestfs_lvm_scan зі значенням параметра "activate" рівним "true".

Скористайтеся командою "guestfs_list_dm_devices", щоб отримати список усіх пристроїв засобу прив'язування пристроїв.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Ця функція отримує параметр ключа або пароля, тобто дані, які можуть бути конфіденційними. Щоб дізнатися більше про це, ознайомтеся із розділом "КЛЮЧІ І ПАРОЛІ".

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Додано у 1.5.1)

guestfs_luks_open_ro

 int
 guestfs_luks_open_ro (guestfs_h *g,
                       const char *device,
                       const char *key,
                       const char *mapname);

This function is deprecated. In new code, use the "guestfs_cryptsetup_open" call instead.

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

Виконує ті самі дії, що і "guestfs_luks_open", але зі створенням прив'язки, яка придатна лише для читання даних.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Ця функція отримує параметр ключа або пароля, тобто дані, які можуть бути конфіденційними. Щоб дізнатися більше про це, ознайомтеся із розділом "КЛЮЧІ І ПАРОЛІ".

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Додано у 1.5.1)

guestfs_luks_uuid

 char *
 guestfs_luks_uuid (guestfs_h *g,
                    const char *device);

This returns the UUID of the LUKS device "device".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "luks". Див. також "guestfs_feature_available".

(Added in 1.41.9)

guestfs_lvcreate

 int
 guestfs_lvcreate (guestfs_h *g,
                   const char *logvol,
                   const char *volgroup,
                   int mbytes);

Ця команда створює логічний том LVM із назвою "логічний_том" у групі томів "група_томів" із розміром "мегабайти" мегабайтів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.8)

guestfs_lvcreate_free

 int
 guestfs_lvcreate_free (guestfs_h *g,
                        const char *logvol,
                        const char *volgroup,
                        int percent);

Створює логічний том LVM із назвою /dev/група_томів/логічний_том, який використовуватиме приблизно "відсоткиt" % залишкового вільного місця у групі томів. Найпоширенішим є використання значення "відсотки" рівного 100 для створення найбільшого можливого логічного тому.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.17.18)

guestfs_lvm_canonical_lv_name

 char *
 guestfs_lvm_canonical_lv_name (guestfs_h *g,
                                const char *lvname);

Ця команда перетворює альтернативні схеми найменування логічних томів, які можуть зустрітися на практиці, на канонічні назви. Приклад: /dev/mapper/група_томів-логічний_том буде перетворено на /dev/група_томів/логічний_том.

This command returns an error if the "lvname" parameter does not refer to a logical volume. In this case errno will be set to "EINVAL".

Див. також "guestfs_is_lv", "guestfs_canonical_device_name".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.24)

guestfs_lvm_clear_filter

 int
 guestfs_lvm_clear_filter (guestfs_h *g);

Скасовує дію "guestfs_lvm_set_filter". LVM зможе бачити усі блокові пристрої.

Крім того, ця команда спорожняє кеш LVM і виконує сканування груп томів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.5.1)

guestfs_lvm_remove_all

 int
 guestfs_lvm_remove_all (guestfs_h *g);

Ця команда вилучає усі логічні томи, групи томів та фізичні томи LVM.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.8)

guestfs_lvm_scan

 int
 guestfs_lvm_scan (guestfs_h *g,
                   int activate);

Ця команда виконує сканування усіх блокових пристроїв і повторно будує список фізичних томів, груп томів та логічних томів LVM.

Якщо параметр "activate" має значення "true", новознайдені групи томів і логічні томи активуються, тобто пристрої LV /dev/VG/LV стають видимими.

Коли запускається обробник libguestfs, він шукає наявні пристрої, тому, зазвичай, потреби у використанні цього програмного інтерфейсу немає. Втім, він є корисним, якщо ви додали новий пристрій або вилучили наявний пристрій (так трапляється при використанні програмного інтерфейсу "guestfs_luks_open").

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.39.8)

guestfs_lvm_set_filter

 int
 guestfs_lvm_set_filter (guestfs_h *g,
                         char *const *devices);

Ця команда встановлює фільтр пристроїв LVM так, що LVM зможе «бачити» лише блокові пристрої зі списку "пристрої" і ігноруватиме усі інші з'єднані блокові пристрої.

Там, де образи дисків містять дублікати фізичних томів або груп томів, ця команда корисна для того, щоб LVM ігнорувала такі дублікати і уникала конфліктів. Слід також зауважити, що існує два типи дублювання: клоновані фізичні томи або групи томів, які мають однакові UUIDs; та групи томів, які не було клоновано, але які мають однакові назви. За звичайних умов, створення таких дублікатів неможливе, але їх може бути створено за межами LVM, наприклад, внаслідок клонування образів дисків або втручання до метаданих LVM.

Крім того, ця команда спорожняє кеш LVM і виконує сканування груп томів.

Ви можете фільтрувати усі блокові пристрої або окремі розділи.

Цією командою не можна користуватися, якщо якась з груп томів використовується (наприклад, містить змонтовану файлову систему), навіть якщо ви не викидаєте за допомогою фільтрування цю групу томів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.5.1)

guestfs_lvremove

 int
 guestfs_lvremove (guestfs_h *g,
                   const char *device);

Вилучає логічний том LVM "пристрій", де "пристрій" — це шлях до логічного тому, наприклад /dev/група_томів/логічний_том.

Ви також можете вилучити усі логічні томи у групі томів, вказавши назву групи томів, /dev/група_томів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.0.13)

guestfs_lvrename

 int
 guestfs_lvrename (guestfs_h *g,
                   const char *logvol,
                   const char *newlogvol);

Перейменувати логічний том "логічний_том" на том із назвою "новий_логічний_том".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.83)

guestfs_lvresize

 int
 guestfs_lvresize (guestfs_h *g,
                   const char *device,
                   int mbytes);

Ця команда змінює розмір (розширює або стискає) наявний логічний том LVM до розміру "мегабайти". Якщо розміри тому зменшуються, дані у відкинутій у результаті зменшення розмірів частині тому буде втрачено.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.0.27)

guestfs_lvresize_free

 int
 guestfs_lvresize_free (guestfs_h *g,
                        const char *lv,
                        int percent);

This expands an existing logical volume "lv" so that it fills "pc" % of the remaining free space in the volume group. Commonly you would call this with pc = 100 which expands the logical volume as much as possible, using all remaining free space in the volume group.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.3.3)

guestfs_lvs

 char **
 guestfs_lvs (guestfs_h *g);

Виводить список усіх виявлених логічних томів. Є еквівалентом команди lvs(8).

Ця команда повертає список назв пристроїв логічних томів (наприклад /dev/VolGroup00/LogVol00).

Див. також "guestfs_lvs_full", "guestfs_list_filesystems".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.4)

guestfs_lvs_full

 struct guestfs_lvm_lv_list *
 guestfs_lvs_full (guestfs_h *g);

Виводить список усіх виявлених логічних томів. Є еквівалентом команди lvs(8). «Повна» версія включає усі поля.

Ця функція повертає "struct guestfs_lvm_lv_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_lvm_lv_list".

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.4)

guestfs_lvuuid

 char *
 guestfs_lvuuid (guestfs_h *g,
                 const char *device);

Ця команда повертає UUID логічного тому LVM "пристрій".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.87)

guestfs_lxattrlist

 struct guestfs_xattr_list *
 guestfs_lxattrlist (guestfs_h *g,
                     const char *path,
                     char *const *names);

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

On return you get a flat list of xattr structs which must be interpreted sequentially. The first xattr struct always has a zero-length "attrname". "attrval" in this struct is zero-length to indicate there was an error doing "guestfs_lgetxattr" for this file, or is a C string which is a decimal number (the number of following attributes for this file, which could be "0"). Then after the first xattr struct are the zero or more attributes for the first named file. This repeats for the second and subsequent files.

Цю команду призначено для програм, яким потрібно ефективно будувати список вмісту каталогів без виконання багатьох обходів. Див. також "guestfs_lstatlist", якщо потрібний подібний ефективний підхід для отримання стандартних статистичних даних.

Ця функція повертає "struct guestfs_xattr_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_xattr_list".

Працездатність цієї функції залежить від можливості "linuxxattrs". Див. також "guestfs_feature_available".

(Додано у 1.0.77)

guestfs_max_disks

 int
 guestfs_max_disks (guestfs_h *g);

Повертає максимальну кількість дисків, які може бути додано до дескриптора (наприклад, за допомогою "guestfs_add_drive_opts" та подібних команд).

Цю функцію було додано у libguestfs 1.19.7. У попередніх версіях libguestfs діяло обмеження у 25.

Див. "МАКСИМАЛЬНА КІЛЬКІСТЬ ДИСКІВ", щоб дізнатися більше про це.

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.19.7)

guestfs_md_create

 int
 guestfs_md_create (guestfs_h *g,
                    const char *name,
                    char *const *devices,
                    ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_MD_CREATE_MISSINGBITMAP, int64_t missingbitmap,
 GUESTFS_MD_CREATE_NRDEVICES, int nrdevices,
 GUESTFS_MD_CREATE_SPARE, int spare,
 GUESTFS_MD_CREATE_CHUNK, int64_t chunk,
 GUESTFS_MD_CREATE_LEVEL, const char *level,

Створює пристрій md (RAID) Linux із назвою "назва" на пристроях зі списку "пристрої".

Додатковими параметрами є:

"missingbitmap"
Бітова карта пристроїв, яких не вистачає. Якщо біт встановлено, це означає, що до масиву додано пристрій, якого не вистачає. Найменший біт відповідає першому пристрої у масиві.

Приклади:

Якщо "пристрої = ["/dev/sda"]" і "missingbitmap = 0x1", масивом-результатом має бути "[<missing>, "/dev/sda"]".

Якщо "пристрої = ["/dev/sda"]" і "missingbitmap = 0x2", масивом-результатом має бути "["/dev/sda", <missing>]".

Типовим є значення 0 (немає пристроїв, яких не вистачає).

Довжина запису "пристрої" + кількість бітів, встановлених у "missingbitmap" має дорівнювати "nrdevices" + "spare".

"nrdevices"
Кількість активних пристроїв RAID.

Якщо не встановлено, типовим значенням є довжина запису "пристрої" плюс кількість бітів, які встановлено у "missingbitmap".

"spare"
Кількість резервних пристроїв.

Якщо не встановлено, типовим значенням є 0.

"chunk"
Розмір фрагмента у байтах.
"level"
The RAID level, which can be one of: "linear", "raid0", 0, "stripe", "raid1", 1, "mirror", "raid4", 4, "raid5", 5, "raid6", 6, "raid10", 10. Some of these are synonymous, and more levels may be added in future.

Якщо не встановлено, типовим значенням є "raid1".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "mdadm". Див. також "guestfs_feature_available".

(Додано у 1.15.6)

guestfs_md_create_va

 int
 guestfs_md_create_va (guestfs_h *g,
                       const char *name,
                       char *const *devices,
                       va_list args);

Це «варіант з va_list» "guestfs_md_create".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_md_create_argv

 int
 guestfs_md_create_argv (guestfs_h *g,
                         const char *name,
                         char *const *devices,
                         const struct guestfs_md_create_argv *optargs);

Це «варіант з argv» "guestfs_md_create".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_md_detail

 char **
 guestfs_md_detail (guestfs_h *g,
                    const char *md);

This command exposes the output of "mdadm -DY <md>". The following fields are usually present in the returned hash. Other fields may also be present.

"level"
Рівень RAID пристрою MD.
"devices"
Кількість підлеглих пристроїв у пристрої MD.
"metadata"
Використана версія метаданих.
"uuid"
UUID пристрою MD.
"name"
Назва пристрою MD.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Масив рядків завжди матиме довжину "2n+1", значення "n" ключів і значень йтимуть одне за одним послідовно, завершуючись кінцевим записом NULL. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "mdadm". Див. також "guestfs_feature_available".

(Додано у 1.15.6)

guestfs_md_stat

 struct guestfs_mdstat_list *
 guestfs_md_stat (guestfs_h *g,
                  const char *md);

Ця команда повертає список підлеглих пристроїв, з яких складається окремий програмний масив RAID пристрою "md".

Щоб отримати список пристроїв програмних RAID, скористайтеся викликом "guestfs_list_md_devices".

Кожна повернута структура відповідає одному пристрою із додатковими відомостями щодо стану:

"mdstat_device"
Назва підлеглого пристрою.
"mdstat_index"
Індекс цього пристрою у масиві.
"mdstat_flags"
Прапорці, пов'язані із цим пристроєм. Ця рядок містить (неупорядкованими) нуль або більше таких прапорців:
"W"
write-mostly
"F"
пристрій працює з помилками
"S"
пристрій є запасною частиною RAID
"R"
заміна

Ця функція повертає "struct guestfs_mdstat_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_mdstat_list".

Працездатність цієї функції залежить від можливості "mdadm". Див. також "guestfs_feature_available".

(Додано у 1.17.21)

guestfs_md_stop

 int
 guestfs_md_stop (guestfs_h *g,
                  const char *md);

Ця команда деактивує масив MD із назвою "md". Роботу пристрою буде припинено, але без знищення або занулення.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "mdadm". Див. також "guestfs_feature_available".

(Додано у 1.15.6)

guestfs_mkdir

 int
 guestfs_mkdir (guestfs_h *g,
                const char *path);

Створює каталог із назвою "шлях".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_mkdir_mode

 int
 guestfs_mkdir_mode (guestfs_h *g,
                     const char *path,
                     int mode);

Ця команда створює каталог, встановлюючи початкові права доступу до нього у значення "режим".

Для типових файлових систем Linux справжній режим доступу, який встановлюється, визначається виразом "режим & ~umask & 01777". У файлових системах, які не є природними для Linux, цей режим може визначатися у інший спосіб.

Див. також "guestfs_mkdir", "guestfs_umask"

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.77)

guestfs_mkdir_p

 int
 guestfs_mkdir_p (guestfs_h *g,
                  const char *path);

Створює каталог із назвою "шлях" зі створенням усіх потрібних проміжних каталогів. Результат подібний до результату дії команди оболонки "mkdir -p".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_mkdtemp

 char *
 guestfs_mkdtemp (guestfs_h *g,
                  const char *tmpl);

Ця команда створює тимчасовий каталог. Значенням параметра "tmpl" має бути повна назва шляху до тимчасового каталогу із завершальними шістьма символами «XXXXXX».

Приклади: «/tmp/myprogXXXXXX» або «/Temp/myprogXXXXXX». Другий варіант є придатним для файлових систем Windows.

Буде повернуто назву тимчасового каталогу, який було створено.

Тимчасовий каталог буде створено із режимом доступу 0700, його власником буде користувач root.

За вилучення тимчасового каталогу і його вмісту після використання відповідає функція виклику.

Див. також mkdtemp(3)

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.54)

guestfs_mke2fs

 int
 guestfs_mke2fs (guestfs_h *g,
                 const char *device,
                 ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_MKE2FS_BLOCKSCOUNT, int64_t blockscount,
 GUESTFS_MKE2FS_BLOCKSIZE, int64_t blocksize,
 GUESTFS_MKE2FS_FRAGSIZE, int64_t fragsize,
 GUESTFS_MKE2FS_BLOCKSPERGROUP, int64_t blockspergroup,
 GUESTFS_MKE2FS_NUMBEROFGROUPS, int64_t numberofgroups,
 GUESTFS_MKE2FS_BYTESPERINODE, int64_t bytesperinode,
 GUESTFS_MKE2FS_INODESIZE, int64_t inodesize,
 GUESTFS_MKE2FS_JOURNALSIZE, int64_t journalsize,
 GUESTFS_MKE2FS_NUMBEROFINODES, int64_t numberofinodes,
 GUESTFS_MKE2FS_STRIDESIZE, int64_t stridesize,
 GUESTFS_MKE2FS_STRIPEWIDTH, int64_t stripewidth,
 GUESTFS_MKE2FS_MAXONLINERESIZE, int64_t maxonlineresize,
 GUESTFS_MKE2FS_RESERVEDBLOCKSPERCENTAGE, int reservedblockspercentage,
 GUESTFS_MKE2FS_MMPUPDATEINTERVAL, int mmpupdateinterval,
 GUESTFS_MKE2FS_JOURNALDEVICE, const char *journaldevice,
 GUESTFS_MKE2FS_LABEL, const char *label,
 GUESTFS_MKE2FS_LASTMOUNTEDDIR, const char *lastmounteddir,
 GUESTFS_MKE2FS_CREATOROS, const char *creatoros,
 GUESTFS_MKE2FS_FSTYPE, const char *fstype,
 GUESTFS_MKE2FS_USAGETYPE, const char *usagetype,
 GUESTFS_MKE2FS_UUID, const char *uuid,
 GUESTFS_MKE2FS_FORCECREATE, int forcecreate,
 GUESTFS_MKE2FS_WRITESBANDGROUPONLY, int writesbandgrouponly,
 GUESTFS_MKE2FS_LAZYITABLEINIT, int lazyitableinit,
 GUESTFS_MKE2FS_LAZYJOURNALINIT, int lazyjournalinit,
 GUESTFS_MKE2FS_TESTFS, int testfs,
 GUESTFS_MKE2FS_DISCARD, int discard,
 GUESTFS_MKE2FS_QUOTATYPE, int quotatype,
 GUESTFS_MKE2FS_EXTENT, int extent,
 GUESTFS_MKE2FS_FILETYPE, int filetype,
 GUESTFS_MKE2FS_FLEXBG, int flexbg,
 GUESTFS_MKE2FS_HASJOURNAL, int hasjournal,
 GUESTFS_MKE2FS_JOURNALDEV, int journaldev,
 GUESTFS_MKE2FS_LARGEFILE, int largefile,
 GUESTFS_MKE2FS_QUOTA, int quota,
 GUESTFS_MKE2FS_RESIZEINODE, int resizeinode,
 GUESTFS_MKE2FS_SPARSESUPER, int sparsesuper,
 GUESTFS_MKE2FS_UNINITBG, int uninitbg,

"mke2fs" використовується для створення файлових систем ext2, ext3 та ext4 на пристрої "пристрій".

Необов'язковий параметр "blockscount" визначає розмір файлової системи у блоках. Якщо його не вказано, типовим значенням буде розмір пристрою "пристрій". Зауважте, що якщо файлова система буде надто малою для того, щоб містити журнал, "mke2fs" без додаткових повідомлень створить файлову систему ext2.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.44)

guestfs_mke2fs_va

 int
 guestfs_mke2fs_va (guestfs_h *g,
                    const char *device,
                    va_list args);

Це «варіант з va_list» "guestfs_mke2fs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mke2fs_argv

 int
 guestfs_mke2fs_argv (guestfs_h *g,
                      const char *device,
                      const struct guestfs_mke2fs_argv *optargs);

Це «варіант з argv» "guestfs_mke2fs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mke2fs_J

 int
 guestfs_mke2fs_J (guestfs_h *g,
                   const char *fstype,
                   int blocksize,
                   const char *device,
                   const char *journal);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_mke2fs".

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

Ця команда створює файлову систему ext2/3/4 на пристрої "пристрій" із зовнішнім журналом на розділі "журнал". Вона еквівалентна до такої команди:

 mke2fs -t тип_файлової_системи -b розмір_блоку -J device=<журнал> <пристрій>

Див. також "guestfs_mke2journal".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.68)

guestfs_mke2fs_JL

 int
 guestfs_mke2fs_JL (guestfs_h *g,
                    const char *fstype,
                    int blocksize,
                    const char *device,
                    const char *label);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_mke2fs".

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

Ця команда створює файлову систему ext2/3/4 на пристрої "пристрій" із зовнішнім журналом на розділі із міткою "мітка".

Див. також "guestfs_mke2journal_L".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.68)

guestfs_mke2fs_JU

 int
 guestfs_mke2fs_JU (guestfs_h *g,
                    const char *fstype,
                    int blocksize,
                    const char *device,
                    const char *uuid);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_mke2fs".

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

Ця команда створює файлову систему ext2/3/4 на пристрої "пристрій" із зовнішнім журналом на розділі із UUID "uuid".

Див. також "guestfs_mke2journal_U".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxfsuuid". Див. також "guestfs_feature_available".

(Додано у 1.0.68)

guestfs_mke2journal

 int
 guestfs_mke2journal (guestfs_h *g,
                      int blocksize,
                      const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_mke2fs".

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

Ця команда створює зовнішній журнал ext2 на пристрої "пристрій". Вона еквівалентна до такої команди:

 mke2fs -O пристрій_журналу -b розмір_блоку пристрій

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.68)

guestfs_mke2journal_L

 int
 guestfs_mke2journal_L (guestfs_h *g,
                        int blocksize,
                        const char *label,
                        const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_mke2fs".

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

Ця команда створює зовнішній журнал ext2 на пристрої "пристрій" з міткою "мітка".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.68)

guestfs_mke2journal_U

 int
 guestfs_mke2journal_U (guestfs_h *g,
                        int blocksize,
                        const char *uuid,
                        const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_mke2fs".

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

Ця команда створює зовнішній журнал ext2 на пристрої "пристрій" із UUID "uuid".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxfsuuid". Див. також "guestfs_feature_available".

(Додано у 1.0.68)

guestfs_mkfifo

 int
 guestfs_mkfifo (guestfs_h *g,
                 int mode,
                 const char *path);

Ця команда створює FIFO (іменований канал даних) із назвою "path" і режимом доступу "mode". Це просто зручна обгортка до "guestfs_mknod".

На відміну від "guestfs_mknod", параметр "mode" має містити лише біти прав доступу.

На встановлений режим доступу впливає umask.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "mknod". Див. також "guestfs_feature_available".

(Додано у 1.0.55)

guestfs_mkfs

 int
 guestfs_mkfs (guestfs_h *g,
               const char *fstype,
               const char *device);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_mkfs_opts" без додаткових аргументів.

(Додано у 0.8)

guestfs_mkfs_opts

 int
 guestfs_mkfs_opts (guestfs_h *g,
                    const char *fstype,
                    const char *device,
                    ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_MKFS_OPTS_BLOCKSIZE, int blocksize,
 GUESTFS_MKFS_OPTS_FEATURES, const char *features,
 GUESTFS_MKFS_OPTS_INODE, int inode,
 GUESTFS_MKFS_OPTS_SECTORSIZE, int sectorsize,
 GUESTFS_MKFS_OPTS_LABEL, const char *label,

Ця функція створює файлову систему на пристрої "пристрій". Типом файлової системи буде "тип_файлової_системи", наприклад "ext3".

Необов'язковими аргументами є:

"blocksize"
Розмір блоку файлової системи. Підтримувані розміри блоків залежать від типу файлової системи, але типовими є 1024, 2048 і 4096 для файлових систем ext2/3 Linux.

Для VFAT і NTFS значення параметра "розмір_блоку" обробляється як бажаний розмір кластера.

Дані щодо розмірів блоків UFS можна знайти у підручнику до mkfs.ufs(8).

"features"
Передає параметр -O зовнішній програмі mkfs.

Для деяких типів файлових систем це надає змогу вибрати додаткові можливості файлової системи. Щоб дізнатися більше, див. mke2fs(8) та mkfs.ufs(8).

Цей додатковий параметр не можна використовувати для типів файлових систем "gfs" та "gfs2".

"inode"
Передає параметр -I зовнішній програмі mke2fs(8), тобто визначає розмір inode (у поточній версії лише для файлових систем ext2/3/4).
"sectorsize"
Передає параметр -S зовнішній програмі mkfs.ufs(8), тобто визначає розмір сектора для файлової системи ufs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_mkfs_opts_va

 int
 guestfs_mkfs_opts_va (guestfs_h *g,
                       const char *fstype,
                       const char *device,
                       va_list args);

Це «варіант з va_list» "guestfs_mkfs_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mkfs_opts_argv

 int
 guestfs_mkfs_opts_argv (guestfs_h *g,
                         const char *fstype,
                         const char *device,
                         const struct guestfs_mkfs_opts_argv *optargs);

Це «варіант з argv» "guestfs_mkfs_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mkfs_b

 int
 guestfs_mkfs_b (guestfs_h *g,
                 const char *fstype,
                 int blocksize,
                 const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_mkfs".

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

Цей виклик подібний до "guestfs_mkfs", але надає вам змогу контролювати розмір блоку отриманої файлової системи. Набір підтримуваних розмірів блоків залежить від типу файлової системи, але типовими є 1024, 2048 та 4096.

Для VFAT і NTFS значення параметра "розмір_блоку" обробляється як бажаний розмір кластера.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.68)

guestfs_mkfs_btrfs

 int
 guestfs_mkfs_btrfs (guestfs_h *g,
                     char *const *devices,
                     ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_MKFS_BTRFS_ALLOCSTART, int64_t allocstart,
 GUESTFS_MKFS_BTRFS_BYTECOUNT, int64_t bytecount,
 GUESTFS_MKFS_BTRFS_DATATYPE, const char *datatype,
 GUESTFS_MKFS_BTRFS_LEAFSIZE, int leafsize,
 GUESTFS_MKFS_BTRFS_LABEL, const char *label,
 GUESTFS_MKFS_BTRFS_METADATA, const char *metadata,
 GUESTFS_MKFS_BTRFS_NODESIZE, int nodesize,
 GUESTFS_MKFS_BTRFS_SECTORSIZE, int sectorsize,

Створює файлову систему btrfs із можливим встановленням усіх налаштувань. Щоб дізнатися більше про додаткові параметри, ознайомтеся зі сторінкою підручника mkfs.btrfs(8).

Оскільки дані файлової системи btrfs може бути розподілено між декількома пристроями, команда приймає непорожній список пристроїв.

Для створення файлових систем скористайтеся "guestfs_mkfs".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "btrfs". Див. також "guestfs_feature_available".

(Додано у 1.17.25)

guestfs_mkfs_btrfs_va

 int
 guestfs_mkfs_btrfs_va (guestfs_h *g,
                        char *const *devices,
                        va_list args);

Це «варіант з va_list» "guestfs_mkfs_btrfs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mkfs_btrfs_argv

 int
 guestfs_mkfs_btrfs_argv (guestfs_h *g,
                          char *const *devices,
                          const struct guestfs_mkfs_btrfs_argv *optargs);

Це «варіант з argv» "guestfs_mkfs_btrfs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mklost_and_found

 int
 guestfs_mklost_and_found (guestfs_h *g,
                           const char *mountpoint);

Створює каталог "lost+found", зазвичай, у кореневому каталозі файлової системи ext2/3/4. "точка_монтування" є каталогом, у якому ми спробуємо створити каталог "lost+found".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.56)

guestfs_mkmountpoint

 int
 guestfs_mkmountpoint (guestfs_h *g,
                       const char *exemptpath);

"guestfs_mkmountpoint" і "guestfs_rmmountpoint" є спеціалізованими викликами, якими можна скористатися для створення додаткових точок монтування перед монтуванням першої файлової системи.

Ця виклики необхідні лише у дуже обмежених випадках. Основним їхнім призначенням є випадок, коли ви хочете змонтувати суміш непов'язаних і/або придатних лише для читання файлових систем разом.

Наприклад, образи компакт-дисків портативних систем часто місять «матрьошку» з файлових систем: зовнішній шар ISO, образ squashfs всередині і вкладений у нього образ ext2/3. Розпакувати такий образ у guestfish можна таким чином:

 add-ro Fedora-11-i686-Live.iso
 run
 mkmountpoint /cd
 mkmountpoint /sqsh
 mkmountpoint /ext3fs
 mount /dev/sda /cd
 mount-loop /cd/LiveOS/squashfs.img /sqsh
 mount-loop /sqsh/LiveOS/ext3fs.img /ext3fs

Внутрішню файлову систему тепер розпаковано до точки монтування /ext3fs.

"guestfs_mkmountpoint" є несумісною з "guestfs_umount_all". Якщо ви спробуєте суміщати ці виклики, можуть статися неочікувані помилки. Найбезпечніше демонтувати файлові системи вручну, а потім вилучити точки монтування після використання.

"guestfs_umount_all" демонтує файлові системи упорядковуючи шляхи так, щоб у списку найдовші шляхи були першими. Щоб ця команда могла працювати зі створеними вручну точками монтування, системи має бути змонтовано так, щоб точки монтування із найбільшим рівнем вкладеності мали найдовші назви шляхів, як у наведеному вище прикладі.

Докладніше про це тут: https://bugzilla.redhat.com/show_bug.cgi?id=599503

Автоматична синхронізація [див. "guestfs_set_autosync", встановлюється типово на дескрипторах] може спричиняти виклик "guestfs_umount_all", коли дескриптор закривається, що теж може призвести до таких проблем.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.62)

guestfs_mknod

 int
 guestfs_mknod (guestfs_h *g,
                int mode,
                int devmajor,
                int devminor,
                const char *path);

Створює спеціальні блокові або символьні пристрої або іменовані канали (FIFO).

Параметр "режим" має визначати режим доступу з використанням стандартних сталих. Параметри "первинний_пристрій" і "вторинний_пристрій" є номерами первинного і вторинного пристроїв, які використовуються, лише під час створення спеціальних блокових та символьних пристроїв.

Зауважте, що, як і у mknod(2), значення режиму має бути результатом застосування бітового АБО до значень S_IFBLK, S_IFCHR, S_IFIFO та S_IFSOCK (інакше цей виклик просто створить звичайний файл). Ці сталі доступні у стандартних файлах заголовків Linux. Ви також можете скористатися "guestfs_mknod_b", "guestfs_mknod_c" або "guestfs_mkfifo", які є обгортками навколо цієї команди, які виконують бітове АБО і створюють відповідну сталу за вас.

На встановлений режим доступу впливає umask.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "mknod". Див. також "guestfs_feature_available".

(Додано у 1.0.55)

guestfs_mknod_b

 int
 guestfs_mknod_b (guestfs_h *g,
                  int mode,
                  int devmajor,
                  int devminor,
                  const char *path);

Створює вузол блокового пристрою із назвою "path" і режимом доступу "mode" та первинний і вторинний пристрої "devmajor" і "devminor". Це лише зручна обгортка навколо "guestfs_mknod".

На відміну від "guestfs_mknod", параметр "mode" має містити лише біти прав доступу.

На встановлений режим доступу впливає umask.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "mknod". Див. також "guestfs_feature_available".

(Додано у 1.0.55)

guestfs_mknod_c

 int
 guestfs_mknod_c (guestfs_h *g,
                  int mode,
                  int devmajor,
                  int devminor,
                  const char *path);

Створює вузол символьного пристрою із назвою "path" і режимом доступу "mode" та первинний і вторинний пристрої "devmajor" і "devminor". Це лише зручна обгортка навколо "guestfs_mknod".

На відміну від "guestfs_mknod", параметр "mode" має містити лише біти прав доступу.

На встановлений режим доступу впливає umask.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "mknod". Див. також "guestfs_feature_available".

(Додано у 1.0.55)

guestfs_mksquashfs

 int
 guestfs_mksquashfs (guestfs_h *g,
                     const char *path,
                     const char *filename,
                     ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_MKSQUASHFS_COMPRESS, const char *compress,
 GUESTFS_MKSQUASHFS_EXCLUDES, char *const *excludes,

Створює файлову систему squashfs для вказаного шляху "шлях".

Необов'язковий прапорець "compress" керує стисканням. Якщо його не вказано, виведені дані буде стиснуто за допомогою "gzip". Ви також можете вказати такі рядки для вибору типу стискання squashfs: "gzip", "lzma", "lzo", "lz4", "xz".

Іншими необов'язковими параметрами є такі:

"excludes"
Список шаблонів. Файли буде виключено, якщо вони відповідатимуть якомусь із вказаних шаблонів.

Будь ласка, зауважте, що цей програмний інтерфейс може не спрацювати, якщо ним користуватися для стискання каталогів із великими файлами, зокрема такими, для яких отримана файлова система squashfs матиме об'єм понад 3 ГБ.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "squashfs". Див. також "guestfs_feature_available".

(Додано у 1.35.25)

guestfs_mksquashfs_va

 int
 guestfs_mksquashfs_va (guestfs_h *g,
                        const char *path,
                        const char *filename,
                        va_list args);

Це «варіант з va_list» "guestfs_mksquashfs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mksquashfs_argv

 int
 guestfs_mksquashfs_argv (guestfs_h *g,
                          const char *path,
                          const char *filename,
                          const struct guestfs_mksquashfs_argv *optargs);

Це «варіант з argv» "guestfs_mksquashfs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mkswap

 int
 guestfs_mkswap (guestfs_h *g,
                 const char *device);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_mkswap_opts" без додаткових аргументів.

(Додано у 1.0.55)

guestfs_mkswap_opts

 int
 guestfs_mkswap_opts (guestfs_h *g,
                      const char *device,
                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_MKSWAP_OPTS_LABEL, const char *label,
 GUESTFS_MKSWAP_OPTS_UUID, const char *uuid,

Створює розділ резервної пам'яті на диску (swap) Linux на пристрої "пристрій".

За допомогою аргументів параметра "мітка" і "uuid" ви можете вказати мітку і/або UUID для нового розділу резервної пам'яті на диску.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.55)

guestfs_mkswap_opts_va

 int
 guestfs_mkswap_opts_va (guestfs_h *g,
                         const char *device,
                         va_list args);

Це «варіант з va_list» "guestfs_mkswap_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mkswap_opts_argv

 int
 guestfs_mkswap_opts_argv (guestfs_h *g,
                           const char *device,
                           const struct guestfs_mkswap_opts_argv *optargs);

Це «варіант з argv» "guestfs_mkswap_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mkswap_L

 int
 guestfs_mkswap_L (guestfs_h *g,
                   const char *label,
                   const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_mkswap".

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

Створює розділ резервної пам'яті на диску на пристрої "пристрій" зі міткою "мітка".

Зауважте, що не можна додавати мітку резервної пам'яті на диску (swap) до блокового пристрою (наприклад, до /dev/sda), лише до розділу. Здається, це є обмеженням ядра або інструментів для роботи із розділом резервної пам'яті на диску.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.55)

guestfs_mkswap_U

 int
 guestfs_mkswap_U (guestfs_h *g,
                   const char *uuid,
                   const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_mkswap".

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

Створює розділ резервної пам'яті на диску на пристрої "пристрій" із UUID "uuid".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxfsuuid". Див. також "guestfs_feature_available".

(Додано у 1.0.55)

guestfs_mkswap_file

 int
 guestfs_mkswap_file (guestfs_h *g,
                      const char *path);

Створити файл резервної пам’яті.

Ця команда просто записує підпис файла резервної пам'яті на диску до наявного файла. Для створення самого файла скористайтеся чимось подібним до "guestfs_fallocate".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_mktemp

 char *
 guestfs_mktemp (guestfs_h *g,
                 const char *tmpl,
                 ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_MKTEMP_SUFFIX, const char *suffix,

Ця команда створює тимчасовий файл. Значенням параметра "tmpl" має бути повна назва шляху до тимчасового каталогу із завершальними шістьма символами «XXXXXX».

Приклади: «/tmp/myprogXXXXXX» або «/Temp/myprogXXXXXX». Другий варіант є придатним для файлових систем Windows.

Буде повернуто назву тимчасового файла, який було створено.

Тимчасовий файл буде створено із режимом доступу 0600, його власником буде користувач root.

За вилучення тимчасового файла після використання відповідає функція виклику.

Якщо буде вказано необов'язковий параметр "suffix", до назви тимчасового файла буде додано вказаний суфікс (наприклад, ".txt").

Див. також "guestfs_mkdtemp".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.19.53)

guestfs_mktemp_va

 char *
 guestfs_mktemp_va (guestfs_h *g,
                    const char *tmpl,
                    va_list args);

Це «варіант з va_list» "guestfs_mktemp".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mktemp_argv

 char *
 guestfs_mktemp_argv (guestfs_h *g,
                      const char *tmpl,
                      const struct guestfs_mktemp_argv *optargs);

Це «варіант з argv» "guestfs_mktemp".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_modprobe

 int
 guestfs_modprobe (guestfs_h *g,
                   const char *modulename);

Завантажує модуль ядра у базовій системі.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxmodules". Див. також "guestfs_feature_available".

(Додано у 1.0.68)

guestfs_mount

 int
 guestfs_mount (guestfs_h *g,
                const char *mountable,
                const char *mountpoint);

Монтує диск гостьової системи до вказаного місця у файловій системі. Назви блокових пристроїв визначаються за схемою /dev/sda, /dev/sdb тощо за порядком, у якому їх було додано до гостьової системи. Якщо на цих блокових пристроях містяться розділи, вони матимуть звичні назви (наприклад /dev/sda1). Крім того, можна використовувати назви у стилі LVM /dev/VG/LV або рядки «mountable», які повертають команди "guestfs_list_filesystems" та "guestfs_inspect_get_mountpoints".

Правила є тими самими, що і для mount(2): файлову систему має бути спочатку змонтовано до /, а вже потім мають монтуватися інші файлові системи. Інші файлові системи може бути змонтовано лише до каталогів, які вже створено у системі.

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

До версії libguestfs 1.13.16 цей виклик неявним чином додавав параметри монтування "sync" та "noatime". Використання параметра "sync" значно уповільнювало запис і спричиняло значні проблеми для користувачів. Якщо ваша програма має працювати із застарілими версіями libguestfs, краще скористайтеся "guestfs_mount_options" (використовуючи порожній рядок як перший параметр, якщо ви не хочете визначати ніяких нетипових параметрів монтування).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_mount_9p

 int
 guestfs_mount_9p (guestfs_h *g,
                   const char *mounttag,
                   const char *mountpoint,
                   ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_MOUNT_9P_OPTIONS, const char *options,

Монтує файлову систему virtio-9p із міткою "мітка_монтування" до каталогу "точка_монтування".

Якщо потрібно, до параметрів буде автоматично додано "trans=virtio". Усі інші потрібні параметри можна передати за допомогою необов'язкового параметра "options".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.11.12)

guestfs_mount_9p_va

 int
 guestfs_mount_9p_va (guestfs_h *g,
                      const char *mounttag,
                      const char *mountpoint,
                      va_list args);

Це «варіант з va_list» "guestfs_mount_9p".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mount_9p_argv

 int
 guestfs_mount_9p_argv (guestfs_h *g,
                        const char *mounttag,
                        const char *mountpoint,
                        const struct guestfs_mount_9p_argv *optargs);

Це «варіант з argv» "guestfs_mount_9p".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mount_local

 int
 guestfs_mount_local (guestfs_h *g,
                      const char *localmountpoint,
                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_MOUNT_LOCAL_READONLY, int readonly,
 GUESTFS_MOUNT_LOCAL_OPTIONS, const char *options,
 GUESTFS_MOUNT_LOCAL_CACHETIMEOUT, int cachetimeout,
 GUESTFS_MOUNT_LOCAL_DEBUGCALLS, int debugcalls,

Цей виклик експортує доступну для libguestfs файлову систему до локальної точки монтування (каталогу) із назвою "локальна_точка_монтування". Звичайні запити щодо читання і запису до файлів і каталогів у каталозі "локальна_точка_монтування" переспрямовуватимуться через libguestfs.

Якщо для необов'язкового прапорця "readonly" встановлено значення true, спроби запису до файлової системи призводитимуть до помилки "EROFS".

Аргументом "options" має бути список параметрів монтування, відокремлених комами. Корисну інформацію щодо параметрів можна знайти на сторінці підручника щодо guestmount(1).

"cachetimeout" встановлює час очікування у секундах на отримання записів каталогу кешування. Типовим значенням є 60 секунд. Див. guestmount(1), щоб дізнатися більше.

Якщо для параметра "debugcalls" встановлено значення true, для кожного виклику FUSE створюються додаткові діагностичні дані.

Коли "guestfs_mount_local" повертає керування, файлова система готова, але не обробляє запити (доступ до неї блокуватиметься). Вам слід викликати "guestfs_mount_local_run", щоб запустити основний цикл обробки.

Із повною документацією можна ознайомитися у розділі "ЛОКАЛЬНЕ МОНТУВАННЯ".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.17.22)

guestfs_mount_local_va

 int
 guestfs_mount_local_va (guestfs_h *g,
                         const char *localmountpoint,
                         va_list args);

Це «варіант з va_list» "guestfs_mount_local".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mount_local_argv

 int
 guestfs_mount_local_argv (guestfs_h *g,
                           const char *localmountpoint,
                           const struct guestfs_mount_local_argv *optargs);

Це «варіант з argv» "guestfs_mount_local".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_mount_local_run

 int
 guestfs_mount_local_run (guestfs_h *g);

Виконує основний цикл обробки, який перетворює виклики ядра на виклики libguestfs.

Цю команду слід викликати, лише якщо успішно виконано "guestfs_mount_local". Виклик команди не поверне керування, доки файлову систему не буде змонтовано.

Зауваження: не виконуйте конкурентні виклики libguestfs щодо одного дескриптора з різних потоків обробки.

Ви можете викликати цю команду із іншого потоку обробки ніж той, з якого викликано "guestfs_mount_local", виконуючи звичні правила щодо роботи з декількома потоками обробки і libguestfs (див. "ОБРОБКА У ДЕКІЛЬКА ДЕСКРПИТОРІВ І ПОТОКІВ").

Із повною документацією можна ознайомитися у розділі "ЛОКАЛЬНЕ МОНТУВАННЯ".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.17.22)

guestfs_mount_loop

 int
 guestfs_mount_loop (guestfs_h *g,
                     const char *file,
                     const char *mountpoint);

За допомогою цієї команди ви можете змонтувати файл (образ файлової системи у файлі) до точки монтування. Це точний еквівалент команди "mount -o loop файл точка_монтування".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.54)

guestfs_mount_options

 int
 guestfs_mount_options (guestfs_h *g,
                        const char *options,
                        const char *mountable,
                        const char *mountpoint);

Те саме, що і команда "guestfs_mount", але надає вам змогу встановити параметри монтування, подібно до параметра команди mount(8) -o.

Якщо значенням параметра "параметри" є порожній рядок, параметри не передаватимуться (буде використано типовий набір параметрів для файлової системи).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.10)

guestfs_mount_ro

 int
 guestfs_mount_ro (guestfs_h *g,
                   const char *mountable,
                   const char *mountpoint);

Те саме, що і команда "guestfs_mount", але монтує файлову систему у режимі лише читання (використовує параметр -o ro).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.10)

guestfs_mount_vfs

 int
 guestfs_mount_vfs (guestfs_h *g,
                    const char *options,
                    const char *vfstype,
                    const char *mountable,
                    const char *mountpoint);

Те саме, що і команда "guestfs_mount", але надає вам змогу встановити параметри монтування і тип файлової системи, подібно до параметрів команди mount(8) -o і -t.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.10)

guestfs_mountable_device

 char *
 guestfs_mountable_device (guestfs_h *g,
                           const char *mountable);

Повертає назву пристрою для монтування. У переважній кількості випадків значенням параметра «монтування» є назва пристрою.

Втім, це не стосується підтомів btrfs, де значенням параметра «монтування» є поєднання назви пристрою та шляху до підтому (див. також "guestfs_mountable_subvolume", щоб дізнатися про те, як визначити шлях до підтому для монтування, якщо такий передбачено).

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.33.15)

guestfs_mountable_subvolume

 char *
 guestfs_mountable_subvolume (guestfs_h *g,
                              const char *mountable);

Повертає шлях до підтому для монтування. Монтування підтомів btrfs є поєднаннями назви пристрою і шляху до підтому (див. також "guestfs_mountable_device", щоб дізнатися про те, як визначити назву пристрою для монтування).

Якщо монтування є не підтомом btrfs, ця функція завершує роботу із помилкою і встановлює для "errno" значення "EINVAL".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.33.15)

guestfs_mountpoints

 char **
 guestfs_mountpoints (guestfs_h *g);

Цей виклик подібний до "guestfs_mounts". Виклик повертає список пристроїв. Запис списку є таблицею хешів (картою) з назви пристрою і каталогу, до якого змонтовано пристрій.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Масив рядків завжди матиме довжину "2n+1", значення "n" ключів і значень йтимуть одне за одним послідовно, завершуючись кінцевим записом NULL. Після використання слід звільнити рядки і масив.

(Додано у 1.0.62)

guestfs_mounts

 char **
 guestfs_mounts (guestfs_h *g);

Повертає список поточних змонтованих файлових систем. Результатом виконання є список пристроїв (наприклад, /dev/sda1, /dev/VG/LV).

Деякі внутрішні монтування не буде включено до списку.

Див. також "guestfs_mountpoints"

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 0.8)

guestfs_mv

 int
 guestfs_mv (guestfs_h *g,
             const char *src,
             const char *dest);

Пересуває файл з адреси "джерело" до адреси "призначення", де значенням "призначення" є або назва файла призначення, або назва каталогу призначення.

Див. також "guestfs_rename".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.18)

guestfs_nr_devices

 int
 guestfs_nr_devices (guestfs_h *g);

Повертає кількість усіх доданих блокових пристроїв. Це та сама кількість пристроїв, яку було б повернуто, якби ви викликали "guestfs_list_devices".

Щоб визначити максимальну кількість пристроїв, які може бути додано, викличте "guestfs_max_disks".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.19.15)

guestfs_ntfs_3g_probe

 int
 guestfs_ntfs_3g_probe (guestfs_h *g,
                        int rw,
                        const char *device);

Ця команда запускає програму ntfs-3g.probe(8), яка зондує пристрій NTFS "пристрій" на можливість монтування. (Не усі томи NTFS може бути змонтовано для читання і запису, а деякі не може бути змонтовано взагалі).

"rw" є булевим прапорцем. Встановіть значення true, якщо ви хочете перевірити, чи можна змонтувати том у режимі читання-запису. Встановіть значення false, якщо ви хочете перевірити, чи може бути змонтовано тому у режимі лише читання.

Повертає ціле значення рівне 0, якщо дію з монтування може бути виконано успішно, або рівне якомусь іншому значенню, документацію щодо якого можна знайти на сторінці підручника щодо ntfs-3g.probe(8).

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "ntfs3g". Див. також "guestfs_feature_available".

(Додано у 1.0.43)

guestfs_ntfscat_i

 int
 guestfs_ntfscat_i (guestfs_h *g,
                    const char *device,
                    int64_t inode,
                    const char *filename);

Отримати файл, заданий за допомогою inode, з файлової системи NTFS і зберегти його з назвою назва файла на локальній машині.

Надає змогу отримувати недоступні у інший спосіб файли, зокрема файли з теки $Extend.

Файлову систему, звідки слід видобути файл, має бути демонтовано. Якщо цього не буде зроблено, виклик завершиться повідомленням про помилку.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.33.14)

guestfs_ntfsclone_in

 int
 guestfs_ntfsclone_in (guestfs_h *g,
                       const char *backupfile,
                       const char *device);

Відновити "backupfile" (створений попереднім викликом "guestfs_ntfsclone_out") на пристрої "device" із перезаписом усього наявного вмісту пристрою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "ntfs3g". Див. також "guestfs_feature_available".

(Додано у 1.17.9)

guestfs_ntfsclone_out

 int
 guestfs_ntfsclone_out (guestfs_h *g,
                        const char *device,
                        const char *backupfile,
                        ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_NTFSCLONE_OUT_METADATAONLY, int metadataonly,
 GUESTFS_NTFSCLONE_OUT_RESCUE, int rescue,
 GUESTFS_NTFSCLONE_OUT_IGNOREFSCHECK, int ignorefscheck,
 GUESTFS_NTFSCLONE_OUT_PRESERVETIMESTAMPS, int preservetimestamps,
 GUESTFS_NTFSCLONE_OUT_FORCE, int force,

Записати дані файлової системи NTFS з пристрою "пристрій" до локального файла "файл_резервної_копії". Для файла резервної копії буде використано спеціальний формат, який використовується програмою ntfsclone(8).

Якщо для необов'язкового прапорця "metadataonly" встановлено значення true, збережено буде лише метадані. Усі дані користувача буде втрачено (такий режим є корисним для діагностування проблем файлової системи).

Опис необов'язкових прапорців "rescue", "ignorefscheck", "preservetimestamps" та "force" можна знайти на сторінці підручника ntfsclone(8).

Використовує "guestfs_ntfsclone_in" для відновлення резервної копії у файлі на пристрої libguestfs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "ntfs3g". Див. також "guestfs_feature_available".

(Додано у 1.17.9)

guestfs_ntfsclone_out_va

 int
 guestfs_ntfsclone_out_va (guestfs_h *g,
                           const char *device,
                           const char *backupfile,
                           va_list args);

Це «варіант з va_list» "guestfs_ntfsclone_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_ntfsclone_out_argv

 int
 guestfs_ntfsclone_out_argv (guestfs_h *g,
                             const char *device,
                             const char *backupfile,
                             const struct guestfs_ntfsclone_out_argv *optargs);

Це «варіант з argv» "guestfs_ntfsclone_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_ntfsfix

 int
 guestfs_ntfsfix (guestfs_h *g,
                  const char *device,
                  ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_NTFSFIX_CLEARBADSECTORS, int clearbadsectors,

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

Ця команда не є еквівалентом "chkdsk" Windows. Вона не виконує перевірки коректності файлової системи.

За допомогою необов'язкового прапорця "clearbadsectors" можна спорожнити список помилкових секторів. Це корисно при клонуванні диска із помилковими секторами на новий диск.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "ntfs3g". Див. також "guestfs_feature_available".

(Додано у 1.17.9)

guestfs_ntfsfix_va

 int
 guestfs_ntfsfix_va (guestfs_h *g,
                     const char *device,
                     va_list args);

Це «варіант з va_list» "guestfs_ntfsfix".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_ntfsfix_argv

 int
 guestfs_ntfsfix_argv (guestfs_h *g,
                       const char *device,
                       const struct guestfs_ntfsfix_argv *optargs);

Це «варіант з argv» "guestfs_ntfsfix".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_ntfsresize

 int
 guestfs_ntfsresize (guestfs_h *g,
                     const char *device);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_ntfsresize_opts" без додаткових аргументів.

(Додано у 1.3.2)

guestfs_ntfsresize_opts

 int
 guestfs_ntfsresize_opts (guestfs_h *g,
                          const char *device,
                          ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_NTFSRESIZE_OPTS_SIZE, int64_t size,
 GUESTFS_NTFSRESIZE_OPTS_FORCE, int force,

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

Додатковими параметрами є:

"розмір"
Новий розмір (у байтах) файлової системи. Якщо не вказано, розмір файлової системи буде змінено до розмірів контейнера (наприклад розділу).
"force"
Якщо цей параметр має значення true, буде виконано примусову зміну розміру файлової системи, навіть якщо файлову систему позначено як таку, яка потребує перевірки на коректність.

Після виконання дії зі зміни розміру файлову систему завжди буде позначено як таку, яка потребує перевірки на коректність (з міркувань безпеки). Вам слід завантажити Windows, щоб виконати перевірку і зняти позначення. Якщо ви не встановлювали параметр "force", "guestfs_ntfsresize" не можна буде викликати декілька разів поспіль для однієї файлової системи без завантаження Windows між діями зі зміни розміру.

Див. також ntfsresize(8).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "ntfsprogs". Див. також "guestfs_feature_available".

(Додано у 1.3.2)

guestfs_ntfsresize_opts_va

 int
 guestfs_ntfsresize_opts_va (guestfs_h *g,
                             const char *device,
                             va_list args);

Це «варіант з va_list» "guestfs_ntfsresize_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_ntfsresize_opts_argv

 int
 guestfs_ntfsresize_opts_argv (guestfs_h *g,
                               const char *device,
                               const struct guestfs_ntfsresize_opts_argv *optargs);

Це «варіант з argv» "guestfs_ntfsresize_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_ntfsresize_size

 int
 guestfs_ntfsresize_size (guestfs_h *g,
                          const char *device,
                          int64_t size);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_ntfsresize".

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

Ця команда виконує ті самі дії, що і "guestfs_ntfsresize", але вона надає вам змогу вказати новий розмір (у байтах) явним чином.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "ntfsprogs". Див. також "guestfs_feature_available".

(Додано у 1.3.14)

guestfs_parse_environment

 int
 guestfs_parse_environment (guestfs_h *g);

Виконує обробку середовища програми і встановлює прапорців у дескрипторі відповідним чином. Наприклад, якщо "LIBGUESTFS_DEBUG=1", у дескрипторі буде встановлено прапорець «verbose».

У більшості програм потреби у виконанні цієї дії немає Дія неявним чином виконується під час виклику "guestfs_create".

Див "ЗМІННІ СЕРЕДОВИЩА", де наведено список змінних середовища, які впливають на засоби обробки libguestfs. Див. також "guestfs_create_flags" та guestfs_parse_environment_list.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.53)

guestfs_parse_environment_list

 int
 guestfs_parse_environment_list (guestfs_h *g,
                                 char *const *environment);

Обробляє список рядків у аргументі "середовище" і встановлює відповідним чином прапорці у дескрипторі. Наприклад, якщо у списку є рядок "LIBGUESTFS_DEBUG=1", у дескрипторі буде встановлено прапорець «verbose».

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

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.53)

guestfs_part_add

 int
 guestfs_part_add (guestfs_h *g,
                   const char *device,
                   const char *prlogex,
                   int64_t startsect,
                   int64_t endsect);

Ця команда додає розділ на пристрої "device". Якщо на пристрої немає таблиці розділів, спочатку слід викликати "guestfs_part_init".

Значенням параметра "prlogex" є тип розділу. Зазвичай, вам слід передати тип "p" або "primary", але у таблицях розділів MBR також передбачено підтримку типів розділів "l" (або "logical") і "e" (або "extended").

Значеннями параметрів "початковий_сектор" і "кінцевий_сектор" є початок і кінець розділу, вказані за номерами секторів. Значенням параметра "кінцевий_сектор" може бути від'ємне значення, що означає, що сектори слід лічити з кінця диска ("-1" означає «останній сектор»).

Створення розділу, який займатиме увесь диск є непростою справою. Для виконання цього завдання скористайтеся "guestfs_part_disk".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.78)

guestfs_part_del

 int
 guestfs_part_del (guestfs_h *g,
                   const char *device,
                   int partnum);

Ця команда вилучає розділ із номером "номер_розділу" на пристрої "пристрій".

Зауважте, що у випадку розділів у MBR вилучення розширеного розділу призводить до вилучення усіх логічних розділів, які на ньому містяться.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.2)

guestfs_part_disk

 int
 guestfs_part_disk (guestfs_h *g,
                    const char *device,
                    const char *parttype);

Ця команда є простою комбінацією "guestfs_part_init" з наступною "guestfs_part_add" для створення єдиного основного розділу, який займатиме увесь диск.

Значенням параметра "parttype" є тип таблиці розділів, зазвичай, "mbr" або "gpt", але можливі і інші значення, описані у довідці з "guestfs_part_init".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.78)

guestfs_part_expand_gpt

 int
 guestfs_part_expand_gpt (guestfs_h *g,
                          const char *device);

Пересуває резервні копії структур даних GPT у кінець диска. Корисно у випадку розширення образу на місці, оскільки простір на диску після резервної копії заголовка GPT не можна використовувати. Еквівалент "sgdisk -e".

Див. також sgdisk(8).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.33.2)

guestfs_part_get_bootable

 int
 guestfs_part_get_bootable (guestfs_h *g,
                            const char *device,
                            int partnum);

Ця команда повертає true, якщо для розділу "номер_розділу" на пристрої "пристрій" встановлено прапорець можливості завантаження.

Див. також "guestfs_part_set_bootable".

Ця функція повертає значення true з C у разі успіху і -1 у разі помилки.

(Додано у 1.3.2)

guestfs_part_get_disk_guid

 char *
 guestfs_part_get_disk_guid (guestfs_h *g,
                             const char *device);

Повертає ідентифікатор диска (GUID) пристрою "пристрій" із таблицею розділів GPT. Для інших типів таблиць розділів поведінку команди не визначено.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.33.2)

guestfs_part_get_gpt_attributes

 int64_t
 guestfs_part_get_gpt_attributes (guestfs_h *g,
                                  const char *device,
                                  int partnum);

Повертає прапорці атрибутів вказаного за номером розділу GPT "номер_розділу". Повертає помилку для розділів MBR.

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.21.1)

guestfs_part_get_gpt_guid

 char *
 guestfs_part_get_gpt_guid (guestfs_h *g,
                            const char *device,
                            int partnum);

Повертає GUID вказаного за номером розділу GPT "номер_розділу".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.29.25)

guestfs_part_get_gpt_type

 char *
 guestfs_part_get_gpt_type (guestfs_h *g,
                            const char *device,
                            int partnum);

Повертає GUID типу вказаного за номером розділу GPT "номер_розділу". Для розділів MBR повертає відповідний GUID для типу MBR. Для інших типів розділів поведінку не визначено.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.21.1)

guestfs_part_get_mbr_id

 int
 guestfs_part_get_mbr_id (guestfs_h *g,
                          const char *device,
                          int partnum);

Повертає байт типу MBR (також відомий як байт ID) для вказаного за номером розділу "номер_розділу".

Зауважте, що байти типу мають лише розділи MBR (застарілі розділи у стилі DOS). Ви отримаєте невизначені результати для інших типів таблиць розділів (див. "guestfs_part_get_parttype").

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.3.2)

guestfs_part_get_mbr_part_type

 char *
 guestfs_part_get_mbr_part_type (guestfs_h *g,
                                 const char *device,
                                 int partnum);

Повертає тип розділу MBR, вказаного за номером "номер_розділу", на пристрої "пристрій".

Повертає "primary", "logical" або "extended".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.29.32)

guestfs_part_get_name

 char *
 guestfs_part_get_name (guestfs_h *g,
                        const char *device,
                        int partnum);

Ця команда отримує назву розділу на вказаному за номером розділі "номер розділу" на пристрої "пристрій". Зауважте, що нумерація розділів розпочинається з 1.

Назву розділу можна прочитати лише для певних типів таблиць розділів. Це працює для таблиць "gpt", але не для таблиць "mbr".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.25.33)

guestfs_part_get_parttype

 char *
 guestfs_part_get_parttype (guestfs_h *g,
                            const char *device);

Ця команда виконує вивчення таблиці розділів на пристрої "пристрій" і повертає тип таблиці розділів (формат), який на ньому використано.

Серед типових повернутих значень: "msdos" (таблиця розділів MBR у стилі DOS/Windows), "gpt" (таблиця розділів у стилі GPT/EFI). Можливі також інші значення, але вони є рідкісними. Повний список можна знайти у розділі щодо "guestfs_part_init".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.78)

guestfs_part_init

 int
 guestfs_part_init (guestfs_h *g,
                    const char *device,
                    const char *parttype);

Ця команда створює порожню таблицю розділів на пристрої "пристрій", використовуючи тип розділів із наведеного нижче списку. Зазвичай, значенням параметра "тип_розділу" має бути "msdos" або "gpt" (для великих дисків).

Спочатку на пристрої немає розділів. Після цієї команди вам слід викликати "guestfs_part_add" для кожного потрібного вам розділу.

Можливі значення для параметра "тип_розділу":

"efi"
"gpt"
Таблиця розділів EFI / GPT Intel.

Цей варіант є рекомендованим для розділів із розміром >= 2 ТБ, доступ до яких здійснюватиметься з Linux та заснованої на архітектурі Intel Mac OS X. Крім того, цей варіант має обмежену зворотну сумісність із форматом "mbr".

"mbr"
"msdos"
Стандартний для ПК формат «Master Boot Record» (MBR), який використовувався MS-DOS і Windows. Цей тип розділу працюватиме лише для пристроїв, розмір яких не перевищує 2 ТБ. Для дисків більшого розміру ми рекомендуємо скористатися "gpt".

Для інших типів таблиць розділів це теж може працювати, але їхньої підтримки не передбачено. Це зокрема:

"aix"
Мітки дисків AIX.
"amiga"
"rdb"
Формат "Rigid Disk Block" Amiga.
"bsd"
Мітки дисків BSD.
"dasd"
DASD, використовувалися у мейнфреймах IBM.
"dvh"
Томи MIPS/SGI.
"mac"
Старий формат розділів Mac. Сучасні системи Mac використовують "gpt".
"pc98"
Формат NEC PC-98, поширений у Японії.
"sun"
Мітки дисків Sun.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.78)

guestfs_part_list

 struct guestfs_partition_list *
 guestfs_part_list (guestfs_h *g,
                    const char *device);

Ця команда обробляє таблицю розділів пристрою "пристрій" і повертає список знайдених розділів.

Поля повернутої структури:

"part_num"
Номер розділу, відлік від 1.
"part_start"
Позиція початку розділу у байтах. Для отримання позиції у секторах вам слід поділити це значення на розмір сектора, див. "guestfs_blockdev_getss".
"part_end"
Позиція завершення розділу у байтах.
"part_size"
Розмір розділу у байтах.

Ця функція повертає "struct guestfs_partition_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_partition_list".

(Додано у 1.0.78)

guestfs_part_resize

 int
 guestfs_part_resize (guestfs_h *g,
                      const char *device,
                      int partnum,
                      int64_t endsect);

Ця команда змінює розмір розділу із номером "номер_розділу" на пристрої "пристрій", посуваючи позицію кінця розділу.

Зауважте, що ця команда не вносить змін до файлових систем на розділі. Якщо вам потрібно змінити розмір файлової системи, вам слід скористатися командами зміни розмірів файлових систем, наприклад "guestfs_resize2fs".

Якщо ви збільшуєте розміри розділу, далі вам слід збільшити розміри файлової системи. Якщо ж ви зменшуєте розміри розділу, спочатку вам слід зменшити розміри файлової системи на ньому.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.37.20)

guestfs_part_set_bootable

 int
 guestfs_part_set_bootable (guestfs_h *g,
                            const char *device,
                            int partnum,
                            int bootable);

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

Прапорець можливості завантаження використовується певними операційними системами (найпоширенішою з яких є Windows) для визначення розділу, з якого слід виконувати завантаження. Він ніяким чином не є універсальним.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.78)

guestfs_part_set_disk_guid

 int
 guestfs_part_set_disk_guid (guestfs_h *g,
                             const char *device,
                             const char *guid);

Встановлює ідентифікатор диска (GUID) пристрою із таблицею розділів GPT "пристрій" у значення "guid". Повертає помилку, якщо таблицею розділів пристрою "пристрій" не є GPT або якщо "guid" не є коректним GUID.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.33.2)

guestfs_part_set_disk_guid_random

 int
 guestfs_part_set_disk_guid_random (guestfs_h *g,
                                    const char *device);

Встановлює ідентифікатор диска (GUID) пристрою із таблицею розділів GPT "пристрій" у створене випадковим чином значення. Повертає помилку, якщо таблицею розділів пристрою "пристрій" не є GPT.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.33.2)

guestfs_part_set_gpt_attributes

 int
 guestfs_part_set_gpt_attributes (guestfs_h *g,
                                  const char *device,
                                  int partnum,
                                  int64_t attributes);

Встановлює прапорці атрибутів вказаного за номером розділу GPT "номер_розділу" у значення "атрибути". Повертає помилку, якщо таблицею розділів пристрою "пристрій" не є GPT.

Див. https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_entries, де наведено корисний список атрибутів розділів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.21.1)

guestfs_part_set_gpt_guid

 int
 guestfs_part_set_gpt_guid (guestfs_h *g,
                            const char *device,
                            int partnum,
                            const char *guid);

Встановлює GUID вказаного за номером "номер_розділу" пристрою із таблицею розділів GPT "пристрій" у значення "guid". Повертає помилку, якщо таблицею розділів пристрою "пристрій" не є GPT або якщо "guid" не є коректним GUID.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.29.25)

guestfs_part_set_gpt_type

 int
 guestfs_part_set_gpt_type (guestfs_h *g,
                            const char *device,
                            int partnum,
                            const char *guid);

Встановлює GUID типу пристрою вказаного за номером "номер_розділу" пристрою із таблицею розділів GPT у значення "guid". Повертає помилку, якщо таблицею розділів пристрою "пристрій" не є GPT або якщо "guid" не є коректним GUID.

See https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs for a useful list of type GUIDs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "gdisk". Див. також "guestfs_feature_available".

(Додано у 1.21.1)

guestfs_part_set_mbr_id

 int
 guestfs_part_set_mbr_id (guestfs_h *g,
                          const char *device,
                          int partnum,
                          int idbyte);

Встановлює байт типу MBR (також відомий як байт ID) для вказаного за номером розділу "номер_розділу" у значення "ід_байт". Зауважте, що байти типів у більшій частині документації є насправді шістнадцятковими числами, але фігурують у тексті без початкового «0x», що може ввести читача в оману.

Зауважте, що байти типу мають лише розділи MBR (застарілі розділи у стилі DOS). Ви отримаєте невизначені результати для інших типів таблиць розділів (див. "guestfs_part_get_parttype").

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.2)

guestfs_part_set_name

 int
 guestfs_part_set_name (guestfs_h *g,
                        const char *device,
                        int partnum,
                        const char *name);

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

Назву розділу можна встановити лише для певних типів таблиць розділів. Це працює для таблиць "gpt", але не для таблиць "mbr".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.78)

guestfs_part_to_dev

 char *
 guestfs_part_to_dev (guestfs_h *g,
                      const char *partition);

Цій функції передається назва розділу (наприклад «/dev/sdb1»), вона вилучає номер розділу, повертаючи назву розділу (наприклад «/dev/sdb»).

Іменований розділ має існувати, наприклад, як рядок, який повертає "guestfs_list_partitions".

Див. також "guestfs_part_to_partnum", "guestfs_device_index".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.5.15)

guestfs_part_to_partnum

 int
 guestfs_part_to_partnum (guestfs_h *g,
                          const char *partition);

Цій функції передається назва розділу (наприклад «/dev/sdb1»), вона повертає номер розділу (наприклад 1).

Іменований розділ має існувати, наприклад, як рядок, який повертає "guestfs_list_partitions".

Див. також "guestfs_part_to_dev".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.13.25)

guestfs_ping_daemon

 int
 guestfs_ping_daemon (guestfs_h *g);

Це зонд для тестування фонової служби guestfs, запущеної у базовій системі libguestfs. Виклик цієї служби перевіряє, чи відповідає фонова служба на луна-повідомлення, ніяк інакше не впливаючи на роботу фонової служби або долучених блокових пристроїв.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.18)

guestfs_pread

 char *
 guestfs_pread (guestfs_h *g,
                const char *path,
                int count,
                int64_t offset,
                size_t *size_r);

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

Команда може прочитати менше байтів, ніж було вказано у параметрах команди. Щоб дізнатися більше про це, ознайомтеся зі сторінкою підручника щодо системного виклику pread(2).

Див. також "guestfs_pwrite", "guestfs_pread_device".

Ця функція повертає рядок або NULL, якщо станеться помилка. Розмір повернутого буфера буд записано до *size_r. Після використання функція, яка викликає цю функцію, має звільнити повернутий буфер.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.77)

guestfs_pread_device

 char *
 guestfs_pread_device (guestfs_h *g,
                       const char *device,
                       int count,
                       int64_t offset,
                       size_t *size_r);

За допомогою цієї команди ви можете прочитати частину вмісту блокового пристрою. Вона читає "кількість" байтів з пристрою "пристрій", починаючи з позиції "відступ".

Команда може прочитати менше байтів, ніж було вказано у параметрах команди. Щоб дізнатися більше про це, ознайомтеся зі сторінкою підручника щодо системного виклику pread(2).

Див. також "guestfs_pread".

Ця функція повертає рядок або NULL, якщо станеться помилка. Розмір повернутого буфера буд записано до *size_r. Після використання функція, яка викликає цю функцію, має звільнити повернутий буфер.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.5.21)

guestfs_pvchange_uuid

 int
 guestfs_pvchange_uuid (guestfs_h *g,
                        const char *device);

Створити новий випадковий UUID для фізичного тому "пристрій".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.19.26)

guestfs_pvchange_uuid_all

 int
 guestfs_pvchange_uuid_all (guestfs_h *g);

Створити нові випадкові UUID для всіх фізичних томів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.19.26)

guestfs_pvcreate

 int
 guestfs_pvcreate (guestfs_h *g,
                   const char *device);

Ця команда створює фізичний том LVM із назвою "пристрій", де "пристрій", зазвичай, має бути назвою розділу, наприклад /dev/sda1.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.8)

guestfs_pvremove

 int
 guestfs_pvremove (guestfs_h *g,
                   const char *device);

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

The implementation uses the pvremove(8) command which refuses to wipe physical volumes that contain any volume groups, so you have to remove those first.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.0.13)

guestfs_pvresize

 int
 guestfs_pvresize (guestfs_h *g,
                   const char *device);

Ця команда змінює розмір (розширює або стискає) наявний логічний том LVM так, щоб він відповідав за розміром новому розміру базового пристрою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.0.26)

guestfs_pvresize_size

 int
 guestfs_pvresize_size (guestfs_h *g,
                        const char *device,
                        int64_t size);

Ця команда виконує ті самі дії, що і "guestfs_pvresize", але вона надає вам змогу вказати новий розмір (у байтах) явним чином.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.3.14)

guestfs_pvs

 char **
 guestfs_pvs (guestfs_h *g);

Виводить список усіх виявлених фізичних томів. Є еквівалентом команди pvs(8).

Ця команда повертає список назв лише тих пристроїв, на яких містяться фізичні томи (наприклад /dev/sda2).

Див. також "guestfs_pvs_full".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.4)

guestfs_pvs_full

 struct guestfs_lvm_pv_list *
 guestfs_pvs_full (guestfs_h *g);

Виводить список усіх виявлених фізичних томів. Є еквівалентом команди pvs(8). «Повна» версія включає усі поля.

Ця функція повертає "struct guestfs_lvm_pv_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_lvm_pv_list".

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.4)

guestfs_pvuuid

 char *
 guestfs_pvuuid (guestfs_h *g,
                 const char *device);

Ця команда повертає UUID фізичного тому LVM "пристрій".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.87)

guestfs_pwrite

 int
 guestfs_pwrite (guestfs_h *g,
                 const char *path,
                 const char *content,
                 size_t content_size,
                 int64_t offset);

Ця команда записує частину файла. Команда записує буфер даних "дані" до файла "шлях", починаючи з відступу "відступ".

Ця команда реалізує системний виклик pwrite(2) і, подібно до цього системного виклику, вона може не записати повністю вказані дані. Повернуте значення є кількістю байтів, які насправді було записано до файла. Цим значенням може бути навіть 0, хоча обрізані записи є малоймовірними для звичайних файлів у звичайних обставинах.

Див. також "guestfs_pread", "guestfs_pwrite_device".

У разі помилки цією функцією буде повернуто -1.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.3.14)

guestfs_pwrite_device

 int
 guestfs_pwrite_device (guestfs_h *g,
                        const char *device,
                        const char *content,
                        size_t content_size,
                        int64_t offset);

Ця команда записує частину пристрою. Команда записує буфер даних "дані" до пристрою "пристрій", починаючи з відступу "відступ".

Ця команда реалізує системний виклик pwrite(2) і, подібно до цього системного виклику, вона може не записати повністю вказані дані (хоча обрізаний запис на дискові пристрої і розділи майже неможливий зі стандартними ядрами Linux).

Див. також "guestfs_pwrite".

У разі помилки цією функцією буде повернуто -1.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.5.20)

guestfs_read_file

 char *
 guestfs_read_file (guestfs_h *g,
                    const char *path,
                    size_t *size_r);

Цей виклик повертає вміст файла "шлях" як буфер даних.

На відміну від "guestfs_cat", ця функція може правильно обробляти файли, які містять вбудовані символи NUL ASCII.

Ця функція повертає рядок або NULL, якщо станеться помилка. Розмір повернутого буфера буд записано до *size_r. Після використання функція, яка викликає цю функцію, має звільнити повернутий буфер.

(Додано у 1.0.63)

guestfs_read_lines

 char **
 guestfs_read_lines (guestfs_h *g,
                     const char *path);

Повертає вміст файла із назвою "шлях".

Вміст файла повертається як список рядків. Послідовності символів "LF" та "CRLF" наприкінці рядків не повертаються.

Зауважте, що ця функція не може належним чином обробляти двійкові файли (особливо, файли, у яких містяться символи "\0", які вважаються символами кінця рядка). Для таких файлів слід використовувати функцію "guestfs_read_file" і ділити буфер на рядки власноруч.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 0.7)

guestfs_readdir

 struct guestfs_dirent_list *
 guestfs_readdir (guestfs_h *g,
                  const char *dir);

Ця команда повертає список записів у каталозі "каталог".

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

Крім того, цей виклик повертає базові дані щодо типу файла для кожного з файлів. У полі "ftyp" міститиметься один з таких символів:

'b'
Блоковий особливий
'c'
Символьний особливий
'd'
Каталог
'f'
FIFO (іменований канал)
'l'
Символічне посилання
'r'
Звичайний файл
's'
Сокет
'u'
Невідомий тип файла
'?'
Викликом readdir(3) повернуто поле "d_type" із неочікуваним значенням

Цю функцію створено, в основному, для використання у програмах. Щоб отримати простий список назв, скористайтеся "guestfs_ls". Щоб отримати придатний для друку і сприйняття людиною список каталогу, скористайтеся "guestfs_ll".

Ця функція повертає "struct guestfs_dirent_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_dirent_list".

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.55)

 char *
 guestfs_readlink (guestfs_h *g,
                   const char *path);

Ця команда читає файл, на який посилається символічне посилання.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.66)

 char **
 guestfs_readlinklist (guestfs_h *g,
                       const char *path,
                       char *const *names);

Цей виклик надає змогу виконувати дію "readlink" над декількома файлами, які зберігаються у каталозі "шлях". Значенням аргументу "назви" є список файлів у цьому каталозі.

Повернуто буде список рядків із однозначною відповідністю до списку "назви". У кожному рядку буде значення символічного посилання.

Якщо не вдається виконати дію readlink(2) для якоїсь із назв, відповідним рядком-результатом буде порожній рядок "". Втім, обробку буде завершено, навіть якщо стануться якісь помилки у readlink(2), тому ви можете викликати цю функцію для назв, про які немає відомостей щодо того, чи є вони символічними посиланнями (хоча такі виклики і будуть дещо менш ефективними).

Цю команду призначено для програм, яким потрібно ефективно будувати список вмісту каталогів без виконання багатьох обходів.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.0.77)

guestfs_realpath

 char *
 guestfs_realpath (guestfs_h *g,
                   const char *path);

Повертає перетворену до канонічної форми абсолютну назву шляху "шлях". У повернутому шляху не буде елементів ".", ".." або шляхів символічних посилань.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.66)

guestfs_remount

 int
 guestfs_remount (guestfs_h *g,
                  const char *mountpoint,
                  ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_REMOUNT_RW, int rw,

За допомогою цього виклику ви можете змінити значення прапорця "rw" (лише читання/читання і запис) на вже змонтованій до точки монтування "точка_монтування" файловій системі, перетворивши придатну лише для читання файлову систему на систему із можливостями читання і запису, і навпаки.

Зауважте, що у поточній версії вам доведеться вказати «необов'язковий» параметр "rw". У майбутньому ми можемо уможливити зміну інших прапорців файлової системи.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.23.2)

guestfs_remount_va

 int
 guestfs_remount_va (guestfs_h *g,
                     const char *mountpoint,
                     va_list args);

Це «варіант з va_list» "guestfs_remount".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_remount_argv

 int
 guestfs_remount_argv (guestfs_h *g,
                       const char *mountpoint,
                       const struct guestfs_remount_argv *optargs);

Це «варіант з argv» "guestfs_remount".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_remove_drive

 int
 guestfs_remove_drive (guestfs_h *g,
                       const char *label);

Концептуально, ця функція є протилежністю "guestfs_add_drive_opts". Вона вилучає диск, який раніше було додано з міткою "label".

Зауважте, що для вилучення дисків за допомогою цієї команди вам слід додавати їх з мітками (див. необов'язковий аргумент "label" у "guestfs_add_drive_opts"). Якщо ви не вказали мітку, вилучити диск за допомогою цієї команди не вдасться.

Цю функцію можна викликати до або після запуску дескриптора. Якщо її викликано після запуску і підтримку подібної операції передбачено у модулі обробки, буде виконано спробу від'єднання диска у «гарячому» режимі: див. "З'ЄДНАННЯ У «ГАРЯЧОМУ» РЕЖИМІ". Диск під час цієї операції вже не повинен використовуватися (тобто бути змонтованим). Функція намагатиметься визначити, чи використовується диск, і запобігатиме від'єднанню використаних дисків.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.49)

guestfs_removexattr

 int
 guestfs_removexattr (guestfs_h *g,
                      const char *xattr,
                      const char *path);

Цей виклик вилучає розширений атрибут із назвою "розширений_атрибут" з файла "шлях".

Див. також "guestfs_lremovexattr", attr(5).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxxattrs". Див. також "guestfs_feature_available".

(Додано у 1.0.59)

guestfs_rename

 int
 guestfs_rename (guestfs_h *g,
                 const char *oldpath,
                 const char *newpath);

Перейменовує файл, пересуваючи його до нового місця у файловій системі. Те саме, що системний виклик rename(2) у Linux. У більшості випадків варто замість цієї команди використовувати "guestfs_mv".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.21.5)

guestfs_resize2fs

 int
 guestfs_resize2fs (guestfs_h *g,
                    const char *device);

Змінює розміри файлової системи ext2, ext3 або ext4 так, щоб її розмір збігався із розміром базового пристрою.

Див. також "RESIZE2FS ERRORS".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.27)

guestfs_resize2fs_M

 int
 guestfs_resize2fs_M (guestfs_h *g,
                      const char *device);

This command is the same as "guestfs_resize2fs", but the filesystem is resized to its minimum size. This works like the -M option to the resize2fs(8) command.

Щоб отримати остаточний розмір файлової системи, вам слід викликати "guestfs_tune2fs_l" і прочитати значення "Block size" та "Block count". Ці два числа, перемножені між собою, дадуть остаточний розмір файлової системи у байтах.

Див. також "RESIZE2FS ERRORS".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.9.4)

guestfs_resize2fs_size

 int
 guestfs_resize2fs_size (guestfs_h *g,
                         const char *device,
                         int64_t size);

Ця команда виконує ті самі дії, що і "guestfs_resize2fs", але вона надає вам змогу вказати новий розмір (у байтах) явним чином.

Див. також "RESIZE2FS ERRORS".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.14)

guestfs_rm

 int
 guestfs_rm (guestfs_h *g,
             const char *path);

Вилучити одинарний файл "шлях".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_rm_f

 int
 guestfs_rm_f (guestfs_h *g,
               const char *path);

Вилучити файл "шлях".

Якщо файла не існує, помилку буде проігноровано. (Інші помилки, наприклад помилки введення-виведення та помилки у шляхах, не ігноруватимуться.)

Ця команда не може вилучати каталоги. Для вилучення порожнього каталогу скористайтеся командою "guestfs_rmdir". Для рекурсивного вилучення каталогів слід використовувати "guestfs_rm_rf".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.42)

guestfs_rm_rf

 int
 guestfs_rm_rf (guestfs_h *g,
                const char *path);

Вилучає файл або каталог "шлях". Діє рекурсивно, якщо вказано каталог. Подібна до команди "rm -rf", відданої з командної оболонки.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_rmdir

 int
 guestfs_rmdir (guestfs_h *g,
                const char *path);

Вилучає окремий каталог "шлях".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_rmmountpoint

 int
 guestfs_rmmountpoint (guestfs_h *g,
                       const char *exemptpath);

Цей виклик вилучає точку монтування, яку перед цим було створено за допомогою команди "guestfs_mkmountpoint". Щоб дізнатися більше, ознайомтеся із розділом щодо "guestfs_mkmountpoint".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.62)

guestfs_rsync

 int
 guestfs_rsync (guestfs_h *g,
                const char *src,
                const char *dest,
                ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_RSYNC_ARCHIVE, int archive,
 GUESTFS_RSYNC_DELETEDEST, int deletedest,

Цим викликом можна скористатися для копіювання або синхронізування двох каталогів у одному дескрипторі libguestfs. Використовується програма rsync(1), у якій реалізовано швидкий алгоритм для уникнення непотрібного копіювання файлів.

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

Необов'язковими аргументами є:

"archive"
Вмикає режим архівування. Те саме, що передати параметр --archive команді "rsync".
"deletedest"
Вилучити файли у каталозі призначення, яких немає у каталозі джерела.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "rsync". Див. також "guestfs_feature_available".

(Додано у 1.19.29)

guestfs_rsync_va

 int
 guestfs_rsync_va (guestfs_h *g,
                   const char *src,
                   const char *dest,
                   va_list args);

Це «варіант з va_list» "guestfs_rsync".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_rsync_argv

 int
 guestfs_rsync_argv (guestfs_h *g,
                     const char *src,
                     const char *dest,
                     const struct guestfs_rsync_argv *optargs);

Це «варіант з argv» "guestfs_rsync".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_rsync_in

 int
 guestfs_rsync_in (guestfs_h *g,
                   const char *remote,
                   const char *dest,
                   ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_RSYNC_IN_ARCHIVE, int archive,
 GUESTFS_RSYNC_IN_DELETEDEST, int deletedest,

Цим викликом можна скористатися для копіювання або синхронізування файлових систем у основній системі або на віддаленому комп'ютері із файловою системою у libguestfs. Використовується програма rsync(1), у якій реалізовано швидкий алгоритм для уникнення непотрібного копіювання файлів.

Ця команда працюватиме, лише якщо увімкнено можливість роботи у мережі. Див. "guestfs_set_network" або параметр --network різноманітних інструментів, зокрема guestfish(1).

Файли копіюються з віддаленого сервера та каталогу, вказаного за допомогою параметра "віддалений_комп'ютер", до каталогу призначення "призначення".

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

Необов'язкові аргументи такі самі, як і у "guestfs_rsync".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "rsync". Див. також "guestfs_feature_available".

(Додано у 1.19.29)

guestfs_rsync_in_va

 int
 guestfs_rsync_in_va (guestfs_h *g,
                      const char *remote,
                      const char *dest,
                      va_list args);

Це «варіант з va_list» "guestfs_rsync_in".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_rsync_in_argv

 int
 guestfs_rsync_in_argv (guestfs_h *g,
                        const char *remote,
                        const char *dest,
                        const struct guestfs_rsync_in_argv *optargs);

Це «варіант з argv» "guestfs_rsync_in".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_rsync_out

 int
 guestfs_rsync_out (guestfs_h *g,
                    const char *src,
                    const char *remote,
                    ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_RSYNC_OUT_ARCHIVE, int archive,
 GUESTFS_RSYNC_OUT_DELETEDEST, int deletedest,

Цим викликом можна скористатися для копіювання або синхронізування файлової системи у libguestfs із файловою системою у основній системі або на віддаленому комп'ютері. Використовується програма rsync(1), у якій реалізовано швидкий алгоритм для уникнення непотрібного копіювання файлів.

Ця команда працюватиме, лише якщо увімкнено можливість роботи у мережі. Див. "guestfs_set_network" або параметр --network різноманітних інструментів, зокрема guestfish(1).

Файли копіюються з каталогу джерела "джерело" до віддаленого сервера та каталогу, вказаного за допомогою параметра "віддалений_комп'ютер".

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

Необов'язкові аргументи такі самі, як і у "guestfs_rsync".

У параметрі "src" не виконується підставляння замість символів-замінників. У програмах, де програмний інтерфейс використовується безпосередньо, вам слід розгортати замінники власноруч (див. "guestfs_glob_expand"). У guestfish ви можете скористатися командою "glob" (див. "glob" in guestfish(1)). Приклад:

 ><fs> glob rsync-out /* rsync://remote/

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "rsync". Див. також "guestfs_feature_available".

(Додано у 1.19.29)

guestfs_rsync_out_va

 int
 guestfs_rsync_out_va (guestfs_h *g,
                       const char *src,
                       const char *remote,
                       va_list args);

Це «варіант з va_list» "guestfs_rsync_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_rsync_out_argv

 int
 guestfs_rsync_out_argv (guestfs_h *g,
                         const char *src,
                         const char *remote,
                         const struct guestfs_rsync_out_argv *optargs);

Це «варіант з argv» "guestfs_rsync_out".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_scrub_device

 int
 guestfs_scrub_device (guestfs_h *g,
                       const char *device);

Ця команда записує зразкові дані на "пристрій" для утруднення відновлення даних на ньому.

Ця команда є інтерфейсом до програми scrub(1). Див. відповідну сторінку підручника, щоб дізнатися більше.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "scrub". Див. також "guestfs_feature_available".

(Додано у 1.0.52)

guestfs_scrub_file

 int
 guestfs_scrub_file (guestfs_h *g,
                     const char *file);

Ця команда записує зразкові дані до файла для утруднення відновлення його даних після витирання.

Після заповнення даними взірця файл буде вилучено.

Ця команда є інтерфейсом до програми scrub(1). Див. відповідну сторінку підручника, щоб дізнатися більше.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "scrub". Див. також "guestfs_feature_available".

(Додано у 1.0.52)

guestfs_scrub_freespace

 int
 guestfs_scrub_freespace (guestfs_h *g,
                          const char *dir);

Ця команда створює каталог "dir", а потім заповнює його файлами, аж доки файлову систему не буде повністю заповнено, далі витирає файли, як у команді "guestfs_scrub_file", і вилучає їх. Команду призначено для витирання усіх даних з вільного місця на розділі, де зберігається каталог "dir".

Ця команда є інтерфейсом до програми scrub(1). Див. відповідну сторінку підручника, щоб дізнатися більше.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "scrub". Див. також "guestfs_feature_available".

(Додано у 1.0.52)

guestfs_selinux_relabel

 int
 guestfs_selinux_relabel (guestfs_h *g,
                          const char *specfile,
                          const char *path,
                          ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_SELINUX_RELABEL_FORCE, int force,

Повторне встановлення міток SELinux у файловій системі.

Параметр "файл_специфікацій" визначає використаний файл специфікацій правил. Вам слід обробити "/etc/selinux/config", щоб визначити належні правила SELinux, а потім передати файл специфікацій, зазвичай, так: "/etc/selinux/" + тип_selinux + "/contexts/files/file_contexts".

Обов'язковий параметр "шлях" визначає каталог верхнього рівня, з якого починається повторне встановлення міток. Зазвичай, вам слід передати як "шлях" значення "/", щоб повторно встановити мітки для усієї гостьової файлової системи.

Необов'язковий булевий параметр "force" керує тим, чи буде скинуто контекст для налаштовуваних файлів, а також тим, чи буде змінено частини контексту файла, пов'язані із записами користувача, ролі та діапазону.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "selinuxrelabel". Див. також "guestfs_feature_available".

(Додано у 1.33.43)

guestfs_selinux_relabel_va

 int
 guestfs_selinux_relabel_va (guestfs_h *g,
                             const char *specfile,
                             const char *path,
                             va_list args);

Це «варіант з va_list» "guestfs_selinux_relabel".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_selinux_relabel_argv

 int
 guestfs_selinux_relabel_argv (guestfs_h *g,
                               const char *specfile,
                               const char *path,
                               const struct guestfs_selinux_relabel_argv *optargs);

Це «варіант з argv» "guestfs_selinux_relabel".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_set_append

 int
 guestfs_set_append (guestfs_h *g,
                     const char *append);

Ця функція використовується для додавання параметрів до командного рядка елементарного ядра libguestfs.

Типовим значенням є "NULL", якщо його не перевизначено за допомогою змінної середовища "LIBGUESTFS_APPEND".

Встановлення для параметра "append" значення "NULL" означає, що ніяких додаткових параметрів не передаватиметься (libguestfs завжди додає декілька параметрів автоматично).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.26)

guestfs_set_attach_method

 int
 guestfs_set_attach_method (guestfs_h *g,
                            const char *backend);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_set_backend".

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

Встановлює спосіб, яким libguestfs користується для встановлення з'єднання із фоновою службою guestfsd модуля обробки.

Див. "МОДУЛЬ".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.9.8)

guestfs_set_autosync

 int
 guestfs_set_autosync (guestfs_h *g,
                       int autosync);

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

Автоматичну синхронізацію типово увімкнено (з версії libguestfs 1.5.24, у попередніх версіях її було вимкнено).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_set_backend

 int
 guestfs_set_backend (guestfs_h *g,
                      const char *backend);

Встановлює спосіб, яким libguestfs користується для встановлення з'єднання із фоновою службою guestfsd модуля обробки.

Ця властивість дескриптора раніше називалася «метод долучення».

Див. "МОДУЛЬ".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.21.26)

guestfs_set_backend_setting

 int
 guestfs_set_backend_setting (guestfs_h *g,
                              const char *name,
                              const char *val);

Дописує рядок "назва=значення" до списку рядків параметрів модуля обробки. Втім, якщо у списку вже існує рядок "назва" або рядок, що починається із запису "назва=", його буде замінено на новий вказаний рядок.

Див. "МОДУЛЬ", "ПАРАМЕТРИ МОДУЛЯ".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.27.2)

guestfs_set_backend_settings

 int
 guestfs_set_backend_settings (guestfs_h *g,
                               char *const *settings);

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

Типовим значенням є порожній список, якщо на час створення дескриптора не було визначено змінну середовища "LIBGUESTFS_BACKEND_SETTINGS". У цій змінній середовища міститься список параметрів, відокремлених двокрапками.

Цей виклик замінює усі параметри модуля обробки. Якщо вам потрібно замінити лише один рядок параметра, скористайтеся "guestfs_set_backend_setting". Якщо вам потрібно прибрати один рядок параметра, скористайтеся "guestfs_clear_backend_setting".

Див. "МОДУЛЬ", "ПАРАМЕТРИ МОДУЛЯ".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.25.24)

guestfs_set_cachedir

 int
 guestfs_set_cachedir (guestfs_h *g,
                       const char *cachedir);

Встановити назву каталогу, який використовується дескриптором для зберігання кешу базової системи, якщо використовується базова система supermin. Базова система кешується і спільно використовується усіма дескрипторами, які мають однаковий ідентифікатор ефективного користувача.

Змінні середовища "LIBGUESTFS_CACHEDIR" і "TMPDIR" керують типовим значенням: якщо встановлено значення "LIBGUESTFS_CACHEDIR", типовим буде саме це встановлене значення. Якщо ж це значення не встановлено і встановлено значення "TMPDIR", використовуватиметься це значення. Якщо ж жодну з цих змінних середовища не встановлено, типово використовуватиметься /var/tmp.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.58)

guestfs_set_direct

 int
 guestfs_set_direct (guestfs_h *g,
                     int direct);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_internal_get_console_socket".

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

Якщо увімкнено прапорець безпосереднього режиму базової системи, вміст stdin та stdout передаватиметься безпосередньо базовій системі одразу після її запуску.

Одним із наслідків цього є те, що повідомлення журналу не перехоплюватимуться бібліотекою і не оброблятимуться "guestfs_set_log_message_callback", а передаватимуться безпосередньо до stdout.

Ймовірно, вам не слід використовувати цю команду, якщо ви не впевнені щодо наслідків ваших дій.

Типово вимкнено.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.72)

guestfs_set_e2attrs

 int
 guestfs_set_e2attrs (guestfs_h *g,
                      const char *file,
                      const char *attrs,
                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_SET_E2ATTRS_CLEAR, int clear,

Ця команда встановлює або знімає атрибути "атрибути" з inode із назвою файл.

Параметр "attrs" є рядком із символів, які визначають атрибути файла. Список можливих значень можна знайти у описі "guestfs_get_e2attrs". Змінювати можна не усі атрибути.

Якщо не вказано необов'язковий булевий параметр "clear" або вказано значення false, вказані "атрибути" буде встановлено для inode.

Якщо встановлено значення "clear" рівне true, вказані "атрибути" буде знято з inode.

У обох випадках інші атрибути, які не вказано у рядку "атрибути", змінено не буде.

Ці атрибути є, лише якщо файл зберігається у файловій системі ext2/3/4. Використання цієї команди для інших типів файлових систем призведе до помилки.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.17.31)

guestfs_set_e2attrs_va

 int
 guestfs_set_e2attrs_va (guestfs_h *g,
                         const char *file,
                         const char *attrs,
                         va_list args);

Це «варіант з va_list» "guestfs_set_e2attrs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_set_e2attrs_argv

 int
 guestfs_set_e2attrs_argv (guestfs_h *g,
                           const char *file,
                           const char *attrs,
                           const struct guestfs_set_e2attrs_argv *optargs);

Це «варіант з argv» "guestfs_set_e2attrs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_set_e2generation

 int
 guestfs_set_e2generation (guestfs_h *g,
                           const char *file,
                           int64_t generation);

Ця команда встановлює стан створення для файла у ext2.

Див. "guestfs_get_e2generation".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.17.31)

guestfs_set_e2label

 int
 guestfs_set_e2label (guestfs_h *g,
                      const char *device,
                      const char *label);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_set_label".

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

Ця команда встановлює мітку файлової системи ext2/3/4 для файлової системи на пристрої "пристрій". Довжину міток файлових систем обмежено 16 символами.

Ви можете скористатися "guestfs_tune2fs_l" або "guestfs_get_e2label" для отримання наявної мітки файлової системи.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.15)

guestfs_set_e2uuid

 int
 guestfs_set_e2uuid (guestfs_h *g,
                     const char *device,
                     const char *uuid);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_set_uuid".

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

Ця команда встановлює UUID файлової системи ext2/3/4 для файлової системи на пристрої "пристрій" у значення "uuid". Формат запису UUID та альтернативні варіанти, зокрема "clear", "random" та "time", описано на сторінці підручника tune2fs(8).

Ви можете скористатися "guestfs_vfs_uuid" для отримання наявного UUID файлової системи.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.15)

guestfs_set_hv

 int
 guestfs_set_hv (guestfs_h *g,
                 const char *hv);

Встановлює назву виконуваного файла гіпервізору, яким ми скористаємося. Назва гіпервізору залежить від використаного модуля обробки, але, зазвичай, це назва гіпервізору qemu/KVM. Для модуля обробки UML це розташування виконуваного файла "linux" або "vmlinux".

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

Крім того, ви можете перевизначити цей параметр за допомогою змінної середовища "LIBGUESTFS_HV".

Зауважте, що вам слід викликати цю функцію якомога ближче до команди створення дескриптора. Причиною є те, що деякі дії перед запуском системи залежать від результатів тестування можливостей qemu (шляхом виконання команди "qemu -help"). Якщо виконуваний файл qemu буде змінено, бібліотека не виконуватиме повторного визначення можливостей, отже, може працювати некоректно. Використання змінної середовища "LIBGUESTFS_HV" є найбезпечнішим способом надати потрібні бібліотеці дані, оскільки встановлення цієї змінної надає бібліотеці змогу дізнатися усе про виконуваний файл qemu одночасно зі створенням дескриптора.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.23.17)

guestfs_set_identifier

 int
 guestfs_set_identifier (guestfs_h *g,
                         const char *identifier);

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

Одним із важливих є варіант, коли увімкнено трасування. Якщо рядок ідентифікатора є непорожнім, повідомлення трасування зміняться з таких:

 libguestfs: trace: get_tmpdir
 libguestfs: trace: get_tmpdir = "/tmp"

на такі:

 libguestfs: trace: ID: get_tmpdir
 libguestfs: trace: ID: get_tmpdir = "/tmp"

де "ID" — рядок ідентифікатор, який було встановлено викликом цієї команди.

Ідентифікатор має складатися із літер латинської абетки і цифр з ASCII, а також символів підкреслювання або дефісів. Типовим його значенням є порожній рядок.

Див. також "guestfs_set_program", "guestfs_set_trace", "guestfs_get_identifier".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.31.14)

guestfs_set_label

 int
 guestfs_set_label (guestfs_h *g,
                    const char *mountable,
                    const char *label);

Встановлює для файлової системи "монтування" мітку "мітка".

Підтримку міток передбачено лише у деяких файлових системах, а у libguestfs передбачено підтримку встановлення міток лише для деякого набору таких систем.

Розмір міток обмежено 16 байтами.
Мітки обмежено 128 символами unicode.
Цю мітку обмежено 12 байтами. Встановлювати мітку можна лише для незмонтованих файлових систем.
Цю мітку обмежено 255 байтами, у ній не можна використовувати деякі символи. Встановлення мітки на підтомі btrfs призведе до встановлення мітки на його батьківській файловій системі. Встановлювати мітку можна лише для незмонтованих файлових систем.
Цю мітку обмежено 11 байтами.
Цю мітку обмежено 16 байтами.

Якщо підтримки зміни мітки для типу вказаної файлової системи не передбачено, set_label завершить роботу із повідомленням про помилку і встановити для errno значення ENOTSUP.

Для читання мітки файлової системи використовуйте "guestfs_vfs_label".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.17.9)

guestfs_set_libvirt_requested_credential

 int
 guestfs_set_libvirt_requested_credential (guestfs_h *g,
                                           int index,
                                           const char *cred,
                                           size_t cred_size);

Після запиту щодо реєстраційних даних із індексом "індекс", спрямованого користувачу, викличте цю функцію для передавання відповіді до libvirt.

Документацію і приклад коду наведено у розділі "РОЗПІЗНАВАННЯ ЗА ДОПОМОГОЮ LIBVIRT".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.52)

guestfs_set_libvirt_supported_credentials

 int
 guestfs_set_libvirt_supported_credentials (guestfs_h *g,
                                            char *const *creds);

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

Список "реєстраційні_дані" має бути непорожнім списком рядків. Можна використовувати такі рядки:

"username"
"authname"
"language"
"cnonce"
"passphrase"
"echoprompt"
"noechoprompt"
"realm"
"external"

Опис значення цих типів реєстраційних даних можна знайти у документації до libvirt.

Документацію і приклад коду наведено у розділі "РОЗПІЗНАВАННЯ ЗА ДОПОМОГОЮ LIBVIRT".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.52)

guestfs_set_memsize

 int
 guestfs_set_memsize (guestfs_h *g,
                      int memsize);

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

Ви також можете змінити значення цього параметра за допомогою встановлення змінної середовища "LIBGUESTFS_MEMSIZE" до створення дескриптора.

Докладніший опис архітектури libguestfs наведено у підручнику з guestfs(3).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.55)

guestfs_set_network

 int
 guestfs_set_network (guestfs_h *g,
                      int network);

Якщо встановлено значення true, у базовій системі libguestfs буде увімкнено роботу у мережі. Типовим значенням є false.

Визначає, чи надаватиметься програмам доступ до мережі (див. "ЗАПУСК КОМАНД").

Цю функцію слід викликати до "guestfs_launch", інакше вона не спрацює.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.5.4)

guestfs_set_path

 int
 guestfs_set_path (guestfs_h *g,
                   const char *searchpath);

Встановлює шлях, за яким libguestfs шукає ядро і initrd.img.

Типовим значенням є "$libdir/guestfs", якщо його не перевизначено за допомогою змінної середовища "LIBGUESTFS_PATH".

Встановлення для параметра "шлях" значення "NULL" відновлює типовий шлях.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_set_pgroup

 int
 guestfs_set_pgroup (guestfs_h *g,
                     int pgroup);

Якщо встановлено значення "pgroup" рівне true, дочірні процеси буде розміщено у власній групі процесів.

Практичним наслідком цього є те, що сигнали, зокрема "SIGINT" (наслідок натискання користувачем комбінації "^C"), не буде отримано дочірнім процесом.

Типовим для цього прапорця є значення false, оскільки, зазвичай, "^C" має вбивати підпроцеси. Guestfish встановлює для цього прапорця значення true, якщо програма використовується інтерактивно, щоб за допомогою "^C" можна було належно скасувати дії, які виконуються надто довго (див. "guestfs_user_cancel").

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.11.18)

guestfs_set_program

 int
 guestfs_set_program (guestfs_h *g,
                      const char *program);

Встановлює назву програми. Це інформативний рядок, який основна програма може встановлювати у дескрипторі.

Під час створення дескриптора назва програми у дескрипторі встановлюється у значення basename з "argv[0]". Назвою програми ніколи не може бути "NULL".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.21.29)

guestfs_set_qemu

 int
 guestfs_set_qemu (guestfs_h *g,
                   const char *hv);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_set_hv".

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

Вказати виконуваний файл гіпервізору (зазвичай qemu), який буде використано.

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

Крім того, ви можете перевизначити цей параметр за допомогою змінної середовища "LIBGUESTFS_HV".

Встановлення для параметра "гіпервізор" значення "NULL" відновлює типовий виконуваний файл qemu.

Зауважте, що вам слід викликати цю функцію якомога ближче до команди створення дескриптора. Причиною є те, що деякі дії перед запуском системи залежать від результатів тестування можливостей qemu (шляхом виконання команди "qemu -help"). Якщо виконуваний файл qemu буде змінено, бібліотека не виконуватиме повторного визначення можливостей, отже, може працювати некоректно. Використання змінної середовища "LIBGUESTFS_HV" є найбезпечнішим способом надати потрібні бібліотеці дані, оскільки встановлення цієї змінної надає бібліотеці змогу дізнатися усе про виконуваний файл qemu одночасно зі створенням дескриптора.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.6)

guestfs_set_recovery_proc

 int
 guestfs_set_recovery_proc (guestfs_h *g,
                            int recoveryproc);

Якщо команда викликається із параметром "false", "guestfs_launch" не створюватиме процесу відновлення. Призначенням процесу відновлення є зупинення залишкових процесів гіпервізору, якщо основна програма несподівано завершує роботу.

Працює, лише якщо викликано до "guestfs_launch", а типовим значенням є true.

Майже єдиним випадком, коли у вас може виникнути потреба вимкнути цю можливість, є випадок, коли основний процес відгалужує себе у фонову версію («демонізує» себе). У цьому випадку процес відновлення вважає, що основна програма зникла і вбиває процес гіпервізору, отже, псує усю справу.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.77)

guestfs_set_selinux

 int
 guestfs_set_selinux (guestfs_h *g,
                      int selinux);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_selinux_relabel".

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

Ця команда встановлює прапорець selinux, який передається базовій системі під час завантаження. Типовим є прапорець "selinux=0" (вимкнено).

Зауважте, що якщо SELinux увімкнено, система завжди перебуває у дозвільному режимі (Permissive) ("enforcing=0").

Докладніший опис архітектури libguestfs наведено у підручнику з guestfs(3).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.67)

guestfs_set_smp

 int
 guestfs_set_smp (guestfs_h *g,
                  int smp);

Змінює кількість віртуальних процесорів, які буде призначено на обробку команд базової системи. Типовим є значення 1. Збільшення цього значення може підвищити швидкодію, але часто просто ні на що не впливає.

Цю функцію слід викликати до "guestfs_launch".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.13.15)

guestfs_set_tmpdir

 int
 guestfs_set_tmpdir (guestfs_h *g,
                     const char *tmpdir);

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

Змінні середовища "LIBGUESTFS_TMPDIR" і "TMPDIR" керують типовим значенням: якщо встановлено значення "LIBGUESTFS_TMPDIR", типовим буде саме це встановлене значення. Якщо ж це значення не встановлено і встановлено значення "TMPDIR", використовуватиметься це значення. Якщо ж жодну з цих змінних середовища не встановлено, типово використовуватиметься /tmp.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.58)

guestfs_set_trace

 int
 guestfs_set_trace (guestfs_h *g,
                    int trace);

Якщо прапорець trace цієї команди встановлено у значення 1, буде виконуватися трасування викликів, параметрів та повернутих значень libguestfs.

Якщо вам потрібно трасувати виклики програмного інтерфейсу мовою C у libguestfs (та інших бібліотеках), ймовірно, кращим способом буде використання зовнішньої команди ltrace(1).

Трасування команд вимкнено, якщо змінну середовища "LIBGUESTFS_TRACE" не визначено і не встановлено для неї значення 1.

Повідомлення трасування зазвичай надсилаються до "stderr", якщо ви не зареєструєте зворотного виклику для надсилання цих повідомлень у якесь інше місце (див. "guestfs_set_event_callback").

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.69)

guestfs_set_uuid

 int
 guestfs_set_uuid (guestfs_h *g,
                   const char *device,
                   const char *uuid);

Встановлює для UUID файлової системи на пристрої "пристрій" значення "uuid". Якщо встановити значення не вдасться, а errno матиме значення ENOTSUP, це означатиме, що для типу вказаної файлової системи не передбачено підтримки зміни UUID.

Підтримку встановлення UUID передбачено лише у деяких типах файлових систем.

Для читання UUID файлової системи слід викликати "guestfs_vfs_uuid".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.23.10)

guestfs_set_uuid_random

 int
 guestfs_set_uuid_random (guestfs_h *g,
                          const char *device);

Встановлює для UUID файлової системи на пристрої "пристрій" у випадкове значення. Якщо встановити значення не вдасться, а errno матиме значення ENOTSUP, це означатиме, що для типу вказаної файлової системи не передбачено підтримки зміни UUID.

Підтримку встановлення UUID передбачено лише у деяких типах файлових систем.

Для читання UUID файлової системи слід викликати "guestfs_vfs_uuid".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.29.50)

guestfs_set_verbose

 int
 guestfs_set_verbose (guestfs_h *g,
                      int verbose);

Якщо аргумент "verbose" матиме значення true, буде увімкнено режим докладних повідомлень.

Докладні повідомлення вимкнено, якщо змінну середовища "LIBGUESTFS_DEBUG" не визначено і не встановлено для неї значення 1.

Докладні повідомлення зазвичай надсилаються до "stderr", якщо ви не зареєструєте зворотного виклику для надсилання цих повідомлень у якесь інше місце (див. "guestfs_set_event_callback").

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_setcon

 int
 guestfs_setcon (guestfs_h *g,
                 const char *context);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_selinux_relabel".

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

Ця команда встановлює для контексту безпеки SELinux фонової служби значення "контекст".

Див. документацію щодо SELINUX у підручнику з guestfs(3).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "selinux". Див. також "guestfs_feature_available".

(Додано у 1.0.67)

guestfs_setxattr

 int
 guestfs_setxattr (guestfs_h *g,
                   const char *xattr,
                   const char *val,
                   int vallen,
                   const char *path);

Ця команда встановлює розширений атрибут із назвою "розширений_атрибут" для файла "шлях" у значення "значення" (довжини "довжина_значення"). Значенням можуть бути довільні 8-бітові дані.

Див. також "guestfs_lsetxattr", attr(5).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxxattrs". Див. також "guestfs_feature_available".

(Додано у 1.0.59)

guestfs_sfdisk

 int
 guestfs_sfdisk (guestfs_h *g,
                 const char *device,
                 int cyls,
                 int heads,
                 int sectors,
                 char *const *lines);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_part_add".

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

Це безпосередній інтерфейс програми sfdisk(8) для створення розділів на блокових пристроях.

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

"cyls", "heads" and "sectors" are the number of cylinders, heads and sectors on the device, which are passed directly to sfdisk(8) as the -C, -H and -S parameters. If you pass 0 for any of these, then the corresponding parameter is omitted. Usually for ‘large’ disks, you can just pass 0 for these, but for small (floppy-sized) disks, sfdisk(8) (or rather, the kernel) cannot work out the right geometry and you will need to tell it.

"lines" is a list of lines that we feed to sfdisk(8). For more information refer to the sfdisk(8) manpage.

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

Див. також "guestfs_sfdisk_l", "guestfs_sfdisk_N", "guestfs_part_init"

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_sfdiskM

 int
 guestfs_sfdiskM (guestfs_h *g,
                  const char *device,
                  char *const *lines);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_part_add".

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

Це спрощений інтерфейс команди "guestfs_sfdisk", де розміри розділів вказується у лише у мегабайтах (округлений до найближчого циліндра), і вам не потрібно вказувати параметри циліндрів, голівок і секторів, використання яких все одно є рідкісним.

Див. також "guestfs_sfdisk", сторінку man sfdisk(8) та "guestfs_part_disk"

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.55)

guestfs_sfdisk_N

 int
 guestfs_sfdisk_N (guestfs_h *g,
                   const char *device,
                   int partnum,
                   int cyls,
                   int heads,
                   int sectors,
                   const char *line);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_part_add".

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

Ця команда додає для програми sfdisk(8) параметр, який змінює лише окремий розділ "n" (зауваження: відлік "n" ведеться з 1).

Опис інший параметрів можна знайти у довідці щодо "guestfs_sfdisk". Зазвичай, вам варто передати 0 для параметрів циліндрів, заголовків та секторів.

Див. також "guestfs_part_add"

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.26)

guestfs_sfdisk_disk_geometry

 char *
 guestfs_sfdisk_disk_geometry (guestfs_h *g,
                               const char *device);

Ця команда показує геометрію диска пристрою "device", прочитану з таблиці розділів. Ці дані можуть відрізнятися від даних щодо геометрії, які відомі ядру, особливо у випадку, якщо розмір базового пристрою було змінено (див. "guestfs_sfdisk_kernel_geometry").

Результат буде виведено у зручному для читанні вигляді. Його не призначено для програмної обробки.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.26)

guestfs_sfdisk_kernel_geometry

 char *
 guestfs_sfdisk_kernel_geometry (guestfs_h *g,
                                 const char *device);

Ця команда показує визначені ядром дані щодо геометрії пристрою "пристрій".

Результат буде виведено у зручному для читанні вигляді. Його не призначено для програмної обробки.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.26)

guestfs_sfdisk_l

 char *
 guestfs_sfdisk_l (guestfs_h *g,
                   const char *device);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_part_list".

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

Ця команда виводить таблицю розділів на пристрої "пристрій" у зручному для читання форматі даних, виведених командою sfdisk(8). Ці дані не призначено для програмної обробки.

Див. також "guestfs_part_list"

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.26)

guestfs_sh

 char *
 guestfs_sh (guestfs_h *g,
             const char *command);

Ця команда виконує програму з гостьової системи за допомогою /bin/sh гостьової системи.

Подібна до "guestfs_command", але передає команду так:

 /bin/sh -c "команда"

Залежно від командної оболонки гостьової системи, зазвичай, це призводить до розгортання символів-замінників, обробки виразів командної оболонки тощо.

Усі зауваження щодо "guestfs_command" стосуються і цього виклику.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.50)

guestfs_sh_lines

 char **
 guestfs_sh_lines (guestfs_h *g,
                   const char *command);

Те саме, що і "guestfs_sh", але результат буде поділено на список рядків.

Див. також "guestfs_command_lines"

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.0.50)

guestfs_shutdown

 int
 guestfs_shutdown (guestfs_h *g);

Протилежність команди "guestfs_launch". Виконує упорядковане вимикання процесів модуля обробки. Якщо встановлено прапорець autosync (типова поведінка), буде синхронізовано образ диска.

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

Команду можна безпечно викликати довільну кількість разів. Усі зайві виклики буде просто проігноровано.

Ця команда не закриває і не звільняє дескриптор. Вам слід викликати "guestfs_close" після її виконання.

"guestfs_close" викличе цю команду, якщо ви не зробите цього явно, але, слід зауважити, що усі помилки у цьому випадку буде проігноровано.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.19.16)

guestfs_sleep

 int
 guestfs_sleep (guestfs_h *g,
                int secs);

Призупинити обробку на "час_у_секундах".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.41)

guestfs_stat

 struct guestfs_stat *
 guestfs_stat (guestfs_h *g,
               const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_statns".

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

Повертає дані щодо файла за вказаним шляхом "шлях".

Це те саме, що системний виклик stat(2).

Ця функція повертає "struct guestfs_stat *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_stat".

(Додано у 1.9.2)

guestfs_statns

 struct guestfs_statns *
 guestfs_statns (guestfs_h *g,
                 const char *path);

Повертає дані щодо файла за вказаним шляхом "шлях".

Це те саме, що системний виклик stat(2).

Ця функція повертає "struct guestfs_statns *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_statns".

(Додано у 1.27.53)

guestfs_statvfs

 struct guestfs_statvfs *
 guestfs_statvfs (guestfs_h *g,
                  const char *path);

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

Це те саме, що системний виклик statvfs(2).

Ця функція повертає "struct guestfs_statvfs *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_statvfs".

(Додано у 1.9.2)

guestfs_strings

 char **
 guestfs_strings (guestfs_h *g,
                  const char *path);

Виконує програму strings(1) для файла і повертає список знайдених у ньому придатних до друку рядків.

У минулому у команди "strings" були проблеми із обробкою файлів, отриманих від ненадійних джерел. Ці проблеми усунуто у поточній версії libguestfs, втім, див. "CVE-2014-8484".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.22)

guestfs_strings_e

 char **
 guestfs_strings_e (guestfs_h *g,
                    const char *encoding,
                    const char *path);

Ця команда подібна до команди "guestfs_strings", але надає вам змогу вказати кодування рядків, які ви шукаєте у файлі даних "path".

Можливими кодуваннями є:

Одинарні 7-бітові символи, зокрема ASCII та сумісні із ASCII частини ISO-8859-X (це кодування використовує "guestfs_strings").
Окремі 8-бітові-байтові символи.
16-бітове зі зворотним порядком байтів, зокрема рядки у кодуваннях UTF-16BE та UCS-2BE.
16-бітове із прямим порядком байтів, зокрема UTF-16LE і UCS-2LE. Корисно для вивчення двійкових файлів у гостьових системах Windows.
32-бітове зі зворотним порядком байтів, зокрема UCS-4LE.
32-бітове із прямим порядком байтів, зокрема UCS-4LE.

Повернуті рядки буде перекодовано до UTF-8.

У минулому у команди "strings" були проблеми із обробкою файлів, отриманих від ненадійних джерел. Ці проблеми усунуто у поточній версії libguestfs, втім, див. "CVE-2014-8484".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.22)

guestfs_swapoff_device

 int
 guestfs_swapoff_device (guestfs_h *g,
                         const char *device);

Ця команда вимикає резервну пам'ять на диску або розділ із назвою "device" у базовій системі libguestfs. Див. "guestfs_swapon_device".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_swapoff_file

 int
 guestfs_swapoff_file (guestfs_h *g,
                       const char *file);

Ця команда вимикає резервну пам'ять у файлі для базової системи libguestfs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_swapoff_label

 int
 guestfs_swapoff_label (guestfs_h *g,
                        const char *label);

Ця команда вимикає резервну пам'ять на диску у базовій системі libguestfs на вказаному за міткою розділі резервної пам'яті.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_swapoff_uuid

 int
 guestfs_swapoff_uuid (guestfs_h *g,
                       const char *uuid);

Ця команда вимикає резервну пам'ять на диску у базовій системі libguestfs на вказаному розділі із вказаним UUID.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxfsuuid". Див. також "guestfs_feature_available".

(Додано у 1.0.66)

guestfs_swapon_device

 int
 guestfs_swapon_device (guestfs_h *g,
                        const char *device);

Ця команда вмикає резервну пам'ять на диску або розділ із назвою "device" у базовій системі libguestfs. Збільшений обсяг пам'яті стає доступним для усіх команд, зокрема тих, які запускаються за допомогою "guestfs_command" або "guestfs_sh".

Зауважте, що вам не варто створювати резервну пам'ять на наявних розділах резервної пам'яті гостьової системи, якщо ви не впевнені у правильності своїх дій. На цих розділах можуть міститися дані режиму присипляння системи або інші дані, які не варто втрачати. Також подібні дії можуть призвести до небажаного доступу до конфіденційних даних у гостьовій системі. Замість цього, долучіть до гостьової системи новий пристрій основної системи і організовуйте резервну пам'ять на ньому.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_swapon_file

 int
 guestfs_swapon_file (guestfs_h *g,
                      const char *file);

Ця команда вмикає резервну пам'ять у файлі. Зауваження щодо її використання є такими самими, що і для "guestfs_swapon_device".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_swapon_label

 int
 guestfs_swapon_label (guestfs_h *g,
                       const char *label);

Ця команда вмикає резервну пам'ять на вказаному за міткою розділі резервної пам'яті. Зауваження щодо її використання є такими самими, що і для "guestfs_swapon_device".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.66)

guestfs_swapon_uuid

 int
 guestfs_swapon_uuid (guestfs_h *g,
                      const char *uuid);

Ця команда вмикає резервну пам'ять на розділі резервної пам'яті, вказаному за UUID. Зауваження щодо її використання є такими самими, що і для "guestfs_swapon_device".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "linuxfsuuid". Див. також "guestfs_feature_available".

(Додано у 1.0.66)

guestfs_sync

 int
 guestfs_sync (guestfs_h *g);

Ця команда виконує синхронізацію диска. Усі буфери даних записуються на базовий образ диска.

Вам завжди слід викликати цю команду, якщо ви вносили зміни до образу диска, перед закриттям дескриптора.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_syslinux

 int
 guestfs_syslinux (guestfs_h *g,
                   const char *device,
                   ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_SYSLINUX_DIRECTORY, const char *directory,

Встановлює завантажувач SYSLINUX на "пристрій".

Значенням параметра пристрою має бути або увесь диск, форматований у файлову систему FAT, або розділ диска, форматований у файлову систему FAT. У останньому випадку, розділ має бути позначено як «активний» ("guestfs_part_set_bootable"), а на перший сектор усього диска має бути встановлено MBR (наприклад, за допомогою "guestfs_pwrite_device"). До пакунка SYSLINUX включено деякі найпоширеніші варіанти MBR. Докладніший опис можна знайти на сторінці підручника щодо syslinux(1).

Необов'язковими аргументами є:

Встановити SYSLINUX до вказаного за назвою підкаталогу, замість кореневого каталогу файлової системи FAT.

Додатково налаштувати SYSLINUX можна за допомогою файла із назвою syslinux.cfg на файловій системі FAT, у кореневому каталозі або у каталозі файлової системи каталог, якщо використано необов'язковий аргумент команди. Докладніше про це та вміст файла можна дізнатися зі сторінки підручника syslinux(1).

Див. також "guestfs_extlinux".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "syslinux". Див. також "guestfs_feature_available".

(Додано у 1.21.27)

guestfs_syslinux_va

 int
 guestfs_syslinux_va (guestfs_h *g,
                      const char *device,
                      va_list args);

Це «варіант з va_list» "guestfs_syslinux".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_syslinux_argv

 int
 guestfs_syslinux_argv (guestfs_h *g,
                        const char *device,
                        const struct guestfs_syslinux_argv *optargs);

Це «варіант з argv» "guestfs_syslinux".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_tail

 char **
 guestfs_tail (guestfs_h *g,
               const char *path);

Ця команда повертає останні 10 рядків файла у форматі списку рядків.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.54)

guestfs_tail_n

 char **
 guestfs_tail_n (guestfs_h *g,
                 int nrlines,
                 const char *path);

Якщо параметр "к-ть_рядків" є додатним числом, повертає останні "к-ть_рядків" рядків з файла "шлях".

If the parameter "nrlines" is a negative number, this returns lines from the file "path", starting with the "-nrlines"'th line.

Якщо значенням параметра "к-ть_рядків" є нуль, команда повертає порожній список.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.54)

guestfs_tar_in

 int
 guestfs_tar_in (guestfs_h *g,
                 const char *tarfile,
                 const char *directory);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_tar_in_opts" без додаткових аргументів.

(Додано у 1.0.3)

guestfs_tar_in_opts

 int
 guestfs_tar_in_opts (guestfs_h *g,
                      const char *tarfile,
                      const char *directory,
                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_TAR_IN_OPTS_COMPRESS, const char *compress,
 GUESTFS_TAR_IN_OPTS_XATTRS, int xattrs,
 GUESTFS_TAR_IN_OPTS_SELINUX, int selinux,
 GUESTFS_TAR_IN_OPTS_ACLS, int acls,

Ця команда вивантажує і розпаковує локальний файл "файл_tar" до каталогу каталог.

Необов'язковий прапорець "compress" керує стисканням. Якщо його не вказано, вхідні дані мають бути простим, нестисненим файлом tar. Ви також можете вказати такі рядки для вибору типу стискання: "compress", "gzip", "bzip2", "xz", "lzop". (Зауважте, що підтримку усіх цих типів стискання передбачено не в усіх зібраних пакунках libguestfs).

Іншими необов'язковими параметрами є такі:

"xattrs"
Якщо встановлено значення true, розширені атрибути відновлюватимуться з файла tar.
"selinux"
Якщо встановлено значення true, контекст SELinux відновлюватиметься з файла tar.
"acls"
Якщо встановлено значення true, з файла tar відновлюватимуться ACL POSIX.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.3)

guestfs_tar_in_opts_va

 int
 guestfs_tar_in_opts_va (guestfs_h *g,
                         const char *tarfile,
                         const char *directory,
                         va_list args);

Це «варіант з va_list» "guestfs_tar_in_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_tar_in_opts_argv

 int
 guestfs_tar_in_opts_argv (guestfs_h *g,
                           const char *tarfile,
                           const char *directory,
                           const struct guestfs_tar_in_opts_argv *optargs);

Це «варіант з argv» "guestfs_tar_in_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_tar_out

 int
 guestfs_tar_out (guestfs_h *g,
                  const char *directory,
                  const char *tarfile);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_tar_out_opts" без додаткових аргументів.

(Додано у 1.0.3)

guestfs_tar_out_opts

 int
 guestfs_tar_out_opts (guestfs_h *g,
                       const char *directory,
                       const char *tarfile,
                       ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_TAR_OUT_OPTS_COMPRESS, const char *compress,
 GUESTFS_TAR_OUT_OPTS_NUMERICOWNER, int numericowner,
 GUESTFS_TAR_OUT_OPTS_EXCLUDES, char *const *excludes,
 GUESTFS_TAR_OUT_OPTS_XATTRS, int xattrs,
 GUESTFS_TAR_OUT_OPTS_SELINUX, int selinux,
 GUESTFS_TAR_OUT_OPTS_ACLS, int acls,

Ця команда пакує вміст каталогу каталог отримує його до локального файла "файл_tar".

Необов'язковий прапорець "compress" керує стисканням. Якщо його не вказано, вихідні дані будуть простим, нестисненим файлом tar. Ви також можете вказати такі рядки для вибору типу стискання: "compress", "gzip", "bzip2", "xz", "lzop". (Зауважте, що підтримку усіх цих типів стискання передбачено не в усіх зібраних пакунках libguestfs).

Іншими необов'язковими параметрами є такі:

"excludes"
Список шаблонів. Файли буде виключено, якщо вони відповідатимуть якомусь із вказаних шаблонів.
"numericowner"
Якщо встановлено значення true, у виведеному файлі tar міститимуться номери UID/GID замість назв записів користувачів і груп.
"xattrs"
Якщо встановлено значення true, у виведеному файлі tar зберігатимуться розширені атрибути.
"selinux"
Якщо встановлено значення true, у виведеному файлі tar зберігатимуться контексти SELinux.
"acls"
Якщо встановлено значення true, у виведеному файлі tar зберігатимуться ACL POSIX.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.3)

guestfs_tar_out_opts_va

 int
 guestfs_tar_out_opts_va (guestfs_h *g,
                          const char *directory,
                          const char *tarfile,
                          va_list args);

Це «варіант з va_list» "guestfs_tar_out_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_tar_out_opts_argv

 int
 guestfs_tar_out_opts_argv (guestfs_h *g,
                            const char *directory,
                            const char *tarfile,
                            const struct guestfs_tar_out_opts_argv *optargs);

Це «варіант з argv» "guestfs_tar_out_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_tgz_in

 int
 guestfs_tgz_in (guestfs_h *g,
                 const char *tarball,
                 const char *directory);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_tar_in".

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

Ця команда вивантажує і розпаковує локальний файл "архів_tar" (стиснений gzip файл tar) до каталогу каталог.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.3)

guestfs_tgz_out

 int
 guestfs_tgz_out (guestfs_h *g,
                  const char *directory,
                  const char *tarball);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_tar_out".

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

Ця команда пакує вміст каталогу каталог отримує його до локального файла "архів_tar".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.3)

guestfs_touch

 int
 guestfs_touch (guestfs_h *g,
                const char *path);

Touch працює як команда touch(1). Цією командою можна скористатися для оновлення часових позначок файла або, якщо файла не існує, створення нового файла нульової довжини.

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

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_truncate

 int
 guestfs_truncate (guestfs_h *g,
                   const char *path);

Ця команда обрізає файл "шлях" до нульової довжини. Для її успішного виконання файл має існувати.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.77)

guestfs_truncate_size

 int
 guestfs_truncate_size (guestfs_h *g,
                        const char *path,
                        int64_t size);

Ця команда обрізає файл "шлях" до розміру у "розмір" байтів. Для її успішного виконання файл має існувати.

Якщо поточний розмір файла є меншим за "розмір", файл буде розширено до вказаного розміру доповненням його вмісту нульовими байтами. Команда створює розріджений файл (тобто блоки диска не розподіляються під файл, доки ви не виконаєте запис до нього). Для створення файла заповненого нулями, який не буде розрідженим, скористайтеся командою "guestfs_fallocate64".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.77)

guestfs_tune2fs

 int
 guestfs_tune2fs (guestfs_h *g,
                  const char *device,
                  ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_TUNE2FS_FORCE, int force,
 GUESTFS_TUNE2FS_MAXMOUNTCOUNT, int maxmountcount,
 GUESTFS_TUNE2FS_MOUNTCOUNT, int mountcount,
 GUESTFS_TUNE2FS_ERRORBEHAVIOR, const char *errorbehavior,
 GUESTFS_TUNE2FS_GROUP, int64_t group,
 GUESTFS_TUNE2FS_INTERVALBETWEENCHECKS, int intervalbetweenchecks,
 GUESTFS_TUNE2FS_RESERVEDBLOCKSPERCENTAGE, int reservedblockspercentage,
 GUESTFS_TUNE2FS_LASTMOUNTEDDIRECTORY, const char *lastmounteddirectory,
 GUESTFS_TUNE2FS_RESERVEDBLOCKSCOUNT, int64_t reservedblockscount,
 GUESTFS_TUNE2FS_USER, int64_t user,

За допомогою цієї команди ви можете скоригувати різноманітні параметри файлової системи ext2/ext3/ext4 із назвою "пристрій".

Додатковими параметрами є:

"force"
Force tune2fs to complete the operation even in the face of errors. This is the same as the tune2fs(8) "-f" option.
"maxmountcount"
Set the number of mounts after which the filesystem is checked by e2fsck(8). If this is 0 then the number of mounts is disregarded. This is the same as the tune2fs(8) "-c" option.
"mountcount"
Set the number of times the filesystem has been mounted. This is the same as the tune2fs(8) "-C" option.
"errorbehavior"
Змінює поведінку коду ядра, якщо стануться помилки. Можливі значення у поточній версії: "continue", "remount-ro", "panic". На практиці, відмінність між цими варіантами є незначною, зокрема при появі помилок запису.

This is the same as the tune2fs(8) "-e" option.

"group"
Set the group which can use reserved filesystem blocks. This is the same as the tune2fs(8) "-g" option except that it can only be specified as a number.
"intervalbetweenchecks"
Коригує максимальний час між двома послідовними перевірками файлової системи (у секундах). Якщо буде передано значення 0, залежність перевірок від часу буде вимкнено.

This is the same as the tune2fs(8) "-i" option.

"reservedblockspercentage"
Set the percentage of the filesystem which may only be allocated by privileged processes. This is the same as the tune2fs(8) "-m" option.
"lastmounteddirectory"
Set the last mounted directory. This is the same as the tune2fs(8) "-M" option.
"reservedblockscount" Set the number of reserved filesystem blocks. This is the same as the tune2fs(8) "-r" option.
"user"
Set the user who can use the reserved filesystem blocks. This is the same as the tune2fs(8) "-u" option except that it can only be specified as a number.

Якщо вам потрібно отримати поточні значення параметрів файлової системи, скористайтеся "guestfs_tune2fs_l". Докладний опис роботи tune2fs наведено на сторінці підручника tune2fs(8).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.15.4)

guestfs_tune2fs_va

 int
 guestfs_tune2fs_va (guestfs_h *g,
                     const char *device,
                     va_list args);

Це «варіант з va_list» "guestfs_tune2fs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_tune2fs_argv

 int
 guestfs_tune2fs_argv (guestfs_h *g,
                       const char *device,
                       const struct guestfs_tune2fs_argv *optargs);

Це «варіант з argv» "guestfs_tune2fs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_tune2fs_l

 char **
 guestfs_tune2fs_l (guestfs_h *g,
                    const char *device);

Ця команда повертає вміст суперблоку файлової системи ext2, ext3 або ext4 на пристрої "пристрій".

Результат буде таким самим як результат виконання команди "tune2fs -l пристрій". Див. сторінку підручника tune2fs(8), щоб дізнатися більше. Список повернутих полів не є точно визначеним і залежить від версії "tune2fs", з якою було зібрано libguestfs, та самої файлової системи.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Масив рядків завжди матиме довжину "2n+1", значення "n" ключів і значень йтимуть одне за одним послідовно, завершуючись кінцевим записом NULL. Після використання слід звільнити рядки і масив.

(Додано у 1.9.2)

guestfs_txz_in

 int
 guestfs_txz_in (guestfs_h *g,
                 const char *tarball,
                 const char *directory);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_tar_in".

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

Ця команда вивантажує і розпаковує локальний файл "архів_tar" (стиснений xz файл tar) до каталогу каталог.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "xz". Див. також "guestfs_feature_available".

(Додано у 1.3.2)

guestfs_txz_out

 int
 guestfs_txz_out (guestfs_h *g,
                  const char *directory,
                  const char *tarball);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_tar_out".

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

Ця команда пакує вміст каталогу каталог отримує його до локального файла "архів_tar" (у форматі стисненого xz архіву tar).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "xz". Див. також "guestfs_feature_available".

(Додано у 1.3.2)

guestfs_umask

 int
 guestfs_umask (guestfs_h *g,
                int mask);

Ця функція встановлює маску, яка використовується для створення нових файлів і вузлів пристрою, у значення "mask & 0777".

Типовими значеннями umask мають бути 022, використання якої призводить до прав доступу «-rw-r--r--» або «-rwxr-xr-x», та 002, використання якої призводить до прав доступу «-rw-rw-r--» або «-rwxrwxr-x».

Типовим значенням umask є 022. Це важливо, оскільки означає, що каталоги і вузли пристрою створюватимуться із правами доступу 0644 або 0755, навіть якщо ви вкажете права доступу 0777.

Див. також "guestfs_get_umask", umask(2), "guestfs_mknod", "guestfs_mkdir".

Цей виклик повертає попередню umask.

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.0.55)

guestfs_umount

 int
 guestfs_umount (guestfs_h *g,
                 const char *pathordevice);

Цю функцію реалізовано для зворотної сумісності із ранішими версіями libguestfs. Вона просто викликає "guestfs_umount_opts" без додаткових аргументів.

(Додано у 0.8)

guestfs_umount_opts

 int
 guestfs_umount_opts (guestfs_h *g,
                      const char *pathordevice,
                      ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_UMOUNT_OPTS_FORCE, int force,
 GUESTFS_UMOUNT_OPTS_LAZYUNMOUNT, int lazyunmount,

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

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_umount_opts_va

 int
 guestfs_umount_opts_va (guestfs_h *g,
                         const char *pathordevice,
                         va_list args);

Це «варіант з va_list» "guestfs_umount_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_umount_opts_argv

 int
 guestfs_umount_opts_argv (guestfs_h *g,
                           const char *pathordevice,
                           const struct guestfs_umount_opts_argv *optargs);

Це «варіант з argv» "guestfs_umount_opts".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_umount_all

 int
 guestfs_umount_all (guestfs_h *g);

Демонтує усі змонтовані файлові системи.

Деякі із внутрішніх монтувань не демонтуються цим викликом.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.8)

guestfs_umount_local

 int
 guestfs_umount_local (guestfs_h *g,
                       ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_UMOUNT_LOCAL_RETRY, int retry,

Якщо libguestfs експортує файлову систему на локальну точку монтування, цей виклик демонтує її.

Із повною документацією можна ознайомитися у розділі "ЛОКАЛЬНЕ МОНТУВАННЯ".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.17.22)

guestfs_umount_local_va

 int
 guestfs_umount_local_va (guestfs_h *g,
                          va_list args);

Це «варіант з va_list» "guestfs_umount_local".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_umount_local_argv

 int
 guestfs_umount_local_argv (guestfs_h *g,
                            const struct guestfs_umount_local_argv *optargs);

Це «варіант з argv» "guestfs_umount_local".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_upload

 int
 guestfs_upload (guestfs_h *g,
                 const char *filename,
                 const char *remotefilename);

Вивантажує локальний файл назва_файла до віддаленого файла назва_віддаленого_файла у файловій системі.

Значенням параметра назва_файла також може бути іменований канал обробки даних.

Див. також "guestfs_download".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.0.2)

guestfs_upload_offset

 int
 guestfs_upload_offset (guestfs_h *g,
                        const char *filename,
                        const char *remotefilename,
                        int64_t offset);

Вивантажує локальний файл назва_файла до віддаленого файла назва_віддаленого_файла у файловій системі.

Віддалений файл назва_віддаленого_файла буде перезаписано, починаючи з байта "відступ". Призначенням команди є перезапис частин наявних файлів або пристроїв, хоча, якщо буде задано файл, якого не існує, команда створить його із «діркою» до байта "відступ". Розмір записаних даних неявним чином визначається розміром файла-джерела назва_файла.

Зауважте, що немає обмеження на обсяг даних, які може бути вивантажено за допомогою цього виклику, на відміну від команди "guestfs_pwrite", і цей виклик завжди записує дані до кінця, якщо не станеться помилки.

Див. також "guestfs_upload", "guestfs_pwrite".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.5.17)

guestfs_user_cancel

 int
 guestfs_user_cancel (guestfs_h *g);

За допомогою цієї функції можна скасувати поточну дію із отримання або вивантаження даних.

На відміну від більшості інших викликів libguestfs, цю функцію захищено від сигналів та потоків обробки. Ви можете викликати її із обробника сигналів або іншого потоку обробки без потреби у блокуванні хоч чогось.

Передавання даних, яке не було завершено (якщо таке існує), буде зупинено невдовзі після виконання цієї команди, і буде повернуто повідомлення про помилку. Для errno (див. "guestfs_last_errno") буде встановлено значення "EINTR", отже ви можете просто перевірити це значення, щоб визначити дію, яку було скасовано або яка завершилася помилкою через інші причини.

Чищення після виконання команди не виконуватиметься. Наприклад, якщо на момент скасовування виконувалося вивантаження файла, результатом буде частково вивантажений файл. Про належне чищення має подбати функція, з якої було викликано команду.

Існує два типових місця, звідки ви варто викликати "guestfs_user_cancel":

In an interactive text-based program, you might call it from a "SIGINT" signal handler so that pressing "^C" cancels the current operation. (You also need to call "guestfs_set_pgroup" so that child processes don't receive the "^C" signal).

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

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.11.18)

guestfs_utimens

 int
 guestfs_utimens (guestfs_h *g,
                  const char *path,
                  int64_t atsecs,
                  int64_t atnsecs,
                  int64_t mtsecs,
                  int64_t mtnsecs);

Ця команда встановлює часову позначку для файла з точністю до наносекунди.

"atsecs", "atnsecs" are the last access time (atime) in secs and nanoseconds from the epoch.

"mtsecs", "mtnsecs" are the last modification time (mtime) in secs and nanoseconds from the epoch.

Якщо якесь із полів *nsecs містить спеціальне значення "-1", відповідну часову позначку буде встановлено у поточний момент часу. (У цьому випадку поле *secs буде проігноровано.)

Якщо якесь із полів *nsecs містить спеціальне значення "-2", відповідну часову позначку не буде змінено. (У цьому випадку поле *secs буде проігноровано.)

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.77)

guestfs_utsname

 struct guestfs_utsname *
 guestfs_utsname (guestfs_h *g);

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

Ця функція повертає "struct guestfs_utsname *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_utsname".

(Додано у 1.19.27)

guestfs_version

 struct guestfs_version *
 guestfs_version (guestfs_h *g);

Повертає номер версії libguestfs, з якою скомпоновано програму.

Зауважте, що через динамічне компонування, це може бути зовсім не та версія libguestfs, з якою виконувалося збирання. Ви можете зібрати програму, а потім у динамічному режимі скомпонувати її із зовсім іншою бібліотекою libguestfs.so.

Цей виклик було додано у версії 1.0.58. У попередніх версіях libguestfs не було можливості отримати номер версії. З коду мовою C ви можете використовувати функції динамічного компонування для визначення того, чи існує символ (якщо символу не існує, це давня версія, до версії 1.0.58).

Цей виклик повертає структуру із чотирьох елементів. Перші три ("major", "minor" і "release") є числами, які відповідають звичній трійці частин версії. Четвертий елемент ("extra") є рядком, який зазвичай є порожнім, але його може бути використано для специфічної для дистрибутива інформації.

Для побудови початкового рядка версії: "$major.$minor.$release$extra"

Див також: "НУМЕРАЦІЯ ВЕРСІЙ LIBGUESTFS".

Зауваження: не користуйтеся цим викликом для визначення доступності якихось можливостей. У промислових дистрибутивах ми виконуємо зворотне портування можливостей з пізніших версій на раніші. Це робить визначення за версією ненадійною справою. Замість цього, користуйтеся командами "guestfs_available" і "guestfs_feature_available".

Ця функція повертає "struct guestfs_version *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_version".

(Додано у 1.0.58)

guestfs_vfs_label

 char *
 guestfs_vfs_label (guestfs_h *g,
                    const char *mountable);

Повертає мітку файлової системи на розділі "монтований_розділ".

Якщо у файлової системи немає мітки, буде повернуто порожній рядок.

Пошук файлової системи за міткою можна здійснити за допомогою "guestfs_findfs_label".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.3.18)

guestfs_vfs_minimum_size

 int64_t
 guestfs_vfs_minimum_size (guestfs_h *g,
                           const char *mountable);

Отримати мінімальний розмір файлової системи у байтах. Це мінімальний можливий розмір файлової системи після стискання.

Якщо отримання мінімального розміру для файлової системи не передбачено, ця команда завершить роботи повідомленням про помилку, встановивши для errno значення ENOTSUP.

Див. також ntfsresize(8), resize2fs(8), btrfs(8), xfs_info(8).

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.31.18)

guestfs_vfs_type

 char *
 guestfs_vfs_type (guestfs_h *g,
                   const char *mountable);

Ця команда отримує тип файлової системи, відповідний до файлової системи у "монтуванні".

Для більшості файлових систем результатом виконання є назва модуля VFS Linux, який буде використано для монтування цієї системи, якщо ви змонтуєте її без явного задання типу файлової системи. Наприклад, може бути повернуто рядок "ext3" або "ntfs".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.75)

guestfs_vfs_uuid

 char *
 guestfs_vfs_uuid (guestfs_h *g,
                   const char *mountable);

Ця команда повертає UUID файлової системи для файлової системи "монтування".

Якщо у файлової системи немає UUID, буде повернуто порожній рядок.

Пошук файлової системи за UUID можна здійснити за допомогою "guestfs_findfs_uuid".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.3.18)

guestfs_vg_activate

 int
 guestfs_vg_activate (guestfs_h *g,
                      int activate,
                      char *const *volgroups);

Ця команда активує або (якщо параметром є false) деактивує усі логічні томи у вказаних групах томів "групи_томів".

Ця команда дає ті самі результати, що і "vgchange -a y|n групи томів..."

Зауважте, що якщо "групи_томів" є порожнім списком, буде активовано або деактивовано усі групи томів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.0.26)

guestfs_vg_activate_all

 int
 guestfs_vg_activate_all (guestfs_h *g,
                          int activate);

Ця команда активує або (якщо параметром є false) деактивує усі логічні томи в усіх групах томів.

Ця команда дає ті самі результати, що і "vgchange -a y|n"

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.0.26)

guestfs_vgchange_uuid

 int
 guestfs_vgchange_uuid (guestfs_h *g,
                        const char *vg);

Створити новий випадковий UUID для групи томів "vg".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.19.26)

guestfs_vgchange_uuid_all

 int
 guestfs_vgchange_uuid_all (guestfs_h *g);

Створити нові випадкові UUID для всіх груп томів.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.19.26)

guestfs_vgcreate

 int
 guestfs_vgcreate (guestfs_h *g,
                   const char *volgroup,
                   char *const *physvols);

Ця команда створює групу томів LVM із назвою "група_томів" на основі непорожнього списку фізичних томів "фізичні_томи".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.8)

guestfs_vglvuuids

 char **
 guestfs_vglvuuids (guestfs_h *g,
                    const char *vgname);

За вказаною групою томів "назва_vg" ця команда повертає UUID усіх логічних томів, створених у вказаній групі томів.

Цією командою можна скористатися у поєднанні із командами "guestfs_lvs" і "guestfs_lvuuid" для пов'язування логічних томів і груп томів.

Див. також "guestfs_vgpvuuids".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.0.87)

guestfs_vgmeta

 char *
 guestfs_vgmeta (guestfs_h *g,
                 const char *vgname,
                 size_t *size_r);

Значенням параметра "назва_vg" є назва групи томів LVM. Ця команда виконує вивчення групи томів і повертає її метадані.

Зауважте, що метадані є внутрішньою структурою, яка використовується LVM і яку може бути будь-коли змінено. Її дані надаються лише з інформаційною метою.

Ця функція повертає рядок або NULL, якщо станеться помилка. Розмір повернутого буфера буд записано до *size_r. Після використання функція, яка викликає цю функцію, має звільнити повернутий буфер.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.17.20)

guestfs_vgpvuuids

 char **
 guestfs_vgpvuuids (guestfs_h *g,
                    const char *vgname);

За вказаною групою томів "назва_vg" ця команда повертає UUID усіх фізичних томів, на яких розміщено вказану групу томів.

Цією командою можна скористатися у поєднанні із командами "guestfs_pvs" і "guestfs_pvuuid" для пов'язування фізичних томів і груп томів.

Див. також "guestfs_vglvuuids".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

(Додано у 1.0.87)

guestfs_vgremove

 int
 guestfs_vgremove (guestfs_h *g,
                   const char *vgname);

Вилучає групу томів LVM "назва_vg" (наприклад "VG").

Крім того, ця команда у примусовому порядку вилучає усі логічні томи у групі томів (якщо такі існують).

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 1.0.13)

guestfs_vgrename

 int
 guestfs_vgrename (guestfs_h *g,
                   const char *volgroup,
                   const char *newvolgroup);

Перейменовує групу томів "група_томів" на групу томів "нова_група_томів".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.0.83)

guestfs_vgs

 char **
 guestfs_vgs (guestfs_h *g);

Виводить список усіх виявлених груп томів. Є еквівалентом команди vgs(8).

Ця команда повертає список лише тих груп томів, які вдасться виявити (наприклад "VolGroup00").

Див. також "guestfs_vgs_full".

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.4)

guestfs_vgs_full

 struct guestfs_lvm_vg_list *
 guestfs_vgs_full (guestfs_h *g);

Виводить список усіх виявлених груп томів. Є еквівалентом команди vgs(8). До «повної» версії включено усі поля.

Ця функція повертає "struct guestfs_lvm_vg_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_lvm_vg_list".

Працездатність цієї функції залежить від можливості "lvm2". Див. також "guestfs_feature_available".

(Додано у 0.4)

guestfs_vgscan

 int
 guestfs_vgscan (guestfs_h *g);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_lvm_scan".

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

Ця команда виконує повторне сканування усіх блокових пристроїв і повторно будує список фізичних томів, груп томів та логічних томів LVM.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.2)

guestfs_vguuid

 char *
 guestfs_vguuid (guestfs_h *g,
                 const char *vgname);

Ця команда повертає UUID групи томів LVM із назвою "назва_vg".

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.87)

guestfs_wait_ready

 int
 guestfs_wait_ready (guestfs_h *g);

Ця функція вважається застарілою. Замінника не передбачено. Зверніться до документації із програмного інтерфейсу у підручнику з guestfs(3), щоб дізнатися більше.

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

Ця функція не виконує ніяких дій.

У версіях програмного інтерфейсу < 1.0.71 вам слід було викликати цю функцію одразу після виклику "guestfs_launch", щоб дочекатися кінця запуску. Втім, тепер це робити не обов'язково, оскільки очікування тепер виконується у "guestfs_launch".

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

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 0.3)

guestfs_wc_c

 int
 guestfs_wc_c (guestfs_h *g,
               const char *path);

Ця команда лічить символи у файлі за допомогою зовнішньої програми "wc -c".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.0.54)

guestfs_wc_l

 int
 guestfs_wc_l (guestfs_h *g,
               const char *path);

Ця команда лічить рядки у файлі за допомогою зовнішньої програми "wc -l".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.0.54)

guestfs_wc_w

 int
 guestfs_wc_w (guestfs_h *g,
               const char *path);

Ця команда лічить слова у файлі за допомогою зовнішньої програми "wc -w".

У разі помилки цією функцією буде повернуто -1.

(Додано у 1.0.54)

guestfs_wipefs

 int
 guestfs_wipefs (guestfs_h *g,
                 const char *device);

Ця команда витирає файлову систему або підписи RAID з вказаного пристрою "пристрій" з метою зробити файлову систему невидимою для libblkid.

Ця команда не витирає самої файлової системи або інших даних з пристрою "пристрій".

Порівняйте із "guestfs_zero", яка записує нулі у перші декілька блоків пристрою.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "wipefs". Див. також "guestfs_feature_available".

(Додано у 1.17.6)

guestfs_write

 int
 guestfs_write (guestfs_h *g,
                const char *path,
                const char *content,
                size_t content_size);

Цей виклик створює файл із назвою "шлях". Вмістом файла буде рядок "дані" (який може складатися з будь-яких 8-бітовий даних).

Див. також "guestfs_write_append".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.3.14)

guestfs_write_append

 int
 guestfs_write_append (guestfs_h *g,
                       const char *path,
                       const char *content,
                       size_t content_size);

Цей виклик дописує "дані" наприкінці файла "шлях". Якщо файла "шлях" не існує, його буде створено.

Див. також "guestfs_write".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

(Додано у 1.11.18)

guestfs_write_file

 int
 guestfs_write_file (guestfs_h *g,
                     const char *path,
                     const char *content,
                     int size);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_write".

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

Цей виклик створює файл із назвою "шлях". Вмістом файла буде рядок "дані" (який може складатися з будь-яких 8-бітовий даних), а розмір файла буде визначено значенням "розмір".

У особливому випадку, якщо "розмір" дорівнює 0, довжину файла буде обчислено за допомогою "strlen" (тому у цьому випадку «дані» не повинні містити вбудованих символів NUL ASCII).

NB. Через ваду запис даних, які містять символи NUL ASCII не працює, навіть якщо явним чином вказати довжину.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 0.8)

guestfs_xfs_admin

 int
 guestfs_xfs_admin (guestfs_h *g,
                    const char *device,
                    ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_XFS_ADMIN_EXTUNWRITTEN, int extunwritten,
 GUESTFS_XFS_ADMIN_IMGFILE, int imgfile,
 GUESTFS_XFS_ADMIN_V2LOG, int v2log,
 GUESTFS_XFS_ADMIN_PROJID32BIT, int projid32bit,
 GUESTFS_XFS_ADMIN_LAZYCOUNTER, int lazycounter,
 GUESTFS_XFS_ADMIN_LABEL, const char *label,
 GUESTFS_XFS_ADMIN_UUID, const char *uuid,

Змінює параметри файлової системи XFS на пристрої "пристрій".

До пристроїв, які змонтовано, внесення змін неможливе. Перед цим викликом для зміни параметрів адміністратор має демонтувати відповідні файлові системи.

Деякі з параметрів змонтованих файлових систем можна визначати та вносити до них зміни за допомогою викликів "guestfs_xfs_info" і "guestfs_xfs_growfs".

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "xfs". Див. також "guestfs_feature_available".

(Додано у 1.19.33)

guestfs_xfs_admin_va

 int
 guestfs_xfs_admin_va (guestfs_h *g,
                       const char *device,
                       va_list args);

Це «варіант з va_list» "guestfs_xfs_admin".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_xfs_admin_argv

 int
 guestfs_xfs_admin_argv (guestfs_h *g,
                         const char *device,
                         const struct guestfs_xfs_admin_argv *optargs);

Це «варіант з argv» "guestfs_xfs_admin".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_xfs_growfs

 int
 guestfs_xfs_growfs (guestfs_h *g,
                     const char *path,
                     ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_XFS_GROWFS_DATASEC, int datasec,
 GUESTFS_XFS_GROWFS_LOGSEC, int logsec,
 GUESTFS_XFS_GROWFS_RTSEC, int rtsec,
 GUESTFS_XFS_GROWFS_DATASIZE, int64_t datasize,
 GUESTFS_XFS_GROWFS_LOGSIZE, int64_t logsize,
 GUESTFS_XFS_GROWFS_RTSIZE, int64_t rtsize,
 GUESTFS_XFS_GROWFS_RTEXTSIZE, int64_t rtextsize,
 GUESTFS_XFS_GROWFS_MAXPCT, int maxpct,

Збільшує файлову систему XFS, яку змонтовано як "шлях".

Повернута структура має містити дані щодо геометрії. Пропущені поля буде повернуто як "-1" (для числових значень) або як порожні рядки.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "xfs". Див. також "guestfs_feature_available".

(Додано у 1.19.28)

guestfs_xfs_growfs_va

 int
 guestfs_xfs_growfs_va (guestfs_h *g,
                        const char *path,
                        va_list args);

Це «варіант з va_list» "guestfs_xfs_growfs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_xfs_growfs_argv

 int
 guestfs_xfs_growfs_argv (guestfs_h *g,
                          const char *path,
                          const struct guestfs_xfs_growfs_argv *optargs);

Це «варіант з argv» "guestfs_xfs_growfs".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_xfs_info

 struct guestfs_xfsinfo *
 guestfs_xfs_info (guestfs_h *g,
                   const char *pathordevice);

"шлях_або_пристрій" — змонтована файлова система XFS або пристрій, на якому міститься файлова система XFS. Ця команда повертає дані щодо геометрії файлової системи.

Повернута структура має містити дані щодо геометрії. Пропущені поля буде повернуто як "-1" (для числових значень) або як порожні рядки.

Ця функція повертає "struct guestfs_xfsinfo *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_xfsinfo".

Працездатність цієї функції залежить від можливості "xfs". Див. також "guestfs_feature_available".

(Додано у 1.19.21)

guestfs_xfs_repair

 int
 guestfs_xfs_repair (guestfs_h *g,
                     const char *device,
                     ...);

У цьому виклику можна вказати список необов'язкових аргументів. Ви можете не використати жодного або використати декілька з вказаних нижче пар параметрів і завершити список за допомогою "-1". Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

 GUESTFS_XFS_REPAIR_FORCELOGZERO, int forcelogzero,
 GUESTFS_XFS_REPAIR_NOMODIFY, int nomodify,
 GUESTFS_XFS_REPAIR_NOPREFETCH, int noprefetch,
 GUESTFS_XFS_REPAIR_FORCEGEOMETRY, int forcegeometry,
 GUESTFS_XFS_REPAIR_MAXMEM, int64_t maxmem,
 GUESTFS_XFS_REPAIR_IHASHSIZE, int64_t ihashsize,
 GUESTFS_XFS_REPAIR_BHASHSIZE, int64_t bhashsize,
 GUESTFS_XFS_REPAIR_AGSTRIDE, int64_t agstride,
 GUESTFS_XFS_REPAIR_LOGDEV, const char *logdev,
 GUESTFS_XFS_REPAIR_RTDEV, const char *rtdev,

Відновлює пошкоджену файлову систему XFS на пристрої "пристрій".

Файлова система задається за допомогою аргументу "пристрій", який має бути або назвою пристрою розділу диска або томом, на якому міститься файлова система. Якщо вказано назву блокового пристрою, "xfs_repair" спробує знайти простий пристрій, пов'язаний із вказаним блоковим пристроєм і скористається цим простим пристроєм.

За будь-яких умов, файлову систему, яку слід відновити, має бути демонтовано. Якщо цього не зробити, після обробки файлова система може виявитися некоректною або пошкодженою.

Повернуте значення стану вказує на те, було виявлено пошкодження файлової системи (повернуте значення 1) чи ні (повернуте значення 0).

У разі помилки цією функцією буде повернуто -1.

Працездатність цієї функції залежить від можливості "xfs". Див. також "guestfs_feature_available".

(Додано у 1.19.36)

guestfs_xfs_repair_va

 int
 guestfs_xfs_repair_va (guestfs_h *g,
                        const char *device,
                        va_list args);

Це «варіант з va_list» "guestfs_xfs_repair"

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_xfs_repair_argv

 int
 guestfs_xfs_repair_argv (guestfs_h *g,
                          const char *device,
                          const struct guestfs_xfs_repair_argv *optargs);

Це «варіант з argv» "guestfs_xfs_repair".

Див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".

guestfs_yara_destroy

 int
 guestfs_yara_destroy (guestfs_h *g);

Знищує попередньо завантажені правила Yara з метою звільнити ресурси libguestfs.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "libyara". Див. також "guestfs_feature_available".

(Додано у 1.37.13)

guestfs_yara_load

 int
 guestfs_yara_load (guestfs_h *g,
                    const char *filename);

Вивантажити набір правил Yara з локального файла назва_файла.

Правила Yara надають змогу категоризувати файли на основі текстових або двійкових взірців у даних цих файлів. Див. "guestfs_yara_scan", щоб дізнатися про те, як виконати сканування файлів на основі завантажених правил.

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

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

Раніше завантажені правила буде знищено.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

Працездатність цієї функції залежить від можливості "libyara". Див. також "guestfs_feature_available".

(Додано у 1.37.13)

guestfs_yara_scan

 struct guestfs_yara_detection_list *
 guestfs_yara_scan (guestfs_h *g,
                    const char *path);

Сканує файл на основі попереднього завантажених правил Yara.

Для кожного правила відповідності повертається окрема структура "yara_detection".

Структура "yara_detection" містить вказані нижче поля.

"yara_name"
Шлях до файла, який відповідає правилу Yara.
"yara_rule"
Ідентифікатор правила Yara, відповідність якого було встановлено для заданого файла.

Ця функція повертає "struct guestfs_yara_detection_list *" або NULL, якщо сталася помилка. Після використання слід викликати "guestfs_free_yara_detection_list".

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

Працездатність цієї функції залежить від можливості "libyara". Див. також "guestfs_feature_available".

(Додано у 1.37.13)

guestfs_zegrep

 char **
 guestfs_zegrep (guestfs_h *g,
                 const char *regex,
                 const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

Викликає зовнішню програму "zegrep" і повертає рядки-відповідники.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_zegrepi

 char **
 guestfs_zegrepi (guestfs_h *g,
                  const char *regex,
                  const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

Ця функція викликає зовнішню програму "zegrep -i" і повертає відповідні рядки.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_zero

 int
 guestfs_zero (guestfs_h *g,
               const char *device);

Ця команда заповнює нулями перші декілька блоків пристрою "пристрій".

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

Якщо у блоках вже містяться нулі, ця команда не перезаписуватиме їх нулями ще раз. Таким чином можна запобігти втраті стану розрідженості для базового пристрою, а також його непотрібному зростанню у розмірі.

Див. також "guestfs_zero_device", "guestfs_scrub_device", "guestfs_is_zero_device"

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.0.16)

guestfs_zero_device

 int
 guestfs_zero_device (guestfs_h *g,
                      const char *device);

Ця команда перезаписує нулями увесь пристрій "device". Порівняйте її із командою "guestfs_zero", яка перезаписує нулями перші декілька блоків пристрою.

Якщо у блоках вже містяться нулі, ця команда не перезаписуватиме їх нулями ще раз. Таким чином можна запобігти втраті стану розрідженості для базового пристрою, а також його непотрібному зростанню у розмірі.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.3.1)

guestfs_zero_free_space

 int
 guestfs_zero_free_space (guestfs_h *g,
                          const char *directory);

Записує нулями вільне місце на файловій системі, змонтованій до точки монтування "каталог". Файлову систему має бути змонтовано для читання і запису.

Вміст файлової системи не буде змінено, але усе вільне місце у файловій системі буде звільнено.

Вільне місце не буде «обрізано». Для обрізання вам слід викликати "guestfs_fstrim" або скористатися відповідною командою після цієї, залежно від ваших потреб.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Команда, виконання якої триває довго, може створювати повідомлення щодо поступу виконання, які програма, яка викликає команду, може показувати за допомогою панелі або індикатора поступу. Щоб отримувати такі повідомлення, програма має зареєструвати зворотний виклик події поступу. Див. "GUESTFS_EVENT_PROGRESS".

(Додано у 1.17.18)

guestfs_zerofree

 int
 guestfs_zerofree (guestfs_h *g,
                   const char *device);

Ця команда виконує програму zerofree для пристрою "пристрій". Програма заповнює нулями невикористані inode та блоки диска на файловій системі ext2/3. Таке занулення уможливлює ефективніше стискання файлової системи.

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

Використання цієї програми може призвести до пошкодження файлової системи або даних на файловій системі.

Ця функція повертає 0 у разі успіху і -1 у разі помилки.

Працездатність цієї функції залежить від можливості "zerofree". Див. також "guestfs_feature_available".

(Додано у 1.0.26)

guestfs_zfgrep

 char **
 guestfs_zfgrep (guestfs_h *g,
                 const char *pattern,
                 const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

Викликає зовнішню програму "zfgrep" і повертає рядки-відповідники.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_zfgrepi

 char **
 guestfs_zfgrepi (guestfs_h *g,
                  const char *pattern,
                  const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

Викликає зовнішню програму "zfgrep -i" і повертає рядки-відповідники.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_zfile

 char *
 guestfs_zfile (guestfs_h *g,
                const char *meth,
                const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_file".

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

This command runs file(1) after first decompressing "path" using "meth".

"meth" must be one of "gzip", "compress" or "bzip2".

Починаючи з версії 1.0.63, можна використовувати замість цієї команди "guestfs_file", оскільки у сучасних версіях ця команда може обробляти стиснені файли.

Ця функція повертає рядок або NULL, якщо станеться помилка. Після використання функція, яка викликає цю функцію, має звільнити повернутий рядок.

(Додано у 1.0.59)

guestfs_zgrep

 char **
 guestfs_zgrep (guestfs_h *g,
                const char *regex,
                const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

This calls the external zgrep(1) program and returns the matching lines.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

guestfs_zgrepi

 char **
 guestfs_zgrepi (guestfs_h *g,
                 const char *regex,
                 const char *path);

Ця функція вважається застарілою. У новому коді замість неї слід використовувати "guestfs_grep".

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

Ця функція викликає зовнішню програму "zgrep -i" і повертає відповідні рядки.

Ця функція повертає масив рядків із завершальним NULL (подібно до environ(3)) або NULL, якщо сталася помилка. Після використання слід звільнити рядки і масив.

Через обмеження протоколу передавання повідомлень існує граничний об'єм повідомлення, щось у діапазоні від 2 МБ до 4 МБ. Див. "ОБМЕЖЕННЯ ПРОТОКОЛУ".

(Додано у 1.0.66)

СТРУКТУРИ

guestfs_int_bool

 struct guestfs_int_bool {
   int32_t i;
   int32_t b;
 };
 
 struct guestfs_int_bool_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_int_bool *val; /* Елементи.  */
 };
 int guestfs_compare_int_bool (const struct guestfs_int_bool *, const struct guestfs_int_bool *);
 int guestfs_compare_int_bool_list (const struct guestfs_int_bool_list *, const struct guestfs_int_bool_list *);
 
 struct guestfs_int_bool *guestfs_copy_int_bool (const struct guestfs_int_bool *);
 struct guestfs_int_bool_list *guestfs_copy_int_bool_list (const struct guestfs_int_bool_list *);
 
 void guestfs_free_int_bool (struct guestfs_int_bool *);
 void guestfs_free_int_bool_list (struct guestfs_int_bool_list *);

guestfs_lvm_pv

 struct guestfs_lvm_pv {
   char *pv_name;
   /* Наступне поле не завершується нульовим байтом, будьте обережні під час виведення цього поля: */
   char pv_uuid[32];
   char *pv_fmt;
   uint64_t pv_size;
   uint64_t dev_size;
   uint64_t pv_free;
   uint64_t pv_used;
   char *pv_attr;
   int64_t pv_pe_count;
   int64_t pv_pe_alloc_count;
   char *pv_tags;
   uint64_t pe_start;
   int64_t pv_mda_count;
   uint64_t pv_mda_free;
 };
 
 struct guestfs_lvm_pv_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_lvm_pv *val; /* Елементи.  */
 };
 int guestfs_compare_lvm_pv (const struct guestfs_lvm_pv *, const struct guestfs_lvm_pv *);
 int guestfs_compare_lvm_pv_list (const struct guestfs_lvm_pv_list *, const struct guestfs_lvm_pv_list *);
 
 struct guestfs_lvm_pv *guestfs_copy_lvm_pv (const struct guestfs_lvm_pv *);
 struct guestfs_lvm_pv_list *guestfs_copy_lvm_pv_list (const struct guestfs_lvm_pv_list *);
 
 void guestfs_free_lvm_pv (struct guestfs_lvm_pv *);
 void guestfs_free_lvm_pv_list (struct guestfs_lvm_pv_list *);

guestfs_lvm_vg

 struct guestfs_lvm_vg {
   char *vg_name;
   /* Текстове поле НЕ завершується нульовим байтом: будьте обережні з його виведенням: */
   char vg_uuid[32];
   char *vg_fmt;
   char *vg_attr;
   uint64_t vg_size;
   uint64_t vg_free;
   char *vg_sysid;
   uint64_t vg_extent_size;
   int64_t vg_extent_count;
   int64_t vg_free_count;
   int64_t max_lv;
   int64_t max_pv;
   int64_t pv_count;
   int64_t lv_count;
   int64_t snap_count;
   int64_t vg_seqno;
   char *vg_tags;
   int64_t vg_mda_count;
   uint64_t vg_mda_free;
 };
 
 struct guestfs_lvm_vg_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_lvm_vg *val; /* Елементи.  */
 };
 int guestfs_compare_lvm_vg (const struct guestfs_lvm_vg *, const struct guestfs_lvm_vg *);
 int guestfs_compare_lvm_vg_list (const struct guestfs_lvm_vg_list *, const struct guestfs_lvm_vg_list *);
 
 struct guestfs_lvm_vg *guestfs_copy_lvm_vg (const struct guestfs_lvm_vg *);
 struct guestfs_lvm_vg_list *guestfs_copy_lvm_vg_list (const struct guestfs_lvm_vg_list *);
 
 void guestfs_free_lvm_vg (struct guestfs_lvm_vg *);
 void guestfs_free_lvm_vg_list (struct guestfs_lvm_vg_list *);

guestfs_lvm_lv

 struct guestfs_lvm_lv {
   char *lv_name;
   /* The next field is NOT nul-terminated, be careful when printing it: */
   char lv_uuid[32];
   char *lv_attr;
   int64_t lv_major;
   int64_t lv_minor;
   int64_t lv_kernel_major;
   int64_t lv_kernel_minor;
   uint64_t lv_size;
   int64_t seg_count;
   char *origin;
   /* The next field is [0..100] or -1 meaning 'not present': */
   float snap_percent;
   /* The next field is [0..100] or -1 meaning 'not present': */
   float copy_percent;
   char *move_pv;
   char *lv_tags;
   char *mirror_log;
   char *modules;
 };
 
 struct guestfs_lvm_lv_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_lvm_lv *val; /* Елементи.  */
 };
 int guestfs_compare_lvm_lv (const struct guestfs_lvm_lv *, const struct guestfs_lvm_lv *);
 int guestfs_compare_lvm_lv_list (const struct guestfs_lvm_lv_list *, const struct guestfs_lvm_lv_list *);
 
 struct guestfs_lvm_lv *guestfs_copy_lvm_lv (const struct guestfs_lvm_lv *);
 struct guestfs_lvm_lv_list *guestfs_copy_lvm_lv_list (const struct guestfs_lvm_lv_list *);
 
 void guestfs_free_lvm_lv (struct guestfs_lvm_lv *);
 void guestfs_free_lvm_lv_list (struct guestfs_lvm_lv_list *);

guestfs_stat

 struct guestfs_stat {
   int64_t dev;
   int64_t ino;
   int64_t mode;
   int64_t nlink;
   int64_t uid;
   int64_t gid;
   int64_t rdev;
   int64_t size;
   int64_t blksize;
   int64_t blocks;
   int64_t atime;
   int64_t mtime;
   int64_t ctime;
 };
 
 struct guestfs_stat_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_stat *val; /* Елементи.  */
 };
 int guestfs_compare_stat (const struct guestfs_stat *, const struct guestfs_stat *);
 int guestfs_compare_stat_list (const struct guestfs_stat_list *, const struct guestfs_stat_list *);
 
 struct guestfs_stat *guestfs_copy_stat (const struct guestfs_stat *);
 struct guestfs_stat_list *guestfs_copy_stat_list (const struct guestfs_stat_list *);
 
 void guestfs_free_stat (struct guestfs_stat *);
 void guestfs_free_stat_list (struct guestfs_stat_list *);

guestfs_statns

 struct guestfs_statns {
   int64_t st_dev;
   int64_t st_ino;
   int64_t st_mode;
   int64_t st_nlink;
   int64_t st_uid;
   int64_t st_gid;
   int64_t st_rdev;
   int64_t st_size;
   int64_t st_blksize;
   int64_t st_blocks;
   int64_t st_atime_sec;
   int64_t st_atime_nsec;
   int64_t st_mtime_sec;
   int64_t st_mtime_nsec;
   int64_t st_ctime_sec;
   int64_t st_ctime_nsec;
   int64_t st_spare1;
   int64_t st_spare2;
   int64_t st_spare3;
   int64_t st_spare4;
   int64_t st_spare5;
   int64_t st_spare6;
 };
 
 struct guestfs_statns_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_statns *val; /* Елементи. */
 };
 int guestfs_compare_statns (const struct guestfs_statns *, const struct guestfs_statns *);
 int guestfs_compare_statns_list (const struct guestfs_statns_list *, const struct guestfs_statns_list *);
 
 struct guestfs_statns *guestfs_copy_statns (const struct guestfs_statns *);
 struct guestfs_statns_list *guestfs_copy_statns_list (const struct guestfs_statns_list *);
 
 void guestfs_free_statns (struct guestfs_statns *);
 void guestfs_free_statns_list (struct guestfs_statns_list *);

guestfs_statvfs

 struct guestfs_statvfs {
   int64_t bsize;
   int64_t frsize;
   int64_t blocks;
   int64_t bfree;
   int64_t bavail;
   int64_t files;
   int64_t ffree;
   int64_t favail;
   int64_t fsid;
   int64_t flag;
   int64_t namemax;
 };
 
 struct guestfs_statvfs_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_statvfs *val; /* Елементи.  */
 };
 int guestfs_compare_statvfs (const struct guestfs_statvfs *, const struct guestfs_statvfs *);
 int guestfs_compare_statvfs_list (const struct guestfs_statvfs_list *, const struct guestfs_statvfs_list *);
 
 struct guestfs_statvfs *guestfs_copy_statvfs (const struct guestfs_statvfs *);
 struct guestfs_statvfs_list *guestfs_copy_statvfs_list (const struct guestfs_statvfs_list *);
 
 void guestfs_free_statvfs (struct guestfs_statvfs *);
 void guestfs_free_statvfs_list (struct guestfs_statvfs_list *);

guestfs_dirent

 struct guestfs_dirent {
   int64_t ino;
   char ftyp;
   char *name;
 };
 
 struct guestfs_dirent_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_dirent *val; /* Елементи.  */
 };
 int guestfs_compare_dirent (const struct guestfs_dirent *, const struct guestfs_dirent *);
 int guestfs_compare_dirent_list (const struct guestfs_dirent_list *, const struct guestfs_dirent_list *);
 
 struct guestfs_dirent *guestfs_copy_dirent (const struct guestfs_dirent *);
 struct guestfs_dirent_list *guestfs_copy_dirent_list (const struct guestfs_dirent_list *);
 
 void guestfs_free_dirent (struct guestfs_dirent *);
 void guestfs_free_dirent_list (struct guestfs_dirent_list *);

guestfs_version

 struct guestfs_version {
   int64_t major;
   int64_t minor;
   int64_t release;
   char *extra;
 };
 
 struct guestfs_version_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_version *val; /* Елементи.  */
 };
 int guestfs_compare_version (const struct guestfs_version *, const struct guestfs_version *);
 int guestfs_compare_version_list (const struct guestfs_version_list *, const struct guestfs_version_list *);
 
 struct guestfs_version *guestfs_copy_version (const struct guestfs_version *);
 struct guestfs_version_list *guestfs_copy_version_list (const struct guestfs_version_list *);
 
 void guestfs_free_version (struct guestfs_version *);
 void guestfs_free_version_list (struct guestfs_version_list *);

guestfs_xattr

 struct guestfs_xattr {
   char *attrname;
   /* Наступні два поля описують масив байтів. */
   uint32_t attrval_len;
   char *attrval;
 };
 
 struct guestfs_xattr_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_xattr *val; /* Елементи.  */
 };
 int guestfs_compare_xattr (const struct guestfs_xattr *, const struct guestfs_xattr *);
 int guestfs_compare_xattr_list (const struct guestfs_xattr_list *, const struct guestfs_xattr_list *);
 
 struct guestfs_xattr *guestfs_copy_xattr (const struct guestfs_xattr *);
 struct guestfs_xattr_list *guestfs_copy_xattr_list (const struct guestfs_xattr_list *);
 
 void guestfs_free_xattr (struct guestfs_xattr *);
 void guestfs_free_xattr_list (struct guestfs_xattr_list *);

guestfs_inotify_event

 struct guestfs_inotify_event {
   int64_t in_wd;
   uint32_t in_mask;
   uint32_t in_cookie;
   char *in_name;
 };
 
 struct guestfs_inotify_event_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_inotify_event *val; /* Елементи.  */
 };
 int guestfs_compare_inotify_event (const struct guestfs_inotify_event *, const struct guestfs_inotify_event *);
 int guestfs_compare_inotify_event_list (const struct guestfs_inotify_event_list *, const struct guestfs_inotify_event_list *);
 
 struct guestfs_inotify_event *guestfs_copy_inotify_event (const struct guestfs_inotify_event *);
 struct guestfs_inotify_event_list *guestfs_copy_inotify_event_list (const struct guestfs_inotify_event_list *);
 
 void guestfs_free_inotify_event (struct guestfs_inotify_event *);
 void guestfs_free_inotify_event_list (struct guestfs_inotify_event_list *);

guestfs_partition

 struct guestfs_partition {
   int32_t part_num;
   uint64_t part_start;
   uint64_t part_end;
   uint64_t part_size;
 };
 
 struct guestfs_partition_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_partition *val; /* Елементи.  */
 };
 int guestfs_compare_partition (const struct guestfs_partition *, const struct guestfs_partition *);
 int guestfs_compare_partition_list (const struct guestfs_partition_list *, const struct guestfs_partition_list *);
 
 struct guestfs_partition *guestfs_copy_partition (const struct guestfs_partition *);
 struct guestfs_partition_list *guestfs_copy_partition_list (const struct guestfs_partition_list *);
 
 void guestfs_free_partition (struct guestfs_partition *);
 void guestfs_free_partition_list (struct guestfs_partition_list *);

guestfs_application

 struct guestfs_application {
   char *app_name;
   char *app_display_name;
   int32_t app_epoch;
   char *app_version;
   char *app_release;
   char *app_install_path;
   char *app_trans_path;
   char *app_publisher;
   char *app_url;
   char *app_source_package;
   char *app_summary;
   char *app_description;
 };
 
 struct guestfs_application_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_application *val; /* Елементи. */
 };
 int guestfs_compare_application (const struct guestfs_application *, const struct guestfs_application *);
 int guestfs_compare_application_list (const struct guestfs_application_list *, const struct guestfs_application_list *);
 
 struct guestfs_application *guestfs_copy_application (const struct guestfs_application *);
 struct guestfs_application_list *guestfs_copy_application_list (const struct guestfs_application_list *);
 
 void guestfs_free_application (struct guestfs_application *);
 void guestfs_free_application_list (struct guestfs_application_list *);

guestfs_application2

 struct guestfs_application2 {
   char *app2_name;
   char *app2_display_name;
   int32_t app2_epoch;
   char *app2_version;
   char *app2_release;
   char *app2_arch;
   char *app2_install_path;
   char *app2_trans_path;
   char *app2_publisher;
   char *app2_url;
   char *app2_source_package;
   char *app2_summary;
   char *app2_description;
   char *app2_spare1;
   char *app2_spare2;
   char *app2_spare3;
   char *app2_spare4;
 };
 
 struct guestfs_application2_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_application2 *val; /* Елементи.  */
 };
 int guestfs_compare_application2 (const struct guestfs_application2 *, const struct guestfs_application2 *);
 int guestfs_compare_application2_list (const struct guestfs_application2_list *, const struct guestfs_application2_list *);
 
 struct guestfs_application2 *guestfs_copy_application2 (const struct guestfs_application2 *);
 struct guestfs_application2_list *guestfs_copy_application2_list (const struct guestfs_application2_list *);
 
 void guestfs_free_application2 (struct guestfs_application2 *);
 void guestfs_free_application2_list (struct guestfs_application2_list *);

guestfs_isoinfo

 struct guestfs_isoinfo {
   char *iso_system_id;
   char *iso_volume_id;
   uint32_t iso_volume_space_size;
   uint32_t iso_volume_set_size;
   uint32_t iso_volume_sequence_number;
   uint32_t iso_logical_block_size;
   char *iso_volume_set_id;
   char *iso_publisher_id;
   char *iso_data_preparer_id;
   char *iso_application_id;
   char *iso_copyright_file_id;
   char *iso_abstract_file_id;
   char *iso_bibliographic_file_id;
   int64_t iso_volume_creation_t;
   int64_t iso_volume_modification_t;
   int64_t iso_volume_expiration_t;
   int64_t iso_volume_effective_t;
 };
 
 struct guestfs_isoinfo_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_isoinfo *val; /* Елементи. */
 };
 int guestfs_compare_isoinfo (const struct guestfs_isoinfo *, const struct guestfs_isoinfo *);
 int guestfs_compare_isoinfo_list (const struct guestfs_isoinfo_list *, const struct guestfs_isoinfo_list *);
 
 struct guestfs_isoinfo *guestfs_copy_isoinfo (const struct guestfs_isoinfo *);
 struct guestfs_isoinfo_list *guestfs_copy_isoinfo_list (const struct guestfs_isoinfo_list *);
 
 void guestfs_free_isoinfo (struct guestfs_isoinfo *);
 void guestfs_free_isoinfo_list (struct guestfs_isoinfo_list *);

guestfs_mdstat

 struct guestfs_mdstat {
   char *mdstat_device;
   int32_t mdstat_index;
   char *mdstat_flags;
 };
 
 struct guestfs_mdstat_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_mdstat *val; /* Елементи. */
 };
 int guestfs_compare_mdstat (const struct guestfs_mdstat *, const struct guestfs_mdstat *);
 int guestfs_compare_mdstat_list (const struct guestfs_mdstat_list *, const struct guestfs_mdstat_list *);
 
 struct guestfs_mdstat *guestfs_copy_mdstat (const struct guestfs_mdstat *);
 struct guestfs_mdstat_list *guestfs_copy_mdstat_list (const struct guestfs_mdstat_list *);
 
 void guestfs_free_mdstat (struct guestfs_mdstat *);
 void guestfs_free_mdstat_list (struct guestfs_mdstat_list *);

guestfs_btrfssubvolume

 struct guestfs_btrfssubvolume {
   uint64_t btrfssubvolume_id;
   uint64_t btrfssubvolume_top_level_id;
   char *btrfssubvolume_path;
 };
 
 struct guestfs_btrfssubvolume_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_btrfssubvolume *val; /* Елементи. */
 };
 int guestfs_compare_btrfssubvolume (const struct guestfs_btrfssubvolume *, const struct guestfs_btrfssubvolume *);
 int guestfs_compare_btrfssubvolume_list (const struct guestfs_btrfssubvolume_list *, const struct guestfs_btrfssubvolume_list *);
 
 struct guestfs_btrfssubvolume *guestfs_copy_btrfssubvolume (const struct guestfs_btrfssubvolume *);
 struct guestfs_btrfssubvolume_list *guestfs_copy_btrfssubvolume_list (const struct guestfs_btrfssubvolume_list *);
 
 void guestfs_free_btrfssubvolume (struct guestfs_btrfssubvolume *);
 void guestfs_free_btrfssubvolume_list (struct guestfs_btrfssubvolume_list *);

guestfs_btrfsqgroup

 struct guestfs_btrfsqgroup {
   char *btrfsqgroup_id;
   uint64_t btrfsqgroup_rfer;
   uint64_t btrfsqgroup_excl;
 };
 
 struct guestfs_btrfsqgroup_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_btrfsqgroup *val; /* Елементи. */
 };
 int guestfs_compare_btrfsqgroup (const struct guestfs_btrfsqgroup *, const struct guestfs_btrfsqgroup *);
 int guestfs_compare_btrfsqgroup_list (const struct guestfs_btrfsqgroup_list *, const struct guestfs_btrfsqgroup_list *);
 
 struct guestfs_btrfsqgroup *guestfs_copy_btrfsqgroup (const struct guestfs_btrfsqgroup *);
 struct guestfs_btrfsqgroup_list *guestfs_copy_btrfsqgroup_list (const struct guestfs_btrfsqgroup_list *);
 
 void guestfs_free_btrfsqgroup (struct guestfs_btrfsqgroup *);
 void guestfs_free_btrfsqgroup_list (struct guestfs_btrfsqgroup_list *);

guestfs_btrfsbalance

 struct guestfs_btrfsbalance {
   char *btrfsbalance_status;
   uint64_t btrfsbalance_total;
   uint64_t btrfsbalance_balanced;
   uint64_t btrfsbalance_considered;
   uint64_t btrfsbalance_left;
 };
 
 struct guestfs_btrfsbalance_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_btrfsbalance *val; /* Елементи. */
 };
 int guestfs_compare_btrfsbalance (const struct guestfs_btrfsbalance *, const struct guestfs_btrfsbalance *);
 int guestfs_compare_btrfsbalance_list (const struct guestfs_btrfsbalance_list *, const struct guestfs_btrfsbalance_list *);
 
 struct guestfs_btrfsbalance *guestfs_copy_btrfsbalance (const struct guestfs_btrfsbalance *);
 struct guestfs_btrfsbalance_list *guestfs_copy_btrfsbalance_list (const struct guestfs_btrfsbalance_list *);
 
 void guestfs_free_btrfsbalance (struct guestfs_btrfsbalance *);
 void guestfs_free_btrfsbalance_list (struct guestfs_btrfsbalance_list *);

guestfs_btrfsscrub

 struct guestfs_btrfsscrub {
   uint64_t btrfsscrub_data_extents_scrubbed;
   uint64_t btrfsscrub_tree_extents_scrubbed;
   uint64_t btrfsscrub_data_bytes_scrubbed;
   uint64_t btrfsscrub_tree_bytes_scrubbed;
   uint64_t btrfsscrub_read_errors;
   uint64_t btrfsscrub_csum_errors;
   uint64_t btrfsscrub_verify_errors;
   uint64_t btrfsscrub_no_csum;
   uint64_t btrfsscrub_csum_discards;
   uint64_t btrfsscrub_super_errors;
   uint64_t btrfsscrub_malloc_errors;
   uint64_t btrfsscrub_uncorrectable_errors;
   uint64_t btrfsscrub_unverified_errors;
   uint64_t btrfsscrub_corrected_errors;
   uint64_t btrfsscrub_last_physical;
 };
 
 struct guestfs_btrfsscrub_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_btrfsscrub *val; /* Елементи. */
 };
 int guestfs_compare_btrfsscrub (const struct guestfs_btrfsscrub *, const struct guestfs_btrfsscrub *);
 int guestfs_compare_btrfsscrub_list (const struct guestfs_btrfsscrub_list *, const struct guestfs_btrfsscrub_list *);
 
 struct guestfs_btrfsscrub *guestfs_copy_btrfsscrub (const struct guestfs_btrfsscrub *);
 struct guestfs_btrfsscrub_list *guestfs_copy_btrfsscrub_list (const struct guestfs_btrfsscrub_list *);
 
 void guestfs_free_btrfsscrub (struct guestfs_btrfsscrub *);
 void guestfs_free_btrfsscrub_list (struct guestfs_btrfsscrub_list *);

guestfs_xfsinfo

 struct guestfs_xfsinfo {
   char *xfs_mntpoint;
   uint32_t xfs_inodesize;
   uint32_t xfs_agcount;
   uint32_t xfs_agsize;
   uint32_t xfs_sectsize;
   uint32_t xfs_attr;
   uint32_t xfs_blocksize;
   uint64_t xfs_datablocks;
   uint32_t xfs_imaxpct;
   uint32_t xfs_sunit;
   uint32_t xfs_swidth;
   uint32_t xfs_dirversion;
   uint32_t xfs_dirblocksize;
   uint32_t xfs_cimode;
   char *xfs_logname;
   uint32_t xfs_logblocksize;
   uint32_t xfs_logblocks;
   uint32_t xfs_logversion;
   uint32_t xfs_logsectsize;
   uint32_t xfs_logsunit;
   uint32_t xfs_lazycount;
   char *xfs_rtname;
   uint32_t xfs_rtextsize;
   uint64_t xfs_rtblocks;
   uint64_t xfs_rtextents;
 };
 
 struct guestfs_xfsinfo_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_xfsinfo *val; /* Елементи. */
 };
 int guestfs_compare_xfsinfo (const struct guestfs_xfsinfo *, const struct guestfs_xfsinfo *);
 int guestfs_compare_xfsinfo_list (const struct guestfs_xfsinfo_list *, const struct guestfs_xfsinfo_list *);
 
 struct guestfs_xfsinfo *guestfs_copy_xfsinfo (const struct guestfs_xfsinfo *);
 struct guestfs_xfsinfo_list *guestfs_copy_xfsinfo_list (const struct guestfs_xfsinfo_list *);
 
 void guestfs_free_xfsinfo (struct guestfs_xfsinfo *);
 void guestfs_free_xfsinfo_list (struct guestfs_xfsinfo_list *);

guestfs_utsname

 struct guestfs_utsname {
   char *uts_sysname;
   char *uts_release;
   char *uts_version;
   char *uts_machine;
 };
 
 struct guestfs_utsname_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_utsname *val; /* Елементи. */
 };
 int guestfs_compare_utsname (const struct guestfs_utsname *, const struct guestfs_utsname *);
 int guestfs_compare_utsname_list (const struct guestfs_utsname_list *, const struct guestfs_utsname_list *);
 
 struct guestfs_utsname *guestfs_copy_utsname (const struct guestfs_utsname *);
 struct guestfs_utsname_list *guestfs_copy_utsname_list (const struct guestfs_utsname_list *);
 
 void guestfs_free_utsname (struct guestfs_utsname *);
 void guestfs_free_utsname_list (struct guestfs_utsname_list *);

guestfs_hivex_node

 struct guestfs_hivex_node {
   int64_t hivex_node_h;
 };
 
 struct guestfs_hivex_node_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_hivex_node *val; /* Елементи. */
 };
 int guestfs_compare_hivex_node (const struct guestfs_hivex_node *, const struct guestfs_hivex_node *);
 int guestfs_compare_hivex_node_list (const struct guestfs_hivex_node_list *, const struct guestfs_hivex_node_list *);
 
 struct guestfs_hivex_node *guestfs_copy_hivex_node (const struct guestfs_hivex_node *);
 struct guestfs_hivex_node_list *guestfs_copy_hivex_node_list (const struct guestfs_hivex_node_list *);
 
 void guestfs_free_hivex_node (struct guestfs_hivex_node *);
 void guestfs_free_hivex_node_list (struct guestfs_hivex_node_list *);

guestfs_hivex_value

 struct guestfs_hivex_value {
   int64_t hivex_value_h;
 };
 
 struct guestfs_hivex_value_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_hivex_value *val; /* Елементи. */
 };
 int guestfs_compare_hivex_value (const struct guestfs_hivex_value *, const struct guestfs_hivex_value *);
 int guestfs_compare_hivex_value_list (const struct guestfs_hivex_value_list *, const struct guestfs_hivex_value_list *);
 
 struct guestfs_hivex_value *guestfs_copy_hivex_value (const struct guestfs_hivex_value *);
 struct guestfs_hivex_value_list *guestfs_copy_hivex_value_list (const struct guestfs_hivex_value_list *);
 
 void guestfs_free_hivex_value (struct guestfs_hivex_value *);
 void guestfs_free_hivex_value_list (struct guestfs_hivex_value_list *);

guestfs_internal_mountable

 struct guestfs_internal_mountable {
   int32_t im_type;
   char *im_device;
   char *im_volume;
 };
 
 struct guestfs_internal_mountable_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_internal_mountable *val; /* Елементи. */
 };
 int guestfs_compare_internal_mountable (const struct guestfs_internal_mountable *, const struct guestfs_internal_mountable *);
 int guestfs_compare_internal_mountable_list (const struct guestfs_internal_mountable_list *, const struct guestfs_internal_mountable_list *);
 
 struct guestfs_internal_mountable *guestfs_copy_internal_mountable (const struct guestfs_internal_mountable *);
 struct guestfs_internal_mountable_list *guestfs_copy_internal_mountable_list (const struct guestfs_internal_mountable_list *);
 
 void guestfs_free_internal_mountable (struct guestfs_internal_mountable *);
 void guestfs_free_internal_mountable_list (struct guestfs_internal_mountable_list *);

guestfs_tsk_dirent

 struct guestfs_tsk_dirent {
   uint64_t tsk_inode;
   char tsk_type;
   int64_t tsk_size;
   char *tsk_name;
   uint32_t tsk_flags;
   int64_t tsk_atime_sec;
   int64_t tsk_atime_nsec;
   int64_t tsk_mtime_sec;
   int64_t tsk_mtime_nsec;
   int64_t tsk_ctime_sec;
   int64_t tsk_ctime_nsec;
   int64_t tsk_crtime_sec;
   int64_t tsk_crtime_nsec;
   int64_t tsk_nlink;
   char *tsk_link;
   int64_t tsk_spare1;
 };
 
 struct guestfs_tsk_dirent_list {
   uint32_t len; /* Number of elements in list. */
   struct guestfs_tsk_dirent *val; /* Elements. */
 };
 int guestfs_compare_tsk_dirent (const struct guestfs_tsk_dirent *, const struct guestfs_tsk_dirent *);
 int guestfs_compare_tsk_dirent_list (const struct guestfs_tsk_dirent_list *, const struct guestfs_tsk_dirent_list *);
 
 struct guestfs_tsk_dirent *guestfs_copy_tsk_dirent (const struct guestfs_tsk_dirent *);
 struct guestfs_tsk_dirent_list *guestfs_copy_tsk_dirent_list (const struct guestfs_tsk_dirent_list *);
 
 void guestfs_free_tsk_dirent (struct guestfs_tsk_dirent *);
 void guestfs_free_tsk_dirent_list (struct guestfs_tsk_dirent_list *);

guestfs_yara_detection

 struct guestfs_yara_detection {
   char *yara_name;
   char *yara_rule;
 };
 
 struct guestfs_yara_detection_list {
   uint32_t len; /* Кількість елементів у списку. */
   struct guestfs_yara_detection *val; /* Елементи. */
 };
 int guestfs_compare_yara_detection (const struct guestfs_yara_detection *, const struct guestfs_yara_detection *);
 int guestfs_compare_yara_detection_list (const struct guestfs_yara_detection_list *, const struct guestfs_yara_detection_list *);
 
 struct guestfs_yara_detection *guestfs_copy_yara_detection (const struct guestfs_yara_detection *);
 struct guestfs_yara_detection_list *guestfs_copy_yara_detection_list (const struct guestfs_yara_detection_list *);
 
 void guestfs_free_yara_detection (struct guestfs_yara_detection *);
 void guestfs_free_yara_detection_list (struct guestfs_yara_detection_list *);

ДОСТУПНІСТЬ

ГРУПИ ФУНКЦІОНАЛЬНИХ МОЖЛИВОСТЕЙ У ОБРАЗІ ОСНОВНОЇ СИСТЕМИ

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

Такі функції: "guestfs_acl_delete_def_file" "guestfs_acl_get_file" "guestfs_acl_set_file"
Такі функції: "guestfs_blkdiscard"
Такі функції: "guestfs_blkdiscardzeroes"
btrfs
Такі функції: "guestfs_btrfs_balance_cancel" "guestfs_btrfs_balance_pause" "guestfs_btrfs_balance_resume" "guestfs_btrfs_balance_status" "guestfs_btrfs_device_add" "guestfs_btrfs_device_delete" "guestfs_btrfs_filesystem_balance" "guestfs_btrfs_filesystem_defragment" "guestfs_btrfs_filesystem_resize" "guestfs_btrfs_filesystem_show" "guestfs_btrfs_filesystem_sync" "guestfs_btrfs_fsck" "guestfs_btrfs_image" "guestfs_btrfs_qgroup_assign" "guestfs_btrfs_qgroup_create" "guestfs_btrfs_qgroup_destroy" "guestfs_btrfs_qgroup_limit" "guestfs_btrfs_qgroup_remove" "guestfs_btrfs_qgroup_show" "guestfs_btrfs_quota_enable" "guestfs_btrfs_quota_rescan" "guestfs_btrfs_replace" "guestfs_btrfs_rescue_chunk_recover" "guestfs_btrfs_rescue_super_recover" "guestfs_btrfs_scrub_cancel" "guestfs_btrfs_scrub_resume" "guestfs_btrfs_scrub_start" "guestfs_btrfs_scrub_status" "guestfs_btrfs_set_seeding" "guestfs_btrfs_subvolume_create" "guestfs_btrfs_subvolume_delete" "guestfs_btrfs_subvolume_get_default" "guestfs_btrfs_subvolume_list" "guestfs_btrfs_subvolume_set_default" "guestfs_btrfs_subvolume_show" "guestfs_btrfs_subvolume_snapshot" "guestfs_btrfstune_enable_extended_inode_refs" "guestfs_btrfstune_enable_skinny_metadata_extent_refs" "guestfs_btrfstune_seeding" "guestfs_mkfs_btrfs"
Такі функції: "guestfs_extlinux"
Такі функції: "guestfs_f2fs_expand"
Такі функції: "guestfs_fstrim"
Такі функції: "guestfs_part_expand_gpt" "guestfs_part_get_disk_guid" "guestfs_part_get_gpt_attributes" "guestfs_part_get_gpt_guid" "guestfs_part_get_gpt_type" "guestfs_part_set_disk_guid" "guestfs_part_set_disk_guid_random" "guestfs_part_set_gpt_attributes" "guestfs_part_set_gpt_guid" "guestfs_part_set_gpt_type"
Такі функції: "guestfs_grub_install"
Такі функції: "guestfs_hivex_close" "guestfs_hivex_commit" "guestfs_hivex_node_add_child" "guestfs_hivex_node_children" "guestfs_hivex_node_delete_child" "guestfs_hivex_node_get_child" "guestfs_hivex_node_get_value" "guestfs_hivex_node_name" "guestfs_hivex_node_parent" "guestfs_hivex_node_set_value" "guestfs_hivex_node_values" "guestfs_hivex_open" "guestfs_hivex_root" "guestfs_hivex_value_key" "guestfs_hivex_value_string" "guestfs_hivex_value_type" "guestfs_hivex_value_utf8" "guestfs_hivex_value_value"
Такі функції: "guestfs_inotify_add_watch" "guestfs_inotify_close" "guestfs_inotify_files" "guestfs_inotify_init" "guestfs_inotify_read" "guestfs_inotify_rm_watch"
Такі функції: "guestfs_internal_journal_get" "guestfs_journal_close" "guestfs_journal_get_data_threshold" "guestfs_journal_get_realtime_usec" "guestfs_journal_next" "guestfs_journal_open" "guestfs_journal_set_data_threshold" "guestfs_journal_skip"
Такі функції: "guestfs_ldmtool_create_all" "guestfs_ldmtool_diskgroup_disks" "guestfs_ldmtool_diskgroup_name" "guestfs_ldmtool_diskgroup_volumes" "guestfs_ldmtool_remove_all" "guestfs_ldmtool_scan" "guestfs_ldmtool_scan_devices" "guestfs_ldmtool_volume_hint" "guestfs_ldmtool_volume_partitions" "guestfs_ldmtool_volume_type" "guestfs_list_ldm_partitions" "guestfs_list_ldm_volumes"
Такі функції: "guestfs_internal_filesystem_walk" "guestfs_internal_find_inode"
Такі функції: "guestfs_internal_yara_scan" "guestfs_yara_destroy" "guestfs_yara_load"
Такі функції: "guestfs_cap_get_file" "guestfs_cap_set_file"
Такі функції: "guestfs_mke2fs_JU" "guestfs_mke2journal_U" "guestfs_mkswap_U" "guestfs_swapoff_uuid" "guestfs_swapon_uuid"
Такі функції: "guestfs_modprobe"
Такі функції: "guestfs_getxattr" "guestfs_getxattrs" "guestfs_internal_lxattrlist" "guestfs_lgetxattr" "guestfs_lgetxattrs" "guestfs_lremovexattr" "guestfs_lsetxattr" "guestfs_removexattr" "guestfs_setxattr"
The following functions: "guestfs_cryptsetup_close" "guestfs_cryptsetup_open" "guestfs_luks_add_key" "guestfs_luks_close" "guestfs_luks_format" "guestfs_luks_format_cipher" "guestfs_luks_kill_slot" "guestfs_luks_open" "guestfs_luks_open_ro" "guestfs_luks_uuid"
Такі функції: "guestfs_lvcreate" "guestfs_lvcreate_free" "guestfs_lvm_remove_all" "guestfs_lvm_set_filter" "guestfs_lvremove" "guestfs_lvresize" "guestfs_lvresize_free" "guestfs_lvs" "guestfs_lvs_full" "guestfs_pvchange_uuid" "guestfs_pvchange_uuid_all" "guestfs_pvcreate" "guestfs_pvremove" "guestfs_pvresize" "guestfs_pvresize_size" "guestfs_pvs" "guestfs_pvs_full" "guestfs_vg_activate" "guestfs_vg_activate_all" "guestfs_vgchange_uuid" "guestfs_vgchange_uuid_all" "guestfs_vgcreate" "guestfs_vgmeta" "guestfs_vgremove" "guestfs_vgs" "guestfs_vgs_full"
Такі функції: "guestfs_md_create" "guestfs_md_detail" "guestfs_md_stat" "guestfs_md_stop"
Такі функції: "guestfs_mkfifo" "guestfs_mknod" "guestfs_mknod_b" "guestfs_mknod_c"
Такі функції: "guestfs_ntfs_3g_probe" "guestfs_ntfsclone_in" "guestfs_ntfsclone_out" "guestfs_ntfsfix"
Такі функції: "guestfs_ntfsresize" "guestfs_ntfsresize_size"
Такі функції: "guestfs_rsync" "guestfs_rsync_in" "guestfs_rsync_out"
Такі функції: "guestfs_scrub_device" "guestfs_scrub_file" "guestfs_scrub_freespace"
Такі функції: "guestfs_getcon" "guestfs_setcon"
Такі функції: "guestfs_selinux_relabel"
Такі функції: "guestfs_download_blocks"
Такі функції: "guestfs_mksquashfs"
Такі функції: "guestfs_syslinux"
Такі функції: "guestfs_wipefs"
Такі функції: "guestfs_xfs_admin" "guestfs_xfs_growfs" "guestfs_xfs_info" "guestfs_xfs_repair"
Такі функції: "guestfs_txz_in" "guestfs_txz_out"
Такі функції: "guestfs_zerofree"

ДОСТУПНІ ФАЙЛОВІ СИСТЕМИ

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

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

КОМАНДА GUESTFISH supported

У guestfish(3) передбачено зручну інтерактивну команду "supported", яка виводить доступні групи, а також дані щодо їхньої підтримки у збірці libguestfs. Втім, слід зауважити, спочатку слід виконати команду "run".

ОКРЕМІ ВИКЛИКИ ПІД ЧАС КОМПІЛЯЦІЇ

Починаючи з версії 1.5.8, "<guestfs.h>" визначає символи для кожної функції програмного інтерфейсу C, зокрема:

 #define GUESTFS_HAVE_DD 1

якщо доступна "guestfs_dd".

До версії 1.5.8, якщо вам потрібно було перевірити, чи доступна окрема функція libguestfs під час компіляції, ми рекомендували скористатися засобами збирання, зокрема autoconf або cmake. Наприклад, у autotools ви могли скористатися таким кодом:

 AC_CHECK_LIB([guestfs],[guestfs_create])
 AC_CHECK_FUNCS([guestfs_dd])

який призводив до того, що "HAVE_GUESTFS_DD" було або визначено, або не визначено у вашій програмі.

ОКРЕМІ ВИКЛИКИ ПІД ЧАС РОБОТИ

Перевірка під час компіляції не гарантує існування функції у бібліотеці. Причиною є те, що можливе динамічне компонування із попереднім варіантом libguestfs.so (динамічної бібліотеки), у якому немає потрібного виклику. На жаль, така ситуація призводить до помилки сегментації, що є загальним недоліком системи динамічного компонування у C.

Під час роботи програми ви можете скористатися dlopen(3) для перевірки того, чи доступна функція. Ось приклад програми (зауважте, що вам все одно слід виконати перевірку під час компіляції):

 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <dlfcn.h>
 #include <guestfs.h>
 
 main ()
 {
 #ifdef GUESTFS_HAVE_DD
   void *dl;
   int has_function;
 
   /* Перевіряємо, чи дійсно функція guestfs_dd є доступною. */
   dl = dlopen (NULL, RTLD_LAZY);
   if (!dl) {
     fprintf (stderr, "dlopen: %s\n", dlerror ());
     exit (EXIT_FAILURE);
   }
   has_function = dlsym (dl, "guestfs_dd") != NULL;
   dlclose (dl);
 
   if (!has_function)
     printf ("this libguestfs.so does NOT have guestfs_dd function\n");
   else {
     printf ("this libguestfs.so has guestfs_dd function\n");
     /* Now it's safe to call
     guestfs_dd (g, "foo", "bar");
     */
   }
 #else
   printf ("guestfs_dd function was not found at compile time\n");
 #endif
  }

Вам може здатися, що у наведеному вище прикладі реалізовано доволі марудну перевірку, і це насправді так. Існують інші способи поза системою компонування C, які надають змогу гарантувати те, що такого роду несумісність ніколи не трапиться. Зокрема, можна скористатися системою визначення версій пакунків:

 Потрібна версія: libguestfs >= 1.0.80

ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ

Нещодавно реалізованою у програмному інтерфейсі можливістю є впровадження викликів, які приймають необов'язкові аргументи. У C такі виклики оголошуються у 3 способи. Основним способом є виклик, який приймає змінні аргументи (тобто "..."), як у цьому прикладі:

 int guestfs_add_drive_opts (guestfs_h *g, const char *filename, ...);

Викличте цю функцію зі списком необов'язкових аргументів, який завершуватиметься "-1". Отже, щоб викликати функцію без необов'язкових аргументів, зробіть так:

 guestfs_add_drive_opts (g, filename, -1);

З одним додатковим аргументом:

 guestfs_add_drive_opts (g, filename,
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "qcow2",
                         -1);

З двома аргументами:

 guestfs_add_drive_opts (g, filename,
                         GUESTFS_ADD_DRIVE_OPTS_FORMAT, "qcow2",
                         GUESTFS_ADD_DRIVE_OPTS_READONLY, 1,
                         -1);

і так далі. Не забувайте завершувати список "-1", інакше можливі дуже печальні наслідки!

ВИКОРИСТАННЯ va_list ДЛЯ НЕОБОВ'ЯЗКОВИХ АРГУМЕНТІВ

Другий варіант має ту саму назву із суфіксом "_va". Він працює так само, але отримує "va_list". Див. підручник з C, щоб дізнатися більше. Приклад функції з оголошенням:

 int guestfs_add_drive_opts_va (guestfs_h *g, const char *filename,
                                va_list args);

ПОБУДОВА ДОДАТКОВИХ АРГУМЕНТІВ

Третій варіант корисний там, де вам потрібно побудувати ці виклики. Ви передаєте структуру, у якій ви заповнюєте необов'язкові поля. Структура містить бітову маску як перший елемент. Ви маєте встановити цю маску для позначення того, які поля вам слід заповнити. У нашому прикладі функції оголошено структуру і виклик:

 struct guestfs_add_drive_opts_argv {
   uint64_t bitmask;
   int readonly;
   const char *format;
   /* ... */
 };
 int guestfs_add_drive_opts_argv (guestfs_h *g, const char *filename,
              const struct guestfs_add_drive_opts_argv *optargs);

Ви можете викликати її ось так:

 struct guestfs_add_drive_opts_argv optargs = {
   .bitmask = GUESTFS_ADD_DRIVE_OPTS_READONLY_BITMASK |
              GUESTFS_ADD_DRIVE_OPTS_FORMAT_BITMASK,
   .readonly = 1,
   .format = "qcow2"
 };
 
 guestfs_add_drive_opts_argv (g, filename, &optargs);

Нотатки:

  • Суфікс "_BITMASK" при назві кожного параметр, якщо вказуємо бітову маску.
  • Вам не слід заповнювати усі поля структури.
  • Має існувати однозначна відповідність між полями структури, які заповнюються, і набором бітів у бітовій масці.

ДОДАТКОВІ АРГУМЕНТИ ІНШИМИ МОВАМИ

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

Щодо guestfish, див. "НЕОБОВ'ЯЗКОВІ АРГУМЕНТИ" in guestfish(1).

ПОДІЇ

ВСТАНОВЛЕННЯ ЗВОРОТНИХ ВИКЛИКІВ ДЛЯ ОБРОБКИ ПОДІЙ

Зауваження: у цьому розділі наведено документацію загальний механізм обробки подій, впроваджений у libguestfs 1.10, яким ви маєте користуватися у новому коді, якщо це можливо. Застарілі функції "guestfs_set_log_message_callback", "guestfs_set_subprocess_quit_callback", "guestfs_set_launch_done_callback", "guestfs_set_close_callback" і "guestfs_set_progress_callback" більше не документуються на цій сторінці підручника. Оскільки сталість ABI гарантовано, застарілі функції лишаються працездатнними.

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

У поточній реалізації події створюються лише синхронно: це означає, що події (а отже, зворотні виклики) можуть траплятися, доки ви перебуваєте у іншому виклику libguestfs. Зворотний виклик викликається у тому самому потоці обробки.

Записи подій можуть містити дані, зазвичай, нічого (void), масив 64-бітових цілих чисел без знаку або буфер повідомлень. Дані вмісту обговорено нижче.

КЛАСИ ПОДІЙ

Функцію зворотного виклику буде викликано під час закриття дескриптора (синхронно з "guestfs_close").

Зауважте, що libguestfs встановлює обробник atexit(3) для виконання спроби вилучення дескрипторів, які було відкрито, під час завершення роботи програми. Це означає, що цей зворотний виклик може бути викликано опосередковано з exit(3), що може спричинити неочікувані проблеми у високорівневих мовах програмування (наприклад, якщо ваш інтерпретатор високорівневої мови програмування вже було очищено на час виклику і якщо зворотний виклик переводить до якоїсь функції високорівневої мови програмування).

Якщо зворотних викликів не зареєстровано: дескриптор закривається без будь-яких зворотних викликів.

Функцію зворотного виклику буде викликано, коли завершує роботу дочірній процес, або асинхронно, або внаслідок роботи "guestfs_kill_subprocess". (Це відповідає переходу з будь-якого стану до стану CONFIG).

Якщо зворотних викликів не зареєстровано: подія ігнорується.

Функцію зворотного виклику буде викликано, коли дочірній процес буде готовим вперше після його запуску. (Це відповідає переходу зі стану LAUNCHING до стану READY.)

Якщо зворотних викликів не зареєстровано: подія ігнорується.

Частина довготривалих дій може створювати повідомлення про поступ. Якщо цей зворотний виклик зареєстровано, його буде викликано кожного разу при створенні повідомлення про поступ (зазвичай, за дві секунди після початку виконання дії і три рази за секунду після цього, аж доки виконання дії не буде завершено, хоча частоту може буде змінено у майбутніх версіях).

Зворотний виклик отримує у даних вмісту чотири 64-бітових чисел без знаку, якими є (саме у такому порядку): "proc_nr", "serial", "position", "total".

Одиниці "total" не визначено, хоча для деяких дій "total" може бути певним чином пов'язано із обсягом даних, які передаються (наприклад, у байтах або мегабайтах), і "position" може бути часткою даних, які передаються.

Єдиними визначеними і стабільними частинами програмного інтерфейсу є:

  • Зворотний виклик може показувати користувачеві певний тип смужки поступу або індикатора, який показуватиме відношення "position":"total".
  • 0 <= "position" <= "total"
  • Якщо під час виклику надсилаються якість сповіщення щодо поступу, остаточне сповіщення щодо поступу завжди надсилається, коли "position" = "total" (якщо виклик не завершується помилкою).

    Так зроблено для спрощення коду функції виклику, отже функції виклику можуть просто встановити для індикатора поступу «100%» наприкінці виконання дії, без потреби у реалізації у коді виявлення цієї ситуації.

  • Для деяких викликів неможливо оцінити поступ виклику, але ми можемо створювати повідомлення щодо поступу для позначення виконання дії. Такий режим відомий як «режим пульсації», підтримку якого безпосередньо передбачено у деяких реалізаціях смужок поступу (наприклад GtkProgressBar).

    Для цих викликів нуль або декілька повідомлень поступу створюються для "position = 0" і "total = 1", за якими слідує остаточне повідомлення з "position = total = 1".

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

Крім того, зворотний виклик отримує номер процедури ("proc_nr") і серійний номер ("serial") виклику. Ці дані корисні лише для діагностики проблем із протоколом, а зворотний виклик, за звичайних умов, може їх ігнорувати. Зворотний виклик може вивести ці числові дані у повідомленнях про помилки або діагностичних повідомленнях.

Якщо зворотних викликів не зареєстровано, повідомлення про поступ відкидаються.

Функція зворотного виклику викликається кожного разу, коли qemu, ядро базової системи, guestfsd (фонова служба) або допоміжні програми створюють повідомлення журналу.

Якщо перед запуском ("guestfs_launch") встановлено прапорець докладних повідомлень ("guestfs_set_verbose"), буде створено додаткові діагностичні повідомлення.

Якщо зворотний виклик не зареєстровано: повідомлення відкидаються, якщо не встановлено прапорець докладних повідомлень. У цьому випадку повідомлення надсилаються до stderr. Ви можете перевизначити виведення докладних повідомлень до stderr встановленням зворотного виклику.

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

Якщо встановлено прапорець докладних повідомлень ("guestfs_set_verbose"), буде створено додаткові діагностичні повідомлення.

Якщо зворотний виклик не зареєстровано: повідомлення відкидаються, якщо не встановлено прапорець докладних повідомлень. У цьому випадку повідомлення надсилаються до stderr. Ви можете перевизначити виведення докладних повідомлень до stderr встановленням зворотного виклику.

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

Якщо зворотний виклик не зареєстровано: повідомлення виводяться до stderr. Ви можете перевизначити виведення повідомлень із попередженнями до stderr встановленням зворотного виклику.

Функція зворотного виклику викликається кожного разу, коли створюється повідомлення трасування. Це стосується лише випадків, коли встановлено прапорець трасування ("guestfs_set_trace").

Якщо зворотний виклик не зареєстровано: повідомлення виводяться до stderr. Ви можете перевизначити виведення повідомлень трасування до stderr встановленням зворотного виклику.

Функція зворотного виклику викликається кожного разу, коли відбувається вхід до функції libguestfs.

Дані вмісту є рядком, який містить назву функції, до якої було здійснено вхід (без префікса "guestfs_").

Зауважте, що функції libguestfs можуть викликати самі себе, отже, ви можете побачити багато подій від одного виклику. Деякі функції libguestfs не створюють цієї події.

Якщо зворотних викликів не зареєстровано: подія ігнорується.

Для будь-якої функції програмного інтерфейсу, яка відкриває з'єднання libvirt, цю подію може бути створено для позначення того, що libvirt потрібні дані для розпізнавання користувача. Див. "РОЗПІЗНАВАННЯ ЗА ДОПОМОГОЮ LIBVIRT" нижче.

Якщо зворотних викликів не зареєстровано: використовується "virConnectAuthPtrDefault" (пасує лише для команд, які керуються з командного рядка).

ПРОГРАМНИЙ ІНТЕРФЕЙС ПОДІЙ

guestfs_set_event_callback

 int guestfs_set_event_callback (guestfs_h *g,
                                 guestfs_event_callback cb,
                                 uint64_t event_bitmask,
                                 int flags,
                                 void *opaque);

Ця функція реєструє зворотний виклик ("cb") для усіх класів подій у "event_bitmask".

Наприклад, щоб зареєструвати зворотний виклик для усіх подій повідомлень журналу, ви можете викликати цю функцію із маскою бітів "GUESTFS_EVENT_APPLIANCE|GUESTFS_EVENT_LIBRARY|GUESTFS_EVENT_WARNING". Щоб зареєструвати єдиний зворотний виклик для усіх можливих класів подій, скористайтеся "GUESTFS_EVENT_ALL".

"flags" слід завжди передавати як 0.

"opaque" — непрозорий вказівник, який передається зворотному виклику. Ви можете використовувати його із будь-якою метою.

Повернутим значенням є дескриптор події (ціле число), яким ви можете скористатися для вилучення зворотного виклику (див. нижче).

Якщо сталася помилка, ця функція повертає "-1" і встановлює стан помилки у дескрипторі у звичний спосіб (див. "guestfs_last_error" тощо)

Зворотні виклики діють до їхнього вилучення або до закриття дескриптора.

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

guestfs_delete_event_callback

 void guestfs_delete_event_callback (guestfs_h *g, int event_handle);

Вилучити раніше зареєстрований зворотний виклик. Значенням параметра "event_handle" має бути ціле число, яке було повернуто попереднім викликом "guestfs_set_event_callback" для того самого дескриптора.

guestfs_event_to_string

 char *guestfs_event_to_string (uint64_t event);

"event" — окрема подія або бітова маска подій. Ця функція повертає рядкове представлення (корисно для діагностики або виведення подій).

Окремі події повертаються як назви у нижньому регістрі, наприклад "close".

Бітова маска декількох подій повертається як список значень, які відокремлено комами, наприклад "close,progress".

Якщо буде передано нуль, буде повернуто порожній рядок "".

Якщо виконано успішно, повертає рядок. Якщо сталася помилка, повертає NULL і встановлює значення "errno".

Повернутий рядок має бути вивільнено функцією, яка викликає цю функцію.

guestfs_event_callback

 typedef void (*guestfs_event_callback) (
                  guestfs_h *g,
                  void *opaque,
                  uint64_t event,
                  int event_handle,
                  int flags,
                  const char *buf, size_t buf_len,
                  const uint64_t *array, size_t array_len);

Це тип функції зворотного виклику події, яку вам слід надати.

Базові параметри: дескриптор ("g"), непрозорий вказівник користувача ("opaque"), клас подій (наприклад "GUESTFS_EVENT_PROGRESS"), дескриптор події та "flags", які у поточній версії програмного інтерфейсу ви можете ігнорувати.

Решта параметрів містить дані вмісту події (якщо такі є). У кожному записі події можуть міститися дані вмісту, які, зазвичай, пов'язано із класом події, але з міркувань забезпечення сумісності у майбутньому ваш код має бути записано так, щоб він міг обробити будь-які дані вмісту для будь-якого класу подій.

"buf" і "buf_len" містять буфер повідомлень (якщо "buf_len == 0", буфера повідомлень не існує). Зауважте, що цей буфер повідомлень може містити довільні 8-бітові дані, зокрема байти NUL.

"array" і "array_len" — масив з 64-бітових цілих чисел без знаку. У поточній версії використовується лише для повідомлень щодо поступу.

ПРИКЛАД: ЗАХОПЛЮЄМО ПОВІДОМЛЕННЯ ЖУРНАЛУ

Робочу програму, яка демонструє це, можна знайти у examples/debug-logging.c у початковому коді libguestfs.

Однією з мотивацій для створення загального програмного інтерфейсу подій було уможливлення для програм із графічним інтерфейсом перехоплення діагностичних повідомлень та інших повідомлень. У libguestfs ≤ 1.8 ці повідомлення безумовно надсилалися до "stderr".

Подіями, пов'язаними із повідомленнями журналу, є такі: "GUESTFS_EVENT_LIBRARY", "GUESTFS_EVENT_APPLIANCE", "GUESTFS_EVENT_WARNING" і "GUESTFS_EVENT_TRACE". (Зауважте, що повідомлення про помилки не є подіями; вам слід перехоплювати повідомлення про помилки окремо).

Програмам слід встановити зворотний виклик для цікавих для них класів подій:

 int eh =
   guestfs_set_event_callback
     (g, message_callback,
      GUESTFS_EVENT_LIBRARY | GUESTFS_EVENT_APPLIANCE |
      GUESTFS_EVENT_WARNING | GUESTFS_EVENT_TRACE,
      0, NULL) == -1)
 if (eh == -1) {
   // обробка помилки у звичний спосіб
 }

Далі, зворотний виклик може спрямувати повідомлення до відповідного місця. У цьому прикладі повідомлення спрямовуються до syslog:

 static void
 message_callback (
         guestfs_h *g,
         void *opaque,
         uint64_t event,
         int event_handle,
         int flags,
         const char *buf, size_t buf_len,
         const uint64_t *array, size_t array_len)
 {
   const int priority = LOG_USER|LOG_INFO;
   if (buf_len > 0)
     syslog (priority, "event 0x%lx: %s", event, buf);
 }

РОЗПІЗНАВАННЯ ЗА ДОПОМОГОЮ LIBVIRT

Деякі виклики програмного інтерфейсу libguestfs можуть відкривати з'єднання із libvirt. У поточній версії єдиними такими викликами є "guestfs_add_domain" і "guestfs_launch", якщо вибрано модуль обробки libvirt. З'єднання libvirt можуть потребувати проходження розпізнавання, наприклад, якщо вони потребують доступу до віддаленого сервера або доступу до служб адміністратора (root) від імені неадміністративного користувача. Розпізнавання libvirt відбувається за допомогою механізму зворотного виклику, див. http://libvirt.org/guide/html/Application_Development_Guide-Connections.html

Ви можете надавати дані розпізнавання libvirt, зареєструвавши зворотний виклик для подій типу "GUESTFS_EVENT_LIBVIRT_AUTH".

Якщо такої події не зареєстровано, libguestfs використовує функцію libvirt, яка надає запити командного рядка ("virConnectAuthPtrDefault"). Пасує для програм libguestfs, які керуються за допомогою командного рядка.

Для забезпечення розпізнавання спочатку викличте "guestfs_set_libvirt_supported_credentials" зі списком реєстраційних даних, які ваша програма має вміти надавати. Далі, зареєструйте зворотний виклик для події "GUESTFS_EVENT_LIBVIRT_AUTH". Обробник подій буде викликано, коли libvirt надішле запит щодо даних для розпізнавання.

У обробнику подій викличте "guestfs_get_libvirt_requested_credentials" для отримання списку реєстраційних даних, які потрібні libvirt. Далі, вам слід запитати (наприклад, користувача) щодо кожного комплекту реєстраційних даних і викликати "guestfs_set_libvirt_requested_credential" із відповіддю. Зауважте, що для кожного комплекту реєстраційних даних можуть бути доступними додаткові відомості через виклики "guestfs_get_libvirt_requested_credential_prompt", "guestfs_get_libvirt_requested_credential_challenge" та "guestfs_get_libvirt_requested_credential_defresult".

Наведений нижче приклад програми має зробити це яснішим.

Також існує суттєвіший робочий приклад програми. Він постачається із початковими кодами libguestfs і називається libvirt-auth.c.

 main ()
 {
   guestfs_h *g;
   char *creds[] = { "authname", "passphrase", NULL };
   int r, eh;
 
   g = guestfs_create ();
   if (!g) exit (EXIT_FAILURE);
 
   /* Повідомляємо libvirt, підтримку яких реєстраційних даних передбачено у програмі. */
   r = guestfs_set_libvirt_supported_credentials (g, creds);
   if (r == -1)
     exit (EXIT_FAILURE);
 
   /* Встановлюємо обробник подій. */
   eh = guestfs_set_event_callback (
       g, do_auth,
       GUESTFS_EVENT_LIBVIRT_AUTH, 0, NULL);
   if (eh == -1)
     exit (EXIT_FAILURE);
 
   /* Приклад виклику, який може призвести до запиту щодо реєстраційних даних. */
   r = guestfs_add_domain (
       g, "dom",
       GUESTFS_ADD_DOMAIN_LIBVIRTURI, "qemu:///system",
       -1);
   if (r == -1)
     exit (EXIT_FAILURE);
 
   exit (EXIT_SUCCESS);
 }
 
 static void
 do_auth (guestfs_h *g,
          void *opaque,
          uint64_t event,
          int event_handle,
          int flags,
          const char *buf, size_t buf_len,
          const uint64_t *array, size_t array_len)
 {
   char **creds;
   size_t i;
   char *prompt;
   char *reply;
   size_t replylen;
   int r;
 
   // buf буде адресою libvirt. buf_len можна ігнорувати.
   printf ("Authentication required for libvirt conn '%s'\n",
           buf);
 
   // Питаємо libguestfs, які реєстраційні дані потрібні libvirt.
   creds = guestfs_get_libvirt_requested_credentials (g);
   if (creds == NULL)
     exit (EXIT_FAILURE);
 
   // Тепер просимо користувача відповісти на питання.
   for (i = 0; creds[i] != NULL; ++i)
   {
     if (strcmp (creds[i], "authname") == 0 ||
         strcmp (creds[i], "passphrase") == 0)
     {
       prompt =
         guestfs_get_libvirt_requested_credential_prompt (g, i);
       if (prompt && strcmp (prompt, "") != 0)
         printf ("%s: ", prompt);
       free (prompt);
 
       // Тут має бути якийсь код запитів щодо реєстраційних даних.
       // ...
       // Записуємо відповідь до «reply» зі довжиною «replylen» (у байтах).
 
      r = guestfs_set_libvirt_requested_credential (g, i,
          reply, replylen);
      if (r == -1)
        exit (EXIT_FAILURE);
     }
 
     free (creds[i]);
   }
 
   free (creds);
 }

СКАСОВУВАННЯ ДОВГОТРИВАЛОГО ПЕРЕДАВАННЯ ДАНИХ

Деякі дії може бути скасовано функцією виклику, доки вони виконуються. У поточній версії може бути скасовано лише дії із вивантаження або отримання даних (технічно: дії, які мають параметри "FileIn" або "FileOut" у генераторі).

Щоб скасувати передавання даних, викличте "guestfs_user_cancel". Щоб дізнатися більше, ознайомтеся із описом "guestfs_user_cancel".

ОБЛАСТЬ ПРИВАТНИХ ДАНИХ

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

Щоб долучити іменовані дані, скористайтеся таким викликом:

 void guestfs_set_private (guestfs_h *g, const char *key, void *data);

"key" — назва, яку слід пов'язати з цими даними, а "data" — довільний вказівник (який може бути "NULL"). Будь-який попередній запис із тим самим ключем буде перезаписано.

Ви можете скористатися будь-яким рядком "key", але уникайте ключів, назви яких починаються з символу підкреслювання (libguestfs використовує такі ключі для власних внутрішніх потреб, зокрема реалізації прив'язок до мов програмування). Рекомендуємо додавати до таких ключів якийсь унікальний рядок-префікс, щоб уникнути конфліктів із ключами інших користувачів.

Щоб отримати вказівник, скористайтеся таким:

 void *guestfs_get_private (guestfs_h *g, const char *key);

Ця функція повертає "NULL", якщо або не буде знайдено пов'язаних "key" даних, або користувачем раніше буде встановлено для вказівника "data" ключа "key" значення "NULL".

Libguestfs не намагається переходити чи обробляти у будь-який спосіб вказівник "data". У межах libguestfs це значення взагалі не повинне бути чинним вказівником. Зокрема, libguestfs не намагатиметься звільнити пам'ять від data, коли дескриптор буде закриватися. Якщо data слід звільнити, функція виклику має зробити це або до виклику "guestfs_close", або має встановити зворотний виклик закриття для цього (див. "GUESTFS_EVENT_CLOSE").

Для обходу усіх записів скористайтеся цими двома функціями:

 void *guestfs_first_private (guestfs_h *g, const char **key_rtn);
 void *guestfs_next_private (guestfs_h *g, const char **key_rtn);

"guestfs_first_private" повертає першу пару ключ, вказівник (слово «перша» тут немає певного точного змісту — ключі повертаються без якогось визначеного порядку). Функцією повертається вказівник на ключ у *key_rtn і відповідний вказівник на дані. Якщо у дескрипторі не зберігається ніяких ключів, буде повернуто "NULL".

"guestfs_next_private" повертає наступну пару ключ, вказівник. Ця функція поверне "NULL", якщо подальших записів у списку ключів не існує.

Нотатки щодо обходу записів:

  • Викликати "guestfs_set_private" під час обходу списку записів не можна.
  • Дескриптор супроводжує внутрішній ітератор, значення якого буде скинуто, як ви викличете "guestfs_first_private". Внутрішній ітератор втратить чинність, якщо буде викликано "guestfs_set_private".
  • Якщо вами встановлено для вказівника на дані, пов'язаного із ключем, значення "NULL", тобто:

     guestfs_set_private (g, key, NULL);
        

    цей ключ "key" не буде повернуто під час обходу списку.

  • *key_rtn є чинним лише до наступного виклику "guestfs_first_private", "guestfs_next_private" або "guestfs_set_private".

У наведеному нижче прикладі коду показано, як вивести усі ключі і вказівники на дані, які пов'язано із дескриптором "g":

 const char *key;
 void *data = guestfs_first_private (g, &key);
 while (data != NULL)
   {
     printf ("key = %s, data = %p\n", key, data);
     data = guestfs_next_private (g, &key);
   }

Типово, вам потрібні будуть лише ключі, кі починаються зі специфічного для програми префікса "foo_". Змініть цикл ось так:

 const char *key;
 void *data = guestfs_first_private (g, &key);
 while (data != NULL)
   {
     if (strncmp (key, "foo_", strlen ("foo_")) == 0)
       printf ("key = %s, data = %p\n", key, data);
     data = guestfs_next_private (g, &key);
   }

Якщо під час обходу ви хочете змінювати ключі, вам слід перестрибувати до початку циклу. Наприклад, щоб вилучити усі ключі з префіксом "foo_", зробіть так:

  const char *key;
  void *data;
 again:
  data = guestfs_first_private (g, &key);
  while (data != NULL)
    {
      if (strncmp (key, "foo_", strlen ("foo_")) == 0)
        {
          guestfs_set_private (g, key, NULL);
          /* зауважте, що вказівник 'key' тепер є некоректним, як і
             внутрішній ітератор */
          goto again;
        }
      data = guestfs_next_private (g, &key);
    }

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

SYSTEMTAP

Бібліотеку C libguestfs можна зондувати за допомогою systemtap або DTrace. Це стосується будь-якої бібліотеки, не лише libguestfs. Втім, у libguestfs також є статичні позначки, які спрощують зондування внутрішніх дій.

Отримати список статичних позначок можна такою командою:

 stap -l 'process("/usr/lib*/libguestfs.so.0")
              .provider("guestfs").mark("*")'

Зауваження: ці статичні позначки не є частиною стабільного програмного інтерфейсу, їх може бути змінено у майбутніх версіях.

ПРИКЛАД СКРИПТУ SYSTEMTAP

Цей скрипт містить приклади показу статичних позначок і деяких звичайних точок входу C:

 global last;
 
 function display_time () {
       now = gettimeofday_us ();
       delta = 0;
       if (last > 0)
             delta = now - last;
       last = now;
 
       printf ("%d (+%d):", now, delta);
 }
 
 probe begin {
       last = 0;
       printf ("ready\n");
 }
 
 /* Показати усі виклики статичних маркерів. */
 probe process("/usr/lib*/libguestfs.so.0")
           .provider("guestfs").mark("*") ? {
       display_time();
       printf ("\t%s %s\n", $$name, $$parms);
 }
 
 /* Показати усі виклики функцій guestfs_mkfs*. */
 probe process("/usr/lib*/libguestfs.so.0")
           .function("guestfs_mkfs*") ? {
       display_time();
       printf ("\t%s %s\n", probefunc(), $$parms);
 }

Наведений вище скрипт можна зберегти із назвою test.stap і запустити його за допомогою програми stap(1). Зауважте, що вам знадобляться або права доступу root, або треба буде додати вашого користувача до декількох спеціалізованих груп stap. Зверніться до документації із systemtap, щоб дізнатися більше.

 # stap /tmp/test.stap
 ready

У іншому терміналі запустіть програму guestfish ось так:

 guestfish -N fs

У першому терміналі виведені stap дані трасування будуть подібними до таких:

 1318248056692655 (+0): launch_start
 1318248056692850 (+195):       launch_build_appliance_start
 1318248056818285 (+125435):    launch_build_appliance_end
 1318248056838059 (+19774):     launch_run_qemu
 1318248061071167 (+4233108):   launch_end
 1318248061280324 (+209157):    guestfs_mkfs g=0x1024ab0 fstype=0x46116f device=0x1024e60

НУМЕРАЦІЯ ВЕРСІЙ LIBGUESTFS

З квітня 2010 року розпочалася окрема історія розробки libguestfs і стабільні випуски бібліотеки, які позначалися відповідними гілками у нашому сховищі коду git. Ці окремі випуски можна визначити за номерами версій:

                 парні номери для стабільних: 1.2.x, 1.4.x, ...
       .-------- непарні номери для тестових: 1.3.x, 1.5.x, ...
       |
       v
 1  .  3  .  5
 ^           ^
 |           |
 |           `-------- підверсія
 |
 `------ завжди «1», оскільки ми не міняємо ABI

Таким чином, «1.3.5» — це п'яте оновлення у гілці для розробки «1.3».

З часом ми переносимо виправлення із гілки для розробки і портуємо їх на стабільну гілку. У результаті з часом стабільна гілка стає стабільнішою, у ній стає менше вад. Отже, стабільні випуски ідеальні для тих, кому не потрібні нові можливості, а потрібне лише завжди працездатне програмне забезпечення.

Наші критерії для зворотного портування змін:

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

Нова стабільна гілка започатковується тоді, коли ми вважаємо нові можливості у розробці суттєвими і достатньо новаторськими щодо поточної стабільної гілки. Коли виконуються ці умови, ми створюємо нову стабільну гілку і нову гілку для розробки із версіями 1.N.0 і 1.(N+1).0, відповідно [N — парне число]. На цьому етапі новий стабільний випуск із нуликом наприкінці номера версії не обов'язково є аж надто стабільним, але з портуванням виправлень із гілки для розробки стабільна гілка стає все стабільнішою з часом.

ОБМЕЖЕННЯ

ОБМЕЖЕННЯ ПРОТОКОЛУ

На внутрішньому рівні libguestfs використовує заснований на повідомленнях протокол для передавання викликів програмного інтерфейсу і відповідей на них до малої «базової системи» та з неї (на сторінці підручника guestfs-internals(1) наведено докладний опис цього). Максимальний розмір повідомлення, яке використовується у протоколі, трохи менший за 4 МБ. Для деяких викликів програмного інтерфейсу слід зважати на це обмеження. Виклики програмного інтерфейсу, яких це стосується, документовано окремо зі зворотним посиланням на цей розділ документації.

У libguestfs < 1.19.32 декільком викликам доводилося або кодувати увесь список аргументів, або кодувати усе повернуте значення (а іноді, і обидва цих елементи виклику) у єдине повідомлення протоколу. Це призводило до довільного обмеження щодо об'єму даних, з яким могли впоратися ці виклики. Наприклад, функція "guestfs_cat" могла отримати файл, лише якщо його розмір був меншим за близьке до 4 МБ значення. У пізніших версіях libguestfs деякі з цих обмежень було знято. Програмні інтерфейси, які раніше було обмежено, а тепер не обмежено (окрім, можливо, доступної пам'яті у системі), наведено у списку нижче. Щоб визначити, чи підлягає певний програмний інтерфейс обмеженням за протоколом, пошукайте у документації із програмного інтерфейсу попередження із посиланням на цей розділ. Не забувайте також користуватися версією документації, яка збігається із версією libguestfs, якою ви користуєтеся.

"guestfs_cat", "guestfs_find", "guestfs_read_file", "guestfs_read_lines", "guestfs_write", "guestfs_write_append", "guestfs_lstatlist", "guestfs_lxattrlist", "guestfs_readlinklist", "guestfs_ls".

Див. також розділи "ВИВАНТАЖЕННЯ" і "ОТРИМАННЯ", щоб дізнатися більше про копіювання значних обсягів даних до файлової системи та з неї.

МАКСИМАЛЬНА КІЛЬКІСТЬ ДИСКІВ

У libguestfs ≥ 1.19.7 ви можете отримати максимальну кількість дисків, які може бути додано, за допомогою команди "guestfs_max_disks". У попередніх версіях libguestfs (тобто версіях, де цієї команди не було) вам слід користуватися типовим значенням цієї кількості — 25.

Решта цього розділу стосується подробиць реалізації, які може бути змінено у майбутніх версіях.

Якщо використовуються диски virtio-scsi (типовий режим, якщо він доступний, у qemu), поточним обмеженням є кількість у 255 дисків. Якщо використовуються диски virtio-blk (типовий режим у застарілих версіях) кількість дисків обмежено 27. Останнє обмеження може бути іншим, залежно від подробиць реалізації та того, чи увімкнено роботу у мережі.

Virtio-scsi, як воно використовується у libguestfs, налаштовано на використання одного диска призначення, доступними є 256 призначень.

Virtio-blk споживає 1 віртуальний слот PCI на диск, а кількість слотів PCI обмежено значенням 31, але деякі зі слотів використовуються для інших потреб.

Один віртуальний диск використовується libguestfs для виконання внутрішніх завдань.

До версії libguestfs 1.19.7 назви дисків мали складатися із одного символу (наприклад, від /dev/sda до /dev/sdz), а оскільки один диск було зарезервовано, це означало, що дисків могло бути не більше 25. Цю ваду виправлено у новіших версіях бібліотеки.

У libguestfs ≥ 1.20 передбачено можливість з'єднання дисків у «гарячому» режимі. Див. "З'ЄДНАННЯ У «ГАРЯЧОМУ» РЕЖИМІ".

МАКСИМАЛЬНА КІЛЬКІСТЬ РОЗДІЛІВ НА ОДНОМУ ДИСКУ

Virtio обмежує максимальну кількість розділів на диску значенням 15.

Причиною є те, що інтерфейс резервує 4 біти для номера підлеглого пристрою (отже, /dev/vda може містити розділи від /dev/vda1 до /dev/vda15).

Якщо ви долучите диски, на яких понад 15 розділів, «зайві» розділи ігноруватимуться у libguestfs.

МАКСИМАЛЬНИЙ РОЗМІР ДИСКА

Ймовірно, верхня межа перебуває між 2**63-1 і 2**64-1 байтами.

Нами було перевірено працездатність блокових пристроїв аж до 1 ексабайта (2**60 або 1.152.921.504.606.846.976 байтів) із використанням розріджених файлів, що зберігалися на файловій системі XFS основної операційної системи.

Хоча, ймовірно, libguestfs не накладає жодних обмежень, базове сховище даних у основній операційній системі може накладати такі обмеження. Якщо ви зберігаєте образи дисків на файловій системі ext4 у основній операційній системі, максимальний розмір образу буде обмежено максимальним розміром файла у ext4 (у поточній версії — 16 ТБ). Якщо ви зберігаєте образи дисків як логічні томи у основній операційній системі, розмір образу буде обмежено максимальним розміром логічного тому.

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

МАКСИМАЛЬНИЙ РОЗМІР РОЗДІЛУ

Схема поділу на розділи MBR (тобто класична для MS-DOS схема) використовує 32-бітові номери секторів. Якщо розмір сектору дорівнює 512 байтів, у MBR не можна буде записати адреси розділів, розташовані за межею у 2 ТБ на диску.

Якщо розмір диска перевищує 2 ТБ, рекомендуємо вам використовувати таблицю розділів GPT. У GPT використовуються 64-бітові номери секторів, отже, теоретично, можна адресувати диски, об'єм яких перевищує найбільший підтримуваний у нашій бібліотеці розмір.

МАКСИМАЛЬНИЙ РОЗМІР ФАЙЛОВОЇ СИСТЕМИ, ФАЙЛІВ, КАТАЛОГІВ

Це залежить від типу файлової системи. Сама libguestfs не накладає жодних відомих обмежень. Зверніться до Вікіпедії та документації із файлової системи, щоб ознайомитися із обмеженнями, які накладає файлова система.

МАКСИМАЛЬНІ ОБСЯГИ ВИВАНТАЖЕННЯ І ОТРИМАННЯ ДАНИХ

Функції програмного інтерфейсу "guestfs_upload", "guestfs_download", "guestfs_tar_in", "guestfs_tar_out" та подібні до них функції не обмежують обсяги вивантаження та отримання даних.

ОБМЕЖЕННЯ ІНСПЕКТУВАННЯ

У коді засобу інспектування передбачено декілька довільних обмежень на речі, подібні до розміру рою реєстру Windows, який він може прочитати, та довжини назви продукту. Ці обмеження введено навмисно, щоб запобігти можливості споживання довільних обсягів пам'яті та місця на диску в основній системі для створених зловмисниками образів систем. Втім, на практиці ці обмеження ніколи не перевищуються. Ознайомтеся із початковим кодом бібліотеки, щоб дізнатися більше.

РОЗШИРЕНЕ ПРИДАТНЕ ДО ЧИТАННЯ КОМП'ЮТЕРОМ ВИВЕДЕННЯ

У деяких з програм передбачено параметр --machine-readable, який загалом використовується для виведення даних у зручнішому для машинної обробки форматі. Типово, виведені дані спрямовуватимуться до stdout.

When using the --machine-readable option, the progress, information, warning, and error messages are also printed in JSON format for easier log tracking. Thus, it is highly recommended to redirect the machine-readable output to a different stream. The format of these JSON messages is like the following (actually printed within a single line, below it is indented for readability):

 {
   "message": "Finishing off",
   "timestamp": "2019-03-22T14:46:49.067294446+01:00",
   "type": "message"
 }

"type" can be: "message" for progress messages, "info" for information messages, "warning" for warning messages, and "error" for error message. "timestamp" is the RFC 3339 timestamp of the message.

Крім того, у деяких програмах передбачено підтримку додаткового рядка, який передається параметру --machine-readable: цей рядок, визначає, куди слід спрямовувати виведення зручних для машинної обробки даних.

Можливі значення:

The output goes to the specified fd, which is a file descriptor already opened for writing.
Дані буде виведено до вказаного файла назва_файла.
Виведені дані спрямовуються до stdout. Загалом, те саме, що і типова поведінка --machine-readable без параметра, але тут stdout вказується для виведення явним чином.
Виведення спрямовується до stderr.

ЗМІННІ СЕРЕДОВИЩА

Передати додаткові параметри ядру гостьової системи.
Це старий спосіб визначити "LIBGUESTFS_BACKEND".
Вибрати типовий спосіб створення базової системи. Див. "guestfs_set_backend" і "МОДУЛЬ".
Список відокремлених двокрапками параметрів, специфічних для модуля обробки. Див. "МОДУЛЬ", "ПАРАМЕТРИ МОДУЛЯ".
Місце, де зберігатиметься кеш базової системи libguestfs, якщо використовується базова система supermin. Базова система кешується і спільно використовується усіма дескрипторами, які мають однаковий ідентифікатор ефективного користувача.

Якщо значення "LIBGUESTFS_CACHEDIR" не встановлено, буде використано "TMPDIR". Якщо не встановлено значення "TMPDIR", буде використано /var/tmp.

Див. також "LIBGUESTFS_TMPDIR", "guestfs_set_cachedir".

Встановіть значення "LIBGUESTFS_DEBUG=1", щоб увімкнути режим докладних повідомлень. Той самий ефект має виклик "guestfs_set_verbose (g, 1)".
Встановити типовий виконуваний файл гіпервізору (зазвичай, qemu), яким користуватиметься libguestfs. Якщо не встановлено, буде використано qemu, знайдений скриптом налаштовування під час збирання.

Див. також "ОБГОРТКИ QEMU" вище.

Встановлює обсяг пам'яті, який надається процесу qemu, у мегабайтах. Приклад:

 LIBGUESTFS_MEMSIZE=700
    
Встановити шлях, яким libguestfs користуватиметься для пошуку базової системи supermin. Ознайомтеся із обговоренням щодо шляхів у розділі "ШЛЯХ" вище.
Це застарілий спосіб встановлення "LIBGUESTFS_HV".
Місце, де libguestfs зберігатиме тимчасові файли, які використовуються кожним з дескрипторів.

Якщо значення "LIBGUESTFS_TMPDIR" не встановлено, буде використано "TMPDIR". Якщо не встановлено значення "TMPDIR", буде використано /tmp.

Див. також "LIBGUESTFS_CACHEDIR", "guestfs_set_tmpdir".

Встановіть значення "LIBGUESTFS_TRACE=1", щоб увімкнути трасування команд. Той самий ефект має виклик "guestfs_set_trace (g, 1)".
ШЛЯХ
Libguestfs може запускати зовнішні програми. Бібліотека покладається на те, що вміст змінної $PATH встановлено належним чином. Якщо використовується модуль обробки libvirt, libvirt не працюватиме взагалі, якщо у $PATH не міститиметься шляху до qemu/KVM. Зауважте, що типово PHP вилучає $PATH з середовища, що може зруйнувати усі зв'язки у ньому.
За допомогою цих трьох змінних середовища можна вибрати ядро, яке libguestfs використовуватиме у базовій системі. Якщо не встановлено $SUPERMIN_KERNEL, буде вибрано найсвіжіше з ядер основної системи. Докладніший опис вибору ядра можна знайти на сторінці підручника щодо supermin(1).
ТИМЧАСОВИЙ КАТАЛОГ
Див. "LIBGUESTFS_CACHEDIR", "LIBGUESTFS_TMPDIR".
Цей каталог є специфічним каталогом користувача, який призначено для зберігання неважливих файлів під час роботи.

Якщо встановлено, використовується для зберігання тимчасових сокетів. Якщо не встановлено, використовується /tmp.

Див. також "get-sockdir", http://www.freedesktop.org/wiki/Specifications/basedir-spec/.

ТАКОЖ ПЕРЕГЛЯНЬТЕ

Приклади мовою програмування C: guestfs-examples(3).

Прив'язки до мов програмування: guestfs-erlang(3), guestfs-gobject(3), guestfs-golang(3), guestfs-java(3), guestfs-lua(3), guestfs-ocaml(3), guestfs-perl(3), guestfs-python(3), guestfs-ruby(3).

Інструменти: guestfish(1), guestmount(1), virt-alignment-scan(1), virt-builder(1), virt-builder-repository(1), virt-cat(1), virt-copy-in(1), virt-copy-out(1), virt-customize(1), virt-df(1), virt-diff(1), virt-edit(1), virt-filesystems(1), virt-format(1), virt-inspector(1), virt-list-filesystems(1), virt-list-partitions(1), virt-log(1), virt-ls(1), virt-make-fs(1), virt-p2v(1), virt-rescue(1), virt-resize(1), virt-sparsify(1), virt-sysprep(1), virt-tail(1), virt-tar(1), virt-tar-in(1), virt-tar-out(1), virt-v2v(1), virt-win-reg(1).

Інші питання щодо libguestfs: guestfs-building(1), guestfs-faq(1), guestfs-hacking(1), guestfs-internals(1), guestfs-performance(1), guestfs-release-notes(1), guestfs-security(1), guestfs-testing(1), libguestfs-test-tool(1), libguestfs-make-fixed-appliance(1).

Пов’язані сторінки підручника: supermin(1), qemu(1), hivex(3), stap(1), sd-journal(3).

Сайт: http://libguestfs.org/

Інструменти подібного призначення: fdisk(8), parted(8), kpartx(8), lvm(8), disktype(1).

АВТОРИ

Richard W.M. Jones ("rjones at redhat dot com")

АВТОРСЬКІ ПРАВА

Copyright (C) 2009-2020 Red Hat Inc.

LICENSE

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

BUGS

To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

When reporting a bug, please supply:

  • The version of libguestfs.
  • Where you got libguestfs (eg. which Linux distro, compiled from source, etc)
  • Describe the bug accurately and give a way to reproduce it.
  • Run libguestfs-test-tool(1) and paste the complete, unedited output into the bug report.
2021-01-05 libguestfs-1.44.0