Подробный гайд: 3D-ускорение в ВМ ALT Linux: настройка KVM/QEMU, VirtIO-GPU и VirGL

Подробный гайд по настройке 3D-ускорения в ВМ на ALT Linux через KVM/QEMU, VirtIO-GPU и VirGL. Установка, проверка, решение проблем.

2026.05.11                  


Подробный гайд: 3D-ускорение в ВМ ALT Linux: настройка KVM/QEMU, VirtIO-GPU и VirGLПодробный гайд: 3D-ускорение в ВМ ALT Linux: настройка KVM/QEMU, VirtIO-GPU и VirGL В современных Linux-ВМ 3D-ускорение реализуется через VirtIO-GPU + VirGL. Это программно-аппаратный рендерер, который транслирует вызовы OpenGL/Vulkan гостевой ОС в хостовый Mesa/Vulkan, используя GPU хоста для вычислений.

Результат:

  • Плавный интерфейс (GNOME/KDE, композиторы)
  • Поддержка аппаратного декодирования видео
  • Возможность запуска лёгких 3D-приложений и инди-игр
  • Не заменяет проброс физической видеокарты (VFIO) для тяжёлых игр или профессионального рендеринга.

Требования

Компонент Минимум Рекомендация
CPU Поддержка VT-x / AMD-V 4+ ядра, поддержка SSE4.1/AVX
RAM 4 ГБ (хост) + 4 ГБ (ВМ) 8+ ГБ хост, 6–8 ГБ ВМ
GPU Любая с открытыми драйверами (Intel/AMD) AMD GCN+/RDNA, Intel Gen8+ или NVIDIA с nvidia-open/nouveau
ALT Linux p10 / p11 / Sisyphus Актуальные обновления, systemd

Шаг 1: Подготовка хостовой системы (ALT Linux)

1. Обновите систему:
sudo apt update && sudo apt upgrade
2. Установите стек виртуализации:
sudo apt install libvirt-daemon qemu-system-x86 virt-manager \
  spice-server spice-gtk qemu-ui-spice virglrenderer \
  mesa-dri-drivers libvirgl

Если пакет не найден, используйте apt search virgl или apt search spice для уточнения имени в вашей ветке (p10/p11/Sisyphus).

3. Включите и запустите демон:
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
4. Добавьте пользователя в группу libvirt:
sudo usermod -aG libvirt $USER

Перезагрузите сессию или выполните newgrp libvirt.


Шаг 2: Создание/настройка ВМ с 3D-ускорением

Через virt-manager (GUI)

  1. Создайте новую ВМ или откройте существующую → Открыть → i (Details).
  2. Chipset: Q35, Firmware: UEFI x86_64: /usr/share/edk2/ovmf/OVMF_CODE.fd (рекомендуется).
3. Перейдите в раздел Video:
  • Model: VirtIO
  • 3D Acceleration: Enable
  • Acceleration 3D: Enable
  • Heads: 1 (или больше для многомониторной конфигурации)
4. Перейдите в Display:
  • Type: Spice
  • Enable 3D Acceleration: (если есть галочка)
5. В разделе Channel добавьте:
  • org.spice-space.webdav.0 (тип spiceport)
  • com.redhat.spice.0 (тип spicevmc)
    1. Примените изменения и запустите ВМ.

Через virsh (правка XML)

Если GUI недоступен, отредактируйте XML ВМ:

virsh edit <имя_вм>

Найдите блок <video> и приведите его к виду:

<video>
  <model type='virtio' heads='1' primary='yes'>
    <acceleration accel3d='yes'/>
  </model>
  <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
</video>

В <devices> добавьте spice-каналы (если отсутствуют):

<channel type='spicevmc'>
  <target type='virtio' name='com.redhat.spice.0'/>
</channel>

Шаг 3: Настройка гостевой ОС (ALT Linux в ВМ)

