Этот конспект не сохранится

Закроешь вкладку — потеряешь. Зарегистрируйся — и он будет в библиотеке навсегда.

Telegram

Ваш конспект

YouTubeGame streaming on Virtual Machines! Windows and Linux on Proxmox/Qemu!

🎮 Игровой стриминг через виртуальные машины на Proxmox

Ключевые тезисы

  • Создание Windows и Linux VM на Proxmox для игрового стриминга с пробросом реальной видеокарты (GPU Passthrough)
  • Использование стримингового ПО (Apollo/Sunshine + Moonlight) для игры на любом устройстве-клиенте
  • Тестирование конфигурации на маломощном хосте ZimaBoard 2 с разными видеокартами
  • Решение проблем с виртуальными дисплеями и сетевыми адаптерами для стабильной работы

🖥️ Создание Windows VM

Настройки виртуальной машины

  • Тип ОС: Windows (используется образ LTSC для экономии ресурсов)
  • Тип машины: q35
  • Диск: 120+ GB с галочкой Discard (для освобождения места на хосте)
  • Процессор: 4 ядра, тип host
  • Оперативная память: ~12 GB
  • Сетевой адаптер: E1000 (VirtIO на текущей версии Proxmox вызывает проблемы со стримингом)
  • Агент QEMU: обязательно включить

Установка и настройка Windows

  • При установке загрузить драйвер VirtIO SCSI с CD-образа (vioscsi).
  • Установить VirtIO Guest Tools для корректной работы в QEMU.
  • 🔧 Включить Remote Desktop для удалённого доступа (так как у видеокарты нет физического монитора).
  • Настроить автоматический вход в систему (через netplwiz и правку реестра) для запуска игр без ручного логина.

🐧 Создание Linux VM (CachyOS)

Настройки виртуальной машины

  • Критически важно: тип машины q35 и UEFI BIOS (для PCIe Passthrough).
  • Диск: 100+ GB с Discard.
  • Процессор: 4 ядра типа host.
  • Оперативная память: ~12 GB.
  • Сетевой адаптер: VirtIO (работает корректно в Linux).
  • В образе CachyOS может потребоваться отключить Secure Boot в BIOS для загрузки.

Настройка Linux для стриминга

  • Установить Sunshine (аналог Apollo для Linux) и драйверы NVIDIA.
  • Настроить автозапуск Sunshine после входа в систему.
  • Установить и запустить QEMU Guest Agent для получения IP-адреса.

🎯 Проброс видеокарты (GPU Passthrough)

Общие шаги для обеих VM

  1. В настройках оборудования VM добавить PCI-устройство — вашу видеокарту.
  2. Выбрать "All functions" (чтобы захватить и аудиоустройство).
  3. В расширенных настройках обязательно поставить галочку PCI-Express.
  4. Для Windows VM поставить галочку "Primary GPU" (отключит виртуальную графику).

Решение проблем с драйверами на хосте

  • Для карт AMD (например, RX 5700 XT) нужно заблокировать (blacklist) драйверы amdgpu и radeon на хосте Proxmox, чтобы они не занимали устройство.
  • Создать файл в /etc/modprobe.d/ и выполнить update-initramfs -u -k all.

🖼️ Решение проблемы "безголового" (headless) режима

Для Windows (Apollo)

  • В настройках Apollo во вкладке Configuration → Audio/Video включить Headless Mode. Это создаст виртуальный дисплей при подключении.

Для Linux (Sunshine)

  • Ядро Linux может эмулировать монитор через EDID-файл.
  • Скачать нужный EDID-файл (например, для HDMI), поместить в /usr/lib/firmware/edid/.
  • Определить имя HDMI-порта видеокарты (например, card0-HDMI-A-1).
  • Добавить параметр video=HDMI-A-1:edid_file=/usr/lib/firmware/edid/... в командную строку ядра (в /etc/default/limine для Limine).
  • Добавить путь к EDID-файлу в /etc/mkinitcpio.conf и выполнить mkinitcpio -P.
  • После перезагрузки в системе появится виртуальный монитор.

📡 Настройка стриминга (Apollo/Sunshine + Moonlight)

  1. Установить Apollo (форк Sunshine с виртуальным дисплеем) на Windows или Sunshine на Linux.
  2. При первом запуске создать логин и пароль администратора.
  3. На клиентском устройстве установить Moonlight.
  4. Выполнить pin-pairing: Moonlight найдёт VM, покажет код, который нужно ввести в веб-интерфейсе Apollo/Sunshine.
  5. Для удобства можно добавить игры вручную во вкладке Applications в Apollo, указав команду запуска.

⚡ Результаты тестирования и энергопотребление

  • Производительность: На слабой карте (GTX 745) игры (WRC 7, Borderlands 2) работают, но с ограничениями из-за слота PCIe x4 и нагрузки на кодирование потока. Более мощная карта (RX 5700 XT) показывает значительно лучшие результаты.
  • Энергопотребление (ZimaBoard 2):
    • ✅ Хост в простое: ~10 Вт.
    • ✅ VM запущена, но без нагрузки: +3-4 Вт.
    • ⚠️ Нагрузка на GPU (стресс-тест): до ~60 Вт (близко к пределу БП).
    • В реальных игровых сессиях потребление было значительно ниже стресс-теста.

💡 Выводы и рекомендации

  • ✅ Технология работает и позволяет играть на любом устройстве с Moonlight-клиентом.
  • ⚠️ ZimaBoard 2 с его 60W БП сильно ограничивает выбор видеокарт (подходят только маломощные или карты с внешним питанием).
  • 🔥 Те же шаги можно повторить на любом хосте с Proxmox (или другим гипервизором на QEMU) для получения более мощной игровой станции.
  • Ключевые моменты для успеха: правильная настройка сети (E1000 для Windows), создание виртуального дисплея и корректный проброс GPU с отключением драйверов на хосте.
🎮 Игровой стриминг через Proxmox: настройка VM и проброс GPU — конспект на EchoNote