Подробный гайд по ядру kernel-std-kvm в ALT Linux

Гайд по установке и настройке ядра kernel-std-kvm в ALT Linux для виртуализации KVM: оптимизация, libvirt, QEMU, диагностика.

2026.05.06                  


Подробный гайд по ядру kernel-std-kvm в ALT LinuxПодробный гайд по ядру kernel-std-kvm в ALT Linux kernel-std-kvm (в репозиториях ALT Linux пакет называется kernel-image-std-kvm) — это специализированная сборка ядра Linux, оптимизированная для использования в качестве хоста виртуализации KVM.

В отличие от универсальных ядер (std-def, un-def), вариант std-kvm:

  • Включает все необходимые модули для KVM/QEMU из коробки
  • Отключает неиспользуемые на серверах драйверы (экономит память и ускоряет загрузку)
  • Включает конфигурационные флаги для производительности виртуализации (CONFIG_KVM, CONFIG_VIRTIO, CONFIG_HUGETLBFS, CONFIG_X86_AMD_MEM_ENCRYPT и др.)
  • Оптимизирован под работу с libvirt, qemu-kvm, virtio-устройствами и IOMMU

Важно:

В ALT Linux семейства пакетов имеют префикс kernel-image-. Полный пакет для установки: kernel-image-std-kvm.


1. Подготовка системы

Требования

  • Процессор с поддержкой аппаратной виртуализации: Intel VT-x или AMD-V
  • Включённая виртуализация в BIOS/UEFI (Intel Virtualization Technology, SVM Mode)
  • Включённый VT-d / AMD IOMMU (если планируется проброс PCIe-устройств)
  • Root-доступ или sudo
  • Подключённые репозитории ветки (p10, p11 или Sisyphus)

Проверка поддержки виртуализации

# Проверка флагов CPU
grep -E 'vmx|svm' /proc/cpuinfo

# Или одной командой
lscpu | grep -i virtualization
  • vmx → Intel
  • svm → AMD
  • Если вывод пустой → виртуализация отключена в BIOS.

Обновление системы

sudo apt-get update
sudo apt-get dist-upgrade -y

2. Установка ядра std-kvm

Поиск пакета

apt-cache search kernel-image-std-kvm

В ветках p10/p11 и Sisyphus пакет обычно доступен по имени kernel-image-std-kvm.

Установка

sudo apt-get install kernel-image-std-kvm

ALT Linux автоматически:

  • Установит зависимости (kernel-modules-std-kvm, если вынесены)
  • Сгенерирует initramfs через make-initrd
  • Обновит конфигурацию GRUB2

Перезагрузка

sudo reboot

Проверка активного ядра

uname -r
# Пример вывода: 6.6.26-std-kvm-alt1

3. Базовая настройка и оптимизация

Включение модулей KVM

Обычно модули загружаются автоматически.

Проверка:

lsmod | grep kvm
# Должны быть: kvm, kvm_intel (или kvm_amd)

Если нет:

sudo modprobe kvm
sudo modprobe kvm_intel   # или kvm_amd

Настройка sysctl для хоста виртуализации

Создайте /etc/sysctl.d/99-kvm-host.conf:

# Разрешить оверкоммит памяти (оптимально для ВМ)
vm.overcommit_memory = 1

# Включить форвардинг (если используете NAT/bridge)
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

# Увеличить лимиты для виртуальных сетей
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

Примените:

sudo sysctl -p /etc/sysctl.d/99-kvm-host.conf

HugePages (для производительности ВМ)

sudo sysctl vm.nr_hugepages=2048
echo "vm.nr_hugepages=2048" | sudo tee -a /etc/sysctl.d/99-kvm-host.conf

Проверка: grep HugePages /proc/meminfo

I/O Scheduler (для SSD/NVMe)

# Проверка текущего
cat /sys/block/sda/queue/scheduler

# Для NVMe обычно оставляют `none` или `mq-deadline`
echo 'mq-deadline' | sudo tee /sys/block/sda/queue/scheduler

