В общих чертах про LibVirt я уже рассказывал в двух заметках Установка и базовая настройка LibVirt в Ubuntu 20.04 и Установка MiniKube в Ubuntu Linux. Сегодня копнем в этой теме немного глубже, так как мне понадобилась виртуалка с Windows Server, а Proxmox я поднимать не хочу.
Проверка железа на совместимость
Первым делом надо проверить, а поддерживает мой ноутбук аппаратную виртуализацию?
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
Более подробно какие функции виртуализации поддерживает ядро мы можем узнать запросив информацию из /cat/proc/cpuinfo.
$ grep --color vmx /proc/cpuinfo
В моем случае получилось вот так.
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec
Устанавливаем необходимые пакеты
# apt-get install qemu-system-x86 qemu-kvm libvirt-daemon libvirt-daemon-system libvirt-clients
# aptitude install virt-manager
Проверяем, что служба запущена.
# systemctl status qemu-kvm.service
● qemu-kvm.service - QEMU KVM preparation - module, ksm, hugepages
Loaded: loaded (/usr/lib/systemd/system/qemu-kvm.service; enabled; preset: enabled)
Active: active (exited) since Sat 2025-04-05 07:47:37 +07; 50min ago
Main PID: 794 (code=exited, status=0/SUCCESS)
CPU: 8ms
апр 05 07:47:37 home-workstation-01 systemd[1]: Starting qemu-kvm.service - QEMU KVM preparation - module, ksm, hugepages...
апр 05 07:47:37 home-workstation-01 systemd[1]: Finished qemu-kvm.service - QEMU KVM preparation - module, ksm, hugepages.
Добавляем пользователя в группу libvirt.
# usermod -a -G libvirt chernousov
Работа с графической оболочкой virt-manager
Пробуем запустить графическую оболочку для управления LibVirt/KVM.
$ virt-manager

Большую часть операций по работе с виртуальными машинами мы сможем выполнить при помощи графического интерфейса (но консоль никто не отменял).
Первым делом нам понадобится создать два каталога. Первый для хранения ISO-образов, а второй для хранения собственно образов дисков виртуальных машин.
# mkdir -p /opt/virtualization/images
# mkdir -p /opt/virtualization/iso
# chown chernousov:chernousov /opt/virtualization/iso
Давайте начнем с простого, а потом перейдем к хардкору. А простое это у нас GUI и нам надо подключить хранилища.

Тут стоит отметить, что это очень удобная игрушка которая позволяет делать из GUI практическ и все, что мы могли бы сделать из консоли. Так же обратите внимание, что помимо своего хоста (который localhost) мы можем подключить и удаленный узел и управлять несколькими узлами KVM/LibVirt из одного места.

Вернемся к подключению хранилищ. Переходим Узел -> Подробности -> Вкладка Пространство данных.

Изменяем пространство default на путь к хранилищу образов виртуальных машин и дополнительно создаем пространство iso для хранения iso-образов установочных дисков.

Переходим на вкладку “Виртуальные сети” и видим, что сеть default это сеть типа NAT.

Вообще, есть несколько типов сетей которые мы можем создать из GUI.
- NAT
- Маршрутизация
- Открытый
- Изолированный
- Буфер SR-IOV
Сейчас для демонстрации нам вполне подойдет настройка по умолчанию с типом сети NAT.
Создание виртуальной машины в VirtManager
Приступаем к созданию новой виртуальной машины и устанавливать мы будем Kubuntu 24.10. Создание виртуальных машин в целом абсолютно идентично для всех других типов ОС.

Выбираем тип установки “Локальный ISO или CDROM” и следующим шагом указываем путь к образу диска и тип операционной системы.

Тип операционной системы это просто шаблон с описанием необходимого эмулируемого оборудования и минимального объема жесткого диска и типа контроллера и все это можно задать самостоятельно в особо тяжелых случаях.

Настройка процессора объема выделяемой оперативной памяти это наш следующий этап.

Пространство хранения данных мы сделаем кастомное.

Тут все просто и мы выбираем “Настроить” и создаем новый том в нужном нам хранилище и соответственно прикрепляем его к нашей ВМ.

Можем приступать к установке.

Детально описывать процесс установки я не буду. Я сделал отдельную статью по установке Kubuntu 24.10, если кому интересно, то добро пожаловать https://blog.anton-c.ru/2025/04/06/ustanovka-kubuntu-24-10/

Проверяем сетевые параметры.

Собственно, как и говорил, мы за NAT со своей подсетью и нам такого не надо, мне надо мост в реальную сеть.
Сетевые мосты, wifi и другие приключения
Давайте подумаем как мне удачнее реализовать виртуальную сеть с ноутбука в домашнюю и еще и по wifi.
Для теста создаем мост и в мост добавляем WIFI-интерфейс.
# brctl addbr kvm-2-wifi
# brctl addif kvm-2-wifi wlo1
И логично, что мы поймали типовую ошибку с добавлением wifi-интерфейса в мост.
# brctl addif kvm-2-wifi wlo1
can't add wlo1 to bridge kvm-2-wifi: Operation not supported
Если кому опять же интересно, то увы wifi интерфейсы больше нельзя в мосты добавлять и в целом сообщество против мостов и за маршрутизацию.
Но мост мы все же создадим и выход по маршрутам и по красоте, но в другой заметке. И так уже лонг-рид получился который никто читать не будет.