KVM
Основное
Команды
dnf install qemu-kvm libvirt
virsh attach-disk $vm_name /mnt/local_data/ISO/virtio-win-0.1.141.iso hda --type cdrom --mode readonly
virsh qemu-agent-command $vm_name '{"execute":"guest-exec", "arguments":{"path":"C:\\Windows\\System32\\shutdown.exe", "arg":["-s", "-t", "0"], "capture-output":true}}'
Драйвера
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/
//Для установщика Guest Agent будет нужна служба SENS (Служба уведомления о системных событиях)
Готовые определения XML
i440fx, Windows, recover: txt xml
Параметры
Очередь загрузочных устройств
<domain>
<os>
<bootmenu enable='yes'/>
<boot dev='cdrom'/>
<boot dev='hd'/>
<boot dev='network'/>
</os>
</domain>
<domain>
<devices>
<disk type='block' device='disk'>
<disk type='file' device='cdrom'>
...
<boot order='1'/>
...
</disk>
</devices>
</domain>
В случае, когда виртуальный HDD является не блочным устройством, а raw файлом, параметр type должен равняться file и следует удалить параметры cache и io
Память
HugePages
<domain>
<memoryBacking>
<hugepages/>
</memoryBacking>
</domain>
Сеть
virsh domif-setlink $vmname $ifname {up,down}
<domain>
<devices>
<interface ... >
...
<link state='down'/> //Состояние сетевого интерфейса
<target dev='vm0'/> //Имя сетевого интерфейса в системе
...
</interface>
</devices>
</domain>
Видеовывод и удаленное управление
Отключение видеовывода
<domain>
<devices>
<video>
<model type='none'/>
</video>
</devices>
</domain>
Удаленное управление со всех IP
<domain>
<devices>
<graphics type='vnc'>
<listen type='address' address='0.0.0.0'/>
</graphics>
</devices>
</domain>
Отключение удаленного управления
<domain>
<devices>
<graphics type='vnc'>
<listen type='none'/>
</graphics>
</devices>
</domain>
Пароль удаленного управления
<domain>
<devices>
<graphics ... passwd='PaSSWoRD'>
...
</graphics>
</devices>
</domain>
Параметры ЦП
virsh capabilities | grep "cpu id"
ЦП хоста на 4 ядра (8 потоков)
<cpu ...> <topology sockets='1' cores='3' threads='2'/> ... </cpu> <vcpu placement='static'>6</vcpu> <cputune> <vcpupin vcpu='0' cpuset='1,5'/> <vcpupin vcpu='1' cpuset='2,6'/> <vcpupin vcpu='2' cpuset='3,7'/> <vcpupin vcpu='3' cpuset='1,5'/> <vcpupin vcpu='4' cpuset='2,6'/> <vcpupin vcpu='5' cpuset='3,7'/> <emulatorpin cpuset='0,4'/> </cputune>
<cpu ...> <topology sockets='1' cores='2' threads='2'/> ... </cpu> <vcpu placement='static'>4</vcpu> <cputune> <vcpupin vcpu='0' cpuset='2,6'/> <vcpupin vcpu='1' cpuset='3,7'/> <vcpupin vcpu='2' cpuset='2,6'/> <vcpupin vcpu='3' cpuset='3,7'/> <emulatorpin cpuset='0-1,4-5'/> </cputune>
<cpu ...> <topology sockets='1' cores='1' threads='2'/> ... </cpu> <vcpu placement='static'>2</vcpu> <cputune> <vcpupin vcpu='0' cpuset='3,7'/> <vcpupin vcpu='1' cpuset='3,7'/> <emulatorpin cpuset='0-2,4-6'/> </cputune>
Проброс устройства
PCI
<domain>
<devices>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</hostdev>
</devices>
</domain>
USB
virsh {attach,detach}-device $vmname device.xml
<domain>
<devices>
<hostdev mode='subsystem' type='usb' managed='yes'>
<source>
<vendor id='0x0a89'/>
<product id='0x0008'/>
</source>
<address type='usb' bus='0' port='2'/>
</hostdev>
</devices>
</domain>
Устаревшие уст-ва
IDE
<controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller>
Другие параметры
SMBIOS
<domain>
<os>
<smbios mode='sysinfo'/>
</os>
<sysinfo type='smbios'>
<bios>
<entry name='vendor'>SuperMicro</entry>
</bios>
<system>
<entry name='manufacturer'>CentOS 8</entry>
<entry name='product'>libvirt</entry>
</system>
<baseBoard>
<entry name='manufacturer'>SuperMicro</entry>
<entry name='product'>MBD-X11SCL-F</entry>
</baseBoard>
</sysinfo>
</domain>