Настройка аппаратной виртуализации KVM/LibVirt в Ubuntu Linux 24.04

Оцените статью

В общих чертах про 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
virt-manager графическая оболочка для LibVirt

Большую часть операций по работе с виртуальными машинами мы сможем выполнить при помощи графического интерфейса (но консоль никто не отменял).

Первым делом нам понадобится создать два каталога. Первый для хранения ISO-образов, а второй для хранения собственно образов дисков виртуальных машин.

# mkdir -p /opt/virtualization/images
# mkdir -p /opt/virtualization/iso
# chown chernousov:chernousov /opt/virtualization/iso

Давайте начнем с простого, а потом перейдем к хардкору. А простое это у нас GUI и нам надо подключить хранилища.

Свойства локального узла

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

Список соединений в virt-manager

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

LibVirt пространства данных

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

Хранилище ISO-образов виртуальных машин

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

Вообще, есть несколько типов сетей которые мы можем создать из GUI.

  • NAT
  • Маршрутизация
  • Открытый
  • Изолированный
  • Буфер SR-IOV

Сейчас для демонстрации нам вполне подойдет настройка по умолчанию с типом сети NAT.

Создание виртуальной машины в VirtManager

Приступаем к созданию новой виртуальной машины и устанавливать мы будем Kubuntu 24.10. Создание виртуальных машин в целом абсолютно идентично для всех других типов ОС.

Установка виртуальной машины с ISO-образа диска

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

Тип операционной системы

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

Выбор образа для установки

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

Процессор и память для виртуальной машины

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

Том хранилища ВМ

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

Виртуальная машина из шаблона

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

Установка Kubuntu 24.10

Детально описывать процесс установки я не буду. Я сделал отдельную статью по установке Kubuntu 24.10, если кому интересно, то добро пожаловать https://interlan.xyz/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 интерфейсы больше нельзя в мосты добавлять и в целом сообщество против мостов и за маршрутизацию.

Но мост мы все же создадим и выход по маршрутам и по красоте, но в другой заметке. И так уже лонг-рид получился который никто читать не будет.

Похожие записи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

GlusterFS — это масштабируемая, распределённая файловая система с открытым исходным кодом, которая объединяет хранилища нескольких серверов в единое пространство имён. Она идеально подходит для создания отказоустойчивых и высокопроизводительных хранилищ, особенно…

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Запихать Mysql в Kubernetes оказалось не очень хорошей идеей и я решил основательно пересмотреть инфраструктуру своего pet-проекта и за основу будет принят кластер из трех серверов. На каждом узле кластера…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS