Вирт -Диспетчер -Система KVM включена -но получена ошибка при запуске домена :неподдерживаемая конфигурация :Для домена требуется KVM, но он недоступен

It is often said that...

the fact that resources say that...

Не следуйте слепо «рекомендациям»; невозможно сделать карго -культовое программирование "правильно". Есть ли какой-то первичный «ресурс», такой как справочная страница bash (1 )или стандартная спецификация, в которой говорится об этом?

Если вы хотите оценить строку как фрагмент скрипта, вам следует использовать eval. Для этого:

cmd="echo \"You can't see me\""
eval "$cmd"

Когда вы используете переменную без кавычек, ее расширения не будут повторно сканироваться на наличие метасимволов оболочки, таких как одинарные или двойные кавычки, и повторно анализироваться, а будут разделены только на символы из переменной IFSи расширенного глобуса -. (, если он содержит символы *, ?или [):

cmd="echo \"What's a *? \""

eval "$cmd"
What's a *?

$cmd
"What's a [all the files in your directory] "

В последнем примере cmdбудет развернуто, затем разбито на echo, "What's, a, *?и ", *?будет развернуто по шаблону, а затем echoбудет запущен со всеми остальными строками в качестве аргументов и выведет их, соединенные пробелами, в стандартный вывод (, а в некоторых оболочках echoтакже будет интерпретировать \nи другие escape-последовательности в своих аргументах ).

1
22.03.2021, 23:32
2 ответа

Это комментарий, размещенный здесь для оформления:

Это полный вывод lsmod | grep kvm? В этом случае что-то кажется неправильным, мой вывод:

kvm_intel             233472  0
kvm                   757760  1 kvm_intel
irqbypass              16384  1 kvm

В случае отзыва эквивалент применим для процессоров AMD,kvm_amd


Вы также можете попробовать простую kvmкоманду в своей оболочке; пустая виртуальная машина с BIOS, пытающимся загрузиться, должна запуститься. В этом случае с qemu -kvm все в порядке, возможно, что-то не так с libvirtили Virt -Manager.

0
28.04.2021, 22:57

KVM загружен, но также должен быть загружен модуль kvm_intelили kvm_amd. Например, на моей машине это выглядит так:

[Alex@NormandySR2 nested_virt_kvm]$ lsmod | grep kvm
kvm_intel             327680  7
kvm                   909312  1 kvm_intel

Как вы заметили, может быть как минимум 2 причины, по которым это не работает.

  1. Виртуализация отключена в UEFI (, иногда называемом BIOS)
  2. Ваш процессор не поддерживает виртуализацию

Вы можете проверить, поддерживает ли ваш ЦП виртуализацию с помощью:

lscpu | grep vmx # intel
lscpu | grep svm # amd

Если его нет, проверьте, поддерживает ли ваша модель ЦП виртуализацию. (На веб-сайте поставщика есть эта информация ). Чтобы получить модель вашего процессора, вы можете использовать.

lscpu | grep 'Model'
Model:                           60
Model name:                      Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz

Редактировать

Как включить их автоматически? В зависимости от вашего дистрибутива они уже должны быть загружены после запуска. Но если по какой-то причине это не так, вы можете использовать:

echo -e 'kvm\nkvm_amd' | sudo tee -a /etc/modules-load.d/kvm.conf

Это сэкономит две строки в /etc/module-load.d. Дополнительные сведения о модулях -load.d можно найти в man 5 modules-load.d или на одном из веб-сайтов, на которых размещены руководства, такие как :https://www.systutorials.com/docs/linux/man/5-modules-load.d/

1
28.04.2021, 22:57

Теги

Похожие вопросы