libguestfs
Описание libguestfs
libguestfs (libguestfs.org) — это набор инструментов для доступа и изменения образов дисков виртуальных машин (ВМ). Вы можете использовать его для просмотра и редактирования файлов внутри гостей, создания сценариев для изменений виртуальных машин, мониторинга статистики использования/свободного диска, создания гостей, P2V, V2V, выполнения резервного копирования, клонирования виртуальных машин, создания виртуальных машин, форматирования дисков, изменения размера дисков и многого другого.
libguestfs может получить доступ практически к любому образу диска, который только можно вообразить. Он может делать это безопасно — без необходимости root и с несколькими уровнями защиты от вредоносных образов дисков. Он может получить доступ к образам дисков на удалённых машинах или на компакт-дисках/USB-накопителях. Он может получить доступ к проприетарным системам, таким как VMware и Hyper-V.
Все эти функции доступны через оболочку с поддержкой сценариев под названием guestfish или интерактивную спасательную оболочку virt-rescue.
libguestfs — это библиотека C, которая может быть связана с программами управления C и C++ и имеет привязки примерно для десятка других языков программирования. Используя модуль FUSE, вы также можете монтировать гостевые файловые системы на хосте.
libguestfs — это способ создания, доступа и изменения образов дисков. Вы можете заглядывать внутрь образов дисков, изменять файлы, которые они содержат, создавать их с нуля, изменять их размер и многое другое. Это особенно полезно из сценариев и программ, а также из командной строки.
Домашняя страница: https://libguestfs.org/
Автор: Richard W.M. Jones, Red Hat Inc.
Лицензия: GPLv2
Справка по libguestfs
Данный пакет включает в себя большое количество утилит:
- guestfs — главная документация по API
- guestfish — интерактивный шелл
- guestmount — монтирует файловую систему гостевой машины в основную
- guestunmount — размонтирует гостевую файловую систему
- virt-alignment-scan — проверить выравнивание разделов виртуальной машины
- virt-builder — быстрый построитель образов
- virt-builder-repository — создаёт репозитории virt-builder
- virt-cat — показывает файл
- virt-copy-in — копирует файлы и директории в виртуальную машину
- virt-copy-out — копирует файлы и директории из виртуальной машины
- virt-customize — настраивает виртуальные машины
- virt-df — показывает свободное место на виртуальных дисках
- virt-dib — безопасный diskimage-builder
- virt-diff — показывает разницу между виртуальными дисками
- virt-edit — редактирует файл
- virt-filesystems — показывает информацию о файловых системах, устройствах, LVM
- virt-format — стирает и делает пустые диски
- virt-get-kernel — получает ядро с диска
- virt-inspector — инспектирует образы виртуальных машин
- virt-list-filesystems — выводит список файловых систем
- virt-list-partitions — выводит список разделов дисков
- virt-log — показывает файлы журналов
- virt-ls — показывает список файлов
- virt-make-fs — создаёт файловую систему
- virt-p2v — конвертирует физическую машину для запуска на KVM
- virt-p2v-make-disk — делает P2V ISO
- virt-p2v-make-kickstart — делает P2V kickstart
- virt-rescue — спасательный шелл
- virt-resize — изменяет размер виртуальных машин
- virt-sparsify — сделать виртуальные машины разреженными (с тонким предоставлением)
- virt-sysprep — отключает виртуальную машину перед клонированием
- virt-tail — показывает изменения в файле журнала
- virt-tar — архивирует и выгружает файлы
- virt-tar-in — архивирует и выгружает файлы
- virt-tar-out — архивирует и загружает файлы
- virt-v2v — конвертирует гостевую машину для запуска на KVM
- virt-win-reg — экспортирует и объединяет ключи реестра Window
- libguestfs-test-tool — тест libguestfs
- libguestfs-make-fixed-appliance — сделать libguestfs фиксированным устройством
- hivex — извлекает куст реестра Windows
- hivexregedit — объединяет и экспортирует изменения в реестре из файлов в формате regedit
- hivexsh — оболочка кустов реестра Windows
- hivexml — конвертирует куст реестра Windows в XML
- hivexget — извлекает данные из куста реестра Windows
- supermin — инструмент для создания supermin. Это крошечные устройства (похожие на виртуальные машины), обычно размером около 100 КБ, которые полностью создаются на лету за доли секунды, когда вам нужно загрузить одно из них.
- guestfsd — демон guestfs
Ключевыми являются программы:
- guestmount — монтирует файловую систему гостевой машины в основную
- guestunmount — размонтирует гостевую файловую систему
Программа guestfish (интерактивный шелл) требует глубокого изучения, но позволит вам работать с содержимым виртуальных дисков в интерактивном режиме, или писать скрипты для автоматической обработки последовательности действий.
Многие из перечисленных программ являются скриптами, автоматизирующими действия. То есть они выполняют монтирование образа виртуального диска, делают указанное действие и размонтируют.
Типичная команда монтирования виртуального диска:
guestmount -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' -i --ro /ТОЧКА/МОНТИРОВАНИЯ
После опции -a нужно указать виртуальный диск для монтирования.
Рассмотрим ещё несколько опций:
Опция -i (--inspector) означает использовать код virt-inspector для проверки дисков в поисках операционной системы и монтирование файловых систем, как если бы они были смонтированы на реальной виртуальной машине.
Опция --live позволяет подключиться к работающей виртуальной машине, эта опция является экспериментальной.
Опция -r (--ro) добавляет устройство и монтирует всё только для чтения. Также запрещает запись и делает диск доступным только для чтения для FUSE. Это настоятельно рекомендуется, если вы не собираетесь редактировать гостевой диск. Если гость работает, а эта опция не указана, существует высокий риск повреждения диска в гостевой системе.
Опция -w (--rw) изменяет параметры -a, -d и -m, так что диски добавляются, а монтирование выполняется для чтения-записи.
Чтобы просмотреть справку по любой из перечисленных утилит, запустите её с ключом --help, например:
virt-ls --help
Руководство по libguestfs
Для каждой из перечисленных утилит имеется страница man с подробным описанием опций. Документация очень объёмная.
Примеры запуска libguestfs
Смонтируем диск виртуальной машины Windows Server 2019.vdi.
Создадим точку монтирования:
mkdir /tmp/guest
Монтируем диск /mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi в папку /tmp/guest:
guestmount -a '/mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi' -i --ro /tmp/guest
Смотрим содержимое смонтированного диска:
ls -l /tmp/guest
Теперь посмотрим содержимое папки C:/Users/Администратор/Downloads/:
ls -l /tmp/guest/Users/Администратор/Downloads/
Для размонтирования используется команда вида:
guestunmount /ТОЧКА/МОНТИРОВАНИЯ
Например:
guestunmount /tmp/guest
Извлечение кустов реестра Windows
С помощью virt-win-reg можно извлекать кусты реестра Windows, в том числе те, которые доступны только для учётной записи System.
Общий вид команды:
virt-win-reg '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' 'ИМЯ\КУСТА'
По умолчанию содержимое будет выведено на экран, поэтому для сохранения данных в файл нужно воспользоваться перенаправлением вывода.
Например, команда для извлечения куста HKEY_LOCAL_MACHINE\SYSTEM из операционной системы Windows, чей виртуальный диск расположен в /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi и сохранение полученных данных в файл SYSTEM.reg:
virt-win-reg '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' 'HKEY_LOCAL_MACHINE\SYSTEM' > SYSTEM.reg
Ещё один пример, извлечение куста реестра HKEY_LOCAL_MACHINE\SAM из образа диска /mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi и сохранение данных в файл SAM.reg:
virt-win-reg '/mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi' 'HKEY_LOCAL_MACHINE\SAM' > SAM.reg
Смотрите также «Анализ реестра Windows».
Просмотр свободного места
Программа virt-df покажет разделы дисков и количество свободного места на них.
Общий вид команды:
virt-df '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА'
Пример команды:
virt-df '/mnt/disk_d/Виртуальные машины/Linux LMDE.vdi'
Пример вывода для ОС Linux:
Файловая система Блоки 1К Использовано Доступно Использование, % Linux LMDE.vdi:/dev/sda1 292272 5220 287052 2% Linux LMDE.vdi:/dev/sda3 96241020 6280016 85029116 7%
Ещё один пример команды:
virt-df '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi'
Пример вывода для ОС Windows:
Файловая система Блоки 1К Использовано Доступно Использование, % Windows 10 (en).vdi:/dev/sda1 541692 436548 105144 81% Windows 10 (en).vdi:/dev/sda2 97280 27139 70141 28% Windows 10 (en).vdi:/dev/sda4 156624892 26634932 129989960 18%
Обратите внимание, что разделы в Windows названы по аналогии с разделами Linux.
Анализ виртуальных дисков
Команда virt-inspector проведёт анализ файловых систем и покажет установленные программы, а также некоторую другую информацию об операционных системах.
Общий вид команды:
virt-inspector -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА'
Примеры команд:
virt-inspector -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' virt-inspector -a '/mnt/disk_d/Виртуальные машины/Linux LMDE.vdi'
Вывод списка файлов
Вы можете посмотреть содержимое любой папки на виртуальном диске с помощью virt-ls.
Общий вид команды:
virt-ls -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' '/ПАПКА'
Обратите внимание, что даже в Windows путь начинается с / (обозначение корневой папки).
Следующая команда покажет содержимое корня диска C: для виртуального диска /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi:
virt-ls -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' '/'
Пример вывода:
$Recycle.Bin $WinREAgent Documents and Settings DumpStack.log.tmp PerfLogs Program Files Program Files (x86) ProgramData Recovery System Volume Information Users Windows pagefile.sys swapfile.sys
Просмотр содержимого файла
Программа virt-cat покажет содержимое любого файла. Файл будет выведен прямо на экран (в стандартный вывод), поэтому если это бинарный файл, то используйте перенаправление вывода для его сохранения.
Общий вид команды:
virt-cat -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' '/ПАПКА/ФАЙЛ'
Обратите внимание, что даже в Windows путь начинается с / (обозначение корневой папки).
Следующая команда покажет содержимое файла C:\DumpStack.log.tmp из виртуального диска /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi:
virt-cat -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' '/DumpStack.log.tmp'
Просмотр разделов дисков
Программа virt-filesystems просто покажет количество разделов дисков и их номера.
Общий вид команды:
virt-filesystems -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА'
Пример команды и вывода для Windows:
virt-filesystems -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' /dev/sda1 /dev/sda2 /dev/sda4
Пример команды и вывода для Linux:
virt-filesystems -a '/mnt/disk_d/Виртуальные машины/Linux LMDE.vdi' /dev/sda1 /dev/sda3
Установка libguestfs
Установка в Kali Linux
sudo apt install libguestfs-tools
Установка в BlackArch
sudo pacman -S libguestfs
Установка в Debian, Linux Minut, Ubuntu
sudo apt install libguestfs-tools
Установка в Arch Linux, Manjaro
sudo pacman -S libguestfs
Информация об установке в другие операционные системы будет добавлена позже.
Скриншоты libguestfs
Инструкции по libguestfs
- Доступ к содержимому дисков виртуальных машин и их изменение
- Извлечение кустов реестра Windows из виртуальных машин
- Как открыть диски виртуальных машин и скачивать и закачивать на них файлы (РЕШЕНО)
Comments are Closed