Узнал, что CirrusCI предлагает для публичных репозиториев CI с вложенной виртуализацией - пытаюсь применить.
Libvirt упорно настаивает на том, что полная виртуализация не поддерживается, хотя все известные мне проверки, и даже запуск qemu-kvm напрямую сигнализируют об обратном. Почти уверен, что проблема в том, как я готовлю хост-систему, т.к. другие люди успешно пользуются виртуализацией CirrusCI для других целей (эмуляция Android, тестирование redox).
В качестве хоста у меня Debian 10 из slim-образа со следующим набором дополнительных пакетов (все установлены с –no-install-recommends):
bridge-utils libguestfs-tools python3-dev
coreutils libosinfo-bin python3-venv
cpu-checker libssl-dev qemu-kvm
curl libvirt-clients qemu-kvm
gcc libvirt-daemon qemu-utils
gpg libvirt-daemon-system systemd
gpg-agent linux-image-amd64 vagrant
iproute2 make vagrant-libvirt
kmod procps virt-goodies
libc-dev python3 virtinst
libffi-dev
Базовый образ, конфигурация CI
Подскажите, что я могу упускать, и почему libvirt может не видеть kvm при таких условиях?
Ошибка libvirt
Error while creating domain: Error saving the server: Call to virDomainDefineXML failed: invalid argument: could not find capabilities for domaintype=kvm
virsh capabilities
показывает только <domain type='qemu'/>
Демонстрация непоследовательности поведения
Любые инструменты, базирующиеся на libvirt, не могут работать с KVM:
$ virt-install --import --virt-type kvm --name debian10-vm --memory 512 --disk path=/debian.qcow2,format=qcow2 --os-variant debian10 --noautoconsole || echo "Exit code: $?"
ERROR Host does not support domain type kvm for virtualization type 'hvm' arch 'x86_64'
Exit code: 1
А напрямую qemu-kvm работает. Kernel panic далее к делу не относится, образ строился наскоро для демонстрационных целей - главное, что виртуальная машина стартовала.
$ kvm -nographic /debian.qcow2
cSeaBIOS (version 1.12.0-1)
iPXE (http://ipxe.org) 00:03.0 C980 PCI2.10 PnP PMM+07F900F0+07ED00F0 C980
Press Ctrl-B to configure iPXE (PCI 00:03.0)...
Booting from Hard Disk...
GNU GRUB version 2.02+dfsg1-20
Диагностика
lsmod
показывает kvm и kvm_intelcat /proc/cpuinfo
- содержит флаг vmxlscpu
- содержит Virtualization type: fullkvm-ok
- показывает ОКls -l /dev/kvm
- в наличии, права root:rdmals -l /var/run/libvirt
- сокеты в наличии, права root:rootwhoami
- rootgroups $(whoami)
- rootsystemctl status
- systemd не запущен, libvirtd запущен средствами CI платформыvirt-host-validate
- все тесты в норме, кроме IOMMU - не должно быть критично
Полные выхлопы можно увидеть в логе CI, секция «kvm_before».