Подробный гайд: 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)
- Создайте новую ВМ или откройте существующую → Открыть → i (Details).
- 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)- Примените изменения и запустите ВМ.
Через 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
- Перезагрузите ВМ. При загрузке система должна автоматически подхватить
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):
- Включите IOMMU в ядре:
intel_iommu=onилиamd_iommu=onвGRUB_CMDLINE_LINUX - Загрузите
vfio-pci, привяжите GPU - Добавьте
<hostdev mode='subsystem' type='pci'>в XML ВМ - Отключите
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-ускорение для повседневных задач, композиторов, лёгких игр и разработки. Конфигурация полностью поддерживается в актуальных ветках дистрибутива и не требует сторонних проприетарных компонентов.
Удачи в работе!