Вопрос или проблема
Я только что запустил “virt-manager” на своем Ubuntu 21.04 и, к своему большому удивлению, увидел ошибку “kvm недоступен. Это может означать, что пакет kvm не установлен и так далее“; это не так. Я установил kvm, и он работает отлично, как вы можете увидеть на изображении ниже:
Посмотрите, что говорит терминал: “/dev/kvm существует; ускорение kvm может быть использовано“. Во что мне верить? Чего не хватает?
# apt install qemu-kvm libvirt-clients libvirt-daemon-system
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'qemu-system-x86' instead of 'qemu-kvm'
qemu-system-x86 is already the newest version (1:5.2+dfsg-9ubuntu3.1).
libvirt-clients is already the newest version (7.0.0-2ubuntu2).
libvirt-daemon-system is already the newest version (7.0.0-2ubuntu2).
0 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
# virt-host-validate
QEMU: Проверка аппаратной виртуализации : PASS
QEMU: Проверка, существует ли устройство /dev/kvm : PASS
QEMU: Проверка, доступно ли устройство /dev/kvm : PASS
QEMU: Проверка, существует ли устройство /dev/vhost-net : PASS
QEMU: Проверка, существует ли устройство /dev/net/tun : PASS
QEMU: Проверка поддержки контроллера cgroup 'cpu' : PASS
QEMU: Проверка поддержки контроллера cgroup 'cpuacct' : PASS
QEMU: Проверка поддержки контроллера cgroup 'cpuset' : PASS
QEMU: Проверка поддержки контроллера cgroup 'memory' : PASS
QEMU: Проверка поддержки контроллера cgroup 'devices' : PASS
QEMU: Проверка поддержки контроллера cgroup 'blkio' : PASS
QEMU: Проверка поддержки назначения устройств IOMMU : PASS
QEMU: Проверка, включен ли IOMMU ядром : PASS
QEMU: Проверка поддержки защищенных гостей : WARN (Неизвестно, есть ли на этой платформе поддержка Secure Guest)
LXC: Проверка, Linux >= 2.6.26 : PASS
LXC: Проверка пространства имен ipc : PASS
LXC: Проверка пространства имен mnt : PASS
LXC: Проверка пространства имен pid : PASS
LXC: Проверка пространства имен uts : PASS
LXC: Проверка пространства имен net : PASS
LXC: Проверка пространства имен user : PASS
LXC: Проверка поддержки контроллера cgroup 'cpu' : PASS
LXC: Проверка поддержки контроллера cgroup 'cpuacct' : PASS
LXC: Проверка поддержки контроллера cgroup 'cpuset' : PASS
LXC: Проверка поддержки контроллера cgroup 'memory' : PASS
LXC: Проверка поддержки контроллера cgroup 'devices' : PASS
LXC: Проверка поддержки контроллера cgroup 'freezer' : PASS
LXC: Проверка поддержки контроллера cgroup 'blkio' : PASS
LXC: Проверка, существует ли устройство /sys/fs/fuse/connections : PASS
Опять:
● libvirtd.service - демон виртуализации
Loaded: загружено (/lib/systemd/system/libvirtd.service; включено; предустановка вендора: включено)
Active: активно (работает) с Ср. 2021-07-28 13:18:31 CEST; прошло 41 мин
TriggeredBy: ● libvirtd-admin.socket
● libvirtd-ro.socket
● libvirtd.socket
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 2091 (libvirtd)
Tasks: 21 (лимит: 32768)
Memory: 49.3M
CGroup: /system.slice/libvirtd.service
├─2091 /usr/sbin/libvirtd
├─2405 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-шаблон=/usr/lib/libvirt/libvirt_leaseshelper
└─2406 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-шаблон=/usr/lib/libvirt/libvirt_leaseshelper
Jul 28 12:45:30 Z390-AORUS-PRO libvirtd[2091]: внутренняя ошибка: Не удалось запустить бинарный файл QEMU /usr/local/bin/qemu-system-x86_64 для тестирования: libvirt: ошибка: невозможно исполнить бинарный файл /usr/local/bin/qemu-system-x86_64: Отказано в доступе
Jul 28 12:45:30 Z390-AORUS-PRO libvirtd[2091]: Не удалось исследовать функции для /usr/local/bin/qemu-system-x86_64: внутренняя ошибка: Не удалось запустить бинарный файл QEMU /usr/local/bin/qemu-system-x86_64 для тестирования: libvirt: ошибка: невозможно исполнить бинарный файл /usr/local/bin/qemu-system-x86_64: Отказано в доступе
Jul 28 13:58:54 Z390-AORUS-PRO libvirtd[2091]: внутренняя ошибка: драйвер состояния libxenlight не активен
Jul 28 13:58:54 Z390-AORUS-PRO libvirtd[2091]: Конец файла при чтении данных: Ошибка ввода/вывода
Jul 28 13:58:54 Z390-AORUS-PRO libvirtd[2091]: неверный аргумент: не удалось найти возможности для arch=x86_64 domaintype=qemu
Jul 28 13:58:54 Z390-AORUS-PRO libvirtd[2091]: внутренняя ошибка: Не удается найти подходящий эмулятор для x86_64
Jul 28 13:58:54 Z390-AORUS-PRO libvirtd[2091]: внутренняя ошибка: Не удалось запустить бинарный файл QEMU /usr/local/bin/qemu-system-x86_64 для тестирования: libvirt: ошибка: невозможно исполнить бинарный файл /usr/local/bin/qemu-system-x86_64: Отказано в доступе
Jul 28 13:58:54 Z390-AORUS-PRO libvirtd[2091]: Не удалось исследовать функции для /usr/local/bin/qemu-system-x86_64: внутренняя ошибка: Не удалось запустить бинарный файл QEMU /usr/local/bin/qemu-system-x86_64 для тестирования: libvirt: ошибка: невозможно исполнить бинарный файл /usr/local/bin/qemu-system-x86_64: Отказано в доступе
Jul 28 13:59:06 Z390-AORUS-PRO libvirtd[2091]: внутренняя ошибка: Не удалось запустить бинарный файл QEMU /usr/local/bin/qemu-system-x86_64 для тестирования: libvirt: ошибка: невозможно исполнить бинарный файл /usr/local/bin/qemu-system-x86_64: Отказано в доступе
Jul 28 13:59:06 Z390-AORUS-PRO libvirtd[2091]: Не удалось исследовать функции для /usr/local/bin/qemu-system-x86_64: внутренняя ошибка: Не удалось запустить бинарный файл QEMU /usr/local/bin/qemu-system-x86_64 для тестирования: libvirt: ошибка: невозможно исполнить бинарный файл /usr/local/bin/qemu-system-x86_64: Отказано в доступе
Начнем с очевидного.
невозможно исполнить бинарный файл /usr/local/bin/qemu-system-x86_64: Отказано в доступе
Попробуйте остановить AppArmor, затем перезапустите libvirtd
и снова запустите virt-manager
sudo systemctl stop apparmor
Ответ или решение
Ошибка, с которой вы столкнулись, часто возникает в среде виртуализации при использовании KVM и QEMU на Ubuntu 21.04. Давайте разберёмся, что происходит и какие шаги помогут её устранить.
Проблемы и их возможные причины
-
Ошибка прав доступа: Конкретно в вашем случае сообщение "Permission denied" указывает на то, что текущий пользователь или процесс не имеют нужных прав для выполнения файла /usr/local/bin/qemu-system-x86_64. Это может быть связано с неправильными правами доступа или политиками безопасности.
-
AppArmor: Как вы верно заметили, AppArmor может блокировать выполнение данного бинарного файла. Это система защиты на уровне ОС, готовая предотвратить несанкционированный доступ или выполнение программ.
-
Указание пути до QEMU: Ваша установка QEMU может использовать нестандартный путь, что иногда приводит к конфликтам, если компоненты обращаются не к той версии бинарного файла.
Решения
-
Проверка прав доступа: Убедитесь, что бинарный файл qemu-system-x86_64 имеет правильные права доступа.
sudo chmod +x /usr/local/bin/qemu-system-x86_64 sudo chown root:root /usr/local/bin/qemu-system-x86_64
-
Конфигурация AppArmor: Moжет потребоваться временно отключить AppArmor для проверки, влияeт ли он на выполнение.
sudo systemctl stop apparmor
После проверки, не забудьте снова активировать AppArmor:
sudo systemctl start apparmor
-
Перезапуск libvirtd: Перезапустите демона libvirt, чтобы убедиться, что изменения вступили в силу.
sudo systemctl restart libvirtd
-
Проверка путей: Убедитесь, что конфигурация libvirt и virt-manager правильно указывает на используемый бинарный файл QEMU.
which qemu-system-x86_64
Возможно, потребуется отредактировать конфигурационные файлы или создать символьные ссылки, чтобы указать на правильный путь.
-
Журналы и отладка: Проверьте журналы systemd и libvirt для получения дополнительных подсказок, где конкретно могут возникать ошибки.
journalctl -xe sudo journalctl -u libvirtd
Вывод
Проблема, с которой вы столкнулись, как правило, связана с правами доступа или политиками безопасности, такими как AppArmor. Следуя вышеуказанным шагам, вы сможете локализовать источник проблемы и устранить его. Если ни одно из решений не помогает, рассмотрите возможность установки свежей версии QEMU и Libvirt из других репозиториев или используйте средства отладки для выявления деталей.