LINUX.ORG.RU

Libvirt говорит, что KVM не поддерживается, хотя qemu-kvm работает

 , , ,


0

1

Узнал, что 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

Полный лог CI

Диагностика

  • lsmod показывает kvm и kvm_intel
  • cat /proc/cpuinfo - содержит флаг vmx
  • lscpu - содержит Virtualization type: full
  • kvm-ok - показывает ОК
  • ls -l /dev/kvm - в наличии, права root:rdma
  • ls -l /var/run/libvirt - сокеты в наличии, права root:root
  • whoami - root
  • groups $(whoami) - root
  • systemctl status - systemd не запущен, libvirtd запущен средствами CI платформы
  • virt-host-validate - все тесты в норме, кроме IOMMU - не должно быть критично

Полные выхлопы можно увидеть в логе CI, секция «kvm_before».

★★★

kvm - это устаревший симлинк, который libvirt’ом не используется. Прошу проверить напрямую:

qemu-system-x86_64 -enable-kvm -nographic -hda /debian.qcow2
AEP ★★★★★ ()