Подсказки по KVM/QEMU

Установка KVM/QEMU

Это руководство, которое поможет вам превратить вашу машину с Ubuntu 20.04 в хост виртуализации всего за 5 минут.

  • Проверьте, поддерживается ли аппаратная виртуализация. Если да, вы получите результат больше, чем 0. Если 0, включите виртуализацию в BIOS (проверьте руководство).

sudo egrep -c '(vmx|svm)' /proc/cpuinfo
  • Установите KVM checker…​

sudo apt update
sudo apt install cpu-checker
  • …​ и запустите его. Вы должны получить "INFO: /dev/kvm exists \ KVM acceleration can be used". Если нет, вернитесь к вышесказанному.

sudo kvm-ok
  • Установите KVM

sudo apt install -y qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
  • Настройте автоматический запуск службы виртуализации, перезапустите, проверьте

sudo systemctl enable libvirtd
sudo systemctl restart libvirtd
sudo systemctl status libvirtd
  • Финальная проверка загрузки KVM. Вы должны получить что-то вроде "kvm_intel" или "kvm_amd". Если нет, ваши виртуальные машины будут тормозить, как не знаю что, так что вернитесь к вышесказанному.

sudo lsmod | grep -i kvm
Преобразуйте сетевое подключение в режим моста перед установкой виртуальной машины. Вы не будете довольны виртуальными машинами с NAT. Если вы используете netplan вместо NetworkManager, используйте это руководство. Или установите Cockpit (ему нравится NetworkManager) и преобразуйте сетевой интерфейс в мост за секунды.
  • Теперь в графическом интерфейсе Ubuntu найдите Virtual Machine Manager. Если не найдено:

sudo virt-manager
  • Далее просто подключите ISO по вашему выбору к "Local install media", "create a disk image for the virtual machine" (не трогайте никакие диски и т. д.), выделите много памяти и ядер, назначьте созданный мост вашему сетевому интерфейсу, и готово.

Настройка bridge на хосте

Шаг 1. Узнай имя физического интерфейса Выполни:

ip -br link

Будет что-то вроде:

lo               UNKNOWN
enp0s31f6        UP
wlp2s0           UP
virbr0           DOWN

Нас интересует именно проводной интерфейс (enp…​ или eth0).

Шаг 2. Проверь, что NetworkManager управляет сетью

nmcli device status

Например:

DEVICE       TYPE      STATE      CONNECTION
enp0s31f6    ethernet  connected  Wired connection 1
wlp2s0       wifi      disconnected

Шаг 3. Создай bridge Допустим, физический интерфейс называется enp0s31f6. Создаем bridge:

sudo nmcli connection add type bridge ifname br0 con-name br0

Шаг 4. Добавь физический интерфейс в bridge

sudo nmcli connection add type bridge-slave ifname enp0s31f6 master br0

Шаг 5. Настрой получение IP Чтобы bridge получал IP по DHCP:

sudo nmcli connection modify br0 ipv4.method auto
sudo nmcli connection modify br0 ipv6.method auto

Шаг 6. Отключи старое подключение Сначала узнай его имя:

nmcli connection show

Например:

NAME                 UUID
Wired connection 1
br0
bridge-slave-enp0...

Отключаем старое:

sudo nmcli connection down "Wired connection 1"

Шаг 7. Включаем bridge

sudo nmcli connection up br0

Проверяем:

ip addr show br0

Должно быть примерно:

br0
    inet 192.168.1.100/24

И

ip route

должен показывать маршрут через br0.

Шаг 8. Проверяем

ip link show br0