Вопрос или проблема
У меня есть проблема, описанная в этом вопросе. У меня система на базе Ryzen (Ubuntu 24.04), и я проверил настройки BIOS – SVM включен.
Я прошел начальные шаги на этой странице, чтобы установить KVM, но на шаге 4, когда я выполнил sudo systemctl status libvirtd
, я получил:
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-01-05 12:52:55 EST; 1min 5s ago
TriggeredBy: ● libvirtd-ro.socket
● libvirtd.socket
● libvirtd-admin.socket
Docs: man:libvirtd(8)
https://libvirt.org/
Main PID: 8460 (libvirtd)
Tasks: 22 (limit: 32768)
Memory: 20.7M (peak: 25.7M)
CPU: 413ms
CGroup: /system.slice/libvirtd.service
├─1484 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/li>
├─1485 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/li>
└─8460 /usr/sbin/libvirtd --timeout 120
Jan 05 12:52:55 linux-mini systemd[1]: Starting libvirtd.service - libvirt legacy monolithic daemon...
Jan 05 12:52:55 linux-mini systemd[1]: Started libvirtd.service - libvirt legacy monolithic daemon.
Jan 05 12:52:55 linux-mini dnsmasq[1484]: read /etc/hosts - 8 names
Jan 05 12:52:55 linux-mini dnsmasq[1484]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 names
Jan 05 12:52:55 linux-mini dnsmasq-dhcp[1484]: read /var/lib/libvirt/dnsmasq/default.hostsfile
Jan 05 12:52:55 linux-mini libvirtd[8460]: libvirt version: 10.0.0, package: 10.0.0-2ubuntu8.5 (Ubuntu)
Jan 05 12:52:55 linux-mini libvirtd[8460]: hostname: linux-mini
Jan 05 12:52:55 linux-mini libvirtd[8460]: Unable to open /dev/kvm: No such file or directory
Что-то мешает запуску kvm (? – не уверен, что это правильно).
sudo dmesg | grep kvm
показывает:
[ 4.403905] kvm_amd: NX (Execute Disable) not supported
[ 409.676621] kvm_amd: NX (Execute Disable) not supported
Я не знаю, что это значит. lsmod | grep kvm
показывает:
kvm 1404928 0
irqbypass 12288 1 kvm
Я пытаюсь запустить Android эмулятор, но это, по-видимому, мешает этому. Буду благодарен за любые советы.
Ответ или решение
Решение ошибки "dev/kvm не найден" при включенной виртуализации
Вы столкнулись с ошибкой "Unable to open /dev/kvm: No such file or directory" на вашей системе Ryzen с установленной Ubuntu 24.04. Давайте подробно рассмотрим возможные причины и решения этой проблемы.
Возможные причины и решения
-
Отсутствие поддержки KVM в процессоре:
Первое, что стоит проверить, это поддержка виртуализации на уровне процессора. Для процессоров AMD нужно убедиться в поддержке AMD-V.Шаги проверки:
- Перезагрузите компьютер и зайдите в BIOS.
- Убедитесь, что опция SVM (Secure Virtual Machine) действительно включена.
- Иногда параметры BIOS могут не сохраняться после перезагрузки, так что повторно убедитесь в их активации.
-
Отсутствие поддержки NX (Execute Disable):
В вашем выводе dmesg указано, что "NX (Execute Disable) не поддерживается." Это может быть проблемой, поскольку KVM требует безопасности выполнения в памяти.Возможное решение:
- Обновите прошивку BIOS. Возможно, новая версия BIOS добавит поддержку необходимых функций.
- Если после обновления ситуация не изменилась, возможно, вашему процессору не хватает поддержки необходимых аппаратных функций для работы виртуализации.
-
Модуль ядра KVM не загружен:
Вы выполнилиlsmod | grep kvm
, и модуль KVM отображается, но этот модуль может быть не полностью задействован.Как проверить и загрузить модуль KVM:
- Убедитесь, что у вас установлены все необходимые пакеты, используя команду:
sudo apt-get install qemu-kvm libvirt-bin bridge-utils virt-manager
- Перегрузите модули KVM вручную:
sudo modprobe -r kvm_amd sudo modprobe kvm_amd
- Проверьте еще раз состояние модулей:
lsmod | grep kvm
- Убедитесь, что у вас установлены все необходимые пакеты, используя команду:
-
Проблемы с libvirtd:
Хотя ваш сервис libvirtd активен, проблема может заключаться в конфигурации.Перепроверьте конфигурации libvirt:
- Убедитесь, что файлы конфигурации libvirt настроены правильно. Вы можете воспользоваться следующей командой для удаления старых конфигураций и перезапуска сервиса:
sudo systemctl restart libvirtd
- Убедитесь, что пользователь, под которым вы работаете, добавлен в группу kvm и libvirt:
sudo usermod -aG kvm,libvirt $USER
- Убедитесь, что файлы конфигурации libvirt настроены правильно. Вы можете воспользоваться следующей командой для удаления старых конфигураций и перезапуска сервиса:
-
Проверка на ошибки и обновления:
- Используйте
dmesg
и системные логи для поиска других сообщений об ошибках, которые могут показать больше информации о проблеме. - Убедитесь, что ваша система полностью обновлена:
sudo apt-get update && sudo apt-get upgrade
- Используйте
Заключение
Ошибка "dev/kvm не найден" может возникнуть по нескольким причинам, связанным с настройками BIOS, совместимостью процессора или недостаточностями в конфигурации программного обеспечения. Следуя указанным шагам, вы сможете диагностировать и устранить эту проблему, что позволит вам использовать виртуализацию на полном функциональном уровне.