Для персистентности используйте udev правила или параметры ядра в GRUB.

CPU Governor (производительность)

sudo apt-get install cpupower
sudo cpupower frequency-set -g performance

Для автоматизации при загрузке добавьте в /etc/rc.d/rc.local или используйте systemd сервис.


4. Проверка работоспособности KVM

# Установка утилиты проверки
sudo apt-get install cpu-checker

# Проверка
kvm-ok

Ожидаемый вывод:

INFO: /dev/kvm exists
KVM acceleration can be used

Дополнительно:

dmesg | grep -i kvm
virsh capabilities | grep kvm

5. Интеграция с libvirt и QEMU

Установка стека виртуализации

sudo apt-get install libvirt qemu-system-x86 virt-manager
sudo systemctl enable --now libvirtd
sudo usermod -aG libvirt $USER

Выйдите и войдите в систему повторно, чтобы применилась группа libvirt.

Настройка сети (по умолчанию)

libvirt автоматически создаёт NAT-сеть default:

virsh net-list --all
virsh net-start default
virsh net-autostart default

Создание первой ВМ (CLI)

virt-install \
  --name test-vm \
  --vcpus 2 --memory 2048 \
  --disk size=20 \
  --os-variant linux \
  --network network=default \
  --graphics none \
  --console pty,target_type=serial \
  --location http://mirror.yandex.ru/altlinux/p11/branch/x86_64/ \
  --extra-args "console=ttyS0,115200n8 serial"

Рекомендации по конфигурации ВМ

  • CPU: host-passthrough или host-model
  • Диск: virtio, cache=none, io=threads
  • Сеть: virtio
  • Память: hugepages (если настроены на хосте)

6. Обновление и обслуживание

Обновление ядра

sudo apt-get update
sudo apt-get install kernel-image-std-kvm

ALT Linux автоматически обновит initramfs и GRUB.

Удаление старых ядер

sudo package-cleanup --oldkernels --count=2

Не удаляйте последнее рабочее ядро. В ALT Linux grub сохраняет предыдущие версии.

Пересборка initramfs (вручную, если нужно)

sudo make-initrd

7. Диагностика и решение типовых проблем

Проблема Причина Решение
kvm-okKVM acceleration can NOT be used Виртуализация отключена в BIOS Включите VT-x/SVM в UEFI
dmesg: kvm: disabled by bios Отключено в прошивке Проверьте настройки CPU/Security в BIOS
failed to initialize KVM: Device or resource busy Конфликт с VirtualBox/VMware/Hyper-V Удалите/отключите другие гипервизоры
ВМ тормозят при диске I/O Используется qcow2 с writeback cache Переключите на cache=none, io=threads
Проброс PCI не работает Не включён IOMMU Добавьте в GRUB: intel_iommu=on или amd_iommu=on, обновите GRUB и перезагрузитесь
Nested virtualization не работает Отключено по умолчанию echo 1 | sudo tee /sys/module/kvm_intel/parameters/nested (Intel) или kvm_amd для AMD

Полезные команды отладки

dmesg | grep -iE 'kvm|virtio|vfio'
journalctl -u libvirtd -e
virsh dominfo <имя_вм>
sudo qemu-system-x86_64 -enable-kvm -version

Чек-лист после установки

  • [ ] uname -r содержит std-kvm
  • [ ] lsmod | grep kvm показывает загруженные модули
  • [ ] kvm-okKVM acceleration can be used
  • [ ] virsh capabilities<domain type='kvm'> присутствует
  • [ ] libvirtd активен и запущен
  • [ ] GRUB обновлён, старое ядро сохранено как fallback
  • [ ] sysctl и hugepages (если используются) применены

Совет:

Для продакшен-серверов рекомендуется использовать стабильную ветку (p10 или p11). В Sisyphus ядро может обновляться чаще, что подходит для тестирования, но требует внимательного контроля зависимостей.