**Libvirt** Libvirt — это один из менеджеров для StratoVirt, он управляет StratoVirt путём создания командных строк для запуска StratoVirt и выдачи команд через QMP. В настоящее время для управления StratoVirt поддерживаются пять команд virsh: `virsh create`, `virsh destroy`, `virsh suspend`, `virsh resume` и `virsh console`. **Конфигурация** StratoVirt можно настроить следующими способами: - память: ``` <memory unit='GiB'>8</memory> или <memory unit='MiB'>8192</memory> ``` - ЦП: Топология ЦП не поддерживается, пожалуйста, настройте только количество VCPU. ``` <vcpu>4</vcpu> ``` - Архитектура: Необязательные значения `arch`: `aarch64` и `x86_64`. На платформе X86 поддерживается машина `q35`; на платформе aarch64 поддерживается машина `virt`. ``` <os> <type arch='x86_64' machine='q35'>hvm</type> </os> ``` - Ядро и командная строка: `/path/to/standard_vm_kernel` — путь к стандартному ядру виртуальной машины. ``` <kernel>/path/to/standard_vm_kernel</kernel> <cmdline>console=ttyS0 root=/dev/vda reboot=k panic=1 rw</cmdline> ``` - Функция: Поскольку в стандартной виртуальной машине используется acpi, необходимо настроить функцию acpi. ``` <features> <acpi/> </features> ``` Для платформы aarch64, поскольку используется gicv3, `gic` также следует добавить в функцию. ``` <features> <acpi/> <gic version='3'/> </features> ``` - Эмулятор: Установите эмулятор для libvirt, `/path/to/StratoVirt_binary_file` — это путь к двоичному файлу StratoVirt. ``` <devices> <emulator>/path/to/StratoVirt_binary_file</emulator> </devices> ``` - Баллон ``` <controller type='pci' index='4' model='pcie-root-port' /> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x000' bus='0x04' slot='0x00' function='0x00'/> </memballoon> ``` - Pflash Pflash можно добавить с помощью следующей конфигурации. `/path/to/pflash` — это путь файла pflash. ``` <loader readonly='yes' type='pflash'>/path/to/pflash</loader> <nvram template='/path/to/OVMF_VARS'>/path/to/OVMF_VARS</nvram> ``` - Iothread ``` <iothreads>1</iothreads> ``` - Блок: ``` <controller type='pci' index='1' model='pcie-root-port' /> <disk type='file' device='disk'> <driver name='qemu' type='raw' iothread='1'/> <source file='/path/to/rootfs'/> <target dev='hda' bus='virtio'/> <iotune> <total_iops_sec>1000</total_iops_sec> </iotune> <address type='pci' domain='0x000' bus='0x01' slot='0x00' function='0x00'/> </disk> ``` - Сеть: ``` <controller type='pci' index='2' model='pcie-root-port' /> <interface type='ethernet'> <mac address='de:ad:be:ef:00:01'/> <source bridge='qbr0'/> <target dev='tap0'/> <model type='virtio'/> <address type='pci' domain='0x000' bus='0x02' slot='0x00' function='0x00'/> </interface> ``` - Консоль: Чтобы использовать команду `virsh console`, необходимо настроить virtio-консоль с перенаправлением `pty`. ``` <controller type='pci' index='3' model='pcie-root-порт' /> <controller type='virtio-serial' index='0'> <alias name='virt-serial0'/> <адрес type='pci' domain='0x000' bus='0x03' slot='0x00' function='0x00'/> </controller> <console type='pty'> <target type='virtio' port='0'/> <alias name='console0'/> </console> ``` - Vhost-vsock: ``` <controller type='pci' index='6' model='pcie-root-port' /> <vsock model='virtio'> <cid auto='no' address='3'/> <address type='pci' domain='0x000' bus='0x00' slot='0x06' function='0x00'/> </vsock> ``` - RNG: ``` <controller type='pci' index='5' model='pcie-root-port' /> <rng model='virtio'> <rate period='1000' bytes='1234'/> <backend model='random'>/path/to/random_file</backend> <address type='pci' domain='0x000' bus='0x05' slot='0x00' function='0x00'/> </rng> ``` - VFIO: ``` <controller type='pci' index='7' model='pcie-root-port' /> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> </source> </hostdev>