1. Обновите гостевую систему:
sudo apt update && sudo apt upgrade
2. Установите гостевые компоненты:
sudo apt install spice-vdagent qemu-guest-agent \
  xorg-x11-drv-virtio mesa-dri-drivers libvirgl \
  vulkan-tools glxinfo glxgears
3. Включите сервисы:
sudo systemctl enable spice-vdagentd qemu-guest-agent
sudo systemctl start spice-vdagentd qemu-guest-agent
  1. Перезагрузите ВМ. При загрузке система должна автоматически подхватить virtio-gpu и virgl.

Шаг 4: Проверка работы 3D-ускорения

1. Проверьте рендерер OpenGL:
glxinfo | grep "OpenGL renderer"

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

  • VirGL или llvmpipe (если ускорение не сработало). Если видите llvmpipe → перейдите в раздел устранения неполадок.
2. Тест производительности:
glxgears -info

В терминале отобразится FPS. При работающем VirGL на среднем GPU хоста: 300–1200 FPS (зависит от сцены и хостового GPU).

3. Проверка Vulkan (опционально):
vkcube

Vulkan через VirGL поддерживается, но требует свежих версий virglrenderer (≥1.0) и Mesa (≥23.0). В p11/Sisyphus работает стабильно.


Устранение неполадок

Симптом Причина Решение
OpenGL renderer: llvmpipe VirGL не инициализирован Убедитесь, что в XML ВМ есть <acceleration accel3d='yes'/>, переустановите spice-vdagent, проверьте логи journalctl -u spice-vdagentd
Чёрный экран при загрузке Неправильный видеодрайвер В гостевой ОС добавьте modprobe virtio_gpu в /etc/modules-load.d/, убедитесь, что X11/Wayland использует virtio
Низкий FPS / артефакты Нехватка RAM/CPU или старый Mesa Выделите ВМ ≥4 ГБ RAM, 2+ vCPU, обновите хост и гостя до p11/Sisyphus
Spice не подключается Брандмауэр или порт Откройте порт 5900-5999 на хосте или используйте ssh -L 5900:localhost:5900 user@host
Permission denied при запуске Пользователь не в группе libvirt sudo usermod -aG libvirt $USER → перелогин

Логи для диагностики:

sudo journalctl -u libvirtd -f
sudo journalctl -u qemu-<имя_вм>.service
cat /var/log/libvirt/qemu/<имя_вм>.log

Продвинутый вариант: Проброс GPU (VFIO)

Если требуется нативная производительность (игры, CUDA, профессиональный 3D):

  1. Включите IOMMU в ядре: intel_iommu=on или amd_iommu=on в GRUB_CMDLINE_LINUX
  2. Загрузите vfio-pci, привяжите GPU
  3. Добавьте <hostdev mode='subsystem' type='pci'> в XML ВМ
  4. Отключите virtio-gpu и spice (или оставите для консоли)

Предупреждение:

VFIO требует разделения GPU, отдельного вывода или PCIe ACS override. Настройка сложная и выходит за рамки базового VirGL.


Ограничения и рекомендации

  • VirGL транслирует OpenGL 4.6 и частично Vulkan 1.3. Полная совместимость не гарантируется для старых или нишевых приложений.
  • Производительность ~60–85% от нативной хостовой GPU в 2D/лёгком 3D. Тяжёлые игры (AAA, ray-tracing) не рекомендуются.
  • Для Wayland в гостевой ОС убедитесь, что используется weston или GNOME/Mutter с поддержкой virgl.
  • Регулярно обновляйте virglrenderer и mesa через apt upgrade или подключите репозиторий sisyphus, если используете p10/p11.

Итог

Настроив стек QEMU/KVM + virtio-gpu + virgl + spice-vdagent в ALT Linux, вы получите стабильное аппаратное 3D-ускорение для повседневных задач, композиторов, лёгких игр и разработки. Конфигурация полностью поддерживается в актуальных ветках дистрибутива и не требует сторонних проприетарных компонентов.

Удачи в работе!